øving Om Enkle Objekter

Embed Size (px)

Citation preview

  • 8/14/2019 ving Om Enkle Objekter

    1/17

    1

    Enkle objekter

    Enkle data-orienterte objekter felt

    instansiering

    navigering mellom objekter enkle (instans)metoder

    toString()-metoden

  • 8/14/2019 ving Om Enkle Objekter

    2/17

    2

    Person-klassen Knytter sammen

    familiemedlemmer mor og far: enkle felt barn: n-dimensjonal tabell

    Eksempel: Marit ogHallvard er foreldrenetil Jens og Anne

    PersonString name

    Person mother

    Person father

    Person[ ] children

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

    #4: Person

    String name = Anne

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    3/17

    3

    Struktur av Person-objekter Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard; Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard;

    anne.mother = marit; anne.father = hallvard;

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

  • 8/14/2019 ving Om Enkle Objekter

    4/17

    4

    Struktur av Person-objekter Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard;

    Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard;

    anne.mother = marit; anne.father = hallvard;

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    5/17

    5

    Struktur av Person-objekter Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard;

    Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard;

    anne.mother = marit; anne.father = hallvard;

    #4: Person

    String name = Anne

    Person mother =

    Person father =

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    6/17

    6

    Struktur av Person-objekter Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard;

    Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard;

    anne.mother = marit; anne.father = hallvard;

    #4: Person

    String name = Anne

    Person mother =

    Person father =

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    7/17

    7

    Struktur av Person-objekter Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard;

    Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard;

    anne.mother = marit; anne.father = hallvard;

    #4: Person

    String name = Anne

    Person mother =

    Person father =

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    8/17

    8

    Struktur av Person-objekter Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard;

    Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard; anne.mother = marit; anne.father = hallvard;

    #4: Person

    String name = Anne

    Person mother =

    Person father =

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    9/17

    9

    Struktur av Person-objekter Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard;

    Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard;

    anne.mother = marit; anne.father = hallvard;

    #4: Person

    String name = Anne

    Person mother =

    Person father =

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    10/17

    10

    Midlertidig inkonsistens Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard;

    Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard;

    anne.mother = marit; anne.father = hallvard;

    #4: Person

    String name = Anne

    Person mother =

    Person father =

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    11/17

    11

    Endelig konsistens Person marit = new Person(), hallvard = new Person();

    marit.name = Marit; hallvard.name = Hallvard;

    Person jens = new Person(); jens.name = Jens;

    Person anne = new Person(); anne.name = Anne;

    marit.children = new Person[]{jens, anne}

    hallvard.children = new Person[]{jens, anne}

    jens.mother = marit; jens.father = hallvard; anne.mother = marit; anne.father = hallvard;

    #4: Person

    String name = Anne

    Person mother =

    Person father =

    #1: Person

    String name = Marit

    Person[ ] children =

    #2: Person

    String name = Hallvard

    Person[ ] children =

    #3: Person

    String name = Jens

    Person mother =

    Person father =

  • 8/14/2019 ving Om Enkle Objekter

    12/17

    12

    Person-metoder

    isMotherOf(Person)-metoden returnerer true hvis argumentet (ogsen Person) er moren til this (alts Person-objektet som isMotherOfkalles p. Merk at det koblinger (piler) skal sjekkes i begge retning:bde at this refererer riktig til Person-argumentet og at Person-argumentet refererer riktig til this.

    isFatherOf(Person)-metoden er som isMotherOf, men sjekkerfarskap

    isSiblingOf(Person)-metoden returnerer true hvis argumentet (ogsen Person) er ssken til this, alts har de samme foreldre. Merk at enikke er sin egen ssken!

    isHalfSiblingOf(Person)-metoden returnerer true hvis argumentet(ogs en Person) er halvssken til this, alts deler n og kun nforelder.

    Flgende uttrykk vil alle gi true: hallvard.isFatherOf(jens) marit.isMotherOf(anne) jens.isSiblingOf (anne) (men jens.isSiblingOf(jens) gir false)

  • 8/14/2019 ving Om Enkle Objekter

    13/17

    13

    toString()

    Person p = new Person();// ved utskrift kalles toString()-metoden

    System.out.println(p); // p.toString() kalles

    For person er det nyttig skrive ut: eget navn

    morens og farens navn

    alle barnas navn

    Fint for sjekke at objektstrukturen erkorrekt (som forventet)

  • 8/14/2019 ving Om Enkle Objekter

    14/17

    14

    Kongefamilien

    Harald og Sonja Haakon og Mette-Marit

    Ingrid Alexandra

    Sigurd Magnus

    Mrtha og Ari

    Maud Angelica

    Leah Isadora

    Emma Tallulah

    Tegn frst objektstrukturen, skriv s koden

    Kan vre lurt med hjelpemetoder, for gjre koden

    kortere, f.eks. Person createPerson(String name) og void initParents(Person person, Person father, Person mother),

    eller en kombinasjon Person createPerson(String name, Person father, Person mother)

  • 8/14/2019 ving Om Enkle Objekter

    15/17

    15

    Kongefamilien Brukes som hovedprogram, enten

    et Java-program med en main-metode, eller

    et Scrava-program

    Skriver ut en oversikt over kongefamilien vha.

    Person-klassen sin toString()-metode opprett objektstrukturen som tilsvarer kongefamilien, og pass p ha n eller

    flere variabler som refererer til Person-objektene

    skriv ut strukturen ved bruke System.out.println() p alle objektene eller

    evt. kun p Harald sitt Person-objekt, dersom dette implisitt skriver ut all

    info. om etterkommerne

    Viktigst sjekke at objektstrukturen stemmer, ibegge retninger, bde nedover og oppover i

    Person-hierarkiet

  • 8/14/2019 ving Om Enkle Objekter

    16/17

    16

    Card-klassen

    Card suit (kortfarge, en av S, H, D og C)

    face (kortverdi, 1 (ess) til 13 (konge))

    String toString()-metode returnerer suit og face somen String, f.eks. spar ess gir S1

    Card

    String suit

    int face

    #sparess: Card

    String suit = S

    int face = 1

    #klverkonge: Card

    String suit = C

    int face = 13

  • 8/14/2019 ving Om Enkle Objekter

    17/17

    17

    CardDeck-klassen

    CardDeck cards, Card-tabell, som inneholder 52 kort

    void build()-metoden skal fylle stokken med kort

    alle spar-kortene (S), deretter hjerter (H), ruter (D) og klver (C)

    innenfor kortfargene, verdiene 1 oppover til og med 13

    alts: S1, S2, ... S13, H1, H2, ... H13, D1, D2, ... D13, C1, C2, ... C13, Card getCard(int) skal returnere kortet p en bestemt posisjon

    etter at build() er kalt skal getCard(0) gi kortet som representerer spar ess og

    getCard(51) skal gi kortet som representerer klver konge

    #1: CardDeck

    Card[ ] cards =

    #sparess: Card

    String suit = S

    int face = 1

    #klverkonge: Card

    String suit = C

    int face = 13

    ...

    ...

    etter build()

    CardDeckCard[ ] cards