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:


Abb. 15.3.1 Die neue Klasse Punkt in UML-Notation

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:

Punkt.java
Punktdemo.java

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
y-Wert: 4
x-Wert: 3
y-Wert: 5
P1(4/4)
P2(3/5)
P1 ist um 2 in x- und 5 in y-Richtung verschoben
P1(6/9)
P2 ist am Ursprung gespiegelt
P2(-3/-5)

 

zu 15.4 Objekte sind Referenzen
zur Startseite www.pohlig.de (C) MPohlig 2005