Objektstrukturer Og -interaksjon

  • Uploaded by: hallvard
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Objektstrukturer Og -interaksjon as PDF for free.

More details

  • Words: 1,295
  • Pages: 31
Objekter i OO­programmering har tilstand og oppførsel • Objekter har en tilstand • Et sett av felter (egenskaper) og  deres gjeldende verdier

• Objekter har en oppførsel • Et sett av metoder

1

 

 

Forskjellige typer objekter

data

• Dataorienterte objekter – primært laget for å lagre sammenhørende dataverdier eller  knytte objekter sammen

• ”Vanlige” objekter – til sammenhørende data hører operasjoner (også kalt metoder) for å manipulere dataene

• Funksjonsorienterte objekter – brukes utelukkende for evnene til å gjøre noe, f.eks.  behandle data som ligger i andre objekter 2

 

funksjoner  

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 bestemt  type (klasse) objekter – Hallvard og Trond er ulike person, men begge har et navn, fødselsdato,  høyde, vekt, osv. – Hallvard og Trond er objekter av typen Person, en Person har  egenskapene navn, fødselsdato, høyde, vekt, osv.

3

• Ved å knytte funksjoner til dataene, som metoder,  får en strukturert programmene bedre  

 

Data­orientert objekt

data

• Objekt som representerer filmvisning

funksjoner 4

 

 

Data­orientert objekt

data

• Filmvisning – hva slags informasjon trengs for å beskrive den?

• Mal/klasse • Enkeltvisning/objekt/instans 5

 

funksjoner  

Data­orientert objekt

data

• Filmvisning – filmtittel

tekst

– sal

tekst

– alder

tall

– nasjonalitet

tekst

– dato og tid – pris

6

tekst tall

• Merk at på web­siden er det en lenke pr. tidspunkt, funksjoner så vi tenker oss at hvert tidspunkt er en filmvisning)  

 

Filmvisningsobjekt/­klasse data

#1: Filmvisning

Filmvisning String filmtittel String sal int alder String nasjonalitet String tid int pris klasse = generell struktur 7

 

filmtittel = ”Aleksander” sal = ”Nova3” alder = 15 nasjonalitet = ”USA” tid = ”20:00” pris = 85 #3: Filmvisning

#2: Filmvisning filmtittel = ”Aleksander” sal = ”Prinsen4” alder = 15 nasjonalitet = ”USA” tid = ”17:00” pris = 75

filmtittel = ”Bad Santa” sal = ”Prinsen2” alder = 11 nasjonalitet = ”USA” tid = ”18:50” pris = 70

spesifikke objekter / instanser

funksjoner  

Eksempler på  funksjonsorientering

data

• 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 den  faktiske utførelsen av operasjonen kan innebære omfattende  funksjoner logikk og programaktivering 8

 

 

La oss definere  Filmvisningsklassen Vi skriver Filmvisningsklassen  og lager eksempel­instansene

9

 

 

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 bør initialiseres eksplisitt

10

 

– NB! Vi har utelatt nasjonalitet og pris for å gjøre eksemplet enklere

 

Filmvisningsinstanser

• Deklarerer lokale variabler, for å kunne referere til instansene • Nye instanser lages med new () 11

 

 

Vise innholdet til  Filmvisningsinstansene • Vi skriver ut innholdet til System.out

12

• Utskrift kommer i Console­viewet  

 

Hvordan kan en alternativt gjøre  initialiseringen? Definere og bruke konstruktør!

13

 

 

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å? 14

 

 

Før introduksjon av Film­klasse #1: Filmvisning

Filmvisning String filmtittel String sal int alder String tid klasse

15

 

filmtittel = ”Aleksander” sal = ”Nova3” alder = 15 tid = ”20:00”

#2: Filmvisning filmtittel = ”Aleksander” sal = ”Prinsen4” alder = 15 tid = ”17:00”

#3: Filmvisning filmtittel = ”Bad Santa” sal = ”Prinsen2” alder = 11 tid = ”18:50”

spesifikke objekter / instanser

 

Etter introduksjon av Film­klasse Film

#1: Film

#2: Film

String tittel int alder

tittel = ”Aleksander” alder = 15

tittel = ”Bad Santa” alder = 11

Filmvisning Film film String sal String tid

16

 

#3: Filmvisning

#4: Filmvisning

#5: Filmvisning

film = sal = ”Nova3” tid = ”20:00”

film = sal = ”Prinsen4” tid = ”17:00”

film = sal = ”Prinsen2” tid = ”18:50”

 

Alternativt, med såkalte  referanser/assosiasjoner Film

#1: Film

#2: Film

String tittel int alder

tittel = ”Aleksander” alder = 15

tittel = ”Bad Santa” alder = 11

film

Filmvisning String sal String tid

17

 

film

film

film

#3: Filmvisning

#4: Filmvisning

#5: Filmvisning

sal = ”Nova3” tid = ”20:00”

sal = ”Prinsen4” tid = ”17:00”

sal = ”Prinsen2” tid = ”18:50”

 

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 vært unngått? • Bruke metoder for å hente ut data! – koden forholder seg til metoder, ikke til datafelt – får større frihet til å endre datastrukturer, uten å endre annen kode 18

 

 

Utlesing av data med metoder • For hvert felt (eller egentlig logisk stykke  data) 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 av  datarepresentasjon, så trenger en bare endre  get­metoden, ikke annen kode 19

 

 

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

20

 

– Ark­modellen bruker vi i tillegg som en uformell måte å visualisere hva  som skjer i programmet ved kjøring

 

Samhandling og instanser 1: getFilmtittel()

alexander1: Filmvisning

1.1: getTittel()

alexander: Film

KinoProgram 2: println()

klasse, angitt ved kun

21

 

System.out:PrintStream

instanser, angitt med :

 

Samhandling og instanser KinoProgram

alexander1: Filmvisning

alexander: Film

System.out PrintStream

1: getFilmtittel() 1.1: getTittel() 2: println()

22

 

 

Vise innholdet til  Filmvisningsinstanser (2) • Alternativt kan en definere en instansmetode og be  objektet om å skrive seg ut! • Instansmetoden kan referere direkte til instansens egne  attributter

• Metoden kalles på Filmvisningsinstansen, uten parameter • Metodens utføres i kontekst av Filmvisningsinstansen 23

 

 

Vise innholdet til  Filmvisningsinstanser (3) • En instansmetode kan også ha ”vanlige” parametre

• Et objektparameter kan også bli bedt om å utføre en metode – println er en instansmetode i PrintStream­klassen – System sitt out­attributt refererer til en PrintStream­instans

• Metoden kalles med eksplisitt parameter 24

 

 

Samhandling og instanser

KinoProgram

1: printFilmvisning()

alexander1: Filmvisning

1.1: println() out:

PrintStream

Filmvisning sin printFilmvisning­metode kaller PrintStream sin println­metode 25

 

 

Samhandling og instanser KinoProgram

alexander1: Filmvisning

out:PrintStream

printFilmvisning() println()

26

 

 

Oppgave: Endre printFilmvisning void printFilmvisning(java.io.printStream out) { out.println(this); } Hvordan blir diagrammene nå?

27

 

 

Samhandling og instanser

KinoProgram

1: printFilmvisning()

alexander1: Filmvisning

1.1: println() 1.1.1: toString()

out: PrintStream

Filmvisning sin printFilmvisning­metode kaller PrintStream sin println­metode 28

 

 

Samhandling og instanser KinoProgram

alexander1: Filmvisning

out:PrintStream

printFilmvisning() println() toString()

29

 

 

Forskjellige typer objekter

data

• Dataorienterte objekter – primært laget for å lagre sammenhørende dataverdier eller  knytte objekter sammen

• ”Vanlige” objekter – til sammenhørende data hører operasjoner (også kalt metoder) for å manipulere dataene

• Funksjonsorienterte objekter – brukes utelukkende for evnene til å gjøre noe, f.eks.  behandle data som ligger i andre objekter 30

 

funksjoner  

Læringsmål for forelesningen • Objektorientering – Objektstrukturer – Funksjonsorientering og interaksjon mellom objekter – Diagrammer

• Java­programmering – get­metoder

• Eclipse – Manipulasjon av klasser og metoder

31

 

 

Related Documents

Og Mandino
October 2019 29
Resume Og
May 2020 15
Og-presentation
June 2020 9
Kompem Og
July 2020 13
Dvarim - Og
December 2019 23

More Documents from ""

Innkapslingseksempel
December 2019 14
Interface
December 2019 61
Enum
December 2019 19
Ark-modellen
December 2019 19
Rpn Kalkulator
December 2019 12