Fragen zu Methoden und Konstruktoren
Fragen zu Methoden und Konstruktoren javafrage Sun, 10/21/2018 - 17:44- 1671 views
1. Methoden Implementieren und Dokumentieren
1. Methoden Implementieren und DokumentierenGehen wir von einer öffentlichen Methode rechteck() aus, die a und b als Parameter übergeben bekommt und c als Rückgabewert liefert, wobei die Formel a* b = c verwendet werden soll.
- Geben Sie die Definition und Implementierung der Methode an und wählen Sie hierbei die Datentypen sinnvoll
- Geben Sie an, wie hier ein guter Dokumentationskommentar lauten sollte.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
5 Minuten für Methode 4 Minuten für Dokumentationskommentar |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
- 5715 views
Schreibfehler
Hier ist ein Schreibfehler : "4 Minuten für Dolimentationskommentar"
Sie meinten bestimmt "Dokumentationskommentar"
- Log in to post comments
2. Konstruktoren
2. KonstruktorenWarum kann man in Java nicht mehr den default Konstruktor benutzen nachdem man einen eigenen Konstruktor implementiert hat?
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 4 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 1: Methoden Implementieren und Dokumentieren
/**
* Diese Methode berechnet die Flaeche eines Rechtecks
* @param a eine Seite des Rechtecks
* @param b eine Seite des Rechtecks
* @return die Fläche des Rechtecks
*/
public float rechteck(float a, float b) {
float c = a* b;
return c;
}
- 6152 views
Klassenmethode
Guten Tag,
bei Frage 1.10 sollte eine Klassenmethode implementiert werden - fehlt in der Antwort dann nicht das static?
LG
- Log in to post comments
3. Lebensdauer lokaler Variablen
3. Lebensdauer lokaler VariablenWodurch wird die Lebensdauer einer lokalen Variablen bestimmt? Was läßt sich über ihren Standard (default) Initialwert sagen?
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 2: Konstruktoren
Dies ist eine Implikation des Prinzips der Datenkapselung. Eine Klasse mit einem selbst implementierten Konstruktor soll keine Möglichkeit mehr bieten diesen Konstruktor zum Umgehen. Nur das Sperren des default Konstruktors kann garantieren, dass die Klasse im Sinne des Entwicklers initialisiert wird.
- 4949 views
4. Implementierung einer Methode
4. Implementierung einer MethodeImplementieren Sie eine Methode nach den folgenden Vorgaben:
- Die Methode ist öffentlich und statisch. Sie kann ohne die Existenz eines Objekts aufgerufen werden.
- Methodenname ist „quaderVolumen“
- Eingaben sind die drei Seiten eines Quaders. Wählen Sie die Parameternamen a,b,c
- Ausgabe ist das Volumen des Quaders
- Der Rückgabewert ist das Volumen des Quader. v=a*b*c (Produkt der drei Seitenlängen)
- Geben Sie den Wert 0 zurück, falls eine oder mehrere Seiten negative Eingabewerte besitzen
- Wählen Sie sinnvolle Typen für die Ein- und Ausgabeparameter
Hinweis: Achten Sie auf die Syntax!
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 7 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 3 : Lebensdauer lokaler Variablen
Durch den Block in dem sie definiert sind. Sie werden nach Verlassen des Blocks gelöscht. Die Variablen werden bei der Deklaration auf dem Stack (Stapel) angelegt. Nach Verlassen des Blocks werden alle Variablen des Blocks wieder vom Stack (Stapel) genommen und gelöscht.
Sie müssen vom Entwickler initialisiert werden.
- 4908 views
5. Syntax des Methodenkopf in Java
5. Syntax des Methodenkopf in JavaNennen Sie drei Bestandteile eines Methodenkopfes. Beschreiben Sie die jeweilige Funktion in Stichworten.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 3 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 4: Implementierung einer Methode
public static double quaderVolumen(double a, double b, double c) {
double v = 0.0;
if ((a>0) && (b>0) && (c>0))
v = a*b*c;
return v;
}
- 5772 views
or statt and
muss es in der if verzweigung nicht if ((a>0) || (b>0) || (c>0)) heißen, da es in der Aufgabenstellung ja heißt wenn einer der Werte kleiner null ist
- Log in to post comments
Hmm
Interessante Frage. Hier gilt der Satz von de Morgan. Wenn "einer kleiner Null ist, dann nicht" ist eine implizite Oder Verknüpfung. Nach de Morgan habe ich implementiert "alle größer Null, dann". Man kann das also auch mit Oder implementieren,
- Log in to post comments
alle größer Null, dann
Geben Sie den Wert 0 zurück, falls eine oder mehrere Seiten negative Eingabewerte besitzen:
Dann ist in diesem Fall aber die Aufgabenstellung nicht korrekt oder ?
Da mit der Implementierung mit AND davon ausgegangen wird das alle Werte 0 sein müssen.
- Log in to post comments
6. Überladene Methoden
6. Überladene MethodenJava kennt überladene sowie überschriebene Methoden. Woran erkennt man überladene Methoden?
- Geben Sie eine kurze Erklärung
- Geben Sie ein Beispiel zweier überladener Methoden. Wichtig:
- benötigte Klasse bzw. Klassen
- benötigte Methoden (Name, Signatur etc). Methodenrümpfe sind nicht wichtig. Kürzen Sie sie mit {…} ab
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 8 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 5: Bestandteile des Methodenkopfs
- Rückgabewert: Ein Typ oder void (keine Rückgabe) die ein Ergebnis der Methode ausgibt
- Name: gültiger Javabezeichner
- Eingabeparameterliste: Eine Komma separierte Liste von Variablen die einer Methode als Eingabewerte mit gegeben werden können
- Modifizierer: Zugriffsrechte auf eine Methode
- 4899 views
Frage 1.40
Bei der Methode setAtt fehlt zum schließen der Methode noch eine geschweifte Klammer, bevor die getAtt Methode beginnt.
- Log in to post comments
7. Implementieren und Dokumentieren einer Methode einsteigen()
7. Implementieren und Dokumentieren einer Methode einsteigen()Implementieren Sie die Methode einsteigen(int p) für die Klasse Flugzeug.
Die Methode einsteigen() soll die folgenden Eigenschaften haben:
- öffentlich ausserhalb des Pakets zugreifbar
- Angabe der Anzahl der Passagiere die zusteigen als Eingabeparameter
- Prüfung auf nicht negative Passagieranzahl.
- Bei negativem Wert der zusteigenden Passagiere wird die aktuelle Anzahl nicht modifiziert.
- Erhöhen der Objektvariblen passagiere um die Anzahl der zugestiegenen Passagiere
- Rückgabe der neuen Gesamtanzahl aller Passagiere.
Schreiben Sie einen Dokumentationskommentar für die Methode einsteigen().
- Achten Sie auf die Notation von
- Syntax des Dokumentationskommentars
- Beschreibung der Methode mit einem vernünftigen Satz
- Dokumentation der Eingabewerte
- Dokumentation des Ausgabewerts
Tipp: Was kommt zuerst: Methode oder Dokumentation?
public class Flugzeug { private int passagiere; // Ab hier Dokumentationskommentar und Methode implementieren } // Ende der Klasse Flugzeug
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 6 (Methode) +4 (Dokumentation) Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 6: Überladene Methoden
Eine Methode überlädt eine Methode der gleichen Klasse wenn sie den gleichen Namen aber unterschiedliche Eingabeparameter hat. Eingabeparameter sind unterschiedlich wenn sie eine unterschiedliche Anzahl von Parametern oder eine unterschiedliche Reihenfolge der Typen haben. Die Namen der Parameter spielen keine Rolle.
Anmerkung: Das Prinzip gilt auch über Vererbungshierarchien hinweg.
Beispiel
public class Ober {
public void print() {…}
public void print(int i) {...} }
- 4305 views
8. Rekursive Methoden
8. Rekursive MethodenWelche zwei Kommandozeilenausgaben erzeugt das Programm?
Was berechnet das Programm in der Methode?
Das Programm Test nutzt die main() Methode zum Testen der Methode berechneRekursiv() mit den Werten 9 und 89.
public class Test { /** * Hauptprogramm: Nur zum Testen * @param args */ public static void main(String[] args) { int eingabe; int erg; eingabe = 9; erg = berechneRekursiv(eingabe); System.out.println(eingabe + " : " + erg); eingabe = 89; erg = berechneRekursiv(eingabe); System.out.println(eingabe + " : " + erg); } /** * Diese Methode berechnet die/der/das ? der Eingabe * * @param eing : Eingabewert * @return a Ergebnis ist die ? */ static private int berechneRekursiv(int eing) { int a; if (eing == 0) a = 0; //Beende Rekursion else { // a ist größer als Null. Fahre mit Rekursion fort a = eing%10; a= a + berechneRekursiv(eing/10); } return a; } }
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 4+2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 7: Implementieren und Dokumentieren einer Methode einsteigen()
public class Flugzeug { private int passagiere; // Ab hier Dokumentationskommentar und Methode implementieren /** * diese Methode lässt Passagiere einsteigen. Die Anzahl der * Passagiere erhöht sich um den Wert p. Der Wert p muss positiv sein. * @param p Anzahl der Passagiere die zusteigen * @return neue Anzahl der Passagiere */ public int einsteigen(int p) { if (p>0) passagiere += p; return passagiere; } } // Ende der Klasse Flugzeug
- 4335 views
Anforderungen an einen Algorithmus
Beschreiben "2." und "4." nicht die gleichen Anforderungen?
Wenn ein Algorithmus terminiert hat er doch automatisch endlich viele Teilschritte, nicht?
Hätte er unendlich viele Teilschritte, dann würde er doch nicht terminieren.
Oder irre ich mich?
- Log in to post comments
9. Syntax eines Methodenkopf
9. Syntax eines MethodenkopfBeschreiben Sie die Bestandteile des Methodenkopfs der vorherigen Aufgabe:
static private int berechneRekursiv(int eing) {...}
Nennen Sie den Namen des Bestandteils und die Bedeutung für die Methode
- static
- private
- int
- berechneRekursiv
- (int eing)
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 10 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 8: Rekursive Methoden
Die Kommandozeilenausgaben sind:
9 : 9 89 : 17
Das Programm berechnet die Quersumme.
- 4304 views
10. Transformation einer rekursiven Methode in eine iterative Methode
10. Transformation einer rekursiven Methode in eine iterative MethodeImplementieren sie die Methode berechne() die das gleiche Ergebnis wie Methode berechneRekursiv() liefert.
Die Methode berechne() soll
- iterativ sein und
- eine while Schleife implementieren
/** * Diese Methode berechnet die Quersumme der Eingabe * * @param eing : Eingabewert * @return a Ergebnis ist die ? */ static private int berechneRekursiv(int eing) { int a; if (eing == 0) a = 0; //Beende Rekursion else { // eing ist größer als Null. Fahre mit Rekursion fort a = eing%10; a= a + berechneRekursiv(eing/10); } return a; }
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 6 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 9: Syntax eines Methodenkopf
Methodenkopf
|
Name des Bestandteils
|
Bedeutung für diese Methode
|
private | Modifier |
Die Methode ist nur innerhalb der Klasse aufrufbar
|
static | Modifier |
Die Methode darf auch ohne Objektkontext verwendet werden
|
int
|
Rückgabewert |
Ergebnis der Methode
|
berechneRekursiv
|
Methodenname |
Name der Methode
|
(int eing) | Formalparameter |
Übergabeparameter für die Methode
|
- 3974 views
11. Vergleich der Syntax von Konstruktoren und normalen Methoden
11. Vergleich der Syntax von Konstruktoren und normalen MethodenWie unterscheidet sich die Syntax eines Konstruktorkopf vom Kopf einer normalen Methode?
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 10: Transformation einer rekursiven Methode in eine iterative Methode
/** * Diese Methode berechnet die Quersumme der Eingabe iterativ * * @param eing : Eingabewert * @return a Ergebnis ist die ? */ static private int berechne(int eing) { int a = 0; while (eing != 0) { a = a+ eing%10; eing/= 10; } return a; }
- 4506 views
Fehler?
Ist Ihnen in der while Schleife nicht einiges durcheinander geraten? Warum soll a+eing%10 auf a zugewiesen werden? Das a hat zu diesem Zeitpunkt doch keinen Wert, also bringt es nichts, es zu addieren oder?
der Befehl danach: eing/=10; scheint mir genauso fragwürdig zu sein. Er ändert ja nichts an a und schließlich wird ja a zurück gegeben. Ich bezweifle, dass diese Methode die gleichen Ergebnisse liefert. Müsste es nicht so sein?
while (eing > 0) {
a=eing%10;
a=a+eing/10;
}
return a;
}
Gruß von einem Studenten der sein Leben in Bezug auf Java nicht im Griff hat (hoffentlich hatte).
- Log in to post comments
Antwort
Willkommen im Club derer die Java nicht voll im Griff haben. Ich hatte auch schon Meetings mit Spec. Leads von Java die nicht mehr weiter wussten. Das geht uns allen so.
Der Befehl
eing/=10;
macht das gleiche wie der Befehl
eing = eing/10;
damit funktioniert das hoffentlich
- Log in to post comments
Fehler beim Transformieren ?
Bei der rekursiven Methode muss doch der Wert von eing nicht unbedingt über 0 sein, er darf doch lediglich nicht 0 sein.
Bei der iterativen Methode werden von while(eing>0) aber doch alle negativen Werte ausgeschlossen.
- Log in to post comments
12. Dokumentationskommentare und Datenkapselung
12. Dokumentationskommentare und DatenkapselungDie Klasse Flugzeug besitzt ein Attribute passagiere zur Verwaltung der aktuellen Passagieranzahl und eine Konstante MAX_PASSAGIERE.
- Schützen Sie die aktuelle Anzahl der Passagiere mit einem Modifizierer so, dass man nur noch mit Methoden der Klasse Flugzeug auf dieses Attribut zugreifen kann. Tragen Sie den Modifizierer in den Quellcode an die richtige Stelle ein.
- Die maximale Anzahl der Passagiere soll unveränderlich sein. Wählen Sie einen geeigneten Modifizierer und tragen Sie ihn im Quellcode ein.
- Implementieren Sie eine Methode einsteigen().
- Die Methode soll mit einem Eingabeparameter n Passagiere einsteigen lassen.
- Sie gibt die Anzahl der Passagiere nach dem Einsteigen als Ergebnis zurück.
- Sie verändert die Anzahl der Passagiere nicht, falls nach dem Einstiegen die maximale Kapazität (MAX_PASSAGIERE) überschritten ist.
- Die Methode soll auch aus anderen Paketen aufrufbar sein .
- Erstellen Sie einen Dokumentationskommentar, der die Methode und die Ein- und Ausgabeparameter dokumentiert,
public class Flugzeug { int passagiere; int MAX_PASSAGIERE; // Ab hier Methode und Dokumentationskommentar implementieren } // Ende der Klasse Flugzeug
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 11 Minuten (1+1+5+4) |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 11: Vergleich der Syntax von Konstruktoren und normalen Methoden
- Ein Konstruktor hat keinen Rückgabewert
- Der Name eines Konstruktors ist immer identisch mit dem der Klasse
Antwort zu Frage 12: Dokumentationskommentare und Datenkapselung
public class Flugzeug { private int passagiere; final int MAX_PASSAGIERE; /** * n Passagiere steigen in ein Flugzeug ein. Bei Überschreiten * der maximalen Kapazität wird allen Passagieren der Zutritt * verwehrt * @param n Anzahl der zusteigenden Passagiere * @return Anzahl der Passagiere nach dem Zusteigen */ public int einsteige(int n) { if (MAX_PASSAGIERE>=passagiere+n) passagiere +=n; return passagiere; } }
- 4520 views
Import Befehl
Müsste der Import Befehl in Klasse 1a nicht "import Paket2.*" lauten?
- Log in to post comments
13. Implementieren eine Klasse (Pakete, Konstruktoren, Datenkapselung, Methoden)
13. Implementieren eine Klasse (Pakete, Konstruktoren, Datenkapselung, Methoden)Implementieren Sie unten eine vollständige Javaklasse die den folgenden Bedingungen genügt:
- Die Klasse liegt im Paket Paket1 (1 Min.)
- Der Name der Klasse ist Student (1 Min.)
- Die Klasse Student ist von jeder anderen Klasse benutzbar (1 Min.)
- Die Klasse Student wird aus der Klasse Person spezialisiert (1 Min.)
- Die Klasse Person befindet sich in Paket Paket2
- Die Klasse Student hat die folgenden Attribute:
- universitaet: privater Zeiger auf die Klasse Adresse aus dem Paket Paket2 (1 Min.)
- name: öffentliche Zeichenkette (1 Min.)
- Klasse Student hat einen öffentlichen Konstruktor(1 Min.)
- Der Konstruktor hat keine Argumente
- Das Attribut name wird auf „Rühmann“ im Konstruktor initialisert (1 Min.)
- Die Klasse Student hat öffentliche „Getter“ und eine „Setter“ Methoden zum Pflegen der Adresse (4 Min.)
- Die Klasse Student verfügt über alle Importdeklaration damit sie übersetzt (2 Min.)
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 14 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
- 4494 views
14 Unterscheidung überladener Methoden
14 Unterscheidung überladener MethodenErklären Sie, woran überladene Methoden mit gleichem Namen unterschieden werden.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
3 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 13: Implementieren eine Klasse (Pakete, Konstruktoren, Datenkapselung, Methoden)
package Paket1; import Paket2.Adresse; import Paket2.Person; public class Student extends Person { private Adresse unversitaet; public String name; public Student() { name = "Rühmann"; } public Adresse getUnversitaet() { return unversitaet; } public void setUnversitaet(Adresse unversitaet) { this.unversitaet = unversitaet; } }
- 4386 views
15. new Operator
15. new OperatorWelche beiden Typen von Datenstrukturen können mit dem new Operator angelegt werden?
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 14: Unterscheidung überladener Methoden
Anhand der Anzahl der Parameter und ihrer Typen abhängig von ihrer Reihenfolge. Die Variablennamen der Übergabeparameter spielen keine Rolle bei der Unterscheidung.
Der Typ des Rückgabeparameters wird nicht zur Unterscheidung verwendet.
- 4407 views
16. Wo werden Datenstrukturen mit dem new Operator angelegt?
16. Wo werden Datenstrukturen mit dem new Operator angelegt?In welchem Speicherbereich liegen alle Datenstrukturen, die mit dem new Operator angelegt wurden?
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit |
2 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 15: new Operator
- Felder von Basistypen oder Objekten
- Objekte (das heißt Instanzen von Klassen)
- 4029 views
17. Konstruktoraufrufe in Konstruktoren (Abfolge)
17. Konstruktoraufrufe in Konstruktoren (Abfolge)An welcher Stelle im Konstruktor kann man andere Konstruktoren aufrufen und warum müssen andere Konstruktoraufrufe an dieser Stelle aufgerufen werde. Geben Sie eine kurze Begründung.
Niveau | 1 |
Schwierigkeitsgrad | mittel |
Zeit | 3 Minuten |
Die Antwort ist bei der nächsten Frage zu finden (URL rechts unten)
Antwort zu Frage 16: Wo werden Datenstrukturen mit dem new Operator angelegt?
Auf dem Heap, dem Freispeicher. Sie werden dort solange gehalten wie sie referenziert werden. Anschließend werden sie von einen Garbagekollektor gelöscht.
Antwort zu Frage 17: Konstruktoraufrufe in Konstruktoren (Abfolge)
Man kann andere Konstruktoren nur als ersten Befehl aufrufen.
Damit wird garantiert, dass der aufgerufene Konstruktor auf einem nicht modifizierten Objekt ausgeführt werden kann.
- 3591 views