Exempel på användning av arv: Geometriska figurer

Relevanta dokument
Konstruktion av klasser med klasser

Föreläsning 13 Innehåll

Aggregering. Arv och klasshierarkier. Arv. Arv (forts)

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

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

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

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

ID1004 Laboration 3, 5-6 November 2012

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

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

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

Tentamen, EDAA20/EDA501 Programmering

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

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.

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

Repetition av viktiga begrepp inom objektorienterad programmering

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

1 Repetition av viktiga begrepp inom objektorienterad programmering

TDDD78 Viktiga begrepp, del 2

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

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

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

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

JAVA Mer om klasser och objektorientering

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

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

Lösningsförslag övning 2.

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

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

Lösningsförslag till tentamen

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Föreläsning 14: Grafik & mera händelsehantering

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

Designmönster. Kapitel Kommandomönstret

JAVAUTVECKLING LEKTION 11

Klasshierarkier - repetition

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

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

PROGRAMMERINGSTEKNIK TIN212

TDDC76 - Programmering och Datastrukturer

Föreläsning 3-4 Innehåll

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

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.

2D1339 Programkonstruktion för F1, ht 2003

Rita Egna Bilder, Timer

Mål Förklaring av termer

Monday, November 16, Senaste Labben

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.

Mål Förklaring av termer

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

Konstruktion av klasser med klasser

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

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Del A (obligatorisk för alla)

JAVAUTVECKLING LEKTION 7

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

Klassen javax.swing.timer

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)

Lösningsförslag till tentamen

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Presentation av trafiksimuleringsprojektet

Tentamen i Programmeringsteknik I,, KandMa/Fy,

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

Föreläsnings 9 - Exceptions, I/O

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

OOP Objekt-orienterad programmering

TENTAMEN OOP

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

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

Tentamen i Programmeringsteknik I, ES,

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

public class BoundedCounter {

Arv och polymorfism i Java

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

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 )

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Laboration 1: Figurer i hierarki

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

Dugga i Grundläggande programmering STS, åk

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

Tentamen i Objektorienterad modellering och design

Transkript:

(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar.

(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. Programmet ska kunna

(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. Programmet ska kunna 1. representera ett antal olika figurer,

(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. Programmet ska kunna 1. representera ett antal olika figurer, 2. rita upp en bild av de representerade figurerna,

(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. Programmet ska kunna 1. representera ett antal olika figurer, 2. rita upp en bild av de representerade figurerna, 3. beräkna den sammanlagda ytan av figurerna och

(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. Programmet ska kunna 1. representera ett antal olika figurer, 2. rita upp en bild av de representerade figurerna, 3. beräkna den sammanlagda ytan av figurerna och 4. kunna läsa in hur en fil med figurer.

(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. Programmet ska kunna 1. representera ett antal olika figurer, 2. rita upp en bild av de representerade figurerna, 3. beräkna den sammanlagda ytan av figurerna och 4. kunna läsa in hur en fil med figurer. En rad andra operationer är naturligtvis tänkbara: flytta, rotera, skala...

(9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. Programmet ska kunna 1. representera ett antal olika figurer, 2. rita upp en bild av de representerade figurerna, 3. beräkna den sammanlagda ytan av figurerna och 4. kunna läsa in hur en fil med figurer. En rad andra operationer är naturligtvis tänkbara: flytta, rotera, skala... Koden skall utformas så att det är lätt att lägga det krävs minimala ändringar i existerande kod för att lägga till nya figurer.

(9 maj 2014 Klasshierarkier 2 ) Exempel på ett ritat fönster med figurer Indatafil: 600 600 rectangle 20 50 200 30 circle 350 100 30 rectangle 300 200 50 150 circle 100 300 80 line 0 0 600 300 line 300 30 50 450

(9 maj 2014 Klasshierarkier 3 ) Geometriska figurer forts Gemensamt för de olika figurerna:

(9 maj 2014 Klasshierarkier 3 ) Geometriska figurer forts Gemensamt för de olika figurerna: Alla har en position i planet dvs en x- och en y-koordinat (även om exakt vad positionen betyder varierar)

(9 maj 2014 Klasshierarkier 3 ) Geometriska figurer forts Gemensamt för de olika figurerna: Alla har en position i planet dvs en x- och en y-koordinat (även om exakt vad positionen betyder varierar) Alla har en färg. Linjer svarta, cirklar röda, rektanglar blåa tycks det.

(9 maj 2014 Klasshierarkier 3 ) Geometriska figurer forts Gemensamt för de olika figurerna: Alla har en position i planet dvs en x- och en y-koordinat (även om exakt vad positionen betyder varierar) Alla har en färg. Linjer svarta, cirklar röda, rektanglar blåa tycks det. Egenheter för de olika figurerna:

(9 maj 2014 Klasshierarkier 3 ) Geometriska figurer forts Gemensamt för de olika figurerna: Alla har en position i planet dvs en x- och en y-koordinat (även om exakt vad positionen betyder varierar) Alla har en färg. Linjer svarta, cirklar röda, rektanglar blåa tycks det. Egenheter för de olika figurerna: Linjer har en andra ändpunkt.

(9 maj 2014 Klasshierarkier 3 ) Geometriska figurer forts Gemensamt för de olika figurerna: Alla har en position i planet dvs en x- och en y-koordinat (även om exakt vad positionen betyder varierar) Alla har en färg. Linjer svarta, cirklar röda, rektanglar blåa tycks det. Egenheter för de olika figurerna: Linjer har en andra ändpunkt. Cirklar har en radie.

(9 maj 2014 Klasshierarkier 3 ) Geometriska figurer forts Gemensamt för de olika figurerna: Alla har en position i planet dvs en x- och en y-koordinat (även om exakt vad positionen betyder varierar) Alla har en färg. Linjer svarta, cirklar röda, rektanglar blåa tycks det. Egenheter för de olika figurerna: Linjer har en andra ändpunkt. Cirklar har en radie. Rektanglar har en bredd och höjd.

(9 maj 2014 Klasshierarkier 4 ) Geometriska figurer forts 1. Behöver således klasserna: Line, Circle och Rectangle

(9 maj 2014 Klasshierarkier 4 ) Geometriska figurer forts 1. Behöver således klasserna: Line, Circle och Rectangle 2. Eftersom klasserna har vissa gemensamma egenskaper (position och färg) gör vi en gemensam basklass kallad Shape

(9 maj 2014 Klasshierarkier 4 ) Geometriska figurer forts 1. Behöver således klasserna: Line, Circle och Rectangle 2. Eftersom klasserna har vissa gemensamma egenskaper (position och färg) gör vi en gemensam basklass kallad Shape 3. Eftersom figurerna alla är subklasser till Shape kan vi lagra dem i en samma struktur, t ex ArrayList<Shape> theshapes

(9 maj 2014 Klasshierarkier 5 ) Geometriska figurer forts Vi får följande klasshierarki: Shape x : int y : int color : Color Line x1 : int x2 : int Circle radius : int Rectangle width : int height : int

(9 maj 2014 Klasshierarkier 6 ) Geometriska figurer: Klassen Shape första utkast public class Shape { protected int x; protected int y; protected Color color; public Shape(int x, int y, Color color) { this.x = x; this.y = y; this.color = color; public Shape(int x, int y) { this(x, y, Color.BLACK); // Default color

(9 maj 2014 Klasshierarkier 6 ) Geometriska figurer: Klassen Shape första utkast public class Shape { protected int x; protected int y; protected Color color; public Shape(int x, int y, Color color) { this.x = x; this.y = y; this.color = color; public Shape(int x, int y) { this(x, y, Color.BLACK); Kommer vi någonsin göra new Shape? // Default color

(9 maj 2014 Klasshierarkier 6 ) Geometriska figurer: Klassen Shape första utkast public class Shape { protected int x; protected int y; protected Color color; public Shape(int x, int y, Color color) { this.x = x; this.y = y; this.color = color; public Shape(int x, int y) { this(x, y, Color.BLACK); Kommer vi någonsin göra new Shape? // Default color Varför behövs då en konstruktor?

Geometriska figurer: Klassen Line första utkast public class Line extends Shape { protected int x1; protected int y1; public Line(int x, int y, int x1, int y1) { super(x, y); // Default color this.x1 = x1; this.y1 = y1; public double area() { return 0; public void paint(graphics g) { g.setcolor(color) g.drawline(x, y, x1, y1); (9 maj 2014 Klasshierarkier 7 )

Geometriska figurer: Klassen Circle första utkast public class Circle extends Shape { protected int radius; public Circle(int x, int y, int radius){ super(x, y, Color.RED); this.radius = radius; public double area(){ return Math.PI*radius*radius; public void paint(graphics g){ g.setcolor(color); g.filloval(x - radius, y - radius, 2*radius, 2*radius); (9 maj 2014 Klasshierarkier 8 )

Geometriska figurer: Klassen Rectangle första utkast public class Rectangle extends Shape { protected int width; protected int height; public Rectangle(int x, int y, int width, int height) { super(x,y, Color.BLUE); this.width = width; this.height = height; public double area(){ return width*height; public void paint(graphics g){ g.setcolor(color); g.fillrect(x, y, width, height); (9 maj 2014 Klasshierarkier 9 )

(9 maj 2014 Klasshierarkier 10 ) Geometriska figurer: Klassen Drawing För att representera en mängd figurer skapar vi klassen Drawing. Eftersom den skall kunna ritas ut gör vi den som en subklass till JPanel: public class Drawing extends JPanel { private ArrayList<Shape> shapes; private int width; private int height; public Drawing(???) {???

(9 maj 2014 Klasshierarkier 11 ) Geometriska figurer: Klassen Drawing forts public double area() { double a = 0; for (Shape s:shapes) { a += s.area(); return a; public void paintcomponent(graphics g) { super.paintcomponent(g); for (Shape s:shapes) { s.paint(g); Problem: Varken area eller paintcomponent kommer att kompilera. Varför?

(9 maj 2014 Klasshierarkier 11 ) Geometriska figurer: Klassen Drawing forts public double area() { double a = 0; for (Shape s:shapes) { a += s.area(); return a; public void paintcomponent(graphics g) { super.paintcomponent(g); for (Shape s:shapes) { s.paint(g); Problem: Varken area eller paintcomponent kommer att kompilera. Varför? I for-satsen är s en Shape men Shape har varken area eller paint.

(9 maj 2014 Klasshierarkier 11 ) Geometriska figurer: Klassen Drawing forts public double area() { double a = 0; for (Shape s:shapes) { a += s.area(); return a; public void paintcomponent(graphics g) { super.paintcomponent(g); for (Shape s:shapes) { s.paint(g); Problem: Varken area eller paintcomponent kommer att kompilera. Varför? I for-satsen är s en Shape men Shape har varken area eller paint. Lösning: Definiera dessa metoder i Shape

(9 maj 2014 Klasshierarkier 12 ) Geometriska figurer: Klassen Shape komplettering Metoden area är enkel men vad gör vi med paint? public class Shape {... public Shape(int x, int y, Color color) {... public Shape(int x, int y) {... public double area() { return 0; public void paint(graphics g) {???

(9 maj 2014 Klasshierarkier 12 ) Geometriska figurer: Klassen Shape komplettering Metoden area är enkel men vad gör vi med paint? public class Shape {... public Shape(int x, int y, Color color) {... public Shape(int x, int y) {... public double area() { return 0; public void paint(graphics g) {??? Spelar det någon roll vad vi gör?

(9 maj 2014 Klasshierarkier 13 ) Geometriska figurer: Klassen Shape snyggare lösning public abstract class Shape {... public double area() { return 0; // Note: abstract public abstract void paint(graphics g); // Note: abstract

(9 maj 2014 Klasshierarkier 13 ) Geometriska figurer: Klassen Shape snyggare lösning public abstract class Shape {... public double area() { return 0; // Note: abstract public abstract void paint(graphics g); // Note: abstract Fördelar:

(9 maj 2014 Klasshierarkier 13 ) Geometriska figurer: Klassen Shape snyggare lösning public abstract class Shape {... public double area() { return 0; // Note: abstract public abstract void paint(graphics g); // Note: abstract Fördelar: Metoderna area och paintcomponent i Drawing fungerar

(9 maj 2014 Klasshierarkier 13 ) Geometriska figurer: Klassen Shape snyggare lösning public abstract class Shape {... public double area() { return 0; // Note: abstract public abstract void paint(graphics g); // Note: abstract Fördelar: Metoderna area och paintcomponent i Drawing fungerar Förhindrar att objekt av typen Shape skapas

(9 maj 2014 Klasshierarkier 13 ) Geometriska figurer: Klassen Shape snyggare lösning public abstract class Shape {... public double area() { return 0; // Note: abstract public abstract void paint(graphics g); // Note: abstract Fördelar: Metoderna area och paintcomponent i Drawing fungerar Förhindrar att objekt av typen Shape skapas Förhindrar att vi glömmer att skriva paintcomponent

(9 maj 2014 Klasshierarkier 13 ) Geometriska figurer: Klassen Shape snyggare lösning public abstract class Shape {... public double area() { return 0; // Note: abstract public abstract void paint(graphics g); // Note: abstract Fördelar: Metoderna area och paintcomponent i Drawing fungerar Förhindrar att objekt av typen Shape skapas Förhindrar att vi glömmer att skriva paintcomponent Får en default-metod för arean som fungerar på linjer och eventuella kommande objekt som punkt och text.

(9 maj 2014 Klasshierarkier 14 ) Geometriska figurer: Klassen Drawing igen Hur skapar vi ett Drawing-objekt public class Drawing extends JPanel { private ArrayList<Shape> shapes; private int width; private int height; public Drawing(???) {??? Ritningen skulle läsas in från en fil. Vi låter konstruktorn göra det.

(9 maj 2014 Klasshierarkier 15 ) Geometriska figurer: Klassen Drawing igen Första raden i filen innehåller fönsterstorleken public Drawing(Scanner scan) { this.width = scan.nextint(); this.height = scan.nextint(); this.shapes = new ArrayList<Shape>(); this.read(scan); this.setpreferredsize(new Dimension(this.width, this.height)); this.setbackground(color.white);

(9 maj 2014 Klasshierarkier 16 ) Geometriska figurer: Klassen Drawing igen private void read(scanner sc) { while (sc.hasnext()){ String shape=sc.next(); if (shape.equals("circle")){ shapes.add(circle.read(sc)); else if (shape.equals("rectangle")) { shapes.add(rectangle.read(sc)); else if (shape.equals("line")) { shapes.add(line.read(sc)); else { throw new RuntimeException("Unknown shape: " + shape); De enskilda figurobjekten måste således förses med en klassmetod read.

(9 maj 2014 Klasshierarkier 17 ) Geometriska figurer: Klassen Line slutlig version public class Line extends Shape { protected int x1; protected int y1; public Line(int x, int y, int x1, int y1) {... public static Line read(scanner scan) { return new Line(scan.nextInt(), scan.nextint(), scan.nextint(), scan.nextint()); public void paint(graphics g) {... OBS: Ingen area-metod!

(9 maj 2014 Klasshierarkier 18 ) Geometriska figurer: read i Circle och Rectangle public static Circle read(scanner scan) { return new Circle(scan.nextInt(), scan.nextint(), scan.nextint()); public static Rectangle read(scanner scan) { return new Rectangle(scan.nextInt(), scan.nextint(), scan.nextint(), scan.nextint());

(9 maj 2014 Klasshierarkier 18 ) Geometriska figurer: read i Circle och Rectangle public static Circle read(scanner scan) { return new Circle(scan.nextInt(), scan.nextint(), scan.nextint()); public static Rectangle read(scanner scan) { return new Rectangle(scan.nextInt(), scan.nextint(), scan.nextint(), scan.nextint()); Anmärkning: Förutsätter att parametrarna till metoder evakueras från vänster till höger vilket är fallaet i Java men inte i alla programmeringsspråk.

(9 maj 2014 Klasshierarkier 19 ) Geometriska figurer: Testklass public class DrawTest extends JFrame { public static void main(string[] args) throws IOException { String filename = "data.txt"; File input = new File(filename); Scanner fsc = new Scanner(input); Drawing d = new Drawing(fsc); System.out.println("Total area: " + (int)d.area()); new DrawTest(d); public DrawTest(Drawing d){ this.add(d); this.pack(); this.settitle("drawtest"); this.setdefaultcloseoperation(exit_on_close); this.setvisible(true);

(9 maj 2014 Klasshierarkier 20 ) Övningar Hämta filerna på http://www.it.uu.se/edu/course/homepage/prog2/vt14/talks/t13/shapes/code och lös följande uppgifter:

(9 maj 2014 Klasshierarkier 20 ) Övningar Hämta filerna på http://www.it.uu.se/edu/course/homepage/prog2/vt14/talks/t13/shapes/code och lös följande uppgifter: 1. Vilka ändringar behöver göras i koden för att lägga till en ny figur?

(9 maj 2014 Klasshierarkier 20 ) Övningar Hämta filerna på http://www.it.uu.se/edu/course/homepage/prog2/vt14/talks/t13/shapes/code och lös följande uppgifter: 1. Vilka ändringar behöver göras i koden för att lägga till en ny figur? 2. Skriv en klass Text som en underklass till Shape som representerar en godtycklig textsträng. En rad i indatafilen som definierar en text: text x y text fram till radslut

(9 maj 2014 Klasshierarkier 20 ) Övningar Hämta filerna på http://www.it.uu.se/edu/course/homepage/prog2/vt14/talks/t13/shapes/code och lös följande uppgifter: 1. Vilka ändringar behöver göras i koden för att lägga till en ny figur? 2. Skriv en klass Text som en underklass till Shape som representerar en godtycklig textsträng. En rad i indatafilen som definierar en text: text x y text fram till radslut 3. Skriv en klass Point som en underklass till Circle. Punkter skall ha svart som standardfärg, ha ytan 0 men ritas som en cirkel med radien 5 för att synas. En punkt definieras av indataraden point x y

(9 maj 2014 Klasshierarkier 21 ) Övningar forts 4. Skriv en klass Square som representerar en kvadrat. Färgen skall vara halvgenomskinlig grön dvs skapas med new Color(0, 255, 0, 128).

(9 maj 2014 Klasshierarkier 21 ) Övningar forts 4. Skriv en klass Square som representerar en kvadrat. Färgen skall vara halvgenomskinlig grön dvs skapas med new Color(0, 255, 0, 128). Indatafil: 600 600 rectangle 20 50 200 30 rectangle 300 200 50 150 circle 100 300 80 line 0 0 600 300 line 300 30 50 450 point 400 20 point 430 70 point 470 130 point 500 230 point 530 430 text 50 550 Hej hopp i lingonskogen! circle 350 100 30 rectangle 10 250 100 10 square 400 400 150

(9 maj 2014 Klasshierarkier 22 ) Fler övningar 5. Skriv en klass Oval som representerar en oval. Var bör den komma in i hierarkin? Borde något ändras i den befintliga hierarkin? Antag att du inte vet hur ytan av en oval skall beräknas och att den inte behövs (just nu) (samt att inte har lust att leta upp formeln på nätet). Hur skall du då göra med area-metoden?

(9 maj 2014 Klasshierarkier 22 ) Fler övningar 5. Skriv en klass Oval som representerar en oval. Var bör den komma in i hierarkin? Borde något ändras i den befintliga hierarkin? Antag att du inte vet hur ytan av en oval skall beräknas och att den inte behövs (just nu) (samt att inte har lust att leta upp formeln på nätet). Hur skall du då göra med area-metoden? 6. Lägg till en setcolor(color c) som kan användas för att ändra färg på en figur. Var skall den placeras?

(9 maj 2014 Klasshierarkier 22 ) Fler övningar 5. Skriv en klass Oval som representerar en oval. Var bör den komma in i hierarkin? Borde något ändras i den befintliga hierarkin? Antag att du inte vet hur ytan av en oval skall beräknas och att den inte behövs (just nu) (samt att inte har lust att leta upp formeln på nätet). Hur skall du då göra med area-metoden? 6. Lägg till en setcolor(color c) som kan användas för att ändra färg på en figur. Var skall den placeras? 7. Antag att man vill förse varje individuell figur men en färg. Färgen skall ges i form av RGB-värden (3 heltal). Var på indata-raden skall dessa tre värden placeras och vem skall läsa dem?