public class BoundedCounter {

Relevanta dokument
Lösningsförslag. 1 Lösningsförslag. Uppgift 1

Lösningsförslag övning 2.

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Föreläsning 5. Föreläsning 5

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 4. Klasser och objekt

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Exempel på användning av arv: Geometriska figurer

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Malmö högskola 2008/2009 CTS

TENTAMEN I DATAVETENSKAP

Agenda. Objektorienterad programmering Föreläsning 13

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Parallellism, återblick

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Enkla variabler kontra referensvariabel

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Föreläsning 6. Mer om klasser och objekt. Enkla variabler kontra referensvariabel. Omslagsklassen Integer. Referensvariabler

Enkla variabler kontra referensvariabel

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

OOP Objekt-orienterad programmering

Övning vecka 4. Denna vecka ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

Övning 3. Datateknik A, Java I, 5 poäng

Malmö högskola 2007/2008 Teknik och samhälle

JAVAUTVECKLING LEKTION 11

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Laboration 3, uppgift En klass för en räknare

Del A (obligatorisk för alla)

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Institutionen för TENTAMEN CTH HT-13 Datavetenskap TDA550 DAG: TID: 8:30 12:30

Föreläsning 2. Länkad lista och iterator

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Tentamen i Objektorienterad programmering E

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Classes och Interfaces, Objects och References, Initialization

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

Objektorienterad Programmering (TDDC77)

OOP Tentamen

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

Malmö högskola 2007/2008 Teknik och samhälle

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Objektorienterad Programmering (TDDC77)

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Laboration 2: Designmönster

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Tvådimensionella fält

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Designmönster. Kapitel Kommandomönstret

Lösningsförslag till tentamen

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Laboration 2: Designmönster

Kort om klasser och objekt En introduktion till GUI-programmering i Java

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 2. Länkad lista och iterator

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

TENTAMEN: Objektorienterad programutveckling, fk. Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad.

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Uno Holmer, Chalmers, :17 Uno Holmer, Chalmers, :17

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Transkript:

Uppgift 1 I Javas standardbibliotek finns en klass för rektanglar. Nedanstående kod visar relevanta delar av klassen: public class Rectangle {... public Rectangle(int height, int weight) {... public Rectangle(int x, int y, int height, int weight) {... public double getwidth() {... public double getheight() {... Tyvärr har denna klass inga metoder för att beräkna area och omkrets. Gör en ny klass ImprovedRectangle som ärver från klassen Rectangle och lägger till två metoder för att beräkna area och omkrets. Lägg inte till några nya instansvariabler! Klassen Rectangle finns i paketet java.awt. Uppgift 2 Betrakta nedanstående tre klasser för att avbilda olika räknare klassen Counter, klassen BoundedCounter och klassen ChainedCounter. Dessa klasser är inte relaterade till varandra på något sätt, men har ju många gemensamma drag. De modellerar likartade objekt (olika slag av räknare) och de har samma uppsättning operationer (count(), getvalue() och reset()). Borde klasserna varit implementerade på något annat sätt? Motivera ditt svar! Gör implementationen. public class Counter { public Counter() { //constructor value = value + 1; //count //getvalue //reset //Counter public class ChainedCounter { private int modulus; private Counter next; public ChainedCounter(int init, int modulus, Counter next) { value = init; this.modulus = modulus; this.next = next; //constructor value = (value + 1) % modulus; if (value == 0 && next!= null) next.count(); //count value=0; //rerset //getvalue // ChainedCounter public class BoundedCounter { private int modulus; public BoundedCounter(int modulus) { this.modulus = modulus; //constructor value = (value + 1) % modulus; //count //getvalue //reset //BoundedCounter

Uppgift 3 I ett program som handhar geometriska objekt har vi identifierat följande klasser: Circel Rectangle Cylinder - radius : double - color : Color + setradius(double) + getradius() : double + findperimeter() : double + tostring(): String - width : double - length : double - collor : Color + setwidth(double) + getrwidth() : double + setlength(double) + getlength() : double + findperimeter () : double + tostring() : String - radius : double - height : double - color : Color + setradius(double() + getradius() : double + setheight(double) + getheight() : double + findperimeter() : double + findvolym() : double + tostring() : String Som synes har klasserna en hel del gemensamt. Gör en implementera av klasserna Circel, Rectangle och Cylinder i vilken arv utnyttjas. Sträva efter att återanvända så mycket kod som möjligt. Uppgift 4 Klassen Person används för att avbilda personer. Klassen innehåller bl.a. följande metoder: public String getname() returnerar namnet public int getbirthyear() returnerar födelseår a) Skriva en metod public static ArrayList<String> bornthisyear(arraylist<person> people, int year) som tar en lista people av Person-objekt samt ett årtal year, och returnerar en lista som innehåller namnen på de personer i listan people som är födda år year. b) Skriva en metod public static void removenames(arraylist<person> people, ArrayList<String> names) Uppgift 5 som tar en lista people och en lista names, och tar bort alla objekt i listan people vars namn finns med i listan names. Vi kan representera de olika färgerna i en kortlek med följande uppräkningstyp: public enum Suit { HEARTS, SPADES, DIAMONDS, CLUBS; De olika färgerna i en kortlek trycks ofta med färgerna svart och rött. Färgerna hjärter och ruter trycks med röd färg och spader och klöver med svart. Skriv en uppräkningstyp som representerar färgerna rött och svart. Kalla typen för SuitColor t.ex. Lägg till ett tillstånd till typen Suit så att varje färg även har en tryckfärg. Lägg till en metod i typen Suit som returnerar vilken tryckfärg som färgen har. Funktionen ska ha följande signatur: public SuitColor getcolor();

Uppgift 6 Du ska definiera klassen Superhero. En superhjälte är som en vanlig människa; den kan äta, dricka, och sova. Men utöver det har den även vissa superkrafter; alla superhjältar kan flyga, läka sig och rädda civila. För att få vara med i superhjälteligan måste din superhjälte implementera det interface som finns för superhjältar. Du behöver göra följande: Skapa klassen Human, som har det beteende beskrivet ovan. Skapa interfacet Superpowers, som innehåller alla egenskaper en superhjälte måste ha. Skapa klassen SuperHero, som är en utökning av Human, men även implementerar Superpowers. Varje beteende kommer i det här fallet helt enkelt att vara en metod, ex. sleep(int minutes). Du behöver dock inte skriva någon kod i själva metoderna, du kan lämna dem tomma.

Uppgift 7 (NY) Denna uppgift handlar om båtar som skall sättas i sjön av en båtklubb. Båtar som ska sjösättas har en viss vikt och ett visst djupgående. För att sjösättas måste båten vara förberedd, generellt gäller att båten måste vara bottenmålad (det innebär att ägaren har målat båtens botten med en skyddsfärg) men sedan tillkommer det lite olika krav för olika båttyper (se nedan). Dessutom får inte båten vara för tung för båtklubbens kran. För sjösättningen tar båtklubben en avgift, avgiftens storlek beräknas på olika sätt för olika båttyper men man bör se till att avgiften betalas endast om båten blivit sjösatt - om båtklubben begär avgiften för en båt som inte har blivit sjösatt får den 0 kronor. Båtar kan vara Motorbåtar eller Segelbåtar. En Motorbåts vikt är olika från båt till båt, men djupgående är alltid 70 (cm). Förutom att vara bottenmålad måste en Motorbåt ha bränsle för att vara klar för sjösättning, så man ska kunna tanka en Motorbåt med bränsle. Sjösättningsavgiften för en Motorbåt är 1000 kr om båten väger mindre än 2000 kg, annars 1500 kr. För en Segelbåt varierar både vikten och djupgåendet från båt till båt. En Segelbåt måste (förutom att vara bottenmålad) vara påmastad (ha masten på) för att få sjösättas. Segelbåten ska därför kunna mastas på. Sjösättningsavgiften beräknas som vikt gånger djupgående. Båtklubben representeras av följande klasskelett: public class Båtklubb { private int pengar = 0, maxvikt; public Båtklubb(int maxvikt){ this.maxvikt = maxvikt; public void sjösättning(arraylist<båt> påland, ArrayList<Båt> isjön){ // Metodkroppen ska du skriva public int getpengar(){ return pengar; maxvikt är den maximala vikt båtklubbens kran kan lyfta, pengar är summan av avgifter båtklubben tagit för sjösättning av båtarna. Metoden sjösättning ska som argument få dels en ArrayList påland som innehåller blandade båt-objekt, och dels en ArrayList isjön som från början är tom. Metoden ska titta på varje båt i samlingen påland och om båten inte är för tung och är klar för sjösättningen så ska den flyttas från samlingen påland till samlingen isjön och sjösättningsavgiften ska läggas till båtklubbens pengar. Skriv klasserna Båt, Motorbåt och Segelbåt (med attribut, konstruktorer och metoder) samt Båtklubbens metod sjösättning. Attributen i klasserna ska vara privata.