Download præsentationen
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
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.