Upload
hallvard
View
217
Download
0
Embed Size (px)
Citation preview
8/14/2019 Objektstrukturer Og -Interaksjon
1/31
1
Objekter i OO-programmering
har tilstand og oppfrsel
Objekter har en tilstand
Et sett av felter (egenskaper) ogderes gjeldende verdier
Objekter har en oppfrsel Et sett av metoder
8/14/2019 Objektstrukturer Og -Interaksjon
2/31
2
Forskjellige typer objekter
Dataorienterte objekter primrt laget for lagre sammenhrende dataverdier eller
knytte objekter sammen
Vanlige objekter til sammenhrende data hrer operasjoner
(ogs kalt metoder) for manipulere dataene
Funksjonsorienterte objekter brukes utelukkende for evnene til gjre noe, f.eks.
behandle data som ligger i andre objekter
data
funksjoner
8/14/2019 Objektstrukturer Og -Interaksjon
3/31
3
Verden er full av objekter Opprinnelig id bak OO
et OO-program skal speile verden relevante egenskaper i verden skal beskrives i programmet
verden er full av ting med bestemte egenskaper
mange ting har det samme settet egenskapene, men ulike verdier Et objekt har spesifikke egenskaper, mens en
klasse beskriver felles egenskaper for en bestemttype (klasse) objekter
Hallvard og Trond er ulike person, men begge har et navn, fdselsdato,hyde, vekt, osv.
Hallvard og Trond er objekter av typen Person, en Person haregenskapene navn, fdselsdato, hyde, vekt, osv.
Ved knytte funksjoner til dataene, som metoder,f r en strukturert programmene bedre
8/14/2019 Objektstrukturer Og -Interaksjon
4/31
4
Data-orientert objekt Objekt som representerer filmvisning
data
funksjoner
8/14/2019 Objektstrukturer Og -Interaksjon
5/31
5
Data-orientert objekt Filmvisning hva slags informasjon
trengs for beskrive den?
Mal/ klasse
Enkeltvisning/ objekt / instans
data
funksjoner
8/14/2019 Objektstrukturer Og -Interaksjon
6/31
6
Data-orientert objekt Filmvisning
filmtittel tekst
sal tekst
alder tall
nasjonalitet tekst
dato og tid tekst
pris tall
Merk at p web-siden er det en lenke pr. tidspunkt,
s vi tenker oss at hvert tidspunkt er en filmvisning)
data
funksjoner
8/14/2019 Objektstrukturer Og -Interaksjon
7/31
7
Filmvisningsobjekt/-klassedata
funksjoner
Filmvisning
String filmtittelString salint alder String nasjonalitetString tidint pris
#1: Filmvisning
filmtittel = Aleksandersal = Nova3alder = 15nasjonalitet = USAtid = 20:00pris = 85
#2: Filmvisning
filmtittel = Aleksandersal = Prinsen4alder = 15nasjonalitet = USAtid = 17:00pris = 75#3: Filmvisning
filmtittel = Bad Santasal = Prinsen2alder = 11nasjonalitet = USAtid = 18:50
pris = 70
klasse = generell struktur
spesifikkeobjekter /instanser
8/14/2019 Objektstrukturer Og -Interaksjon
8/31
8
Eksempler p
funksjonsorientering Java sin bruk av toString()-metoden
Alle objekter kan i hvert fall en ting:lage en tekstrepresentasjon av seg selv med toString()-metoden
Med andre ord: Det viktigste er ikke hva slags data (attributter)objektet har, men hva det kan (metoder)
En web-tjener en HTTP-tjener passer til v r definisjon av objekt:
identitet (IP-adressen), datainnhold (dokumenter) og ferdigheter
HTTP definerer et lite sett kommandoer, GET, HEAD, PUT,POST, DELETE
GET og PUT brukes til lese og endre datainnholdet, men denfaktiske utfrelsen av operasjonen kan innebre omfattendelogikk og programaktivering
data
funksjoner
8/14/2019 Objektstrukturer Og -Interaksjon
9/31
9
La oss definere
FilmvisningsklassenVi skriver Filmvisningsklassen
og lager eksempel-instansene
8/14/2019 Objektstrukturer Og -Interaksjon
10/31
10
Filmvisningsklassen
Ett attributt for hver dataenhet
navnet forteller andre programmerere hva slags data det er typen forteller Java hva slags data det er
f r en standard initialverdi, men br initialiseres eksplisitt
NB! Vi har utelatt nasjonalitet og prisfor gjre eksemplet enklere
8/14/2019 Objektstrukturer Og -Interaksjon
11/31
11
Filmvisningsinstanser
Deklarerer lokale variabler,for kunne referere til instansene
Nye instanser lages med new ()
8/14/2019 Objektstrukturer Og -Interaksjon
12/31
12
Vise innholdet til
Filmvisningsinstansene Vi skriver ut innholdet til System.out
Utskrift kommer iConsole-viewet
8/14/2019 Objektstrukturer Og -Interaksjon
13/31
13
Hvordan kan en alternativt gjre
initialiseringen?Definere og bruke konstruktr!
8/14/2019 Objektstrukturer Og -Interaksjon
14/31
14
Vi legger til klassen Film og
endrer p
Filmvisning Attributtene filmtittel og alder flyttes fra
Filmvisning til Film
filmtittel endres til tittel
Kode i Filmvisning og KinoProgram endres
deretter
Hvordan ser objektstrukturen v r ut n ?
8/14/2019 Objektstrukturer Og -Interaksjon
15/31
15
Fr introduksjon av Film-klasse
Filmvisning
String filmtittelString salint alder String tid
#1: Filmvisning
filmtittel = Aleksandersal = Nova3
alder = 15tid = 20:00
#2: Filmvisning
filmtittel = Aleksander
sal = Prinsen4alder = 15tid = 17:00
#3: Filmvisning
filmtittel = Bad Santa
sal = Prinsen2alder = 11tid = 18:50
klasse
spesifikkeobjekter /instanser
8/14/2019 Objektstrukturer Og -Interaksjon
16/31
8/14/2019 Objektstrukturer Og -Interaksjon
17/31
17
Alternativt, med s kalte
referanser/assosiasjoner
Filmvisning
String salString tid
#1: Film
tittel = Aleksander
alder = 15
#2: Film
tittel = Bad Santa
alder = 11
Film
String tittel
int alder
#3: Filmvisning
sal = Nova3tid = 20:00
#5: Filmvisning
sal = Prinsen2tid = 18:50
#4: Filmvisning
sal = Prinsen4tid = 17:00
film film filmfilm
8/14/2019 Objektstrukturer Og -Interaksjon
18/31
18
Introduksjonen av Film-klassen
introduserte noen endringer Endringer i koden
flyttet filmtittel og alder fra Filmvisning til Film
referanser til filmtittel og alder m tte endres filmvisning.filmtittel ble til
filmvisning.film.tittel
Kunne dette vrt unng tt?
Bruke metoder for hente ut data! koden forholder seg til metoder, ikke til datafelt
f r strre frihet til endre datastrukturer, uten endre annen kode
8/14/2019 Objektstrukturer Og -Interaksjon
19/31
19
Utlesing av data med metoder
For hvert felt (eller egentlig logisk stykkedata) defin r en get-metode get f.eks. getFilmtittel
all kode bruker denne get-metoden filmvisning.filmtittel blir til
filmvisning.getFilmtittel()
Ved flytting av data eller endring avdatarepresentasjon, s trenger en bare endreget-metoden, ikke annen kode
8/14/2019 Objektstrukturer Og -Interaksjon
20/31
20
Diagrammer
Vi kommer til bruke flere typer diagrammer for visualisere forskjellige aspekter ved objekt-orienterte programmer
UML-diagrammer (Unified Modelling Language) Klasse- og objektdiagrammer brukes for visualisere klassedefinisjonene
og instanser Samhandlingsdiagrammer brukes for visualisere hvordan objekter
bruker hverandre Sekvensdiagrammer brukes ogs for visualisere samhandling, men med
fokus p sekvensen av metodekall
Ark-modellen bruker vi i tillegg som en uformell m te visualisere hva
som skjer i programmet ved kjring
8/14/2019 Objektstrukturer Og -Interaksjon
21/31
21
Samhandling og instanser
KinoProgram
alexander1:Filmvisning
1: get Filmtittel()
System.out:PrintStream2: p rintln()
klasse, angitt ved kun
instanser, angitt med :
alexander:Film1.1: getTittel()
8/14/2019 Objektstrukturer Og -Interaksjon
22/31
22
Samhandling og instanser
KinoProgramalexander1:Filmvisning
1: getFilmtittel()
System.outPrintStream
2: println()
alexander:Film
1.1: getTittel()
8/14/2019 Objektstrukturer Og -Interaksjon
23/31
23
Vise innholdet til
Filmvisningsinstanser (2) Alternativt kan en definere en instansmetode og be
objektet om skrive seg ut!
Instansmetoden kan referere direkte til instansens egneattributter
Metoden kalles p
Filmvisningsinstansen,uten parameter
Metodens utfres i kontekst av Filmvisningsinstansen
8/14/2019 Objektstrukturer Og -Interaksjon
24/31
24
En instansmetode kan ogs ha vanlige parametre
Et objektparameter kan ogs bli bedt om utfre en metode println er en instansmetode i PrintStream-klassen
System sitt out-attributt refererer til en PrintStream-instans
Metoden kalles medeksplisitt parameter
Vise innholdet til
Filmvisningsinstanser (3)
8/14/2019 Objektstrukturer Og -Interaksjon
25/31
25
Samhandling og instanser
KinoProgramalexander1:Filmvisning
1: printFilmvisning() out:PrintStream
1.1: println()
Filmvisning sin printFilmvisning-metodekaller PrintStream sin println-metode
8/14/2019 Objektstrukturer Og -Interaksjon
26/31
26
Samhandling og instanser
KinoProgram alexander1:Filmvisning
printFilmvisning()
out:PrintStream
println()
8/14/2019 Objektstrukturer Og -Interaksjon
27/31
27
Oppgave:Endre printFilmvisning
void printFilmvisning(java.io.printStream out) {out.println(this);
}
Hvordan blir diagrammene n ?
8/14/2019 Objektstrukturer Og -Interaksjon
28/31
28
Samhandling og instanser
KinoProgramalexander1:Filmvisning
1: printFilmvisning() out:PrintStream
1.1: println()
Filmvisning sin printFilmvisning-metodekaller PrintStream sin println-metode
1.1.1: toString()
8/14/2019 Objektstrukturer Og -Interaksjon
29/31
29
Samhandling og instanser
KinoProgram alexander1:Filmvisning
printFilmvisning()
out:PrintStream
println()
toString()
8/14/2019 Objektstrukturer Og -Interaksjon
30/31
30
Forskjellige typer objekter
Dataorienterte objekter primrt laget for lagre sammenhrende dataverdier eller
knytte objekter sammen
Vanlige objekter til sammenhrende data hrer operasjoner
(ogs kalt metoder) for manipulere dataene
Funksjonsorienterte objekter brukes utelukkende for evnene til gjre noe, f.eks.
behandle data som ligger i andre objekter
data
funksjoner
8/14/2019 Objektstrukturer Og -Interaksjon
31/31