Objektstrukturer Og -Interaksjon

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