Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.

Liknende presentasjoner


Presentasjon om: "Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering."— Utskrift av presentasjonen:

1 Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering og søking LC191D Videregående programmering Semesterplan: Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring Else Lervik, januar 2012

2 Aggregering  En aggregering er en en-del-av-sammenheng mellom objekter. Ett objekt består av et eller flere andre objekter. De objektene som aggregatet består av, kan leve både før og etter aggregatet, og omverden har tilgang til disse objektene. Aggregatet vet alltid hvilke objekter det består av. Forelesning 3, side 2 1* poststed Student -studnr +getPoststed() +getStudnr() +setPoststed() +setStudnr() +finnPostnr() +finnSted() Poststed -postnr {readonly} -sted {readonly} +getPostnr() +getSted() Se på koden side EksempelStudent2.java Ett studentobjekt er koplet til eksakt ett poststedobjekt. Poststedobjektet spiller rollen poststed i denne sammenhengen. Dette blir navnet på en objektvariabel i klassen Student. Stjerna sier at ett og samme poststedobjekt er knyttet til mange studentobjekter.

3 Komposisjon  En komposisjon er også en en-del-av-sammenheng mellom objekter, men her har vi en mye sterkere binding mellom objektene enn for aggregering. Omverden har ikke tilgang til de objektene som er gjemt inne i det sammensatte objektet (kompositten). Livet til disse objektene er like langt eller kortere enn livet til det sammensatte objektet. Forelesning 3, side 3 11 navn Student -fdato {readonly} +getFdato() +getNavn() +setNavn() Navn -fornavn -etternavn +getFornavn() +getEtternavn() +setFornavn() +setEtternavn() Se på koden side EksempelStudent4.java Et bestemt navneobjekt tilhører eksakt ett bestemt studentobjekt. Hver student har kun ett navn.

4 Aggregering, komposisjon og mutable objekter  Aggregering  Ved aggregering lager vi ikke kopier av objektene – det er ofte i samsvar med virkeligheten  Potensielt problem  Mange referanser til samme objekt. Lett å miste oversikten.  Mulige løsninger  Bruk immutable objekter hvis mulig.  Bruk pakketilgang for å beskytte objekter (se kap. 11.7, side 379)  Komposisjon  Kompositten skal ha sine egne utgaver av objektene  I praktisk programmering av komposisjon nøyer vi oss imidlertid med enkelteksemplarer av immutable objekter, da ingen kan ødelegge disse uansett  Når komposisjon og når aggregering?  Virkeligheten vi modellere bestemmer hvorvidt vi skal bruke det ene eller det andre. Jmf. Navn og poststed.  (Tabeller inngår vanligvis i en komposisjon, dvs vi lager kopier.)  Aggregering er mest vanlig. Forelesning 3, side 4

5 En register-klasse  Vi skal lage klasser for å administrere uttak av kontorrekvisita og -utstyr i en bedrift. Registeret skal omfatte alt fra blyanter, viskelær og opp til stoler og bord. Vi håndterer imidlertid alt utstyr på samme måte.  Om hver utstyrsvariant lagrer vi  betegnelse (navn),  leverandør,  hvor mye som er på lager (varebeholdning)  nedre grense for bestilling (dersom lagerbeholdningen går under denne verdien, skal varen opp på bestillingslisten). Forelesning 3, side 5 *1 registeret Register Utstyr

6 Hvilke operasjoner bør en klient kunne gjøre i forhold til et register- objekt?  Finn antall typer forskjellig utstyr I regeisteret  Lag en utstyroversikt  Registrer ny utstyrstype  Finn antall på lager av en bestemt type utstyr  Endre lagerbeholdningen for en bestemt type utstyr  Søke fram detaljinfo om en bestemt type utstyr Forelesning 3, side 6 *1 registeret Register Utstyr Klassen Utstyr er gitt. Programmer deler av klassen Register med enkel testklient.

7 Sortering av objekter. Søking blant objekter.  Objektene ligger i en tabell eller i en ArrayList  To typer sorteringsrekkefølger for objekter  Sortering i henhold til objektenes naturlige orden  Definert i metoden compareTo() som er implementasjonen av interfacet Comparable.  Likhet med compareTo() bør bety det samme som likhet med equals()  Sortering i henhold til en rekkefølge definert i en klasse som implementerer interfacet Comparator.  Spesielt eksisterer det en Comparator-klasse som vi kan bruke hvis vi ønsker å sortere tekster i henhold til norsk tegnsett.  Søking  lineært søk  binærsøk, forutsetter at objektene er sortert  Søke- og sorteringsmetoder i Java-API-et  etter objektenes naturlige orden  eller Comparator-objekt som argument til sorteringsmetoden  Gjennomgå SorterOgSoekTabellerJavaAPI.java (side )  Gjennomgå SorterOgSoekArrayListJavaAPI.java (side ) Forelesning 3, side 7

8 Klassen Register  Sortere arraylisten  Naturlig orden  Java.util.Collections.sort(reg); // klassemetode  Vil bruke den compareTo()-metoden som vi har laget i klassen Utstyr Forelesning 3, side 8


Laste ned ppt "Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering."

Liknende presentasjoner


Annonser fra Google