15.3 Die Klasse Punkt Version 2
|
|
UML der neuen Klasse |
Die neue Version unserer Klasse
Punkt
soll den Bedingungen der Kapselung gehorchen. In der UML-Notation hat die
Klasse jetzt folgende Aussehen:
Dass die Attribute
x
und y
vor direktem Zugriff geschützt sind (in Java werden sie
private
deklariert), verdeutlicht man in UML durch das '-' - Zeichen vor dem Namen
der Attribute. Vor die Namen der Methoden, auf die man von Außen zugreifen
können soll, setzen wir ein '+' - Zeichen (in Java werden sie
public
deklariert) |
Download: |
class Punkt { private int x,y; public Punkt() { x=0; y=0; } public Punkt(int x, int y) { this.x = x; this.y = y; } public void setx(int x){ this.x = x; } public void sety(int y){ this.y = y; } public int getx() { return x; } public int gety() { return y; } public void verschiebe(int dx, int dy) { x += dx; y += dy; } public void spiegleAmUrsprung(){ x = -x; y = -y; } } Die neue aufrufende Klasse. p1.x = 3; würde vom Compiler abgelehnt. import info1.*; public class PunktDemo{ public static void main(String[] args){ int x,y; System.out.print("x-Wert: "); x = Console.in.readInt(); System.out.print("y-Wert: "); y = Console.in.readInt(); Punkt p1 = new Punkt(x,y); Punkt p2 = new Punkt(); System.out.print("x-Wert: "); p2.setx(Console.in.readInt()); System.out.print("y-Wert: "); p2.sety(Console.in.readInt()); System.out.println("P1(" + p1.getx() +"/" + p1.gety() +")"); System.out.println("P2(" + p2.getx() +"/" + p2.gety() +")"); p1.verschiebe(2,5); p2.spiegleAmUrsprung(); System.out.println("P1 ist um 2 in x- und 5 in y-Richtung verschoben"); System.out.println("P1(" + p1.getx() +"/" + p1.gety() +")"); System.out.println("P2 ist am Ursprung gespiegelt"); System.out.println("P2(" + p2.getx() +"/" + p2.gety() +")"); } } |
Man
beachte. In
p2.setx(Console.in.readInt()); liefert
readInt()
eine
int-Zahl,
die dann in der
setx(...)-Methode
übergeben wird. |
|
x-Wert: 4 |
|
zu | 15.4 Objekte sind Referenzen |
zur Startseite | www.pohlig.de (C) MPohlig 2005 |