Fragen zu Methoden und Konstruktoren

Fragen zu Methoden und Konstruktoren javafrage Sun, 10/21/2018 - 17:44

1. Methoden Implementieren und Dokumentieren

1. Methoden Implementieren und Dokumentieren

Gehen 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.

  1. Geben Sie die Definition und Implementierung der Methode an und wählen Sie hierbei die Datentypen sinnvoll
  2. 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)

javafrage Wed, 12/28/2011 - 09:55

Anonymous (not verified)

Wed, 11/27/2013 - 14:39

Hier ist ein Schreibfehler : "4 Minuten für Dolimentationskommentar"
Sie meinten bestimmt "Dokumentationskommentar"

Danke schön,

ich habe es korrigiert.
Das war blind geschrieben. Im wahrsten Sinn des Wortes.

2. Konstruktoren

2. Konstruktoren

Warum 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;
}

 

javafrage Wed, 12/28/2011 - 14:20

Anonymous (not verified)

Sun, 12/06/2015 - 11:22

Guten Tag,
bei Frage 1.10 sollte eine Klassenmethode implementiert werden - fehlt in der Antwort dann nicht das static?
LG

Die Methode sollte wirklich statisch sein. Da es hier aber nur um die Dokumentation geht, habe ich mir erlaubt die Frage neu zu formulieren.

3. Lebensdauer lokaler Variablen

3. Lebensdauer lokaler Variablen

Wodurch 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. 

 

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

4. Implementierung einer Methode

4. Implementierung einer Methode

Implementieren 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.

javafrage Tue, 10/16/2012 - 08:53

5. Syntax des Methodenkopf in Java

5. Syntax des Methodenkopf in Java

Nennen 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;
}

 

javafrage Wed, 10/17/2012 - 16:55

Anonymous (not verified)

Tue, 12/19/2017 - 20:43

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

Stefan Schneider

Wed, 12/20/2017 - 10:34

In reply to by Anonymous (not verified)

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,

Anonymous (not verified)

Thu, 12/21/2017 - 12:37

In reply to by Stefan Schneider

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.

6. Überladene Methoden

6. Überladene Methoden

Java 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

  1. Rückgabewert: Ein Typ oder void (keine Rückgabe) die ein Ergebnis der Methode ausgibt
  2. Name: gültiger Javabezeichner
  3. Eingabeparameterliste: Eine Komma separierte Liste von Variablen die einer Methode als Eingabewerte mit gegeben werden können
  4. Modifizierer: Zugriffsrechte auf eine Methode

 

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

Anonymous (not verified)

Sun, 11/29/2015 - 13:22

Bei der Methode setAtt fehlt zum schließen der Methode noch eine geschweifte Klammer, bevor die getAtt Methode beginnt.

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) {...} }
javafrage Fri, 08/23/2013 - 08:51

8. Rekursive Methoden

8. Rekursive Methoden

Welche 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

 

javafrage Tue, 08/26/2014 - 18:12

Anonymous (not verified)

Sun, 11/06/2016 - 14:56

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?

9. Syntax eines Methodenkopf

9. Syntax eines Methodenkopf

Beschreiben 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.

javafrage Fri, 08/29/2014 - 12:42

10. Transformation einer rekursiven Methode in eine iterative Methode

10. Transformation einer rekursiven Methode in eine iterative Methode

Implementieren 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
javafrage Fri, 08/29/2014 - 17:20

11. Vergleich der Syntax von Konstruktoren und normalen Methoden

11. Vergleich der Syntax von Konstruktoren und normalen Methoden

Wie 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;
    }
 

 

javafrage Tue, 09/09/2014 - 09:00

Anonymous (not verified)

Wed, 12/17/2014 - 23:46

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).

Stefan Schneider

Thu, 12/18/2014 - 09:08

In reply to by Anonymous (not verified)

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

Anonymous (not verified)

Mon, 12/21/2015 - 10:30

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.

12. Dokumentationskommentare und Datenkapselung

12. Dokumentationskommentare und Datenkapselung

Die 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;
   }
}
javafrage Thu, 09/11/2014 - 17:32

Anonymous (not verified)

Sat, 12/06/2014 - 10:29

Der Code der Lösung ist Identisch mit dem in der Aufgabe, ist das gewollt?

javafrage

Sun, 12/07/2014 - 12:24

In reply to by Anonymous (not verified)

Danke. Die Musterlösung sollte jetzt stimmen.

Anonymous (not verified)

Sun, 12/20/2015 - 16:31

Müsste der Import Befehl in Klasse 1a nicht "import Paket2.*" lauten?

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)

javafrage Sun, 08/16/2015 - 10:02

14 Unterscheidung überladener Methoden

14 Unterscheidung überladener Methoden

Erklä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;
   }
   
}
javafrage Thu, 12/29/2011 - 16:31

15. new Operator

15. new Operator

Welche 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.

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

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)
javafrage Fri, 12/30/2011 - 14:52

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.

javafrage Sun, 08/16/2015 - 11:30