Transcript

Introduktion til objektorientering

OO, Java og BlueJ

Plan

• Time 1– Objekt-orienteret problemløsning– BlueJ eksempel

• Time 2– Begreber og fænomener klasser og objekter– Modellering– Øvelse: iTunes

dIntProg, E12

dIntProg, E12

Problemløsning i hverdagen (1)

• 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, E12

Problemløsning i hverdagen (2)

• 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, E12

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.

dIntProg, E12

Pointe 2: Forskellige typer af agenter• Forskellige typer 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 havde nogen metode til at løse problemet.

dIntProg, E12

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, E12

UML: Et grafisk beskrivelsessprog

• Diagramtyper– Klassediagrammer– Objektdiagrammer– Sekvensdiagrammer– …

Klassediagram

Objektdiagram

Sekvensdiagram

dIntProg, E12

Interaktion mellem agenter

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)

dIntProg, E12

Forskellige typer agenter

Blomsterhandler Bud

levér

bindBuket

indbetal

bringUd

Mig Værkfører IMekaniker

dIntProg, E12

Interaktion mellem agenter

fix(bil)reparer(bil)

EMekaniker

karburatorCheck

reparer

reparer(bil)

CPUTester

testCPU(bil)

skrivFaktura

dIntProg, E12

Forskellige typer agenter

Værkfører

fix(bil)skrivFaktura

EMekaniker

reparer(bil)checkKarburatorreparer

CPUTester

testCPU(bil)

IMekaniker

reparer(bil)

I BlueJ

dIntProg, E12

BlueJ og Java – Oprettelse af Objekter

dIntProg, E12

+

BlueJ og Java – Metodekald

dIntProg, E12

dIntProg, E12

Kristen Nygaard om objektorientering

En programudførelse betragtes som et fysisk modelsystem der simulerer opførslen af en reel eller imaginær del af verden.

Fysisk modellering er baseret på opfattelse af virkeligheden i ter-mer af fænomener og begreber.

Et fysisk modelsystem konstrue-res ved at modellere fænomener som objekter og begreber som klasser.

Kristen Nygaard, 1926-2002

dIntProg, E12

Modellering, begreber og fænomener (1)

• Studieadministration

– Studerende (Rasmus, Stine, Søren, ...)

– Fag (dIntProg, Perspektiverende kursus, MM-æstetik, ...)

– Underviser (mec, gudmund, olavb, ...)

– Lokale (Aud. E, Koll. G3, Stibitz-113, ...)

– Prøveform (praktisk, mundtlig, skriftlig, projekt, ...)

– Prøveresultat (bestået, ikke bestået, udeblevet, 13, ...)

dIntProg, E12

Modellering, begreber og fænomener (2)

• Elektroniske patientjournaler (EPJ)

– 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, E12

Modellering, begreber og fænomener (3.1)

• Musikafspiller, f.eks. iTunes

– Find eksempler på begreber og tilhørende fænomener

dIntProg, E12

Model for studieadministrationssystem

Domæne

Fag

Studerende

*

*

Lokale1*Lærer * *

Prøveform

*

*

Karakter1

dIntProg, E12

Model for EPJ-system

Domæne Model

Læge

Patient Diagnose

Behandling

Overlæge Reservelæge

...

*

1

*

*

dIntProg, E12

Modellering, begreber og fænomener (3.2)

• Musikafspiller, f.eks. iTunes

– Giv bud på relevante klasser og relationer mellem disse– Giv bud på funktionalitet og ansvarsplacering heraf

dIntProg, E12

Modellering, begreber og fænomener (3.3)

• Musikafspiller, f.eks. iTunes

– Udsnit af klassemodel for iTunes

Track

timenameartistalbumratingplaycountlastPlayeddateAddedreleaseDate...

void add(Track t)void remove(Track t)

List<Track> search(String s)

void shuffle()void sort(...)

void burnToDisc()...

Playlist

*

add(Playlist p)remove(Playlist p)

void import(...)void export(...)

...

Player

*

dIntProg, E12

dIntProg

• Objektorienteret programmering– Java

• Modeldrevet programmering– programmeringsopgaver tager udgangspunkt i simple OO-

modeller som realiseres i Java

• Målet er praktiske kompetencer mht. Programmering– problemløsning ”in the small”– standardløsninger på standardproblemer (mønstre)– individuel praktisk prøve ved computer

• Programmering er en kontaktsport– Øv jer!