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

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

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

Föreläsning 13 Innehåll

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

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

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

OOP Objekt-orienterad programmering

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

JAVA Mer om klasser och objektorientering

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

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

TENTAMEN OOP

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

Klasshierarkier - repetition

Konstruktion av klasser med klasser

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

Rita Egna Bilder, Timer

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Lösningsförslag övning 2.

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Repetition av viktiga begrepp inom objektorienterad programmering

Laboration 1 - Grunderna för OOP i Java

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

1 Repetition av viktiga begrepp inom objektorienterad programmering

Exempel på användning av arv: Geometriska figurer

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

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Tentamen i Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

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

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

OOP Objekt-orienterad programmering

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

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

TENTAMEN OOP

Objektorienterad programmering i Java

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

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

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

PROGRAMMERINGSTEKNIK TIN212

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

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

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

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

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

DAT043 - föreläsning 8

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

Tentamen i Objektorienterad programmering E

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

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

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 )

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Monday, November 16, Senaste Labben

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

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

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

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

Introduktion till arv

Konstruktion av klasser med klasser

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

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

Föreläsning 15: Repetition DVGA02

Malmö högskola 2008/2009 CTS

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

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

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

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

DAT043 - Föreläsning 7

TENTAMEN OOP

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

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

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

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

Lösningsförslag tentamen FYTA11 Java

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

Tentamen i Objektorienterad programmering E

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

Klasser som datastrukturer

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Lösningsförslag till tentamen

Transkript:

Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface Föreläsning 5 Katarina Blom 1 2 public class A{ Subklasser public class B extends A{ B är en subklass till A. A är superklass till B. I subklasser kan man: Lägga till metoder. Omdefiniera metoder. Lägga till tillståndsvariabler. 3 Exempel I klassen Ball finns bla metoderna: public void step() public void setstepsizes(int dx, int dy) En utökad boll: public class CleverBall extends Ball{ public CleverBall(Box b, int x, int y){ super(b,x,y); public void mksquare(int d){ setstepsizes(d,0); step(); sleep(); setstepsizes(0,-d); step(); sleep(); setstepsizes(-d,0); step(); sleep(); setstepsizes(0,d); step(); private void sleep(){ try{thread.sleep(100);catch(exception e){ 4

Kommentarer till exemplet EnCleverBall kan allt som enball kan och kan dessutom röra sig i en fyrkant. CleverBall ärver alla tillståndsvariabler och metoder som finns i Ball. Klassen Ball finns kvar oförändrad och kan fortfarande användas. Klassen Box är subklass till JFrame public class Box extends JFrame{ Vilka metoder från JFrame används i klassen, vilken metod omdefineras?. 5 6 Allmänt: Konstruktorer Om man i en klass inte definierar någon konstruktor får man automatiskt en utan parametrar som inte gör någonting. Om man definierar minst en konstruktor får man inte någon parameterfri variant automatiskt. Subklasser: Konstruktorer Om man i konstruktorn för en subklass inte anropar superklassens konstruktor läggs ett anrop av superklassens parameterlösa konstruktor till. Om man inte deklarerar någon konstruktor i subklassen får man automatiskt en parameterlös konstruktor (som anropar superklassens parameterlösa konstruktor). Om man i subklassens konstruktor anropar superklassens konstruktor läggs inga anrop till. 7 8

Klasshiearkier Man kan definiera subklasser till subklasser... En klass kan ha flera subklasser. En klass kan bara ha en (direkt) superklass. JTextComponent JTextArea JComponent JLabel JTextField Klassen Object är superklass till alla klasser Object är superklass till standardklasserna och till de klasser man definierar själv Vilka metoder finns i Object? Box låda = new Box(); Ball b1 = new Ball(låda,0,0); Ball b2 = new Ball(låda,0,0); System.out.println(b1); System.out.println(b1.equals(b2)); Vad blir utskriften? Exempel från javax.swing 9 10 Klassen PointD (i Lab1) omdefinierar tostring() från Object: public class PointD{ private double x,y; public PointD(){ this(0.0,0.0); public PointD(double x, double y){ this.x = x; this.y = y; Subtyping Om S är subklass till T så är S också subtyp till T. Om e har typ S (som är subtyp till T) så är tilldelningen T x = e; tillåten. (Man kan också skicka e som ett argument till en metod vars parameter deklarerats att ha typ T. public double getx(){ return x; public double gety(){ return y; public String tostring(){ return "("+x+","+y+")"; 11 12

Subtyping exempel public static void mkred(ball b){ b.setcolor(java.awt.color.red); Kan man göra anropet mkred(s) om s refererar till en CleverBall? Polymorfism Typen avgör vilka operationer som kan utföras. Objektets klass avgör vilken kod som körs. Object pkt = new PointD(1,2); String str = pkt.tostring(); public static void step2(cleverball cb){ cb.step(); cb.step(); Vilken tostring()-metod exekveras? Detta kallas dynamisk bindning (eller sen bindning); Kod väljs då programmet körs. Kan man göra anropet step2(t) om t refererar till en Ball? 13 14 Att rita utan applets; Klasserna JFrame och JPanel För att rita i ett fönster i en applikation används (en subklass) till javax.swing.jpanel som placeras i en javax.swing.jframe En variant av lab1 import javax.swing.*; import java.awt.*; public class PilPanel extends JPanel{ private int radie = 100; private int antalpilar = 1000; public PilPanel(){ setpreferredsize(new Dimension(2*radie,2*radie)); public void paintcomponent(graphics g){ super.paintcomponent(g); setbackground(color.white); g.drawoval(0,0,2*radie,2*radie); CircleInSquare c = new CircleInSquare((double)radie); g.setcolor(color.red); for(int i=0;i<antalpilar;i++){ PointD p = c.newpoint(); double x = p.getx()+radie; double y = p.gety()+radie; g.fillrect((int)(x+.5),(int)(y+.5),1,1); 15 16

Huvudklassen import javax.swing.*; public class Main{ public static void main(string[] arg){ JFrame f = new JFrame(); PilPanel piltavla = new PilPanel(); f.add(piltavla); f.setdefaultcloseoperation(jframe.exit_on_close); f.pack(); f.setvisible(true); Interface En samling metodsignaturer. Någon klass med dessa metoder behöver ännu inte ha implementerats. Det kan finnas många oliak sätt att implementera detta. Ett interface utgör en typ. 17 18 Exempel Ett interface för bollar: import java.awt.color; interface BallSkelett{ public void setradius(int r); public void setcolor(color col); public void step(); public void setstepsizes(int dx, int dy); Interface är typer Man kan deklarera variabler av typ BallSkelett Man kan inte skapa objekt från ett interface. (Det finns ju ingen kod). Inga tillståndsvariabler. Ingen kod. 19 20

Att implementera ett interface import java.awt.color; public class GolfBoll implements BallSkelett{ private int diameter = 42; private double vikt = 45.93; private Color färg; public void setradius(int r){ diameter = 2*r; public void setcolor(color col){ färg = col; Alla metoder måste implementeras. Klassen kan innehålla fler metoder än vad som preciseras i interfacet. Java använder sig av interface Klasserna java.util.arraylist java.util.linkedlist java.util.vector implementerar interfacet List Vilka metoder finns i interfacet List? Vilka metoder finns implementerade i klasserna? (Vilka metoder ärvs in till klasserna) Implementerar klasserna fler interface? 21 22 Varför interface? istället för multipelt arv precisera via gränssnitt. Dela upp kodningsarbeet. Inkapsling Typen avgör vilka operationer som får utföras, objektets klass avgör vilken kod som körs List listan = new ArrayList(); List denlänkade = new LinkedList(); 23