Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
C++ for Java-programmerere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Samarbeid mellom objekter
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
C# for javaprogrammerere
En gang til!? .
Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
Java 11 Programmering med og uten objekter: hva er forskjellen?
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Arv og polymorfi, del 3 Modifikatoren abstract side 2-3
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Lokale variable Hvis vi trenger å ta vare på en verdi, inne i en metode kan vi definere en lokal variabel: int amount = 0; vi må fortelle hvilken type.
Variabler, datatyper og uttrykk
IS-102 Interaksjon med objekter
Utskrift av presentasjonen:

Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8 Samarbeid mellom objekter Hva er samarbeid?side 2-5 Klassen Navnside 6 Komposisjon i klassediagramside 7 Sekvensdiagram – illustrerer samarbeidside 8 Referansetyper i grensesnittet til en klasseside 9-10 Repetisjon: Argumentoverføring side 11 Aggregeringside Å sammenligne objekterside Metoden equals()side Metoden compareTo()side Oppussingseksemplet, del 1side 20-22

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 2 Objekter samarbeider ved å sende meldinger klient- program (main()) A hjelpMeg1() B hjelpMeg2() tjenerklient tjener Et og samme objekt kan spille både rollen klient og rollen tjener.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 3 Et objekt er bygget opp av mindre deler navn fdato Ole Andreas Thomassen studenten class Student { private String navn; private int fdato; // ååååmmdd class TestStudent1 { public static void main(String[] args) { Student studenten = new Student("Ole Andreas Thomassen", );

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 4 Objektet løser oppgaver ved å samarbeide med de delene det består av Ole Andreas Thomassen navn fdato Finn etternavnet Hjelp meg! class TestStudent1 { public static void main(String[] args) { Student studenten = ………. String etternavn = studenten.finnEtternavn();

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 5 Samarbeid Et objekt samarbeider med et annet objekt ved å sende meldinger til det. For at det skal være mulig må det andre objektet være tilgjengelig. Enten –som objektvariabel (eller klassevariabel) –som parameter –som en lokal variabel

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 6 Vi deler navnet i to; fornavn og etternavn Vis klassen Navn, programliste 8.2, side class Student { private String fornavn; private String etternavn; private int fdato; lager en egen klasse for Navn }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 7 Komposisjon, en-del-av-sammenheng 11 navn Student fdato finnFdato finnFornavn finnEtternavn settFornavn settEtternavn Navn fornavn etternavn finnFornavn finnEtternavn settFornavn settEtternavn Et studentobjekt består av en fødselsdato og et navne-objekt Vis program- liste 8.3, side Kompositten har det fulle og hele ansvaret for de delene den består av. Delene eksisterer ikke uten at kompositten eksisterer. kun ett navne- objekt pr student-objekt hvert navne-objekt er med i kun ett student-objekt

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 8 Sekvensdiagram – studenten.finnEtternavn() ”klient” studenten new finnEtternavn() navn finnEtternavn() understrekning betyr objektnavn melding sendes objektet er i aktivitet livslinjen til objektene retur fra melding Klienten lager et student- objekt. Klienten ber studenten finne etternavnet sitt. Studenten søker hjelp hos objektet navn. Studenten sender etternavnet tilbake til klienten.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 9 Referansetyper i grensesnittet til en klasse Ofte praktisk for klienten å bruke spesiallagede klasser. Vis programliste 8.4, side Merk at studentobjektet har sin egen kopi av navneobjektet. Hva hvis studentobjektet ikke har sin egne kopi?

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 10 Studentobjektet har ikke egen kopi av navneobjektet Oppgave. Hva skrives ut? Navn studNavn = new Navn("Ole Andreas", "Thomassen"); Student studenten = new Student(studNavn, ); System.out.println("A: Student " + studenten); studNavn.settFornavn("Ingolf"); System.out.println("B: Student " + studenten); Navn mittNavn = studenten.finnNavn(); mittNavn.settFornavn("Kåre"); System.out.println("C: Student " + studenten); studenten. settNavn(new Navn("Ole Andreas", "Haug")); System.out.println("D: Student " + studenten); class Student { private Navn navn; private int fdato; public Student(Navn startNavn, int startFdato) { navn = startNavn; // lager ikke kopi, skummelt! fdato = startFdato; } public int finnFdato() { return fdato; } public Navn finnNavn() { return navn; // lager ikke kopi, skummelt! } public void settNavn(Navn nyttNavn) { navn = nyttNavn; // lager ikke kopi, skummelt! } public String toString() { return navn + ", født: " + fdato; } Tips: Tegn en figur som viser alle objekter som blir laget. Dette er ikke en komposisjon. Navneobjektet kan leve lenger enn student-objektet.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 11 Repetisjon: Argumentoverføring og retur av verdier Et argument er alltid en verdi, enten av en primitiv datatype eller av en referansetype. (Kan være et uttrykk der verdien beregnes.) Ved kallet settes hver parameter lik det tilhørende argumentet i rekkefølge. Inne i metodene fungerer parametrene som om de var lokale variabler. Parameteren er av en primitiv datatype: –Den får startverdi lik argumentet. Parameteren og argumentet er helt uavhengig av hverandre. Parameteren er en referanse: –Den får som verdi en referanse som er lik argumentet. Det vil si at vi får to referanser til det samme objektet. Dataene i objektet kan hentes ut, eventuelt forandres, ved hjelp av begge referansene. Bruk av konstruktøren: Student studenten = new Student("Ole Andreas Thomassen", ); Konstruktørhode: public Student(String startNavn, int startFdato) parametre argumenter Gjør oppgavene side 306.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 12 Aggregering Student-objektet er ikke lenger det eneste objektet som har tilgang til navne- objektet. Kan ha flere referanser til det samme mutable objektet. –Dermed kan datainnholdet endres fra mange forskjellige steder. –Kan risikere å miste oversikten… Vurder å bruke immutable klasser (eksempel: String) Vurder eventuelt å lage kopier (komposisjon i stedet for aggregering) – er dette i tilfelle en riktig beskrivelse av virkeligheten? Husk at tabeller er mutable objekter! 11 navn Student fdato finnFdato finnNavn settNavn Navn fornavn etternavn finnFornavn finnEtternavn settFornavn settEtternavn Lag klasser med færrest mulig koplinger!

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 13 Komposisjon og aggregering Begge deler beskriver et en-del-av forhold mellom objekter. Det sammensatte objektet (kompositten eller aggregatet) består av de øvrige objektene. I en komposisjon har kompositten ansvaret for delobjektenes liv og død. I en aggregering kan delobjektene leve uavhengig av aggregatet. Virkeligheten som modelleres bestemmer om det er riktig å bruke komposisjon eller aggregering. Dersom delobjektet ikke eksisterer uten at det sammensatte objektet også eksisterer, skal du bruke komposisjon. –I praksis betyr det at delobjektet genereres (ved bruk av new) inne i den klassen som hovedobjektet tilhører. –Dersom du skal være sikret at delobjektet dør samtidig med hovedobjektet, må eventuelle tilgangsmetoder gi klienter tilgang til kopier av delobjektet. Gjør oppgavene side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 14 Å sammenligne objekter Vis programliste 8.5 side Ønsker å finne ut om to flater har lik omkrets. –Spør den ene flaten om den har omkrets lik den andre flaten: boolean likOmkrets = flate1.likOmkrets(flate2); if (likOmkrets) System.out.println("Lik omkrets"); else System.out.println("Ikke lik omkrets"); –I klassen Flate ser metoden slik ut: public boolean likOmkrets(Flate flate2) { double omkrets1 = finnOmkrets(); double omkrets2 = flate2.finnOmkrets(); if (Math.abs(omkrets2 - omkrets1) < toleranse) return true; else return false; } klassekonstant, lik

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 15 Et flate-objekt sender melding til seg selv og til et annet flate-objekt for å løse en oppgave ”klient” flate1 new likOmkrets(flate2) flate2 new finnOmkrets() klienten lager flate1 og flate2 klienten ber flate1 sammenligne seg med flate2 flate1 spør seg selv hvilken omkrets den har, deretter spør den flate2 hvilken omkrets den har flate1 sammenligner omkretsene og returnerer resultatet

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 16 Standardiserte metodehoder for sammenligning, metoden equals() Metodehode: –public boolean equals(Object objekt) // likhet eller ikke likhet? For klassen Flate: /* * Definerer likhet slik at lengder og bredder skal være like. * Navn behøver ikke være likt. */ public boolean equals(Object objekt) { // Merk parametertypen! if (!(objekt instanceof Flate)) return false; // sjekker klassetilhørighet for argumentet if (this == objekt) return true; // rask løsning dersom like referanser Flate flate2 = (Flate) objekt; // casting nødvendig før Flate-metoder kan brukes if (Math.abs(lengde - flate2.lengde) > toleranse) return false; if (Math.abs(bredde - flate2.bredde) > toleranse) return false; return true; } Bruk: Flate flate1 = new Flate("A", 5, 4); Flate flate2 = new Flate("B", 4, 4); boolean like = flate1.equals(flate2); if (like) System.out.println("Like i henhold til equals()"); else System.out.println("Ikke like i henhold til equals()");

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 17 Metoden equals() Kan alltid sammenligne et objekt med et annet ved å bruke equals(). Dersom klassen objektene tilhører ikke har sin egen utgave av metoden, vil utgaven arvet fra Object bli brukt. Den ser slik ut: public boolean equals(Object obj) { return (this == obj); } Dersom vi lager vår egen utgave av equals(), må den ha eksakt samme hode med unntak av parameternavnet. Hva som gjør at to objekter er like må være veldefinert og godt dokumentert.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 18 Standardiserte metodehoder for sammenligning, metoden compareTo() compareTo() definererer objektenes naturlige orden For klassen Flate: /* * Definerer compareTo() slik at flatenes arealer sammenlignes. */ public int compareTo(Flate objekt) { double areal1 = finnAreal(); double areal2 = flate2.finnAreal(); if (Math.abs(areal2 - areal1) < toleranse) return 0; else if (areal1 < areal2) return -1; else return 1; } Bruk: int resultat = flate1.compareTo(flate2); if (resultat < 0) System.out.println(flate1.finnNavn() + " er minst."); else if (resultat > 0) System.out.println(flate2.finnNavn() + " er minst."); else System.out.println("Flatene er like.");

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 19 Metoden compareTo() compareTo() er ikke deklarert i klassen Object. Det eksisterer derfor ikke noen standardutgave av denne metoden. Likevel finnes det et standardhode som bør brukes: –public int compareTo(Type objekt) // Type byttes ut med klassenavnet Metoden skal returnere en negativ verdi dersom this er mindre enn objekt, 0 dersom objektene er like, og en positiv verdi dersom this er større enn objekt. Hvordan objektene måles må være veldefinert og godt dokumentert. Bør equals() svare til compareTo() == 0 ? –Ja, som oftest (men det er ikke tilfelle i eksemplet foran), fordi Bibliotekmetoder for sortering bruker gjerne compareTo() Søkemetoder (f.eks. dersom et element skal slettes) bruker gjerne equals() Gjør oppgavene side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 20 Oppussingseksemplet, del 1 Du har nettopp kjøpt deg en gammel leilighet som du skal pusse opp. Du har bestemt deg for at bad og kjøkken, samt elektriske installasjoner, holder mål. Du ønsker imidlertid å legge nytt golvbelegg i et par av rommene, samt male og tapetsere en del. Du trenger å utføre en del beregninger: Hvor mye maling, eventuelt tapet, trengs det til en bestemt vegg? Hvor mange meter golvbelegg, trengs det til et golv? Hva koster oppussingen av hver enkelt av flatene? Oppgaver –Finn objekter ved å se på substantiver. –Finn fram til den kunnskapen som må lagres i systemet. Dette blir attributter til objektene. Sett opp en liste over attributter og objekter som hører sammen. –Finn ut hvilke beregninger som må utføres. –Fordel ansvaret for beregningene mellom objektene (kan være vanskelig!) –Tegn klassediagram.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 21 En mulig løsning Belegg navn pris breddePåBelegg finnNavn finnPrisPrM finnBredde finnAntMeter finnTotalpris Tapet navn pris lengdePrRull breddePrRull finnNavn finnPrisPrRull finnLengde finnBredde finnAntRuller finnTotalpris Maling navn pris antStrøk antKvmPrLiter finnNavn finnPrisPrLiter finnAntStrøk finnAntKvmPrLiter finnAntLiter finnTotalpris Flate navn lengde bredde finnNavn finnLengde finnBredde finnAreal finnOmkrets Vi programmerer hver enkelt klasse for seg og lager testprogram som prøver ut klassene. Vis programliste 8.5, side og 8.6, side

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk Kapittel 8, side 22 Belegg og flate må samarbeide for å finne materialbehov ”klient” belegget new finnAntMeter(flaten) flaten new finnLengde() finnBredde() klienten lager en flate og et belegg klienten ber belegget beregne antall meter som trengs til flaten belegget spør flaten om lengde og bredde og kan deretter beregne antall meter som trengs Gjør oppgavene side