Fragen zu Konzepten objektorientierter Programmierung
Fragen zu Konzepten objektorientierter Programmierung javafrage Sun, 11/11/2018 - 10:52- 1574 views
1. Der Modifizierer "static" in Javamethoden
1. Der Modifizierer "static" in JavamethodenWarum 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)
- 5574 views
2. Anzahl von Instanzen (Objekte) erkennen
2. Anzahl von Instanzen (Objekte) erkennenEin 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.
- 6152 views
3. Konstruktoren, Abfolge
3. Konstruktoren, AbfolgeDie 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
- 6136 views
diese Aufgabe ist bei der
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?
- Log in to post comments
4. Schlüsselwort this
4. Schlüsselwort thisWozu 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); } }
- 7464 views
Antwort zu Frage
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.
- Log in to post comments
5. Konstruktoren und Datenkapselung
5. Konstruktoren und DatenkapselungWarum 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
- 5648 views
Aufgabe 1.14 Syntaxfehler
Bei der Deklaration von s2 haben sie ein ";" zu viel verwendet.
- Log in to post comments
6. Anwendung der Datenkapselung in Java
6. Anwendung der Datenkapselung in JavaGegeben 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.
- 5435 views
7. Nutzen von Konstruktoren
7. Nutzen von KonstruktorenWozu 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; } }
- 4441 views
8. Syntax Konstruktorkopf
8. Syntax KonstruktorkopfWie 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.
- 4353 views
9. Schlüsselwort private in Konstruktoren
9. Schlüsselwort private in KonstruktorenWas 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.
- 4336 views
10. Aufruf von Konstruktoren der gleichen Klasse
10. Aufruf von Konstruktoren der gleichen KlasseMit 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.
- 4892 views
11. Implementieren eines Konstruktors der einen anderen Konstruktor der gleichen Klasse aufruft
11. Implementieren eines Konstruktors der einen anderen Konstruktor der gleichen Klasse aufruftImplementieren 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.
- 5932 views
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
- 3306 views
13. Instanzvariablen und Klassenvariablen
13. Instanzvariablen und KlassenvariablenWie 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)
- this: Erlaubt den Aufruf anderer Konstruktoren der gleichen Klasse
- 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.
- 4597 views
Antwort zu 1.21: Lebensdauer lokaler Variablen
"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
- Log in to post comments
Im Prinzip, ja
Man musse hier zwischen Klassen und lokalen Variablen unterscheiden.
In der Java Spezifikation 4.12.5. Initial Values of Variables steht, dass Klassenvariablen mit einem Defaultwert initialisiert werden. Lokale Variablen müssen vom Entwickler initialisert werden.
Ich werde die Klausuraufgabe genauer spezifizieren.
- Log in to post comments