s n h m r u
i

Übungen

Aufgabe 1 - Geburtstagsschwindler

In der dargestellten Klasse Mensch ist ein sehr einfaches Modell implementiert, bei dem ein Mensch nach der Erzeugung ein zufälliges Alter besitzt.

class Mensch
{
	int alter;

	Mensch()
	{
		alter = new java.util.Random().nextInt(100);
	}
}

Mache Dir klar, dass das Attribut alter nicht geschützt ist, indem Du - ähnlich dem Timer - in der Direkteingabe einen Menschen erstellst, und sowohl lesend als auch schreibend auf das Attribut zugreifst.

Ändere den Code so ab, dass ein direkter, unkontrollierter Zugriff darauf nicht mehr möglich ist. Ergänze eine get- und eine set-Methode, so dass das Alter erfragt und geändert werden kann. Beim Abfragen des Alters soll der Wert 18 zurück gegeben werden, falls das Alter unter 18 ist. Ansonsten soll das richtige Alter zurück gegeben werden. Beim Setzen des Alters sollen nur positive Werte möglich sein. Bei Eingabe eines negativen Wertes soll das Alter auf 0 gesetzt werden. Tipp: Du kannst mit Math.max(zahl1, zahl2) das Maximum von zwei Zahlen - also die größere von zwei Zahlen - berechnen.

  • class Mensch
  • {
  • private int alter;
  • public Mensch()
  • {
  • alter = new java.util.Random().nextInt(100);
  • }
  • public int getAlter()
  • {
  • return Math.max(18, alter);
  • }
  • public void setAlter(int alt)
  • {
  • alter = Math.max(0, alt);
  • }
  • }

Aufgabe 2 - private vs. public

Aufgabe 3 - Stilfrage

Oft erscheint die Konvention Attribute als privat zu definieren überflüssig. In vielen Fällen wird man get- und set-Methoden schreiben, die nichts anderes machen als den Attributwert zurück zu geben oder zu überschreiben. Dennoch sollte man sich -zumindest außerhalb von Lernprojekten- an diese Konvention halten. Erkläre warum dies eine gute Idee ist. Überlege Dir dazu wie sich die Benutzung einer Klasse ändert, wenn man im Nachhinhein bemerkt, dass beim Ändern von Attributwerten nur bestimmte Werte zugelassen werden sollten.

Suche

v
7.1.1.3.3
inf-schule.de/oop/java/klassen/kapselung/uebungen
inf-schule.de/7.1.1.3.3
inf-schule.de/@/page/IrCKtoh0O0JHamod

Rückmeldung geben