Lösningsförslag. 1 Lösningsförslag. Uppgift 1

Relevanta dokument
public class BoundedCounter {

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

Lösningsförslag övning 2.

Exempel på användning av arv: Geometriska figurer

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

Föreläsning 2, vecka 7: Arv, subtyper och Javas API

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

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

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

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

Tentamen, EDAA20/EDA501 Programmering

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

Lösningsförslag till tentamen

Repetition av OOP- och Javabegrepp

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Repetition av OOP- och Javabegrepp

Föreläsning 4. Klasser och objekt

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

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

SMD091 Lektion 9. Definition. Inkapsling. Lite repetition. Grafik. Gränssnitt Definition och Implementation. Sammansättning... Implementation.

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

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

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.

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

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

Programmering A. Johan Eliasson

Enkla variabler kontra referensvariabel

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

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Lösningsförslag till tentamen

TDDD78 Viktiga begrepp, del 2

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

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

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

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

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

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

Tentamen. Lösningsförslag

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

LÖSNINGSFÖRSLAG

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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:

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

Lösningsförslag till tentamen

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Lösningsförslag till tentamen

Objektorienterad Programmering (TDDC77)

Classes och Interfaces, Objects och References, Initialization

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

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

Lösningsförslag till exempeltenta 2

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

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

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

Föreläsning 13 Innehåll

Föreläsning Arv. Föreläsning 9. Arv Grafiska komponenter. Grafiska komponenter. Arv. Arv

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

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 )

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Generiska konstruktioner. Kursbokens kapitel 13

OOMPA 2D1359 Föreläsning 8

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

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

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

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

TDDC76 - Programmering och Datastrukturer

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

TDDD78 Objektorientering i Java, del 4. Hur vet man om två objekt är lika? Hur undviker man objekt och när?

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning 9. Arv Grafiska komponenter. Arv. Arv. Implementationsarv

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt

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

Tentamen FYTA11 Javaprogrammering

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Föreläsning 3-4 Innehåll

Tentamen, EDAA20/EDA501 Programmering

Laboration 3 GUI-programmering

Lösningsförslag: Övning 5.

Lösningsförslag: Instuderingsfrågor, del D

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

TDDC77 Objektorienterad Programmering

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

Institutionen för TENTAMEN CTH HT-14 Datavetenskap TDA550 DAG: TID: 14:00 18:00

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

Lösningsförslag till exempeltenta 1

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

Transkript:

Uppgift 1 Lösningsförslag import java.awt.rectangle; public class ImprovedRectangle extends Rectangle { public ImprovedRectangle(int width, int height) { super(width, height); public ImprovedRectangle(int x, int y, int width, int height) { super(x, y, width, height); public int getarea() { return (int) (getwidth() * getheight()); public int getcircumference() { return (int) (2*(getWidth() + getheight())); //ImprovedRectangle 1 Lösningsförslag

Uppgift 2 Ja, vi borde definierat ett gränssnitt public interface Countable { public void count(); public void reset(); public int getvalue(); och låtit klasserna Counter, BoundedCounter och ChainedCounter implementerat detta gränssnitt enligt: public class Counter implements Countable { /*same code as before*/ public class BoundedCounter implements Countable { /*same code as before*/ public class ChainedCounter implements Countable { /*same code as before*/ Detta ger fördelen att datatyperna Counter, BoundedCounter och ChainedCounter alla är subtyper till datatypen Countable. Detta gör det möjligt att deklarera referensvariabler av datatypen Countable och tilldela dessa variabler referenser till objekt av datatypen Counter, BoundedCounter eller ChainedCounter. Används denna teknik blir alltså instanser av dessa tre klasser utbytbara. Man kan också tänka sig att låta BoundedCounter utöka Counter och ChainedCounter utöka BoundedCounter: public class Counter implements Countable { protected int value; /*same code as before*/ //Counter public class BoundedCounter extends Counter { protected int modulus; public BoundedCounter(int modulus) { super(); this.modulus = modulus; //constructor public void count() { value = (value + 1) % modulus; //count //BoundedCounter public class ChainedCounter extends BoundedCounter { private Counter next; public ChainedCounter(int init, int modulus, Counter next) { super(modulus); this.value = init; this.next = next; //constructor public void count() { value = (value + 1) % modulus; if (value == 0 && next!= null) next.count(); //count // ChainedCounter 2 Lösningsförslag

Uppgift 3 import java.awt.*; public class GeometricObject { private Color color; private Point position; protected GeometricObject(){ position = new Point(0,0); //placeras i punkten (0,0) color = Color.WHITE; //ges färgen vit protected GeometricObject(Point position, Color color){ this.position = position; this.color = color; public void setcolor(color color) { this.color = color; public Color getcolor() { return color; public void setposition(point position) { this.position = position; public Point getposition() { return position; public void move(point position) { this.position = position; return "Color: " + color + "\nposition: " + position; // GeometricObject 3 Lösningsförslag

import java.awt.*; public class Rectangle extends GeometricObject { private double width; private double length; public Rectangle() { this(1.0, 1.0); //ges bredden 1 och längden 1 public Rectangle(double width, double length){ this.width = width; this.length = length; public Rectangle(double width, double length, Point position, Color color){ super(position, color); this.width = width; this.length = length; public void setwidth(double width) { this.width = width; public double getwidth() { return width; public void setlength(double length) { this.length = length; public double getlength() { return length; public double findarea() { return width*length; public double findperimeter() { return 2*(width + length); return super.tostring() + "\nwidth: " + width + "\nlength: " + length; // Rectangle 4 Lösningsförslag

import java.awt.*; public class Circle extends GeometricObject { private double radius; public Circle(){ this.radius = 1.0; public Circle(double radius){ this.radius = radius; public Circle(double radius, Point position, Color color){ super(position, color); this.radius = radius; public void setradius(double radius) { this.radius = radius; public double getradius() { return radius; public double findarea() { return Math.PI*radius*radius; public double findperimeter() { return 2*radius*Math.PI; return super.tostring() + "\nradius: " + radius; // Circle import java.awt.*; public class Cylinder extends Circle { private double height; public Cylinder(){ this.height = 1.0; public Cylinder(double radius, double height){ super(radius); this.height = height; public Cylinder(double radius, double height, Point position, Color color){ super(radius, position, color); this.height = height; public void setheight(double height) { this. height = height; public double getheight () { return height; public double findarea() { return 2* super.findarea() + height*findperimeter(); public double findvolym() { return super.findarea() * height; return super.tostring() + "\nheight: " + height; // Cylinder 5 Lösningsförslag

Uppgift 4 a) b) //before: people!= null public static ArrayList<String> bornthisyear(arraylist<person> people, int year) { ArrayList<String> res = new ArrayList<String>(); for (Person p : people) { if (p.getyear() == year) res.add(p.getname()); return res; //bornthisyear //before: people!= null public static void removenames(arraylist<person> people, ArrayList<String> names) { int pos = 0; while (pos < people.size()) { if (isinlist(names, people.get(pos).getname())) people.remove(pos); else pos++; //removenames //before: names!= null private static boolean isinlist(arraylist<string> names, String name) { for (String elem: names) { if (elem.equals(name)) return true; return false; //isinlist Diskutera/förklara varför inte följande lösningsförslag fungerar? //before: people!= null public static void removenames(arraylist<person> people, ArrayList<String> names) { for (int pos = 0; pos < people.size(); pos++) { if (isinlist(names, people.get(pos).getname())) { people.remove(pos); //removenames Uppgift 5 public enum SuitColor { RED, BLACK; //SuitColor public enum Suit { HEARTS(SuitColor.RED), SPADES(SuitColor.BLACK), DIAMONDS(SuitColor.RED), CLUBS(SuitColor.BLACK); private SuitColor color; public Suit(SuitColor color) { this.color = color; public SuitColor getcolor() { return color; //Suit 6 Lösningsförslag

Uppgift 6 public interface Superpower { public void fly(); public void heal(); public void rescue(); //Superpover public class Human { public void eat(int calories) { public void drink(int volyme) { public void sleep(int minutes) { //Human public Superhero extends Human interface Superpower { public void fly() { public void heal() { public void rescue() { //Superhero 7 Lösningsförslag