Laboration 3. Uppgift 1

Relevanta dokument
Laboration 16. Uppgift 1

Malmö högskola 2007/2008 Teknik och samhälle. public String tostring() { return "Media: ID = " + this.id + ", Titel = " + this.

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

Malmö högskola 2008/2009 CTS

Laboration 13, Arrayer och objekt

TENTAMEN OOP

Klasshierarkier - repetition

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Konstruktion av klasser med klasser

Klasshierarkier. Klasser kan byggas på redan definierade klasser

TENTAMEN OOP

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

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

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

OOP Objekt-orienterad programmering

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

OOP Objekt-orienterad programmering

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

OOP Objekt-orienterad programmering

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

OOP Tenta

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

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

OOP Tentamen

Laboration 1 - Grunderna för OOP i Java

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.

Föreläsning 9: Arv och UML

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Objektorienterad programmering i Java

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

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Programmering för språkteknologer II, HT2014. Rum

Tentamen. Lösningsförslag

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

TENTAMEN OOP

Tentamen i Programmeringsteknik I, ES,

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Del A (obligatorisk för alla)

Laboration A Objektsamlingar

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

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

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

TDDD78 Viktiga begrepp, del 2

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

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

Programmering för språkteknologer II, HT2014. Rum

Malmö högskola 2012/2013 Teknik och samhälle

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

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

Lösningsförslag till exempeltenta 2

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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

Lösningsförslag till tentamen

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

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

Instuderingsfrågor, del D

Föreläsning 12: Exempel och problemlösning

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

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

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

OOP Omtenta

Lösningar för tenta 2 DAT043,

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

Del A (obligatorisk för alla)

Enkla variabler kontra referensvariabel

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Lösningsförslag övning 2.

Malmö högskola 2008/2009 CTS

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

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Språkkonventioner och redigering av tal.

Enkla variabler kontra referensvariabel

Tentamen i Programmeringsteknik I

Tentamen i Objektorienterad programmering

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

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

Transkript:

Laboration 3 Avsikt Avsikten med denna laboration är att öva på arv i objektorienterad programmering. Du ska skapa en klasshierarki som ser ut som figuren till höger: Vehicle MotorVehicle Car Motorcycle Uppgift 1 Skriv klassen Vehicle enligt beskrivningen nedan. Ägaren är av typen String. Klassen Vehicle instansvariabel: owner metoder: konstruktorer setowner getowner tostring Skapa sedan en testklass med följande main-metod: public static void main(string[] args){ Vehicle v1= new Vehicle(); Vehicle v2= new Vehicle("Lina Nilsson"); System.out.println(v1); System.out.println(v2); v1.setowner("ola Torstensson"); System.out.println(v1.getOwner()); Körning ger följande utskrift: Ägare: Okänd ägare Ägare: Lina Nilsson Ola Torstensson DA147A Programmering med Java del II 1

Uppgift 2 Skriv klassen MotorVehicle enligt beskrivningen nedan. Hästkrafter är av typen int. Klassen MotorVehicle: är subklass till kassen Vehicle (ärver från Vehicle) instansvariabler: hp (horsepower) metoder: konstruktorer gethp sethp tostring I tostring-metoden ska ett anrop till tostring-metoden i superklassen Vehicle göras: super.tostring() Skapa en testklass med följande main-metod: public static void main(string[] args){ MotorVehicle m1= new MotorVehicle(); MotorVehicle m2= new MotorVehicle("Lina Nilsson",100); System.out.println(m1); System.out.println(m2); m1.setowner("ola Torstensson"); m1.sethp(200); System.out.println(m1); Körning ger följande utskrift: Ägare: Okänd ägare Motorns hästkrafter: 0 Ägare: Lina Nilsson Motorns hästkrafter: 100 Ägare: Ola Torstensson Motorns hästkrafter: 200 Uppgift 3 Skriv klasserna Car och Motorcycle enligt nedanstående beskrivningar: Klassen Car är subklass till klassen MotorVehicle (ärver från MotorVehicle) instansvariabler: regnbr (registration number) metoder: konstruktorer getregnbr setregnbr tostring 2

Klassen Motorcycle är subklass till klassen MotorVehicle (ärver från MotorVehicle) instansvariabler: regnbr (registration number) metoder: konstruktorer getregnbr setregnbr tostring I tostring-metoden ska ett anrop till tostring-metoden i superklassen MotorVehicle göras: super.tostring() Gör en testklass som har följande main-metod: public static void main(string[] args) { Vehicle[] list= new Vehicle[3]; list[0]=new Car("Doris Bengtsson",80,"FGT 450"); list[1]=new Motorcycle("Klas Bengtsson",70,"KKI 333"); Car c=new Car(); c.setowner("fredrik Hansson"); c.sethp(100); c.setregnbr("hhh 778"); list[2]=c; for (int i=0;i<list.length;i++){ System.out.println(list[i].getClass()); System.out.println(list[i]); System.out.println(); Körning ger följande utskrift: class laboration3.car Ägare: Doris Bengtsson Motorns hästkrafter: 80 Registeringsnummer: FGT 450 class laboration3.motorcycle Ägare: Klas Bengtsson Motorns hästkrafter: 70 Registeringsnummer: KKI 333 class laboration3.car Ägare: Fredrik Hansson Motorns hästkrafter: 100 Registeringsnummer: HHH 778 Uppgift 4 Skapa ny klass Bicycle (cykel) med en ägare och ett antal växlar. Vad är det lämpligt att Bicycle ärver ifrån? Gör lämpliga metoder åt den nya klassen. Testa denna klass genom att göra en testklass med en main-metod. 3

Extrauppgift 1 Lägg till metoden public int compareto(object o) i klassen MotorVehicle. Anropet b1.compareto(b2) ska retunera 1 om b1 har en motor med fler hästkrafter än b2. -1 om b2 har en motor med fler hästkrafter än b1 och 0 om deras motorer har lika många hästkrafter. Använd denna metod för att skapa en metod i en testklass som utifrån en lista av MotorVehicle och ett intervall returnerar en ny lista med de MotorVehicle som har motorer med antalet hästkrafter inom intervallet. Metodhuvudet ska se ut så här: public MotorVehicle[] getinterval(motorvehicle[] list,int min,int max) Om det inte finns några MotoVehicle-objekt inom intervallet så ska en lista med längden 0 returneras. Testa din metod. Extrauppgift 2 Lägg till metoden public boolean equals(object obj) hos alla klasserna i klassheirakin. Använd denna metod för att söka i en lista över olika fordon och se om ett fordon finns i listan. Du ska skapa en testklass som har en lista av fordon bestående av alla typer av fordon d.v.s. minst fem stycken. Du ska sedan låta användaren mata in en beskrivning på ett fordon och skapa ett objekt utifrån beskrivningen. Sedan ska du undersöka om fordonet finns i listan med hjälp av metoden equals. Kravet att två objekt ska vara lika är att de är av samma typ och har samma värde i instansvariablerna. 4

Förslag till lösningar public class Vehicle { private String owner; public Vehicle() { this("okänd ägare"); public Vehicle(String owner) { this.owner = owner; public void setowner(string owner) { this.owner = owner; public String getowner() { return owner; return "Ägare: " + owner; Vehicle vehicle; if( obj instanceof Vehicle ) { vehicle = (Vehicle)obj; return owner.equals(vehicle.getowner()); ------------------------------------------------------ public class MotorVehicle extends Vehicle { private int hp; public MotorVehicle() { public MotorVehicle(String owner, int hp) { super(owner); this.hp = hp; public void sethp(int hp) { this.hp = hp; public int gethp() { return hp; return super.tostring() + " Motorns hästkrafter: " + hp; MotorVehicle vehicle; 5

if(obj instanceof MotorVehicle) { vehicle = (MotorVehicle)obj; return (this.hp == vehicle.gethp()) && super.equals(obj); // Extrauppgift 1 public int compareto(object obj) { MotorVehicle m = (MotorVehicle) obj; if(hp<m.gethp()) return -1; else if(hp>m.gethp()) return 1; else return 0; // Extrauppgift 1 public static MotorVehicle[] getinterval(motorvehicle[] list, int min, int max) { int count = 0; MotorVehicle[] res; for(int i=0; i<list.length; i++) if( (list[i].gethp()>=min) && (list[i].gethp()<=max) ) count++; res = new MotorVehicle[count]; // fungerar även då antal==0 for(int i=list.length-1; i>=0; i--) if( (list[i].gethp()>=min) && (list[i].gethp()<=max) ) { count--; res[count] = list[i]; return res; // Test av extrauppgift 1 public static void main(string[] args){ MotorVehicle[] fordon = {new MotorVehicle("A",100), new MotorVehicle("B",150),new MotorVehicle("C",80), new MotorVehicle("D",100),new MotorVehicle("E",110); MotorVehicle[] resultat = getinterval(fordon, 95, 110); for(int i=0; i<resultat.length; i++) System.out.println(resultat[i]); ------------------------------------------------------ public class Car extends MotorVehicle { private String regnbr; public Car() { regnbr=""; public Car(String owner, int p, String regnbr) { super(owner, p); this.regnbr = regnbr; public void setregnbr(string regnbr) { this.regnbr = regnbr; 6

public String getregnbr() { return regnbr; return super.tostring() + " Registreringsnummer: " + regnbr; Car car; if(obj instanceof Car) { car = (Car)obj; return (this.regnbr == car.getregnbr()) && super.equals(obj); ------------------------------------------------------ public class Motorcycle extends MotorVehicle { private String regnbr; public Motorcycle() { regnbr=""; public Motorcycle(String owner, int hp, String regnbr) { super(owner, hp); this.regnbr = regnbr; public void setregnbr(string regnbr) { this.regnbr = regnbr; public String getregnbr() { return regnbr; return super.tostring() + " Registreringsnummer: " + regnbr; Motorcycle mc; if(obj instanceof Motorcycle) { mc = (Motorcycle)obj; return (this.regnbr == mc.getregnbr()) && super.equals(obj); ------------------------------------------------------ public class Bicycle extends Vehicle { private int gears=1; public Bicycle() { 7

public Bicycle(String owner, int gears) { super(owner); this.gears = gears; public void setgears(int gears) { this.gears = gears; public int getgears() { return gears; return super.tostring() + " Antal växlar: " + gears; Bicycle cycle; if(obj instanceof Bicycle) { cycle = (Bicycle)obj; return (this.gears==cycle.getgears()) && super.equals(o); public static void main(string[] args){ Bicycle c1= new Bicycle(); Bicycle c2= new Bicycle("Sven Jakobi",21); System.out.println(c1); System.out.println(c2); c1.setowner("inga Bok"); c1.setgears(3); System.out.println(c1.getOwner() + " " + c1.getgears() + " växlar"); 8