Videregående programmering i Java

Relaterede dokumenter
Videregående programmering i Java

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Videregående programmering i Java

Objektorienterede metoder

Over Forelæsning omponenter ogrammering sigt 14, 1999 freda containere 15. oktober 1999 Eksempel: out GUI til beregning fakultet.

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label

Videregående programmering i Java

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

Kursusgang 12. Oversigt: Sidste kursusgang Layout-manager Event-håndtering. Design af brugerflader 12.1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Videregående programmering i Java

Dag 10 Flertrådet programmering

Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter

Educasoft 2010 Side 1. Søgemaskineoptimering

Undervisningsbeskrivelse

Forelæsning Uge 6 Mandag

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

Videregående programmering i Java

Generel projektbeskrivelse

Software Construction 1 semester (SWC) Spørgsmål 1

SWC eksamens-spørgsmål. Oversigt

Grundlæggende OOA - OOD

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Forelæsning Uge 12 Torsdag

Videregående programmering i Java

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

DM507 Algoritmer og datastrukturer

Forelæsning Uge 12 Mandag

DM507 Algoritmer og datastrukturer

Forelæsning Uge 5 Mandag

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

Ugeseddel 4 1. marts - 8. marts

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Dag 10 Flertrådet programmering

Videregående programmering i Java

Tree klassen fra sidste forelæsning

Objects First with Java A Practical Introduction Using BlueJ

DM507 Algoritmer og datastrukturer

Kursus i OOP og Java

Eksempel: Skat i år 2000

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Matador. Hvert hus koster: 2000 Et hotel koster: huse Pantsætningsværdien er 2000 kr.

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Hvad er Objekter - Programmering

Forelæsning Uge 5 Mandag

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Forelæsning Uge 2 Torsdag

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

Tabeller (I) Tabeller

Aftenskole i programmering sæson Registrering af tid. Sæson 2 - Lektion 5

5. Teknisk beskrivelse af programmet 5.1 Programmets primære strukturer Datastruktur Datastruktur

Forelæsning Uge 3 Torsdag

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Lektion 3. Grundlæggende programmering i VR

Videregående programmering i Java

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Forelæsning Uge 2 Torsdag

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Undervisningsbeskrivelse

DM507 Algoritmer og datastrukturer

Eksempel på en database: studenter, kurser, eksamener

BRP Kursusintroduktion og Java-oversigt

Forelæsning Uge 2 Torsdag

Undervisningsbeskrivelse

Videregående programmering i Java

Forelæsning Uge 4 Mandag

Objektorienteret Programmering

Forelæsning Uge 5 Mandag

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Abstrakte datatyper C#-version

Indholdsfortegnelse. javabog.dk Forord

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Forelæsning Uge 3 Torsdag

Introduktion. Grundlæggende programmering Lektion 1

Test af It-komponent

Forelæsning Uge 2 Mandag

Java-opgraderingskursus

Skriftlig eksamen i Datalogi

Gode praksisser og arkitekturer i Android-programmering. Android - praksisser og arkitekturer Copyright Lund & Bendsen A/S

DM507 Algoritmer og datastrukturer

Programmering for begyndere Lektion 2. Opsamling mm

Kursuskatalog 2017 TwinCAT 2 TwinCAT 3

Datatekniker med programmering som speciale

Udfordringer og problemstillinger. En liste over de udfordringer og problemstillinger, der er ved Java og JEE udvikling

DM502. Peter Schneider-Kamp

Undervisningsbeskrivelse

Objektorientering. Programkvalitet

14.1 Internationale programmer

Undervisningsbeskrivelse

DM507 Algoritmer og datastrukturer

Objektorienteret design med arv og polymorfi:

Webserverprogrammering

Kursus navn: Indledende programmering Kursus nr

DM507 Algoritmer og datastrukturer

DANMARKS TEKNISKE UNIVERSITET

Kursuskatalog 2018 TwinCAT 2 TwinCAT 3

Serialization i Java

Transkript:

Videregående programmering i Java VPJ dag 1 Introduktion og overblik over kurset Datastrukturer: Lister, mængder og iteratorer Opsamling: Grafikprogrammering, komponenter, containere og layout Bruge komponenter (Javabønner) Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

I kurset benyttes JBuilder Om kurset Brug fra CD eller hent fra http://borland.com/ Andre værktøjer kan også benyttes Lærebogsmateriale "Videregående programmering i Java" af Jacob Nordfalk En stor del af lærebogen (+opdateringer) findes på nettet: http://javabog.dk/vp/ Foredrag fra tidligere semestre om emnerne: http://javabog.dk/vp/lyd/ Præsentationerne kan efterfølgende findes på: http://javabog.dk/foredrag/vpj 1_E2005/ Uddelte fotokopier

Kursets indhold Designmønstre Singleton, Proxy, Fabrik, Objektpulje, Iterator, Adapter, Kommando, Model View Controller arkitekturen (MVC),... Flertrådet programmering og designmønstre herom Grafiske brugergrænseflader Komponentbaseret udvikling definere egne grafiske komponenter (javabønner) Datastrukturer som lister, mængder og afbildninger Videregående emner inden for programmering JNI: kald til maskinkode/c/c++ fra Java Introspektion af klasser under kørsel Java2D avanceret grafiktegning Dokumentation med javadoc værktøjet Andre emner kan tages op efter deltagernes ønske.

Kursusopgave Kun én vej til at blive erfaren: At lave et større program! Omfang: 80 timer eller mere (!) Formål: at deltagerne får programmeret så meget som muligt på et projekt at de får arbejdet med de ting fra kurset der interesserer dem mest en mindre del (ca. 30 %) af de berørte teknikker og designmønstre indgår Kan laves i grupper á 1 3 personer Du skal lægge dig fast på et projekt til gang 2 eller 3 Undervisning i designmønstre er baseret på at du er i gang! Det kunne f.eks. være: et projekt fra arbejdet en prototype på dit afgangsprojekt en visuel formel editor (a la Word)... Hjemmeopgave Beskriv din ide til kursusopgave (10 30 linier).

Valgfrie emner Giv mellem 0 og 10 point til hvert emne: Datastrukturers interne virkemåde og kørselstider Nye faciliter i Java: Generics, autoboxing Hvordan definere egne generics Mere om Swing og grafiske brugergrænseflader Kommunikation mellem processer og tråde i et GUI program Styring af eksterne komponenter (OpenOffice.org / COM) Avanceret JDBC Objektpersistens og JDO Java Data Objects Internationalisering (flersprogede programmer) JAR filer og oprettelse af eksekverbare JAR filer Optimeringsværktøjer (Borland OptimizeIt) J2ME, midletter og programmering af mobiltelefoner J2EE, EJB og serversystemer Værktøjer til forbedring af kodekvalitet metrikker og audit AOP Aspekt orienteret programmering Dit eget forslag:

UML og klasserelationer Har-relationen At X har Y betyder: i klassen X er defineret en variabel af type Y. Et X-objekt har derfor en reference til et Y-objekt, og derfor har X-objektet mulighed for at kalde metoder og bruge variabler fra Y-objektet gennem denne reference. Y- objekter kender ikke nødvendigvis noget til X-objekters eksistens. Eksempel (det væsentlige i fed): public class X { private Y yobj = new Y(); }... Er-en-relationen At X er-en Y betyder: i klassen X er defineret, at X arver fra klassen Y. Et X-objekt indeholder derfor (mindst) alle de metoder og variabler, som et Y-objekt indeholder. Eksempel: public class X extends Y {... } Det er også en er-en-relation, når man implementerer et interface.

UML og klasserelationer Felt navn :String + passeret(sp :Spiller) + landet(sp :Spiller) Helle gevinst :double +landet(sp:spiller) Spiller Start gevinst :double + passeret(sp:spiller) + landet(sp :Spiller) navn :String konto :double feltnr :int + transaktion(kr :double) + betal(modt :Spiller, kr :double) + tur(felter :Vector) Rederi ejer :Spiller pris :double grundleje :double +landet(sp:spiller) Rederi og Gade har en Spiller. Helle, Start, Rederi og Gade er et Felt. Gade ejer :Spiller pris :double grundleje :double antalhuse :int huspris :double +landet(sp:spiller)

Designmønstre Navngiven måde at programmere på Beskrivelse af, hvordan et bestemt slags problem kan løses Beskrivelse af konsekvenserne af denne måde at løse problemet på. Det samme designmønster kan løse et lignende problem i et andet program Engelsk: (Reusable) Design Pattern Mønster = noget, som gentages Design = hvordan et program er sat sammen Begreb fra OOAD Objektorienteret analyse og design Designet vises ofte som et klassediagram

Formål med designmønstre At give en fælles begrebsramme Lettere at forklare hvad man har lavet Klar begrebsramme lettere at forstå Lettere at beslutte hvordan noget laves Ikke "opfinde den dybe tallerken" igen. Velafprøvede idéer til godt design Undgå de mest almindelige faldgruber Mindske graden af bindinger (kobling) mellem forskellige dele af et program

Eksempler på designmønstre Singleton sikring af, at der kun eksisterer ét objekt af en bestemt slags Prototype objekter oprettes ud fra eksisterende skabelon objekter Objektpulje genbrug de samme objekter igen og igen ved at huske dem i en pulje Adapter får et objekt til at passe ind i et system ved at fungere som omformer mellem objektet og systemet Kommando registrér brugerens handlinger, så at de kan fortrydes igen Observatør/Lytter 'abonnere' på, at en ting (hændelse) sker

Collection: Samling af data Indeholder metoder fælles for alle datastrukturer List: Ordnet liste To klasser implementerer List: ArrayList og LinkedList. Set: Uordnet mængde HashSet implementerer Set. SortedSet: Sorteret mængde TreeSet implementerer Set. Samlinger af data

Eksempel på brug af liste List liste; Samlinger af data liste = new ArrayList(); liste.add("æh"); // alle samlinger af data liste.add("øh",0); // kun lister Gennemløb v.hj.a. tællevariabel for (int i=0; i<liste.size(); i++) { String s = (String) liste.get(i); // gør noget med s System.out.println(s); } Gennemløb v.hj.a. iterator for (Iterator iter=liste.iterator(); iter.hasnext(); ) { String s = (String) iter.next(); // gør noget med s System.out.println(s); } Man kan få et iterator objekt ved at kalde iterator() på enhver datastruktur (Collection) Et (lille) objekt, der hjælper med at gennemløbe data

Kørselstider og Store-O-notationen Store O tiden en operation tager som funktion af antal elementer n O(1) konstant i tid Eksempel: Slå et element op i et array O(log(n)) logaritmisk O(n) proportionalt Eksempel: Gennemløbe alle element i et array O(n 2 ) kvadratisk (hmm...) O(e n ) eksponentielt (uha!)

Visuelt design af et grafisk program 5 3 2 4 1 (1) Design fanen (2) Visuelt designområde (3) Struktur af programmet (4) Egenskaber (og hændelser) på valgt element (5) Komponentfaner

Komponenter og containere (AWT) Button Choice Label Component Canvas Container 0.. * 1 Checkbox 0.. * 1 CheckboxGroup List TextComponent TextField TextArea Panel Applet ScrollPane Window Dialog Frame Hule pile: er en relationer (dvs. nedarvning) De andre pile: har relatioer En container har nul til mange komponenter Hver komponent har/tilhører én container Tilsvarende med CheckboxGroup og Checkbox

Genbrugelige komponenter Komponenter er programmørens byggeklodser De kan bruges igen og igen i mange sammenhænge De kan sættes sammen på alle mulige måder De er nemme at indstille Udviklingsværktøj kan generere programkoden for programmøren Grafiske brugergrænseflader er som regel helt bygget op af komponenter! Komponenter i Java hedder Javabønner (eng.: JavaBeans)

Komponentbaseret udvikling Type Egenskab sættes med Egenskab aflæses med String settext(string t) gettext() boolean seteditable(boolean rediger) iseditable() int setcolumns(int bredde) getcolumns() char setechochar(char tegn) getechochar()

Designmønstret Observatør/Lytter (eng.: Observer/Listener) eller Abonnent (eng.: Publisher Subscriber) ('abonnere' på, at en ting (hændelse) sker) Problem: Et objekt skal kunne underrette nogle andre objekter om en eller anden ændring eller hændelse, men det er ikke hensigtsmæssigt, at objektet kender direkte til de andre objekter. Løsning: Lad lytterne (observatørerne) implementere et fælles interface (eller arve fra en fælles superklasse) og registrere sig hos det observable (observerbare) objekt. Det observable objekt kan herefter underrette lytterne gennem interfacet, når der er brug for det.

Designmønstret Observatør/Lytter Programkode til observabelt objekt (og javabønne)

Layout-managere FlowLayout BorderLayout GridBagLayout

Komponentbaseret udvikling Demonstration af brug at komponenter i et udviklingsværktøj