Probeklausur

Aufgaben

Begriffe

  1. Erläutern Sie in eigenen Worten die Begriffe Objekt, Klasse, Objektzustand und Objektidentität.
  2. Geben Sie den Methodenkopf einer Methode mit dem Namen xyz an, welche die ganzzahligen Parameter x und y hat und eine Gleitkommazahl als Rückgabewert liefert.
  1. Klassen sind Baupläne für Objekte und ein Objekt wird anhand eine Klasse instanziiert. Daher haben Objekte im Gegensatz zu Klassen verschiedene Zustände, welche in den unterschiedlichen Werten der Attribute festgehalten werden können. Zum Beispiel kann ein Objekt der Klasse Rover verschiedene Koordinaten in der Welt haben. Bewegt sich der Rover, so verändert sich diese und damit der Objektzustand. Zwei verschiedene Objekte können dabei den selben Zustand haben, also die gleichen Koordinaten, ohne das gleiche Objekt zu sein. Dies bezeichnet man als Objektidentität.
  2. public double xyz(int x, int y)

Datentypen und Operatoren

Notieren Sie in einer Tabelle, welche Ergebnisse die Ausdrücke ergeben und welche Datentypen die Ergebnisse haben.

  1. 4.0*2.0/16.0
  2. !(true && (23 < 17))
  3. false || true
  4. (2>3) || (4>5)
  5. 10%3
  6. "a"+"b"
AusdruckErgebnisErgebnisdatentyp
4.0*2.0/16.00.5double
!(true && (23 < 17))trueboolean
false || truetrueboolean
(2>3) || (4>5)falseboolean
10%31int
"a"+"b""ab"String

MyRover analysieren

Folgende Aufgaben beziehen sich auf eine Klasse MyRover, welcher von der Klasse Rover erbt. Analysieren sie folgende Methoden, indem Sie die Arbeitsweise Schritt für Schritt erläutern:

  1. public void methode1(int n){
      for(int i = 0; i < n ; i++){
          for( int j = 0; j <= i; j++ ){
              setzeMarke();
              fahre();
          }
          drehe("rechts");
      }
    }
  2. public void methode2(){
      for(int i = 0; i < 3; i++){
          while(huegelVorhanden("rechts")){
              fahre();
          }
          if(huegelVorhanden("links")){
              setzeMarke();
          }
          drehe("rechts");
          fahre();
      }
    }
    
  1. Der Rover enthält zwei geschachtelte Zählschleifen. Die äußere Schleife wiederholt den inneren Block n mal, wobei n der Parameter der Funktion ist. Die innere Schleife wird i+1 mal wiederholt, hängt also vom Wert der äußeren Zählschleife ab. So wird diese für i=0 einmal, für i=1 zweimal usw. ausgeführt. Nach der inneren Schleife dreht der Rover nach rechts.
    Insgesamt erzeugt der Rover somit eine Spirale, welche zuerst aus einer Marke eine linie, dann aus zwei Marken eine linie usw. enthält.
  2. Die Methode methode2 besitzt eine Zählschleife, deren Anweisungsblock dreimal durchlaufen wird. Ihre Zählvariable i wird mit 0 initialisiert und pro Abarbeitung um 1 erhöht. Die Abbruchbedingung lautet „kleiner als 3“. Im Anweisungsblock wird zuerst durch eine Wiederholschleife überprüft, ob rechts vom Rover ein Hügel vorhanden ist. Solange dies der Fall ist, wird jeweils die Methode fahre() ausgeführt, bevor das Vorhandensein des Hügels erneut überprüft wird. Sollte sich dann links ein Hügel befinden, wird eine Marke gesetzt. Dies wird mit einer bedingten Anweisung realisiert. Am Ende des Anweisungsblocks der Zählschleife dreht sich der Rover nach rechts und fährt noch ein Feld vorwärts.
    Insgesamt fährt der Rover dreimal so lange, bis er rechts abbiegen kann. Sollte diese Abbiegung keine Kreuzung sein (d. h. sich links ein Hügel befinden), dann markiert er diese.

Benutzerkonto

Für die Verwaltung von Benutzerkonten gelten folgenden Anforderungen:

  1. Erstellen Sie du den oben beschriebenen Anforderungen ein Klassendiagramm mit allen Attributen und Methoden.
  2. Erstellen Sie zu 2 Objekten der in der vorherigen Aufgabe erstellten Klasse ein Objektdiagramm. Setzen Sie für die Attribute sinnvolle Werte ein.
  3. Implementieren Sie die Methode public String anrede().
  4. Implementieren Sie die Methode public void punkteEntfernen(int pPunkte), welche pPunkte vom Konto entfernt und obigen Anforderungen genügt.
  1. Individuelle Lösungen der Art:
  2. public String anrede(){
      if(weiblich){
          return "Sehr geehrte Frau " + name;
      }else{
          return "Sehr geehrter Herr " + name;
      }
    }
  3. public void punkteEntfernen(int pPunkte){
      if(punkte >= pPunkte){
          punkte -= pPunkte;
      }else{
          System.out.println("Kauf nicht möglich! Es sind zu wenig Punkte auf dem Konto!");
      }
    }

Body-Mass-Index

Der Body-Mass-Index (BMI) ist eine Maßzahl für die Bewertung des Körpergewichts eines Menschen in Relation zu seiner Körpergröße. Der BMI bezieht die Körper-Masse (engl. mass, umgangssprachlich Gewicht) auf das Quadrat der Körpergröße. Der Body-Mass-Index wird folgendermaßen berechnet:

\(BMI=\frac{m}{h^2}\)

Dabei ist m die Körpermasse (in Kilogramm) und h die Körpergröße (in Metern).

Folgende Tabelle zeigt eine Einschätzung des BMI:

Gewicht:BMI männlichBMI weiblich
Untergewichtunter 20unter 19
Normalgewicht20 - 2519 - 24
Übergewichtüber 25über 24

Implementieren Sie eine Methode public void bmi(boolean weiblich, double gewicht, double größe). Diese Methode berechnet den BMI, gibt diesen in sowie die Gewichtseinschätzung in der Tabelle aus.

Beispiel: Aufruf (false, 80, 1.82) ergibt Dein BMI ist 24.151672503320853. Du hast Normalgewicht!

public void BMI(boolean weiblich, double masse, double größe){
  double bmi = masse / (größe*größe);
  String out = "Dein BMI ist " + bmi + ".";
  if(weiblich){
      if(bmi < 19){
          out += " Du hast Untergewicht!";
      }else if(bmi <= 24){
          out += " Du hast Normalgewicht!";
      }else{
          out += " Du hast Übergewicht!";
      }
  }else{
      if(bmi < 20){
          out += " Du hast Untergewicht!";
      }else if(bmi <= 25){
          out += " Du hast Normalgewicht!";
      }else{
          out += " Du hast Übergewicht!";
      }
  }
  System.out.println(out);
}

Anhang