Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmiervorkurs WS 2014/15 Instanzmethoden Termin 6.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmiervorkurs WS 2014/15 Instanzmethoden Termin 6."—  Präsentation transkript:

1 Programmiervorkurs WS 2014/15 Instanzmethoden Termin 6

2 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = flaeche(p); } public static double flaeche(Polygon p) { Punkt[] pkt = p.punkte; double f =... return f; } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons }

3 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = Polygon.flaeche(p); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public static double flaeche(Polygon p) { Punkt[] pkt = p.punkte; double f =... return f; } Besser: Methode in der Klasse unterbringen, mit der sie häufig gemeinsam eingesetzt wird.

4 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = Polygon.flaeche(p); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public static double flaeche(Polygon p) { Punkt[] pkt = p.punkte; double f =... return f; } Besser: Methode in der Klasse unterbringen, mit der sie häufig gemeinsam eingesetzt wird. = „Klasse Polygon, bitte berechne mir die Fläche von p“.

5 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = Polygon.flaeche(p); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public static double flaeche(Polygon p) { Punkt[] pkt = p.punkte; double f =... return f; } Beim Aufruf steht vor dem Namen der Methode der Name der Klasse, in welcher die Methode definiert ist.

6 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = p.flaeche(); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public double flaeche() { Punkt[] pkt = this.punkte; double f =... return f; } Noch Besser: Methoden können sich auf Objekte beziehen.

7 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = p.flaeche(); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public double flaeche() { Punkt[] pkt = this.punkte; double f =... return f; } Noch Besser: Methoden können sich auf Objekte beziehen. = Instanzmethoden

8 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = p.flaeche(); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public double flaeche() { Punkt[] pkt = this.punkte; double f =... return f; } Noch Besser: Methoden können sich auf Objekte beziehen. = „Polygon p, bitte berechne mir Deine Fläche “. = Instanzmethoden

9 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = p.flaeche(); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public double flaeche() { Punkt[] pkt = this.punkte; double f =... return f; } Beim Aufruf steht vor dem Namen der Methode der Bezeichner für das Objekt, für das die Methode aufgerufen wird.

10 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = p.flaeche(); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public double flaeche() { Punkt[] pkt = this.punkte; double f =... return f; } Es muss jetzt kein Polygon mehr übergeben werden.

11 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = p.flaeche(); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public double flaeche() { Punkt[] pkt = this.punkte; double f =... return f; } Instanzmethoden erkennt man daran, dass sie nicht static sind.

12 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = p.flaeche(); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public double flaeche() { Punkt[] pkt = this.punkte; double f =... return f; } this ist eine Referenz auf das Polygon, für welches die Methode aufgerufen wurde.

13 Flächenberechnung (Polygon) public class Flaechenberechnung { public static void main(String[] args) { Polygon p =... double f = p.flaeche(); } public class Polygon { public Punkt[] punkte; //die Ecken des Polygons public double flaeche() { Punkt[] pkt = punkte; double f =... return f; } this kann auch weggelassen werden, wenn Bezeichner (punkte) eindeutig ist.

14 Flächenberechnung (Kreis) public class Flaechenberechnung { public static void main(String[] args) { Kreis k = new Kreis(); //erzeuge Kreis k.xM = k.yM = 0.0; //setze Mittelpunkt = (0,0) k.radius = 1.0; //setze Radius auf 1 System.out.println("Flaeche = " + k.flaeche()); } public class Kreis { public double xM; public double yM; public double radius; public double flaeche() { return Math.PI * radius * radius; }

15 Flächenberechnung (Kreis) public class Flaechenberechnung { public static void main(String[] args) { Kreis k = new Kreis(0.0, 0.0, 1.0); //erzeuge Kreis System.out.println("Flaeche = " + k.flaeche()); } Besser: Erzeuge Kreis gleich mit den richtigen Attributwerten

16 Flächenberechnung (Kreis) public class Flaechenberechnung { public static void main(String[] args) { Kreis k = new Kreis(0.0, 0.0, 1.0); //erzeuge Kreis System.out.println("Flaeche = " + k.flaeche()); } Dies erfordert eine besondere Methode: Einen Konstruktor Besser: Erzeuge Kreis gleich mit den richtigen Attributwerten public class Kreis { public double xM; public double yM; public double radius; public Kreis(double x, double y, double r) { xM = x; yM = y; radius = r; } public double flaeche() { return Math.PI * radius * radius; }

17 Flächenberechnung (Kreis) public class Kreis { public double xM; public double yM; public double radius; public Kreis(double x, double y, double r) { xM = x; yM = y; radius = r; } public double flaeche() { return Math.PI * radius * radius; } kein Rückgabewert (auch nicht void !)

18 Flächenberechnung (Kreis) public class Kreis { public double xM; public double yM; public double radius; public Kreis(double x, double y, double r) { xM = x; yM = y; radius = r; } public double flaeche() { return Math.PI * radius * radius; } Bezeichner identisch mit Klassenname

19 Flächenberechnung (Kreis) public class Kreis { public double xM; public double yM; public double radius; public Kreis(double x, double y, double r) { xM = x; yM = y; radius = r; } public double flaeche() { return Math.PI * radius * radius; } im Konstruktor werden (in der Regel) die Attributwerte gesetzt

20 Aufgabe Erweitert die Klasse Kreis um die Instanzmethoden public double umfang() und public double distanz(Kreis k) Die Methode distanz soll die euklidische Distanz zwischen dem Kreis, für den die Methode aufgerufen wird, und dem Kreis k berechnen. (Die aufrufende Instanz hat natürlich Zugriff auf ihre eigenen Attribute, es ist nicht nötig diese zusätzlich zu übergeben.)

21 Aufgabe Erstellt eine Klasse Quadrat mit den Attributen public double xM //x-Koord. Mittelp. public double yM //y-Koord. Mittelp. public double seitenlaenge und den Methoden public double umfang() public double flaeche() ZUSATZ: public double distanz(Quadrat q) Diese Methoden sollen dieselbe Bedeutung wie die gleichnamigen Methoden der Klasse Kreis haben. Für die Berechnung der Distanz könnt Ihr davon ausgehen, dass die Quadrate achsparallel sind. Die Klasse Quadrat soll außerdem einen Konstruktor haben, mit dem sich die Attributwerte setzen lassen.


Herunterladen ppt "Programmiervorkurs WS 2014/15 Instanzmethoden Termin 6."

Ähnliche Präsentationen


Google-Anzeigen