Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Objektorienteret programmering

Lignende præsentationer


Præsentationer af emnet: "Objektorienteret programmering"— Præsentationens transcript:

1 Objektorienteret programmering
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 årskortnr@post.au.dk
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. dIntProg, E14

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. dIntProg, E14

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. dIntProg, E14

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. Hvad vs. Hvordan dIntProg, E14

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 blomster- problem ville han sikkert have givet en besked tilbage om, at han ikke har nogen metode til at løse problemet. dIntProg, E14

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. dIntProg, E14

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 dIntProg, E14

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

10 Forskellige typer agenter (blomster)
Blomsterhandler Bud 1 * levér bindBuket indbetal bringUd UML Klassediagram dIntProg, E14

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) bringUd(b,a) overbring(b) UML Sekvensdiagram dIntProg, E14

12 Forskellige typer agenter (mekaniker)
IMekaniker reparer(bil) Værkfører fix(bil) skrivFaktura EMekaniker reparer(bil) checkKarburator reparerKarburator * 1 1 * * 1 CPUTester testCPU(bil) UML Klassediagram dIntProg, E14

13 Interaktion mellem agenter (mekaniker)
Mig Værkfører IMekaniker CPUTester EMekaniker fix(bil) reparer(bil) testCPU(bil) check Karburator reparer(bil) UML Sekvensdiagram reparer Karburator skrivFaktura dIntProg, E14

14 Garage projekt i BlueJ Demo dIntProg, E14

15 Oprettelse af objekter i BlueJ og Java
+ dIntProg, E14

16 Metodekald i BlueJ og Java
dIntProg, E14

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, ...) dIntProg, E14

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

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, ...) dIntProg, E14

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

21 Modellering af musikafspiller, f.eks. iTunes
Find eksempler på begreber og tilhørende fænomener (klasser og objekter) Skriv forslagene ind under forelæsningen. dIntProg, E14

22 OO-model for musikafspiller, f.eks. iTunes
Klassediagram: Player * Playlist * Track time name artist album rating playcount lastPlayed dateAdded releaseDate ... 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() ... Skriv forslagene ind under forelæsningen. dIntProg, E14

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 dIntProg, E14

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) dIntProg, E14

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

27 Afleveringsopg 2.2: Raflebæger (DieCup)
I BlueJ implementeres et system med et raflebæger og to terninger Terning Raflebæger Demo 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


Download ppt "Objektorienteret programmering"

Lignende præsentationer


Annoncer fra Google