Fragen zu Konzepten objektorientierter Programmierung

Fragen zu Konzepten objektorientierter Programmierung javafrage Sun, 11/11/2018 - 10:52

1. Der Modifizierer "static" in Javamethoden

1. Der Modifizierer "static" in Javamethoden

Warum werden Methoden bei Bedarf mit dem Modifizierer static gekennzeichnet?

Nennen sie eine bekannte static Methode aus dem Java API

Niveau 1
Schwierigkeitsgrad mittel
Zeit

4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

javafrage Thu, 12/29/2011 - 14:37

2. Anzahl von Instanzen (Objekte) erkennen

2. Anzahl von Instanzen (Objekte) erkennen

Ein Javaprogramm wird für die Klasse B gestartet. Die Klasse B verwendet in ihrer main() Methode und methode1() Methode Instanzen der Klasse B:

class B {
   public static void main(String[] args) {
      B var1 = new B();
      B var2 = methode1(var1);
   }
   
   public static B methode1(B para1) {
     B var3 = para1;
     System.out.println(var3);
     para1 = null;
     B var4 = para1;
    return var3;
  }
}

Wieviele Instanzen der Klasse B werden im Verlauf des Programmes erzeugt und woran erkennen Sie das?

Welche Referenzvariablen (Objektvariablen) zeigen im Laufe des Programms (zumindest temporär) auf Instanzen der Klasse B?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 1: Der Modifizierer "static" in Javamethoden

Damit man sie auch ohne die Existenz von Instanzen (Objekten) der entsprechenden Klasse aufrufen kann.
Die Methode public static void main(String[] args) zum Starten eines Hauptprogramms.

javafrage Fri, 12/30/2011 - 12:28

3. Konstruktoren, Abfolge

3. Konstruktoren, Abfolge

Die main() Methode der Klasse Unterklasse erzeugt eine Instanz der Klasse Unterklasse. Verfolgen Sie den Ablauf des Programms welches mit dem Befehl

java Unterklasse

gestartet wird. Numerieren sie alle aufgerufenen Ausgaben (System.out.println) in der aufgerufenen Reihenfolge durch.
Der erste Aufruf im Befehl:

System.out.println("Start"); // 1

ist bereits als Hilfe dokumentiert. Fahren sie mit „// 2“ etc. hinter dem Quelltext fort

public class Oberklasse {
   public Oberklasse () {
      System.out.println("Oberklasse-ohne-parameter"); 
   }
   public Oberklasse (String text) {
      this();
      System.out.println("Oberklasse-mit-String"); 
   }
}
 
public class Unterklasse extends Oberklasse {
   public Unterklasse (int zahl) {
      super ("Hallo");
      System.out.println("Unterklasse-mit-int");
   }
   public Unterklasse () {
      System.out.println("Unterklasse-ohne-Parameter");
   }
   public static void main(String[] args) {
System.out.println("Start"); // 1
Unterklasse u = new Unterklasse(8);
}
}

 

Niveau 1
Schwierigkeitsgrad mittel
Zeit

4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 2: Anzahl von Instanzen(Objekten) erkennen

Wieviele Instanzen der Klasse B werden im Verlauf des Programmes erzeugt und woran erkennen Sie das?

  • Es wurde ein Objekt erzeugt.
  • Man erkennt es am new Operator. Nur durch Aufrufe des new Operators werden Objekte erzeugt,

Welche Referenzvariablen (Objektvariablen) zeigen im Laufe des Programms (zumindest temporär) auf Instanzen der Klasse B?

  • var1, para1, var3, var2
javafrage Wed, 12/28/2011 - 15:45

Anonymous (not verified)

Thu, 11/26/2015 - 20:33

diese Aufgabe ist bei der Lernzielkontrolle zu Kapitel 6 aufgeführt.
Ist sie zu diesem Zeitpunkt wirklich schon lösbar? Ohne zu wissen, wie "extends" funktioniert ist der Ablauf doch nicht nachvollziehbar, oder?

Anonymous (not verified)

Sun, 04/11/2021 - 17:49

Fehlt hier nicht noch var4? Denn var3 wird hier auch als Referenzvariable aufgeführt

4. Schlüsselwort this

4. Schlüsselwort this

Wozu verwendet man in Java das Schlüsselwort this? Geben Sie eine kurze Erklärung.

Niveau 1
Schwierigkeitsgrad mittel
Zeit

2 Minuten


Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 3: Konstruktoren

public class Oberklasse {
public Oberklasse () {
System.out.println("Oberklasse-ohne-parameter"); // 2
} public Oberklasse (String text) { this(); System.out.println("Oberklasse-mit-String"); // 3 } } public class Unterklasse extends Oberklasse { public Unterklasse (int zahl) { super ("Hallo"); System.out.println("Unterklasse-mit-int"); // 4 } public Unterklasse () { System.out.println("Unterklasse-ohne-Parameter"); } public static void main(String[] args) { System.out.println("Start"); // 1 Unterklasse u = new Unterklasse(8); } }
javafrage Wed, 12/28/2011 - 16:55

Anonymous (not verified)

Fri, 02/26/2016 - 15:05

Eine genauere Erläuterung der Antwort der Frage wäre zum Verständnis hilfreich, z.B. wieso der Konstruktor der Oberklasse aufgerufen wird, aber nicht der der Unterklasse.

Ebenso die Ablaufreihenfolge des Programms, ob sich ein Programm immer von oben nach unten durcharbeitet, nachdem die Main-Methode ausgeführt wurde, oder ob es sich danach von Oberklasse nach Unterklasse durcharbeitet.

5. Konstruktoren und Datenkapselung

5. Konstruktoren und Datenkapselung

Warum sind Konstruktoren hilfreich wenn man Datenkapselung (Information Hiding) implementieren möchte?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 4: Schlüsselwort this

Zum Referenzieren des Objekts dessen Methode gerade ausgeführt wird oder zum Aufruf eines Konstruktors der gleichen Klasse

javafrage Thu, 12/29/2011 - 14:21

Sehr gut beobachtet. Danke.
Das Semikolon ist überflüssig. Syntaktisch ist das aber OK. Zwischen zwei Semikolon muss eine oder keine Anweisung stehen.

6. Anwendung der Datenkapselung in Java

6. Anwendung der Datenkapselung in Java

Gegeben sei eine Klasse Test mit einem öffentlichen Attribut att vom Typ int.

public class Test {
   public int att;
}

Implementieren Sie die Klasse neu und wenden Sie das Prinzip der Datenkapselung auf das Attribut att an.
Schützen Sie das Attribut att mit denen in Java zur Verfügung stehenden Mitteln. Stellen Sie sicher, dass das Attribut nie eine negative Belegung hat.
Hinweis: Der Benutzer muss bei Fehleingaben nicht benachrichtigt werden. Setzen Sie den Wert bei Fehleingaben nicht. Es muss kein Konstruktor implementiert werden.
 

Niveau 1
Schwierigkeitsgrad mittel
Zeit 6 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 5: Konstruktoren und Datenkapselung

Mit Konstruktoren kann man eine bestimmte Initialisierung von privaten (d.h. gekapselten) Attributen erzwingen. 

javafrage Thu, 10/18/2012 - 17:24

7. Nutzen von Konstruktoren

7. Nutzen von Konstruktoren

Wozu sind Konstruktoren in Java nützlich?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 6: Datenkapselung in Java

public class Test {
   private int att;

   public int get_att() {return att;}
   public void set_att(int a) {
      if (a>=0) att=a;
   }
}
javafrage Fri, 08/30/2013 - 10:37

8. Syntax Konstruktorkopf

8. Syntax Konstruktorkopf

Wie unterscheidet sich die Syntax eines Konstruktorkopf vom Kopf einer normalen Methode?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 7.: Nutzen von Konstruktoren

Konstruktoren erlauben das Implementieren von Datenkapselung. Objekte können so mit einem definierten konsistenten Ausgangszustand erzeugt werden.

javafrage Sun, 09/01/2013 - 20:09

9. Schlüsselwort private in Konstruktoren

9. Schlüsselwort private in Konstruktoren

Was bedeutet es, wenn man alle Konstruktoren einer Klasse mit dem Modifzierer „private“ versieht?

Wie kann man eine solche Klasse noch nutzen?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 8.: Syntax Konstruktorkopf

  • Konstruktoren haben keinen Platz für Rückgabeparameter in der Syntax.
    • Sie haben auch kein void Schlüsselwort als Rückgabeparameter. Der Rückgabeparameter fehlt in der Syntax.
    • Der Grund:
      • Konstruktoren werden immer nur vom new Operator aufgerufen.
      • Der new Operator reicht zwar die Eingabeparameter weiter. Er kann aber nicht eine beliebige Rückgabe auswerten.
  • Der Name eines Konstruktors ist immer identisch mit dem Namen der Klasse. Man kann ihn nicht frei wählen wie bei einer Methode.
javafrage Sun, 09/01/2013 - 20:17

10. Aufruf von Konstruktoren der gleichen Klasse

10. Aufruf von Konstruktoren der gleichen Klasse

Mit welchem Schlüsselwort kann man in Java aus einen Konstruktor einen anderen Konstruktor der gleichen Klasse aufrufen?

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 1 Minute

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 9.: Schlüsselwort private in Konstruktoren

Andere Klassen können keine Objekte dieser Klasse erzeugen. Objekte können nur von der Klasse selbst erzeugt werden.

Man kann die Objekterzeugung einer statischen, öffentlichen Methode der gleichen Klasse überlassen um ein Designpattern wie ein Singleton oder eine Factory zu implementieren.

javafrage Wed, 09/04/2013 - 09:35

11. Implementieren eines Konstruktors der einen anderen Konstruktor der gleichen Klasse aufruft

11. Implementieren eines Konstruktors der einen anderen Konstruktor der gleichen Klasse aufruft

Implementieren Sie in Java einen rekursiven Konstruktor zum Erzeugen gleichseitiger Dreiecke in der Klasse Dreieck.

Nutzen Sie den existierenden Konstruktor bei dem drei unterschiedliche Seiten erfasst werden.
Der Kopf des rekursiven Konstruktor für gleichseitige Dreiecke ist gegeben.
Implementieren Sie einen Rumpf der ein gleichseitiges Dreieck implementiert und den existierenden Konstruktor nutzt.

public class Dreieck {
   double seite1;
   double seite2;
   double seite3;
  /** Erzeugen eines Dreiecks mit drei unterschiedlichen Seiten
  */
   public Dreieck (double a, double b, double c) {
      seite1= a;
      seite2= b;
      seite3= c;
   }

/** Erzeugen eines gleichseitigen Dreiecks */
   public Dreieck(double a) {
      /* Hier die Implementierung eintragen */
   }// Ende Konstruktor
}// Ende der Klasse

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 10.: Aufruf von Konstruktoren der gleichen Klasse

Das Schlüsselwort this.

javafrage Wed, 09/04/2013 - 09:44

12. Aufrufe von Konstruktoren in Konstruktoren (Schlüsselworte)

12. Aufrufe von Konstruktoren in Konstruktoren (Schlüsselworte)

Beim Implementieren von Konstruktoren müssen eventuell andere Konstruktoren aufgerufen werden. Hierzu gibt es zwei Schlüsselwörter. Nennen Sie die Schlüsselwörter und beschreiben Sie ihre Verwendungszwecke in diesem Kontext.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 11: Implementieren eines Konstruktors der einen anderen Konstruktor der gleichen Klasse aufruft

public class Dreieck {
   double seite1;
   double seite2;
   double seite3;
   /** Erzeugen eines Dreiecks mit drei unterschiedlichen Seiten
   */
   public Dreieck (double a, double b, double c) {
      seite1= a;
      seite2= b;
      seite3= c;
   }

   /** Erzeugen eines gleichseitigen Dreiecks */
   public Dreieck(double a) {
      this (a,a,a);
   }// Ende Konstruktor
}// Ende der Klasse
javafrage Sun, 08/16/2015 - 11:23

13. Instanzvariablen und Klassenvariablen

13. Instanzvariablen und Klassenvariablen

Wie unterscheiden sich die Lebensdauer von Instanzvariablen und Klassenvariablen (Schlüsselwort static)?

Niveau 1
Schwierigkeitsgrad mittel
Zeit

2 Minuten

Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)

Antwort zu Frage 12: Aufrufe von Konstruktoren in Konstruktoren (Schlüsselworte)

  1. this: Erlaubt den Aufruf anderer Konstruktoren der gleichen Klasse
  2. super: Erlaubt den Aufruf von Konstruktoren der Oberklasse

Antwort zu Frage 13: Instanzvariablen und Klassenvariablen

Klassenvariablen sind über die gesamte Lebensdauer der Klasse definiert
Instanzvariablen sind von der Lebensdauer der zugehörigen Objekte(Instanzen) abhängig.

javafrage Fri, 12/30/2011 - 15:17

Anonymous (not verified)

Sat, 12/09/2017 - 13:43

"Sie werden mit Nullwerten belegt." stimmt das so?

lokale Variablen müssen doch normalerweise initialisiert werden, da sie keinen default Wert erhalten?

Habe es in eclipse ausprobiert, der Compiler meckert, wenn ich lokale Variablen nicht initialisere.

Vielen Dank

Viele Grüße