Created
November 30, 2014 21:34
-
-
Save timkaechele/7a86f0771e50add45528 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Person { | |
/* | |
* Es ist in Java Konvetion alle Objektvariablen als "private" zu deklarieren, | |
* das hat den Vorteil, dass ein Benutzer der Klasse nicht einfach eine | |
* möglicherweiße fehlerhafte Variable setzt, beispielsweiße -1 für das Alter | |
* der Person | |
*/ | |
private Person ehepartner; | |
private String vorname; | |
private String nachname; | |
private int alter; | |
public static void main(String [] args) { | |
} | |
/* | |
* In einem Konstruktor wird das Objekt "konstruiert". Das bedeutet es werden | |
* ihm Parameter übergeben, die dann im Objekt selbst gespeichert werden | |
* können. Es ist hilfreich nur die Parameter anzufordern, die auch wirklich | |
* zur Benutzung der Klasse von Nöten sind. In diesem Fall wäre es bspw. | |
* vollkommen unsinnig den Ehepartner als Parameter im Konstruktor zu | |
* übergeben, da es ja schließlich auch unverheiratete Personen geben kann. | |
*/ | |
public Person(String vorname, String nachname, int alter) { | |
/* | |
* Obwohl die Variablen private sind kann man innerhalb des Objekts auf sie | |
* zugreifen: siehe Tabelle | |
*/ | |
this.nachname = nachname; | |
this.alter = alter; | |
} | |
/* | |
* Wie man an diesem Beispiel sieht kann es auch mehrere Konstruktoren geben. | |
* So ist es mögliche eine Klasse | |
*/ | |
public Person(String vorname, String nachname, int alter) { | |
this(nachname, alter); | |
this.vorname = vorname; | |
} | |
public String getVorname() { | |
return this.vorname; | |
} | |
public String getNachname() { | |
return this.nachname; | |
} | |
/* | |
* Da es nicht möglich ist außerhalb des Objekts auf private Objektvariablen | |
* zuzugreifen erzeugt man getter und setter. Der Vorteil dieser Art des | |
* Zugriffs ist die genaue Kontrolle des Programmierers der Klasse über den | |
* Zugriff. | |
*/ | |
public int getAlter() { | |
return this.alter; | |
} | |
/* | |
* Möchte man beispielsweise das Alter ändern, tut man das über den setter | |
* setAlter. Die Funktion nimmt den Paramater alter entgegen, der das neue | |
* Alter darstellt. Dieses neue Alter muss gewisse Anforderungen erfüllen. | |
* Beispiele für Anforderungen: | |
* - größer 0 | |
* - größer bisheriges Alter | |
* Wie man sieht hilft diese Art des kontrollierten Zugriffs, die | |
* Konsistenz des Objekts zu wahren, da es nicht möglich ist durch den Setter | |
* eine Person zu erstellen, die ein unmögliches Alter hat. | |
*/ | |
public void setAlter(int alter) { | |
if(this.alter < alter & alter > 0) { | |
this.alter = alter | |
} else { | |
/* | |
* Hier würde man den Benutzer der Klasse auf seine inkorrekte Eingabe | |
* hinweisen. | |
*/ | |
} | |
} | |
public void heiraten(Person ehepartner) { | |
/* | |
* Hier wird der Kurzschlussoperator && verwendet, da es ansonsten zu | |
* Fehlern bei der Ausführung kommen kann, da sollte der | |
* Ehegatte == null sein, es eine NullPointerException bei dem | |
* Zugriff auf ehegatte.ehegatte geben würde. | |
*/ | |
if (ehegatte != null && this != ehegatte && this.ehegatte == null | |
&& ehegatte.ehegatte == null) { | |
/* | |
* Hier wird der eigentliche Code zur Heirat ausgehürt | |
*/ | |
this.ehegatte = ehegatte; | |
ehegatte.heiraten(ehegatte); | |
} | |
/* | |
* Für gewöhnlich würde man hier wohl ein Else-Statement platzieren und | |
* eine Exception ausführen, die den Benutzer auf die Probleme bei der | |
* Heirat hinweist. | |
*/ | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment