Eksamen. Objektorientert Programmering IGR 1372



Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN I INF244: OBJEKTORIENTERT PROGRAMVAREUTVIKLING I BACHELORSTUDIET I IT OG INFORMASJONSSYSTEMER BACHELORSTUDIET I IT OG ENTREPRENØRSKAP

TDT4100 Objektorientert programmering

Eksamen Objektorientert Programmering 2013

Introduksjon til objektorientert programmering

2 Om statiske variable/konstanter og statiske metoder.

Repitisjonskurs. Arv, Subklasser og Grensesnitt

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Løsningsforslag Test 2

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

Løsningsforslag til eksamen i INF1000 våren 2006

Kapittel 8: Programutvikling

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

UNIVERSITETET I OSLO

Argumenter fra kommandolinjen

TOD063 Datastrukturer og algoritmer

UNIVERSITETET I OSLO

INF1000: Forelesning 7. Konstruktører Static

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF Uke 10. Ukesoppgaver oktober 2012

INF1000: Forelesning 7

ANTDAGER = 358; I Ifra nyttår 08 til 08 1ed julaften

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

Gjennomgang av eksamen H99

INF1010 våren 2018 tirsdag 23. januar

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

INF Seminaroppgaver til uke 3

UNIVERSITETET I OSLO

Eksamen Objektorientert Programmering 2011

UNIVERSITETET I OSLO

Å lese tall fra en fil, klassen Scanner

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Læringsmål for forelesningen

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Høgskoleni østfold NY/UTSATT EKSAMEN

UNIVERSITETET I OSLO

Innhold. INF1000 Høst Klasser og objekter. Uke 7: Mer objektorientert programmering Siri Moe Jensen

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

INF1000 Metoder. Marit Nybakken 16. februar 2004

UNIVERSITETET I OSLO

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

INF1000: noen avsluttende ord

Algoritmer og Datastrukturer

Fra problem til program

Eksamen IN1010/INF1010 våren 2018

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

UNIVERSITETET I OSLO

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Enkle generiske klasser i Java

Løse reelle problemer

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Oblig 4Hybelhus litt mer tips enn i oppgaven

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

UNIVERSITETET I OSLO

Java-kurs. Andreas Knudsen Nils Grimsmo 9th October 2003

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

UNIVERSITETET I OSLO

Oblig4 - forklaringer. Arne og Ole Christian

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

UNIVERSITETET I OSLO

INF Notater. Veronika Heimsbakk 10. juni 2012

TDT Prosedyre- og objektorientert programmering

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Leksjon 7. Filer og unntak

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

INF1000 Behandling av tekster

Transkript:

+ JVNROHQL1DUYLN $YGHOLQJIRU7HNQRORJL Eksamen i Objektorientert Programmering IGR 1372 7LG'HVHPEHU± 7LOODWWHKMHOSHPLGOHU 6NULYHVDNHU2UGE NHU -DYD6RIWZDUH6ROXWLRQV)RXQGDWLRQVRI3URJUDP 'HVLJQVNUHYHWDY/HZLV /RIWKXV (NVDPHQVRSSJDYHQEHVWnUDYWRWDOWVLGHULQNOXVLYHGHQQHIRUVLGHQRJ YHGOHJJIRU80/QRWDVMRQ.RQWUROOHUDWRSSJDYHVHWWHWHUNRPSOHWWI UGXEHJ\QQHUnEHVYDUHVS UVPnOHQH 1RHQJHQHUHOOHUnGRJEHPHUNQLQJHUI UGXEHJ\QQHU Ikke la deg skremme av antallet sider i oppgaven. Den er ikke større/vanskeligere enn tidligere oppgaver i faget. Les hele oppgaven I U du begynner å løse deloppgavene Dersom oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre dine egne presiseringer/forutsetninger. Gjør i så fall tydelig rede for disse i din besvarelse. Du kan fritt bruke alle Java-biblioteker, for eksempel java.util.*, java.io.*, etc. Oppgaven kan besvares på norsk eller engelsk /\NNHWLO Eksamen i Objektorientert Programmering Side 1 av 10 5. Desember 200

2SSJDYH 2SSJDYHD Innenfor koden knyttet til en klasse eller et klasse-hierarki kan man ha flere metoder med samme navn, men med forskjellige parametere. - Hva kalles dette i faglitteraturen? - Hva er det som skiller den ene metoden fra den andre metoden med samme navn? 2SSJDYHE I Java TM kan man arve egenskaper fra andre klasser. Arven omfatter da både metoder og attributter, og dermed også alle assosiasjoner og relasjoner. Dog finnes det et sett med begrensinger på hvilke attributter/metoder man har tilgang på i barn-klassen i forhold til hva som forefinnes i mor-klassen. Hva er det som begrenser denne tilgangen? 2SSJDYHF Java TM er som kjent et objekt-orientert programmeringsspråk hvor vi blant annet kan kalle metoder og sende parametere med metodene. Overføringen av parameterene til metoden skjer på en av to måter. Forklar hvilke to måter parameteroverføringen skjer på og hva som er konsekvensen av dette. Besvarelsen skal være kort og bør ikke overstige 5 setninger. 2SSJDYHG Følgende sett av datatyper skal sendes som parametere til en metode. Angi hvordan parameteroverføring for de forskjellige datatypene nedenfor skjer. int Integer Boolean int [] Vector String [] float Eksamen i Objektorientert Programmering Side 2 av 10 5. Desember 200

2SSJDYHH Forklar forskjellen på while og do-while setningen med hensyn på sjekk av betingelsen knyttet til setningen, og hvilken betydning dette har for antall ganger kodeblokken i setningen utføres. 2SSJDYHI Variabler og metoder kan deklareres som static. Hvilken betydning har dette for bruken av dem i forhold til når static ikke er brukt? 2SSJDYH I denne deloppgaven skal dere implementere en metode på to forskjellige måter. Følgende sett med kode er gitt hvor dere skal implementere/skrive to alternative løsninger av metoden public static int henttegn(string S) innenfor denne klassen: 1: public class Oppgave3 { 2: public static char [] TELLETEGN={'a','e','i','o','u','y','æ','ø','å', 3: 'A','E','I','O','U','Y','Æ','Ø','Å', 4: '0','1','2','3','4','5','6','7','8', 5: '9',' ','.',',',':','\t'}; 6: 7: public static void main(string[] args) { 8: Oppgave3 x = new Oppgave3(); 9: 10: String S1 = "Dette er eksamen i OOP, høsten 2001." + 11: "Eksamen gjelder emnet IGR 1372 og " + 12: "avholdes onsdag 5.te desember."; 13: 14: System.out.println("\nStrengen \"" + S1 + "\"\n"); 15: System.out.println("Inneholder " + x.henttegn(s1) + " tegn " + 16: "som skulle telles opp, av totalt " + 17: S1.length() + " tegn"); 18: } 19: } Metoden dere skal skrive har som oppgave å telle opp antall TELLETEGN i en streng som sendes inn i metoden. Ut av metoden kommer det aktuelle antallet TELLETEGN som strengen som ble sendt som parameter inneholdt. De to implementasjonene skal henholdsvis benytte seg av IRU-løkker, og av ZKLOH-løkker. Begge metodene kan ha samme navn og parameterliste. Eksamen i Objektorientert Programmering Side 3 av 10 5. Desember 200

2SSJDYH I denne oppgaven skal du jobbe med objektorientering og programmering. Biblioteket ved Gnytthøgda Lavskole skal innføre data ved biblioteket, og i denne sammenheng har de leid inn deg som konsulent for å planlegge og lage det nye systemet. Den videre teksten er beskrivelsen du har fått av ledelsen ved Gnytthøgda Lavskole s bibliotek. Vær oppmerksom på at denne teksten kan være uklar på enkelte punkter og at den ikke nødvendigvis vil gi deg all den informasjonen du trenger for å kunne lage systemet. Vær også oppmerksom på at noe av informasjonen som gis ikke er vesentlig for utformingen av systemet. %LEOLRWHNHWKDUIOHUHIRUVNMHOOLJHXWOnQVHQKHWHUKHQKROGVYLVE NHUYLGHRHURJ&'HU+HUHU QRHQHNVHPSOHUSnKYRUGDQQRHQNRQNUHWHXWOnQVIRUHNRPVWHUNDQVHXWRJKYRUGDQGLVVH IRUKROGHUVHJWLOXWOnQVHQKHW 8WOnQV)RUHNRPVW 8WOnQVHQKHW 8WOnQV,G (QKHWV,G /RNDVMRQV,G 1DYQ 5+K $VWHUL[L5RPD 5+K -DYDE\'LVVHFWLRQ 5+K 3LQN)OR\G±'DUN6LGH2I7KH0RRQ /RNDVMRQV,GHUGHOWRSSLWUHGHOHU'HI UVWHWUHWHJQHQHDQJLUORNDVMRQHQLIRUPDYHW UHROQXPPHU5DQJLU5HROQU(QUHROHUGHOWRSSLIOHUHK\OOHVHNVMRQHURJGHQHVWHWUH WHJQHQHDQJLUK\OOHVHNVMRQHQ+DQJLUK\OOHVHNVMRQPHQVGHVLVWHWUHWHJQHQHDQJLU K\OOHQXPPHUHWLUHROHQVK\OOHVHNVMRQKDQJLUK\OOHQXPPHU'HWWHEHW\UDWYLNDQOHVHHQ /RNDVMRQV,'GLUHNWH5+KEHW\U5HRO+\OOHVHNVMRQK\OOH5+KEHW\U5HRO +\OOHVHNVMRQK\OOHRVY1DYQDQJLUQDYQHWSnGHWVRPNDQOnQHVXW 8WOnQV,GHUHWQXPPHUVRPEHQ\WWHVIRUnLGHQWLILVHUHHQHQNHOWXWOnQVIRUHNRPVWDYHQ XWOnQVHQKHW'HWHUQHPOLJVOLNDWELEOLRWHNHWNDQKDIOHUHIRUHNRPVWHUDYVDPPHXWOnQVHQKHW )OHUHXWOnQVIRUHNRPVWHUNDQDOWVnKDVDPPH/RNDVMRQV,GPHQVDOOHXWOnQVIRUHNRPVWHQHYLOKD IRUVNMHOOLJ8WOnQV,G(QKHWV,GLGHQWLILVHUHUHQ8WOnQVHQKHW 9LKDUDOWVnHQVLWXDVMRQKYRUHQXWOnQVHQKHWIRUHNVHPSHO $VWHUL[L5RPD NDQILQQHVLIOHUH XWOnQVIRUHNRPVWHUXWOnQVLGRJPHQKYRUIRUHNRPVWHQHHUSODVVHUWSn VDPPHVWHGLVDPPHUHRO5+K,WLOOHJJHUGHWVOLNDWVNROHQ QVNHUnNXQQHOnQHXWXWOnQVIRUHNRPVWHUEnGHWLODQVDWWHRJ VWXGHQWHUYHG*Q\WWK JGD/DYVNROH'HWWHEHW\UDWELEOLRWHNHWKDUWRW\SHUDYOnQWDJHUH DQVDWWHRJVWXGHQWHU6NLOOHWPHOORPDQVDWWHRJVWXGHQWHUHUYLNWLJVLGHQDQVDWWHInUOnQH XWOnQVIRUHNRPVWHQHOHQJHUHHQQVWXGHQWHQH %LEOLRWHNHW QVNHUVHOYI OJHOLJRJVnHQRYHUVLNWRYHUKYLONHXWOnQVIRUHNRPVWHUVRPHUWLOXWOnQ DNNXUDWQnRJQnUGHHUIRUYHQWHWnEOLWLOEDNHOHYHUW,QNOXVLYHLGHQQHRYHUVLNWHQLQQJnURJVn OnQHUHQGHQDQVDWWHHOOHUVWXGHQWHQVOLNDWELEOLRWHNHWNDQSXUUHXWOnQHUHQKYLV XWOnQVIRUHNRPVWHQLNNHHUOHYHUWWLOEDNHLQQHQUHWWWLG Eksamen i Objektorientert Programmering Side 4 av 10 5. Desember 200

2SSJDYHD Lag et objektorientert design for bibliotekssystemet. Besvarelsen skal inneholde en grov objektmodell med alle assosiasjoner/relasjoner og kardinalitet. I tillegg skal du kommentere modellen med fokus på arv og assosiasjoner. Kommenter spesielt eventuell bruk av Interfacer og abstrakte klasser. Du skal ikke modellere reoler, hyller og lignende siden du forutsetter at lokasjonskoden er tilstrekkelig i denne sammenheng. Du skal heller ikke modellere klasser/objekter som utgjør containere, som for eksempel Lånetagere (som inneholder et array over alle lånetagere og metoder for å finne/endre disse) eller lignende. Du skal også se bort fra eventuelle menysystemer, vindussystemer og lignende. 2SSJDYHE Lag kodeskjelletter for klassene du kom frem til i oppgave 3a som representerer UtlånsEnhet, CD, og Utlån. Kommenter hvorfor de forskjellige klassene inneholder de attributter og metoder som du angir, samt hvorfor attributtene du angir i klassene er korrekt. 2SSJDYHF Du skal nå lage en såkalt container-klasse; LåntagerOversikt. Denne klassen skal inneholde en oversikt over alle mulige låntagere i systemet, samt muligheten for nyregistrering av nye låntagere, gjenfinning av eksisterende låntagere, samt sletting av låntagere. Lag et skjellett for denne klassen og implementer metoden som legger til en ny låntager. Ta de forutsetninger som du synes er påkrevd. Eksamen i Objektorientert Programmering Side 5 av 10 5. Desember 200

,QQOHGQLQJWLORSSJDYHG Vi skal nå se litt nærmere på en ny klasse - Bibliotekssystem. Denne klassen utgjør klassen som bibliotekarene benytter seg av når de skal gjøre ting i systemet. Eksempler på dette er finnutlånsenhet, purrlånere, registrernylåner, registrerinnlevering, osv. Denne klassen er altså selve hovedprogrammet. Her kommer et lite utsnitt av klassen Bibliotekssystem. Klassen inneholder flere metoder og mer kode enn det som fremkommer i utsnittet (illustrert ved prikkene i koden). 1: import java.io.*; 2: import java.util.*; 3: 4: public class Bibliotekssystem { 5: 6: UtlånForekomster utlobj; // Oversikt over alle forekomster av 7: // utlånsenheter 8: Lånere laanere; // Oversikt over alle potensielle lånere 9: 10: // Konstruktør 11: public Bibliotekssystem() { 12: utlobj = new UtlånForekomster (); 13: laanere = new Lånere(); 14: } 15: 16: // Leser inn alle data fra fil, både UtlånsForekomster og Lånere 17: protected void lesdata(string innfil) throws IOException { 18: BufferedReader in = new BufferedReader(new FileReader(new File(innfil))); 19: 20: // Leser en og en linje fra fila inntil ikke mer kan leses fra fila (EOF) 21: while ( (String linje = in.readline())!= null) { 22: : 23: : 24: : 25: } 26: in.close(); 27: 28: } 29: 30: : 31: : 32: // Oppstarten av applikasjonen 33: public static void main(string [] args) throws Exception { 34: 35: Bibliotekssystem BibSys = new Bibliotekssystem(); 36: String filnavn = C:\Datafil.dta ; 37: BibSys.lesData(filnavn); 38: : 39: : 40: BibSys.skrivData(filnavn); 41: 42: } 43: } Det første som skjer når hovedprogrammet starter opp er at utlånsforekomster lastes inn i programmet fra fil ( lesdata(string innfil) ). Utlånsforekomstene legges inn i et objekt av Container-klassen UtlånsForekomster (som igjen inneholder en Vector hvor dataene som hentes fra fil legges inn som UtlånsForekomst). Innleggingen skjer i Container-klassen UtlånsForekomster ved at man kaller metoden void ny(utlånsforekomst o). UtlånsForekomst har følgende konstruktører: public UtlånsForekomst(String ForekomstId, int EnhetsId); public UtlånsForekomst(String ForekomstId, UtlånsEnhet enhet); Du velger selv hvilke av disse konstruktørene du ønsker å bruke. Eksamen i Objektorientert Programmering Side 6 av 10 5. Desember 200

2SSJDYHG Din oppgave er å fullføre metoden lesdata(string innfil) i klassen Bibliotekssystem. Denne metoden skal lese dataene fra fil og legge dataene inn i et objekt av klassen UtlånsForekomster. Oppgaven skal besvares i form av den ferdige utgaven av metoden lesdata( ). Datafilen er en vanlig tekstfil, og dataene i filen ser ut som følger: R04H02h2 1002301 Asterix i Roma 72023 R04H02h2 1002302 Asterix i Roma 72023 R04H01h4 1234567 Java by Dissection 72965 R12H10h3 0030456 Pink Floyd Dark Side Of The Moon 16529 Kolonnene i filen gjenkjenner du fra innledningen av oppgaven. Du kan forutsette at UtlånsEnhet forefinnes i systemet fra før. 7LSV %UXN6WULQJ7RNHQL]HUIRUnKnQGWHUHIHOWHQHLKYHUOLQMHVRPGXOHVHUIUDILODRJEUXN,QWHJHUNODVVHQIRUnRYHUVHWWHIUD6WULQJWLOLQW6HIRU YULJ$SSHQGL[0LO UHERNDIRU PHULQIRUPDVMRQRPGLVVHNODVVHQH 2SSJDYHH GnyttHøgda Lavskoles Bibliotek er plaget med at mange låntagere ikke leverer tilbake det de har lånt innen den fristen som er satt på det aktuelle utlånet. Dette er problematisk fordi andre kanskje står på venteliste på den aktuelle utlånsforekomsten. For å løse dette har biblioteket bestemt seg for at låntagere som har utlånsforekomster som de ikke har levert tilbake innen fristen, ikke skal få låne nye før de har levert tilbake det de allerede har lånt. Dette skal sjekkes automatisk av systemet når en låntager forsøker å låne. Beskriv, med utgangspunkt i din egen objektmodell, hvordan du ville løse dette problemet. Eksamen i Objektorientert Programmering Side 7 av 10 5. Desember 200

2SSJDYH Følgende sett med kode er gitt som utgangspunkt til denne oppgaven: 1: public class Sirkel { 2: // plassering og størrelse på sirkel 3: private int xpos, ypos, radius; 4: 5: // parameterløs konstruktør 6: public Sirkel () { 7: xpos = 0; ypos = 0; radius = 1; 8: } 9: 10: // konstruktør med parameter 11: public Sirkel (int x, int y, int r) { 12: xpos = x; ypos = y; radius = r; 13: } 14: 15: public void tegn () { 16: // kode som tegner omrisset av sirkelen 17: } 18: 19: public double areal () { 20: return (double)(radius * radius * 3.14159265); 21: } 22: } 23: // -------->> Ny klasse: figurer <<--------------- 24: 25: public class figurer 26: { 27: public static void main (String[] args) { 28: Sirkel[] flater = new Sirkel [10]; // Array for sirkler 29: 30: // kode som oppretter sirkler og legger dem inn i arrayen 31: : 32: : 33: for (int i = 0; i < 10; i++) 34: System.out.println("Arealet til flate " + i + 35: " er " + flater[i].areal(); 36: } 37: } 2SSJDYHD Vi tenker oss nå at det skal lages en ny klasse for Firkant og senere også for andre typer flater etter samme mønster som Sirkel. Videre vil man at arrayet flater skal kunne inneholde forekomster av både Sirkel, Firkant og av eventuelt andre flater. Dette forutsetter at de har et felles "opphav", som for eksempel en felles foreldreklasse/morklasse. Metodene areal (og tegn) vil være forskjellig i de forskjellige klassene og kan dermed ikke arves direkte fra en foreldreklasse. Likevel er det ønskelig at for-løkka i main kan benyttes som før. En foreldreklasse for Sirkel, Firkant med flere vil heller ikke ha nok opplysninger til å kunne bli tegnet opp. Det er derfor ikke aktuelt å lage forekomster av denne klassen. Hva kalles den type klasser som det ikke kan lages forekomster av? Lag (skriv) klassen Firkant og en foreldreklasse for Sirkel, Firkant (og eventuelt andre) slik at forutsetningene over holder. Det er ikke nødvendig å skrive kode for metoden tegn i klassen Firkant. Det er heller ikke nødvendig å skrive main eller klassen Sirkel på nytt, selv om det må gjøres endringer i disse. Eksamen i Objektorientert Programmering Side 8 av 10 5. Desember 200

2SSJDYHE Metoden tegn() i Sirkel og Firkant er ment å tegne opp omrisset av flatene. Vi vil ha tilsvarende klasser som tegner fylte flater (vi skal altså fargelegge innholdet av flaten). Disse klassene kan være barnklasser av henholdsvis Sirkel og Firkant. De bør i tillegg til det de arver ha opplysning om farge. For vårt formål er det nok å bruke en int. Det finnes andre klasser, utenfor det aktuelle arvehierarkiet, som også definerer grafiske objekter med farger, og vi ønsker å ha en array i main som inneholder alle typer obekter som har farge i tillegg til den allerede eksisterende arrayen flater. Det skal også være en for-løkke som skriver ut fargen på alle objektene i denne arrayen (den nye arrayen kan for eksempel hete FargeFlater). Hvordan vil du løse dette? Skriv hele løsningen for en klasse FyltFirkant som arver fra Firkant. Eksamen i Objektorientert Programmering Side 9 av 10 5. Desember 200

9HGOHJJ80/QRWDVMRQ.ODVVH Grov: Klassenavn $EVWUDNW.ODVVH DEVWUDFWklassenavn,QWHUIDFH <<interface>> Eller detaljert: Eksempel: Interfacenavn.ODVVHQDYQ Variabel:W\SH Metode(arg.list):UHWXUW\SH 3HUVRQ navn: 6WULQJ alder: LQW barn: Person[ ] getnavn():6wulqj setnavn(string navn): void Klasse1 $VVRVLDVMRQEUXNHUKDU $UYJMHOGHURJVnDUYPHOORPLQWHUIDFHU Superklasse Objekter i en klasse (NODVVH) bruker spesiali- generaliobjekter av en annen klasse (NODVVH). sering sering I praksis betyr dette at et objekt i NODVVH Kaller metoder på et objekt av NODVVH Sub Sub.RPSRVLVMRQEHVWnUDY $JJUHJHULQJLQQHKROGHU Objekter av en klasse (NODVVH) består av Eller inneholder objekter av en annen klasse (NODVVH). Objekter av den andre klassen (NODVVHvet nødvendigvis ikke om eksistensen av objektet av den første klassen. Som.RPSRVLVMRQ, men noe svakere. I denne relasjonen vet objektene av om eksistensen av objekt1.duglqdolwhwvdqjlyhovhu Kardinalitet kan angis på begge sider av en relasjon, men unntak av arv. Kardinalitetet angir hvordan ett objekt oppfatter situasjonen fra sin side. Nedenfor gis noen eksempler: 1 1 Ett objekt av bruker ett objekt av klasse 2, og Omvendt 1 n..m Ett objekt av består av Q til P objekter av, og ett objekt av bruker ett objekt av 1 * Ett objekt av bruker mange objekter av, Mens ett objekt av bruker kun ett objekt av 3,4 2,4,6 Ett objekt av bruker 2,4, eller 6 objekter av og ett objekt av bruker 3 eller 4 objekter av Eksamen i Objektorientert Programmering Side 10 av 10 5. Desember 200