Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen Hoofdstuk 4 Objecten
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.2 Inhoud Waarom Objecten ? –complexiteit & hergebruik Klassen –overerving (subklassen) abstracte klassen –polimorfisme –constructor Applet –HelloWorld –HelloWorld in HTML file
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.3 Complexe Interacties
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.4 Optimale Taakverdeling play
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.5 … met Objecten play
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.6 Shape String toString() double perimeter () double surfaceArea() translate (int x, int y) Rectangle setTopleftX (int x) setTopLeftY (int y) setWidth (int w) setHeighth(int h) int getTopleftX () int getTopLeftY () int getWidth () int getHeight() Circle setCentreX (int x) setCentreY (int y) setRadius (int r) int getCentreX () int getCentreY () int getRadius () overerving "inheritance" Overerving (Subklassen) subklassen
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.7 public class Naamsubklasse extends Naamsuperklasse { … } Subklasse-declaratie (vorm) "extends" indien geen "extends": subklasse Object Met o.a. volgende methodes public String toString() public boolean equals (Object obj) protected Object clone() throws CloneNotSupportedException
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.8 Subklasse-declaratie ( voorbeeld ) declareer klasse "Shape" (subklasse van "Object") –krijgt methodes toString, equals, clone –definieert perimeter, surfaceArea, translate declareer klasse "Rectangle" (subklasse van "Shape") –krijgt alle methodes van Shape declareer klasse "Circle" (subklasse van "Shape") –krijgt alle methodes van Shape package lecture4; public class Shape { public double perimeter (); {… } public double surfaceArea(); {… } public void translate (int x, int y); {… } } public class Rectangle extends Shape { … } public class Circle extends Shape { … }
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.9 Shape String toString() double perimeter () double surfaceArea() translate (int x, int y) Rectangle … Circle … abstracte klasse "declareert" interface maar implementatie gebeurt in subklassen Abstracte Klassen
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.10 public abstract class Naamsubklasse extends Naamsuperklasse { … public abstract type naamProcedure (parameters); } Abstracte Klasse declaratie (vorm) "abstract" voor de klasse "abstract" voor methodes … zonder implementatie (geen "{ …}"
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.11 Abstracte klasse-declaratie ( voorbeeld ) declareer abstracte klasse "Shape" definieert abstracte methodes –perimeter –surfaceArea –translate package lecture4; public class Shape { public abstract double perimeter (); public abstract double surfaceArea(); public abstract void translate (int x, int y); }
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.12 Import (File >> New project...) (File >> New package... lecture4) File>> import... Import Window –General >> File System –Next > Import Window (2) –(1) From directory: selecteer te importeren folder –(2) selecteer de te importeren files –(3) into folder: de naam van het project en de package –(4) create selected folders only Finish
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.13 Object String toString() Rectangle String toString() Circle String toString() "toString" is voor elk wat anders Polimorfisme Shape return "Circle [centreY = " + _centreX + "; centreY = " + _centreY + "; radius = " + _radius return "Rectangle [topLeftX = " + _topLeftX + "; topLeftY = " + _topLeftY + "; width = " + _width + "; height = " + _height + "]"
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.14 Constructor (vorm) Constructor maakt één bepaald soort objecten aan (= via "new()") public class NaamKlasse … { … public NaamKlasse (parameters); } constructor methode naam van de klasse … gevolgd door parameterlijst parameters door te geven aan new () default constructor NaamKlasse() initializeert object met lege waardes (0,...)
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.15 Constructor-declaratie ( voorbeeld ) klasse "Circle" definieert 4 constructor methodes –Circle () –Circle (int) –Circle(int, int) –Circle (int, int, int) public class Circle extends Shape { int _centreX = 0, _centreY = 0, _radius = 0; public Circle () { } public Circle (int radius) { _radius = radius; } public Circle (int centreX, int centreY){ _centreX = centreX; _centreY = centreY; } public Circle (int centreX, int centreY, int radius) { _centreX = centreX; _centreY = centreY; _radius = radius; }
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.16 Taakverdeling … met JUnit runTests testCircle TestShape testRectangle
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.17 Taakverdeling … met Applets eventloop mouseDown HelloWorld Applet paint <APPLET code = "lecture4.HelloWorldApplet.class" width=400 height=160> mouseDrag