Objektorienteret programmering

Størrelse: px
Starte visningen fra side:

Download "Objektorienteret programmering"

Transkript

1 Forelæsning 1.2 Objektorienteret programmering Java er et OO programmeringssprog BlueJ og Greenfoot er programmeringsomgivelser for Java

2 Praktiske ting Mail sendes til jer på adressen Det er vitalt, at I ser de mails, som vi og instruktorerne sender til jer. Videresend efter behov til anden mail-adresse (al post fra AU). Opgave fra ugeoversigten beskriver hvordan man videresender. I skal installere Java 8 JDK, BlueJ og Greenfoot Hvis I har problemer med ovenstående, så spørg jeres instruktor og/eller medstuderende. Læs kursets web-sider og følge med i de nyheder, der kommer på web-boardet Herunder ugebrevene, som indeholder vigtig information om, hvad der sker på kurset i den pågældende uge.

3 Problemløsning i hverdagen Hvis min bil går i stykker, har jeg et problem; hvad gør jeg for at løse det? Henvender mig på et bilværksted og forklarer dem hvori problemet består. Overlader bilen til værkføreren og får den tilbage i repareret stand nogen tid efter. Hvad har jeg gjort for at løse mit problem? Fundet en passende agent eller serviceudbyder. Overbragt agenten en meddelelse om mit problem. Det er blevet agentens ansvar at løse problemet på mine vegne. Agenten har en metode til at løse problemet, men den behøver jeg ikke at kende til.

4 Problemløsning i hverdagen Samme princip hvis jeg skal sende blomster til min farmor i Svendborg Henvender mig til min lokale blomsterhandler med en meddelelse der indeholder information om hvilke blomster jeg ønsker samt min farmors adresse, og så sker det hele bag kulisserne. Formodentlig ved at blomsterhandleren videregiver min meddelelse til en anden blomsterhandler i Svendborg der sørger for at fremskaffe blomsterne, binde en buket og få dem sendt ud til min farmor.

5 Pointe 1: Delegering til agenter Afkobling Agenters valg af metode er ikke mit problem; tværtimod er der stor fleksibilitet i, at vi ikke blander os i agenters (eksempelvis blomsterhandleres eller værkføreres) metoder. Agenter er fri til at anvende en vilkårlig fremgangsmåde, blot de leverer en løsning på problemet det er deres ansvar.

6 Pointe 2: Forskellige typer af agenter Agenten er modtager af min meddelelse og dermed en nødvendig betingelse for at problemet bliver løst. Hver slags (type) agent har sine metoder som er specifikke for netop den service han kan tilbyde. Havde jeg henvendt mig til værkføreren med mit blomsterproblem ville han sikkert have givet en besked tilbage om, at han ikke har nogen metode til at løse problemet.

7 Pointe 3: Om benyttelse af metaforer i OO En af fordelene ved OOP er benyttelsen af metaforer fra dagligdagen. En OO-programmør kan tænke på sit program som nogle objekter der opfører sig på bestemte måder og har visse ansvar at leve op til trække på et væld af erfaringer fra dagligdagen og herved få ideer til strukturering af det samlede program.

8 Kristen Nygaard om objektorientering Et program er en model, der simulerer opførslen af en del af verden (reel eller imaginær). OO-modellering beskriver virkeligheden ved hjælp af fænomener og begreber. Fænomener objekter Begreber klasser. Kristen Nygaard, grundlægger af OO modellering og programmering (Ole-Johan Dahl) gæsteprofessor på AU i en årrække og havde meget stor betydning for opbygningen af Institut for Datalogi Nygaard-bygningen i IT-parken er opkaldt efter ham

9 UML: Et grafisk specifikationssprog Diagramtyper Klassediagrammer Objektdiagrammer Sekvensdiagrammer Klassediagram Objektdiagram Sekvensdiagram

10 Forskellige typer agenter (blomster) Blomsterhandler Bud levér 1 * bringud bindbuket indbetal UML Klassediagram

11 Interaktion mellem agenter (blomster) Mig Alexandra Blomster Quist Blomster Bud-Johnny Farmor levér(b,a,p) levér(b,a,p) bindbuket(b) UML Sekvensdiagram bringud(b,a) overbring(b)

12 Forskellige typer agenter (mekaniker) IMekaniker Værkfører EMekaniker reparer(bil) 1 fix(bil) 1 skrivfaktura * * reparer(bil) checkkarburator reparerkarburator * 1 CPUTester testcpu(bil) UML Klassediagram

13 Interaktion mellem agenter (mekaniker) Mig Værkfører IMekaniker CPUTester EMekaniker fix(bil) reparer(bil) testcpu(bil) reparer(bil) check Karburator UML Sekvensdiagram skrivfaktura reparer Karburator

14 Garage projekt i BlueJ

15 Oprettelse af objekter i BlueJ og Java +

16 Metodekald i BlueJ og Java

17 Modellering af studieadministration Begreber Klasser (Fænomener Objekter) Studerende (Rasmus, Stine, Søren,...) Fag (dintprog, Perspektiverende kursus, MM-æstetik,...) Lærer (Michael Caspersen, Kurt Jensen,..) Lokale (Aud. E, Aud. F, Koll. G3, Stibitz-113,...) Prøveform (praktisk, mundtlig, skriftlig, projekt,...) Karakter (bestået, ikke bestået, udeblevet, 7,...)

18 OO-model for studieadministrationssystem Studerende * 1 Karakter * Lærer * * Fag * 1 Lokale * * Prøveform Domæne Model

19 Modellering af elektroniske patientjournaler (EPJ) Begreber Klasser (Fænomener Objekter) Patient (Joachim B. Olsen, Dr. Margrethe II,...) Behandling (forbinding, ro, fysioterapi,...) Diagnose (forstuvet håndled, brækket ben, gulsot,...) Operation (fjernelse af blindtarm, sterilisation, fedtsugning,...) Læge (Jesper Hogaard, Lis Vinge Madsen,...) Sygeplejerske (Jane Clemensen, Bente Aarslev,...)

20 OO-model for EPJ-system Patient * 1 Læge * Diagnose * Behandling... Overlæge Reservelæge Domæne Model

21 Modellering af musikafspiller, f.eks. itunes Find eksempler på begreber og tilhørende fænomener (klasser og objekter)

22 OO-model for musikafspiller, f.eks. itunes Klassediagram: Player Playlist Track add(playlist p) remove(playlist p) void import(...) void export(...) * void add(track t) void remove(track t) List<Track> search(string s) void shuffle() void sort(...) void burntodisc()... * time name artist album rating playcount lastplayed dateadded releasedate...

23 Indholdet af kurset dintprog Objektorienteret programmering Java (BlueJ og Greenfoot) Modeldrevet programmering Programmeringsopgaver tager udgangspunkt i simple OO-modeller (klassediagrammer og sekvensdiagrammer), som realiseres i Java Klassediagrammerne er vores specifikationssprog Java er vores implementationssprog Målet er praktiske kompetencer mht. programmering Problemløsning in the small Standardløsninger på standardproblemer (mønstre) Eksamen er en individuel praktisk prøve ved computer Programmering kræver øvelse Øv jer indtil tingene sidder på rygmarven

24 Resten af denne forelæsning Kigge på forskellige BlueJ og Greenfoot projekter: BlueJ: Dato (date) BlueJ: Person Greenfoot: Krabbe + orm + hummer (afleveringsopgave uge 2a) BlueJ: Raflebæger med to terninger (afleveringsopgave uge 2b)

25 Afleveringsopgave 2.1: Krabbe (Crab) I Greenfoot implementeres et system med 3 klasser: Krabbe (Crab) Bevæge sig fremad (når act eller run aktiveres). Dreje når den når kanten af verden. Løber i zig-zag (styret af en tilfældighedsgenerator). Orm (Worm) Kan ikke gøre noget (andet end at blive spist af en krabbe). Hummer (Lobster) Opfører sig på samme måde som krabber bortset fra at de spiser krabber i stedet for orme.

26 Afleveringsopg: Krabbe (Crab) fortsat Dernæst: Modificere krabben så dens løberetning kan styres via piletasterne på tastaturet ( og ) Vi har nu et lille computer spil, hvor I styrer en krabbe, som skal spise flest mulige orme, mens den selv undgår at blive spist af de farlige hummere. Afslutte spillet Hvis krabben bliver ædt af en hummer. Tilføje lyde Krabben siger SLUUUURP når den æder en orm og AUUURGH når den selv bliver ædt af en hummer.

27 Afleveringsopg 2.2: Raflebæger (DieCup) I BlueJ implementeres et system med et raflebæger og to terninger Raflebæger Terning Terning har to metoder: roll() som repræsenterer et kast med terningen. geteyes() som viser antal øjne. Raflebæger indeholder to terninger og har to metode: roll() som repræsenterer et kast med de to terninger. geteyes() som viser det samlede antal øjne på de to terninger.

28 Ingen forelæsning på mandag I stedet skal I selv studere: Videoerne 2.1, 2.2, 2.3, 3.1, 3.2, 3.3 fra BlueJ bogen Kapitel 2-3 fra BlueJ bogen Slide sættet: 03-klasser-og-objekter Kapitel 2-3 fra Greenfoot bogen