Objektorienterede metoder

Størrelse: px
Starte visningen fra side:

Download "Objektorienterede metoder"

Transkript

1 Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags dataforbindelser Hyppigt anvendte designmønstre: Proxy, Adapter, Iterator, Facade, Dynamisk Binding Næste gang: Automatiseret afprøvning med JUnit Læsning: javabog.dk/vp kapitel 16, 17 Dette materiale er under Åben Dokumentlicens, se

2 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

3 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

4 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

5 Designmønstre (

6 Skabende designmønstre // høj kobling - klient opretter et Hjælp-objekt Hjælp h = new Hjælp();... h.metode1(); h.metode2(); MEN... det kunne være at: Det var en nedarving af Hjælp, der skulle oprettes (polymorfi) Objektet skulle oprettet med nogle bestemte parametre i konstruktøren Det samme objekt skulle bruges af alle klienter (en Singleton) Eksisterende Hjælp objekter skulle genbruges (en Objektpulje)

7 Skabende designmønstre // høj kobling - klient opretter et Hjælp-objekt Hjælp h = new Hjælp();... h.metode1(); h.metode2(); MEN... det kunne være at: Det var en nedarving af Hjælp, der skulle oprettes (polymorfi) Objektet skulle oprettet med nogle bestemte parametre i konstruktøren Det samme objekt skulle bruges af alle klienter (en Singleton) Eksisterende Hjælp objekter skulle genbruges (en Objektpulje) Oprettelse af objekt afgør objektets præcise type! Dette er (for) stærk kobling i visse tilfælde Den del af programmet (klienten) som bruger visse objekter skal ikke altid også oprette disse objekter

8 Skabende designmønstre // høj kobling - klient opretter et Hjælp-objekt //Hjælp h = new Hjælp(); // fabrikeringsmetode leverer objekt til klienten Hjælp h = Hjælp.opretHjælp();... h.metode1(); h.metode2(); Fabrikeringsmetode (eng.: Factory Method) En metode, der opretter et objekt for klienten Afkobler (mindsker graden af bindinger) mellem Det kan være at: Det er en nedarving af Hjælp, der bliver oprettet (polymorfi) Objektet bliver oprettet med nogle bestemte parametre i konstruktøren Det samme objekt bliver brugt af alle klienter (en Singleton) De eksisterende Hjælp objekt bliver genbrugt (en Objektpulje) oprettelsen af nogle bestemte objekter (i ét modul) anvendelsen af dem af (i et andet modul, klienten)

9 Designmønstret Fabrik (eng.: Factory) (objekt med fabrikeringsmetode) Problem: Klienten kan/skal ikke bestemme præcist, hvordan nogle objekter oprettes. Løsning: Lad en Fabrik med en fabrikeringsmetode varetage oprettelsen. // høj kobling - klient opretter et Hjælp-objekt Image i = new Image("billede.gif"); // forkert!! Image objekter kan være forskelligt repræsenteret afhængig af type (GIF, JPG eller PNG) og opløsning // fabrikeringsmetode leverer objekt til klienten // this er et grafisk objekt, f.eks. applet, panel,.. Image i = this.getimage("billede.gif"); // korrekt

10 Designmønstret Singleton (en klasse, der må være én og kun én instans af) Problem: Klienten må ikke have flere objekter af en bestemt type, men skal altid bruge det samme objekt. Løsning: Programmér sådan, at der aldrig kan oprettes mere end ét eksemplar af det pågældende objekt. Eksempler java.lang.runtime (det kørende program) java.awt.toolkit (implementationen af grafiksystemet/awt) Runtime rt = Runtime.getRuntime(); // eksempler på brug af Runtime-objektet System.out.println("Hukommelse reserveret til Java: "+rt.totalmemory()); System.out.println("Heraf ledigt: "+rt.freememory()); rt.gc(); // kør garbage collector System.out.println("Nu ledigt: "+rt.freememory()); Toolkit tk = Toolkit.getDefaultToolkit(); // eksempler på brug af Runtime-objektet System.out.println("Skærmstørrelse (punkter): " + tk.getscreensize()); tk.beep(); // computeren siger bip Image i = tk.getimage("billede.gif"); // her fungerer Toolkit som fabrik

11 Implementering af Singleton Normal implementering Privat konstruktør Instans oprettes ved klasseindlæsning og gemmes i privat klassevariabel Fabrikeringsmetode returnerer den private instans public class Dataforbindelse private static Dataforbindelse instans = new Dataforbindelse(); public static Dataforbindelse hentforbindelse() return instans; private List alle; private Dataforbindelse() alle = new ArrayList(); public void sletalledata() alle.clear(); public void indsæt(kunde k) alle.add(k); public List hentalle() return alle; Dataforbindelse1 dbf = Dataforbindelse.hentForbindelse(); dbf.indsæt( new Kunde("Kurt",1000) ); Nedarvinger af Dataforbindelse?

12 Implementering af Singleton Normal implementering Privat konstruktør Instans oprettes ved klasseindlæsning og gemmes i privat klassevariabel Fabrikerings(klasse)metode returnerer den private instans Andre implementeringer Instans oprettes først når fabrikeringsmetode kaldes første gang Fabrikeringsmetode må tjekke om instans allerede er oprettet Trådsikkerhed kan blive et problem fabrikeringsmetode skal være synchronized Ingen fabrikeringsmetode, public final klassevariabel med instans Ikke privat konstruktør Tillader nedarving Konstruktør må tjekke om instans allerede er oprettet Kast undtagelse hvis instans allerede findes Trådsikkerhed kan blive et problem konstruktør skal være synchronized Fabrikeringsmetode i anden klasse Konstruktør med pakke synlighed

13 Andre implementeringer af Singleton // Instans oprettes først når fabrikeringsmetode kaldes første gang public class Dataforbindelse private static Dataforbindelse instans = null; public static synchronized Dataforbindelse hentforbindelse() if (instans == null) instans = new Dataforbindelse(); return instans; // Ingen fabrikeringsmetode, public final klassevariabel med instans public class Dataforbindelse public static final Dataforbindelse instans = new Dataforbindelse() // Ikke-privat konstruktør public class Dataforbindelse public static Dataforbindelse instans = null; public static synchronized Dataforbindelse hentforbindelse() if (instans == null) instans = new Dataforbindelse(); return instans; protected Dataforbindelse() if (instans!= null) throw new IllegalAccessException("Obj findes"); instans = this;

14 Eksempel: Dataforbindelse Indkapsl datalagring i klasse Hvis man ønsker fleksibilitet omkring hvor data lagres Start: DataforbindelseDummy, DataforbindelseFil Slut: DataforbindelseOracle,...

15 public Button() Toolkit tk = Toolkit.getDefaultToolkit(); ButtonPeer peer = tk.createbutton(this); // platformsspecifik del! Designmønster Abstrakt Fabrik / Toolkit (Fabrik med abstrakt superklasse og nedarvinger, som tager sig af oprettelsen) Problem: En Fabrik bliver uforholdsmæssigt kompliceret, fordi nogle ydre omstændigheder har stor indflydelse på, hvordan oprettelsen skal foregå. Løsning: Lav en Abstrakt Fabrik (eng.: Abstract Factory) med en nedarving (Fabrik) for hver omstændighed. Eksempel: java.awt.toolkit Fabrikerer platformsspecifik del af AWT komponent (peer) Nedarvinger: WindowsToolkit, LinuxToolkit, SolarisToolkit // følgende gøres i f.eks. java.awt.button (aldrig fra normalt program!) package java.awt; public class Button extends Component

16 AbstraktFabrikIF af = hentadressefabrik(); Adresse a = af.opretadresse(); TelefonNr tlf = af.oprettelefonnr();...

17 Designmønstret Prototype (objekter oprettes ud fra en skabelon) Problem: Klienten ved ikke, hvad der skal oprettes, men kan dog angive et andet objekt, som ligner det, der skal oprettes Løsning: Brug det andet objekt som Prototype, og opret objektet ud fra prototypen

18 Prototyper i et tegneprogram Palette har liste af figur prototyper Liste kan senere nemt udvides Bruger kan vælge i listen Når der vælges i paletten, anvendes det pågældende element som Prototype til objektet, der skal tegnes på skærmen

19 Designmønstret Objektpulje Problem: Der er et begrænset antal resurser, som skal deles. Problem: Der oprettes for mange objekter. Programmet er langsomt eller kører ujævnt, fordi der oprettes så mange objekter, der løbende smides væk igen. Objekterne kunne egentligt godt genbruges i stedet for at blive smidt væk, men oprettelsen sker spredt rundt i programmet, så det er svært at koordinere. Løsning: Lad et objekt varetage resurserne/objekterne. Lad klienter reservere og frigive objekter gennem dette objekt. public class Objektpulje private ArrayList ledige = new ArrayList(); public synchronized void sætind(object obj) ledige.add(obj); public synchronized Object tagud() if (ledige.isempty()) throw new RuntimeException("Ikke flere objekter!"); Object obj = ledige.remove(ledige.size()-1); // tag objekt ud af puljen return obj;

20 Designmønstret Objektpulje Andre muligheder hvis puljen løber tør for objekter Lad puljen oprette nye objekter (evt. v.hj.a. en Fabrik): Øvelse Lad klient 'hænge' og vente på at et objekt bliver ledigt: public class ObjektpuljeKlientHaenger private ArrayList ledige = new ArrayList(); public synchronized void sætind(object obj) ledige.add(obj); this.notify(); // væk eventuelle ventende tråde public synchronized Object tagud() try while (ledige.isempty()) // så længe der ikke er ledige objekter... System.out.println("Ikke flere objekter i puljen, venter..."); this.wait(); //... vent på at blive vækket Object obj = ledige.remove(ledige.size()-1); // tag objekt ud af puljen return obj; catch (InterruptedException e) return null;

21 Gruppearbejde Hvilke af de designmønstrene ville/kunne I anvende i HAS IT? Fabrikeringsmetode Singleton Prototype Objektpulje Diskutér to og to Fordele og ulemper Hvordan skulle klassediagrammerne ændres? Mere eller mindre komplekst? Mere eller mindre forståeligt?

22 Andre populære designmønstre

23 Designmønstret Adapter Problem: Et system forventer et objekt af en bestemt type (der implementerer et bestemt interface eller arver fra en bestemt klasse), men det objekt, man ønsker at give til systemet, har ikke denne type. Løsning: Definér et Adapter objekt af den type, som systemet forventer, og lad Adapter objektet delegere kaldene videre til det rigtige objekt. En Adapter fungerer som omformer mellem nogle klasser Få et objekt til at passe ind i et system ved at bruge et Adapter objekt, der passer ind i systemet, og som kalder videre i det rigtige objekt

24 Designmønstret Adapter Eksempel: Få et Opgave objekt omformet til at passe til Threads forventning om et Runnable objekt public class OpgaveRunnableAdapter implements Runnable Opgave opg; OpgaveRunnableAdapter(Opgave o) opg = o; public void run() // Oversæt kald af run() til kald af udfør() opg.udfør();

25 Designmønstret Adapter Eksempel: Få data (en liste af Kunde objekter) til at passe ind i en JTables forventning om et TableModel objekt import java.util.*; import javax.swing.table.*; public class KundelisteTableModelAdapter extends AbstractTableModel private List liste; public KundelisteTableModelAdapter(List liste1) liste = liste1; public int getrowcount() return liste.size(); public int getcolumncount() return 2; // navn og kredit public String getcolumnname(int kol) return kol==0? "Navn" : "Kredit"; public Object getvalueat(int række, int kol) Kunde k = (Kunde) liste.get(række); return kol==0? k.navn : ""+k.kredit;

26 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.

27 Designmønstret Observatør/Lytter Eksempel: Fælles kalender for en forening, der udbyder foredrag Hvis der sker ændringer i planen, skal kun de interesserede medlemmer have besked, dvs. de, som har tilmeldt sig et givent foredrag. xxx Interface Observerbar slettes, MedlemsIF omdøbes til Observatoer

28 Designmønstret Observatør/Lytter Programkode til observabelt objekt (og javabønne) public class MinButton extends Component /** Lyttere til denne bønne */ private ArrayList lyttere = new ArrayList(2); public void addactionlistener(actionlistener l) lyttere.add(l); public void removeactionlistener(actionlistener l) lyttere.remove(l); /** Sender en hændelse til lyttere. Lytterne er de, der tidligere er blevet * tilføjet med kald til addactionlistener() */ protected void underretlytterne(actionevent hændelse) for (Iterator i=lyttere.iterator(); i.hasnext(); )

29 Designmønstret Proxy Problem: Et objekt, der bliver brugt af klienten, skal nogen gange bruges lidt anderledes, men ikke altid, så det er uhensigtsmæssigt at ændre i klassen eller i klienten. Løsning: Lav en Proxy klasse, der lader som om, den er det rigtige objekt, og kalder videre i det rigtige objekt. Proxy på dansk "stråmand" eller "mellemmand" Ordet brugtes oprindeligt i banksektoren Internet: En proxy server Oftest ved klienten ikke at den bruger en proxy. Når proxyen bliver kaldt, vil den som regel delegere kaldet videre til det andet objekt, men den kan også vælge f.eks.: at returnere med det samme og udføre kaldet i baggrunden at afvise kaldet (f.eks. ved at kaste en undtagelse) at udføre kaldet på en anden måde (f.eks. anderledes parametre)

30 Designmønstret Proxy Staklogger: en Stak, der delegerer videre til en anden Stak: Stak s = new Staklogger( new StakMedNedarving2() ); public class Staklogger implements Stak private Stak rigtigestak; public Staklogger(Stak s) rigtigestak = s; public void lægpå(object o) System.out.print("Staklogger: lægpå("+o+")"); rigtigestak.lægpå(o); public Object tagaf() Object o = rigtigestak.tagaf(); System.out.print("Staklogger: tagaf() gav: "+o); return o;

31 Designmønstret Proxy Uforanderlige samlinger: Collection d = new ArrayList(); d.add("hej"); d.add("med"); d.add("dig"); d = new UforanderligSamling(d); // Her: vores egen implementation // d = Collections.unmodifiableCollection(d) // Her: fra standardbiblioteket // herefter kan dataene ikke mere ændres gennem d... d.add("igen"); // undtagelse opstår I standardbiblioteket findes Collections.unmodifiableCollection(): Uforanderligt Proxy objekt Collections.synchronizedCollection(): Trådsikkert Proxy objekt

32 public class UforanderligSamling implements Collection, Serializable private Collection c; // til videredelegering Designmønstret Proxy UforanderligSamling(Collection c) if (c==null) throw new NullPointerException(); this.c = c; // videredelegering af kald, der ikke ændrer samlingen c public int size() return c.size(); public boolean isempty() return c.isempty(); public boolean contains(object o) return c.contains(o); public boolean containsall(collection coll) return c.containsall(coll); public String tostring() return c.tostring(); private static void fejl() throw new UnsupportedOperationException("Denne samling kan ikke ændres"); // afvisning af kald, der ændrer samlingen public void clear() fejl(); public boolean add(object o) fejl(); return false; public boolean remove(object o) fejl(); return false; // iteratorer skal afvise ændringer, men ellers fungere som c's iterator public Iterator iterator() return new Iterator() // anonym klasse, der implementerer Iterator Iterator i = c.iterator(); // videredelegering til c's iterator public boolean hasnext() return i.hasnext(); public Object next() return i.next();

33 Variationer af designmønstret Proxy Fjernproxy (eng.: Remote Proxy) bruges, når man har brug for en lokal repræsentation af et objekt, der ligger på en anden maskine. Afsnit Dataforbindelse over netværk er et eksempel på dette. RMI (Remote Method Invocation) beskrevet i afsnit 14.3 anvender også dette princip. Cache fungerer som proxy for et objekt med nogle omkostningsfulde metodekald. I de tilfælde hvor en tidligere cachet returværdi fra metodekaldet kan bruges, foretages kaldet ikke, men den cachede værdi returneres i stedet (se afsnit , Dataforbindelse, der cacher forespørgsler). Adgangssproxy bestemmer, hvad klienten kan gøre med det virkelige objekt (Eksempel: UforanderligSamling). Virtuel Proxy udskyder oprettelsen af omkostningsfulde objekter, indtil der er brug for dem.

34 Doven Initialisering/Virtuel Proxy public class VirtuelStak implements Stak private Stak rigtigestak; public void lægpå(object o) if (rigtigestak==null) rigtigestak = new StakMedNedarving2(); rigtigestak.lægpå(o); public Object tagaf() if (rigtigestak==null) rigtigestak = new StakMedNedarving2(); return rigtigestak.tagaf(); Fordele og ulemper: Det rigtige objekt kan ikke oprettes endnu, f.eks. fordi det afhænger af andre objekter, der ikke er klar endnu, At oprette det rigtige objekt er dyrt i hukommelses eller CPUforbrug, og det er måske slet ikke sikkert, at programmet kommer til at bruge objektet, så det er en fordel at udskyde oprettelsen. Hver gang objektet skal bruges, skal det først tjekkes, om det rigtige objekt er blevet oprettet.

35 Designmønstret Iterator Problem: Du er i gang med at lave et system, som andre (klienter) skal anvende, hvor de skal kunne gennemløbe dine data. Du ønsker ikke, at de skal kende noget til, hvordan data er repræsenteret i dit system (f.eks. antal elementer eller deres placering i forhold til hinanden). Løsning: Definér et hjælpeobjekt (en Iterator), som klienten kan bruge til at gennemløbe data i dit system. En Iterator er beregnet til at gennemløbe data En Iterator har som minimum: en metode til at spørge, om der er flere elementer, og en metode til at hente næste element En Iterator bruges i stedet for en tællevariabel. Fordelen ved at definere en Iterator er, at klienten ikke behøver at vide noget om strukturen af de data, der gennemløbes.

36 Designmønstret Facade Problem: Et sæt af beslægtede objekter er indviklede at bruge, og der er brug for en simpel grænseflade til dem. Løsning: Definér et hjælpeobjekt, en Facade, der gør objekterne lettere at bruge. En Facade er altså et objekt, der giver en "brugergrænseflade" til nogle andre objekter og dermed forenkler brugen af disse objekter. Eksempel: URL URL er facade til URLConnection Eksempel: Socket og ServerSocket Er to forskellige facader til SocketImpl, der varetager den egentlige netværkskommunikation

37 Gruppearbejde Hvilke af de designmønstrene ville I/kunne I anvende/er allerede anvendt i HAS IT? Proxy Adapter Observatør/lytter... (f.eks. Facade) Diskutér to og to Fordele og ulemper Hvordan skulle klassediagrammerne ændres? Mere eller mindre komplekst? Mere eller mindre forståeligt?

38 Opgave til næste gang Hvad overvejer du at lave i projektopgaven i OOM? Brug 6 ½ time på det (det er den tid du forventes at lave hjemmearbejde i kurset ud over den 3 ½ times undervisning) Send mindst 5 linjers tekst (og højest 5 sider) Slutbrugerens ønsker (=formålet med projektet) Kort beskrivelse: Hvilket behov skal systemet opfylde? (i f.eks. HAS IT er det 'at kunne få reguleret lamper, radiatorer, gardiner etc i sit hus automatisk') Hvis tid: Udkast til overordnet kravspecifikation (kig f.eks. på opgaven i fildeling uge 2 i Campusnet) Beskrivelsen sendes søndag den 10/4 klokken 18 til: nordfalk@mobilixnet.dk Til undervisningen får du ca. 5 minutter til præsentere din idé for de andre. Overvej om du vil lave det i en gruppe med andre.

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags

Læs mere

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

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004 Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 4 objektorienteret design & hyppigt anvendte designmønstre Hyppigt anvendte designmønstre: Proxy, Adapter, Iterator, Facade, Dynamisk Binding Objektorienteret design

Læs mere

Videregående programmering i Java

Videregående programmering i Java 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

Læs mere

Dag 10 Flertrådet programmering

Dag 10 Flertrådet programmering Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 9 Andre designmønstre Andre designmønstre: Uforanderlig, Fluevægt, Lagdelt Initialisering, Komposit/Rekursiv Komposition, Kommando/Ændring Fremlæggelse af programmering/status

Læs mere

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

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

Dag 10 Flertrådet programmering

Dag 10 Flertrådet programmering Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 7 Swing og MVC Swing: MVC, Datamodeller, JTable, evt. JTree Evt.: Swing: Præsentations og kontroldel Læsning: VP 6 Dette materiale er under Åben Dokumentlicens, se

Læs mere

Singleton pattern i Java

Singleton pattern i Java Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

Læs mere

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter.. 9.8 Kildekode Pakke Klasse Sidenummer db Aktivitetstype 91 Behandler 91 ConnectDB 92 DagensKommentar 93 Helligdag 94 IkkePrimaerTid 94 Patient 96 Patientaftale 96 PatientAktivitet 97 Patientgruppe 98 PatientgruppeItem

Læs mere

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

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

Læs mere

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Tingene i denne forelæsning er ikke eksamenspensum Forelæsningen afrunder kurset, og forklarer nogle af de begreber, som I har mødt under kurset uden at få detaljeret forklaring

Læs mere

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

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation). Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et

Læs mere

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

Læs mere

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

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

OOP e uge kursusgang: Samtidighed (II) Safety = sikkerhed. Safety

OOP e uge kursusgang: Samtidighed (II) Safety = sikkerhed. Safety = sikkerhed I denne sammenhæng: = "trådsikkerhed" " conditions.. stipulate that nothing bad will ever happen" (XP s. 377) Trådsikkerhed betyder sikkerhed mod inkonsistens pga. flertrådning ikke f.eks.

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 5 Model View Controller arkitekturen Model View Controller arkitekturen (MVC) Evt.: Rekursion Læsning: VP 19 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

Web- og serverprogrammering

Web- og serverprogrammering Web- og serverprogrammering Arkitekturer i webprogrammer - dag 6 Model-View-Controller-arkitukturen Flerlags-arkitekturer Læsning: WJSP 10 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

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

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion Polymorfi Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type Coercion Tvangskonvertering (forfremmelse og begrænsning) Oversigt Abstrakt klasse abstrakt

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Klasser og nedarvning

Klasser og nedarvning Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

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

Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter OOP e2002 - uge 42 6. kursusgang Hvordan organiseres et programs grafik-elementer? 1. Teori: class Component og subklasser: Composite pattern layout-managere hændelsesstyret programmering 2. XP-program:

Læs mere

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

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere

Real-time programming safety in Java and Ada

Real-time programming safety in Java and Ada Real-time programming safety in Java and Ada Bo Sandén Presenter: Thomas Bøgholm 25. oktober 2007 Forfatteren Artiklen Synkroniserings Begreber Bo Sandén Professor på Colorado Technical University Beskæftiger

Læs mere

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

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label Programmering 1999 Forelæsning 13, tirsdag 12. oktober 1999 Oversigt Grafiske brugergrænseflader. Komponenter: Knapper, tekstfelter, checkbokse... Vinduer (containere). Hændelser, hændelsesstyret programmering.

Læs mere

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

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

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

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList klassen Gør det let at lave en objektsamling (collection) med et variabelt antal elementer Der er mange andre slags objektsamlinger (se Collection interfacet i JavaDoc)

Læs mere

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004 Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%

Læs mere

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden. Programmering 1999 Forelæsning 5, tirsdag 14. september 1999 Oversigt Mere om klasser og objekter Klassefelter: static Konstante felter: final Indkapsling og synlighed: private og public Overlæsning af

Læs mere

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et

Læs mere

Forelæsning Uge 12 Torsdag

Forelæsning Uge 12 Torsdag Forelæsning Uge 12 Torsdag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

Læs mere

Webserverprogrammering

Webserverprogrammering Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

public Set(int size) { this.listelement = new LinkedList<Integer>(); }

public Set(int size) { this.listelement = new LinkedList<Integer>(); } // Henri AYCARD import java.util.linkedlist; public class Set { private LinkedList listelement; public Set(int size) { this.listelement = new LinkedList(); public boolean contains(int

Læs mere

Note om RMI af Peter Kjærsgaard

Note om RMI af Peter Kjærsgaard Note om RMI af Peter Kjærsgaard 1. Filosofi Filosofien i RMI er, at et objekt på en server skal kunne kaldes fra en klient, som om server-objektet lå på klienten. RMI er dermed på et højere niveau end

Læs mere

Introduction til.net remoting i C#

Introduction til.net remoting i C# Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i C# Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i C#. Den forudsætter kendskab

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter

Læs mere

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

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Køreprøven i uge 7 Form Forberedelse

Læs mere

Serialization i Java

Serialization i Java Serialization i Java Tutorial lavet af Jákup W. Hansen TSU 2006 1.semester 06.novemter 2006 Hvad er Serialization? I vores tekstbog Objects First with Java bliver denne del af Java ikke gennemgået. Men

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

Forelæsning Uge 12 Mandag

Forelæsning Uge 12 Mandag Forelæsning Uge 12 Mandag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

Læs mere

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11 DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4

Læs mere

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.

RMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer. Denne guide er oprindeligt udgivet på Eksperten.dk RMI avanceret Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer. Den forudsætter

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

Parallelle algoritmer

Parallelle algoritmer Parallelle algoritmer 1 Von Neumann s model John von Neumann 1903-57 Von Neumanns model: Instruktioner og data er lagret i samme lager, og én processor henter instruktioner fra lageret og udfører dem én

Læs mere

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

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

DM531 - Softwarearkitektur Projekt - TaxaTracer, Statisk Kort. Martin Dissing-Hansen 251088 Alexander Poopeiko 090288 Jens Riise Danielsen 100267

DM531 - Softwarearkitektur Projekt - TaxaTracer, Statisk Kort. Martin Dissing-Hansen 251088 Alexander Poopeiko 090288 Jens Riise Danielsen 100267 DM531 - Softwarearkitektur Projekt - TaxaTracer, Statisk Kort Martin Dissing-Hansen 251088 Alexander Poopeiko 090288 Jens Riise Danielsen 100267 December 17, 2009 3.1 Valg at brugsmønster til udvidelse

Læs mere

Eksempel på en database: studenter, kurser, eksamener

Eksempel på en database: studenter, kurser, eksamener Udvidet Programmering 1999 Forelæsning 20, fredag 12. november 1999 Relationsdatabaser: relationer, tupler, attributter Forespørgselssproget SQL Databasesystemet PostgreSQL Tilgang til relationsdatabaser

Læs mere

Introduction til.net remoting i VB.NET

Introduction til.net remoting i VB.NET Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i VB.NET Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i VB.NET. Den forudsætter

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList Collection (samling af objekter) med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet i JavaDoc) MusicOrganizer projektet Eksempel

Læs mere

Singleton pattern i C#

Singleton pattern i C# Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

Videregående Programmering for Diplom-E Noter

Videregående Programmering for Diplom-E Noter Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså

Læs mere

Stakke, køer og lidt om hægtede lister

Stakke, køer og lidt om hægtede lister Datastrukturer & Algoritmer, Datalogi C Forelæsning 4/11-2003 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Hvorfor? Fundamentale datastrukturer man får brug for igen og

Læs mere

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

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

Læs mere

Tabeller (I) Tabeller

Tabeller (I) Tabeller Tabeller (I) Klassediagrammer (III) Tabeller og qualified associations Michael R. Hansen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark En tabel fra en mængde A til

Læs mere

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Objektorienteret design med arv og polymorfi:

Objektorienteret design med arv og polymorfi: Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Objektorienteret design med arv og polymorfi: Substitutionsprincippet Composite Design Pattern Finn Nordbjerg Side 1 Objektorienteret

Læs mere

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

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave

Læs mere

Objektorienteret Programmering

Objektorienteret Programmering Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:

Læs mere

Vejledende løsninger

Vejledende løsninger Roskilde Universitetscenter side 1 af 8 sider Vejledende løsninger Opgave 1 Spørgsmål 1.1 a = b - a; b = b - a; a = b + a; Opgaven har flere løsninger. En anden løsning er: a = b + a; b = a - b; a = a

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

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

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

Assignment #5 Toolbox Contract

Assignment #5 Toolbox Contract Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt) antal elementer Afleveringsopgave:

Læs mere

Objektorientering. Programkvalitet

Objektorientering. Programkvalitet 1 PROSA-Bladet nr. 4 1993 Objektorientering = Programkvalitet? Af Finn Nordbjerg, adjunkt ved Datamatikeruddannelsen, Aalborg Handelskole 1. Indledning Objektorientering er blevet et edb-fagets mest udbredte

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

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

Gode praksisser og arkitekturer i Android-programmering. Android - praksisser og arkitekturer Copyright Lund & Bendsen A/S Gode praksisser og arkitekturer i Android-programmering 1 Om oplægsholderen Jacob Nordfalk nordfalk@lundogbendsen.dk Instruktør for Lund&Bendsen Ekstern lektor på IHK Underviser i Java SE, Java EE, Webserverprogrammering,

Læs mere

DM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen 191076 kok04

DM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen 191076 kok04 DM34-1. Obligatorisk opgave Dilemma spillet Jacob Aae Mikkelsen 191076 kok04 April 2005 Kapitel 1 Resumé Denne rapport dokumenterer udviklingsforløbet og afprøvningen af et spil Dilemma. Spillet går ud

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere

dmasark Aflevering - Uge 50

dmasark Aflevering - Uge 50 dmasark Aflevering - Uge 50 Michael Lind Mortensen, 20071202, DAT4 Michael Dahl, 20073943, DAT4 Katalog: http://www.daimi.au.dk/ u073943/dmasark/uge6/ 13. december 2007 Indhold 1 PingClient implementation

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Information om køreprøven i uge

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering (bl.a. brug af for-løkker) Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt)

Læs mere

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 dintprog Manual Revision: 1241 August 24, 2010 Indhold I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering 4 III Sprogkonstruktioner 5 4 Klasser

Læs mere