Fragen zu Paketen

Fragen zu Paketen

Fragen zu Paketen in anderen Kategorien:

javafrage Thu, 11/29/2018 - 17:19

1. Pakete und Sichtbarkeit von Klassen und Methoden

1. Pakete und Sichtbarkeit von Klassen und Methoden

Die unten aufgeführten Klassen befinden sich in unterschiedlichen Paketen.

  • Fügen Sie in die Klassen des Pakets Paket1 die minimal benötigten Modifizierer ein, die für das Paket Paket2 und das Paket Paket3 benötigt werden
  • Fügen Sie im Quellcode der Klassen KlasseAC und KlasseABD alle benötigten Befehle zur Benutzung der Klassen im Paket Paket1 ein.

Der Befehl String s = aa.print(); in der Klasse KlasseABD ist auch trotz korrekter Import-kommandos nicht übersetzbar. Änderen Sie einen der gegebenen Methoden-modifizierer so, dass das Kommando übersetzbar wird. Ändern Sie keine Modfizierer von Klassen oder Paketzugehörigkeiten! 

Fügen Sie alle Änderungen direkt im Quellcode ein.

Datei: KlasseA.java:
package Paket1;
class KlasseA {
protected String print()
{return "KlasseA";} }

Datei KlasseAA.java:

package Paket1;
class KlasseAA extends KlasseA{  }

Datei KlasseAB.java:

package Paket1;
class KlasseAB extends KlasseA{  }
Lage der Klassen in den Paketen
Datei KlasseAC.java:
package Paket2;
class KlasseAC extends KlasseA { }
Datei Klasse KlasseABD.java:
package Paket3;
  
class KlasseABD extends KlasseAB{
KlasseA myRef;
public void test() {
KlasseAB aa = new KlasseAB();
String s = aa.print(); } }

 

 

Niveau 1
Schwierigkeitsgrad mittel
Zeit 7 Minuten

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

javafrage Fri, 10/19/2012 - 10:35

Anonymous (not verified)

Sun, 12/11/2016 - 18:34

Laut der Oracle Java Documentation überschreibt eine Methode einer Unterklasse die Methode einer Oberklasse, wenn
a) sie die gleiche Signatur (Name und Parameterliste) hat,
b) sie den gleichen Rückgabetyp hat,
c) die überschriebene Methode nicht statisch ist ("hiding"),
d) die Zugriffsmodifikatoren der Methode der Unterklasse nicht beschränkender als die der Oberklasse sind.

Quelle: "Overriding and Hiding Methods", Oracle Java Documentation

2. Pakete und Schutz von Variablen

2. Pakete und Schutz von Variablen

Ergänzen Sie die folgenden Pakete mit den notwendigen Importkommandos:

Das Paket Paket1 ist gegeben mit der Klasse Klasse1a.

Das Paket Paket2 ist gegeben mit den Klassen Klasse2a und Klasse2b.

  • Fügen Sie in der Klasse Klasse1a genau einen expliziten Importbefehl ein, der Ihnen erlaubt alle Klassen des Paket2 zu verwenden.
  • Fügen Sie in der Klasse Klasse2a einen expliziten Importbefehle ein, der Ihnen nur die Benutzung der Klasses1a erlaubt.
  • Fügen Sie in der Klasse Klasse2b einen impliziten Import ein, der Ihnen nur erlaubt die Klasse Klasse1a im Attribut v1 zu verwenden.
  • Fügen Sie in der Klasse2a einen Modifizierer ein, der es erlaubt, das Attribut a in der Klasse Klasse1a zu verwenden. Die geschieht in der Methode test() Fügen Sie alle nötigen Befehle direkt im Quellcode ein.

Klasse1a.java:

package Paket1;


public class Klasse1a {
   Klasse1a v1;
   Klasse2a v2;
   Klasse2b v3;

   void test(Klasse2a obj) {
      obj.a = 17;
   }
}

Klasse2a.java

package Paket2;


 class Klasse2a {
   Klasse1a v1;
   Klasse2a v2;
   Klasse2b v3;
          int a;
}

Klasse2b.java

package Paket2;
public class Klasse2b {
           Klasse1a v1;
           Klasse2a v2;
           Klasse2b v3;  

}
Niveau 1
Schwierigkeitsgrad mittel
Zeit 8 Minuten

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

Antwort zu Frage 1 : Pakete und Sichtbarkeit von Klassen und Methoden

Die notwendigen Änderungen sind fett gedruckt. Bzw. mit horizontaler Linie durchgestrichen.

Datei: KlasseA.java:
package Paket1;
public class KlasseA {
public protected String print()
{return "KlasseA";} }

Datei KlasseAA.java:

package Paket1;
class KlasseAA extends KlasseA{  }

Datei KlasseAB.java:

package Paket1;
public class KlasseAB extends KlasseA{  }
Lage der Klassen in den Paketen
Datei KlasseAC.java:
package Paket2;
import Paket1.KlasseA; class KlasseAC extends KlasseA { }
Datei Klasse KlasseABD.java:
package Paket3;
import Paket1.KlasseAB;
import Paket1.KlasseA;
  
class KlasseABD extends KlasseAB{
KlasseA myRef;
public void test() {
KlasseAB aa = new KlasseAB();
String s = aa.print(); } }
javafrage Thu, 09/11/2014 - 17:06

Anonymous (not verified)

Mon, 12/15/2014 - 14:24

Die Antwort für die 4. Teilaufgabe steht schon im Quellcode der Frage.

Danke für den Kommentar. Der Fehler wurde korrigiert. Ich musste leider im Kommentar die korrekt genannte Lösung löschen. Die Spannung auf dieser Seite wäre sonst weg. :-)

Anonymous (not verified)

Tue, 12/16/2014 - 10:49

Zu Punkt 4 der Aufgabe: "Fügen Sie in der Klasse2a einen Modifizierer ein, der es erlaubt, das Attribut a in der Klasse Klasse1a zu verwenden. Die geschieht in der Methode test() Fügen Sie alle nötigen Befehle direkt im Quellcode ein."
Im Quellcode in der Aufgabe ist das Attribut bereits public oder war danach nicht gefragt? Ich erkenne hier keinen Unterschied zur Musterlösung.

javafrage

Tue, 12/16/2014 - 14:43

In reply to by Anonymous (not verified)

Oops.
Copy und paste Fehler. Wurde korrigiert. Danke!

Anonymous (not verified)

Tue, 11/24/2015 - 18:22

In reply to by javafrage

Falls ich hier etwas nicht komplett missverstehe, ist die Lösung der 4. Teilaufgabe weiterhin bereits vorgegeben: "public int a;"

Außerdem: Nach dem Skript dachte ich, dass die Lösung der erste Teilaufgabe eigentlich "import Paket2.*;" sein müsste (expliziter Import aller Klasse aus Paket2).
In der Lösung heißt es aber nur "import Paket2;" ohne Stern.

Wo ist mein Denkfehler?
Danke

Stefan Schneider

Wed, 11/25/2015 - 09:26

In reply to by Anonymous (not verified)

Gut beobachtet. Hier wurde versehentlich die Lösung mit in die Aufgabenstellung kopiert. Wurde behoben. Danke.

3. Verschiedene Arten der Importdeklaration

3. Verschiedene Arten der Importdeklaration

Java verfügt über zwei Arten Klassen anderer Pakete zu importieren. Nennen Sie die beiden Importverfahren und geben Sie eine Begründung wann der Entwickler welches Verfahren anwenden sollte.

Niveau 1
Schwierigkeitsgrad mittel
Zeit 3 Minuten

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

Antwort zu Frage 2.: Pakete und Schutz von Variablen

Klasse1a.java:

package Paket1;

import Paket2.*; 
public class Klasse1a {
   Klasse1a v1;
   Klasse2a v2;
   Klasse2b v3;

   void test(Klasse2a obj) {
      obj.a = 17;
   }
}

Klasse2a.java

package Paket2;

import Paket1.Klasse1a;

public class Klasse2a {
   Klasse1a v1;
   Klasse2a v2;
   Klasse2b v3;
   public int a;
}

Klasse2b.java

package Paket2;
public class Klasse2b {
    Paket1.Klasse1a v1;
           Klasse2a v2;
           Klasse2b v3;  

}

 

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

Stimmt. Diese Seite hatte ich falsch eingehängt. Das Problem sollte jetzt behoben sein.

4. Klassen importieren ohne Schlüsselwort

4. Klassen importieren ohne Schlüsselwort

Bei welchem der beiden Importverfahren benötigt man kein Schlüsselwort und warum?

Niveau 1
Schwierigkeitsgrad mittel
Zeit 2 Minuten

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

Antwort zu Frage 3: Verschiedene Arten der Importdeklaration

  1. Expliziter Import: Zu importierende Klassen werden am Anfang einer Klasse importiert. Die importierten Klassennamen können dann ohne das vorangestellte Paket benutzt werden. Dies ist nützlich wenn man die Klassen an mehreren Stellen verwendet. Es ist weniger Schreibarbeit nötig.
  2. Impliziter Import: Die Klasse wird mit ihrem Paket vollständig bei der Benutzung genannt. Dies ist weniger Schreibarbeit wenn man die zu importierende Klasse nur einmal benutzen muss. Ein impliziter Import kann auch nötig sein falls zwei Klassen mit dem gleichen Namen aus verschiedenen Paketen benutzt werden müssen. Man kann so beschreiben welche der beiden Klassen benutzt werden soll.
javafrage Sun, 08/16/2015 - 15:06

5. Pakete, Importdeklarationen

5. Pakete, Importdeklarationen

Die Klasse Strecke aus dem Paket Nahe (Datei 3) soll die beiden Referenzvariablen anfang und ende vom Typ Punkt verwenden. Die beiden Referenzvariablen anfang und ende sollen aber die Implementierung eines Punktes aus dem Paket Entfernt (Datei 1) verwenden und nicht die Implementierung aus dem gleichen Paket (Datei 2).

Die genaue Typdeklaration der beiden Variablen anfang und ende fehlt in Datei 3. Fügen Sie die korrekte Typbezeichnung ein.

Es gibt zwei unterschiedliche Möglichkeiten den Import der Klasse Entfernt.Punkt in der Klasse Nahe.Strecke (Datei 3) zu deklarieren.
Fügen Sie in den unten aufgeführten Quellcode die beiden Möglichkeiten des Imports in Datei 3 ein:

Importmöglichkeit 1 Importmöglichkeit 2
Datei 1:
package Entfernt;
public class Punkt {
...
}

Datei 2:

package Nahe;
public class Punkt {
...}

Datei 3:

package Nahe;

            

public class Strecke {
Punkt anfang;
Punkt ende;
}

Datei 1:
package Entfernt;
public class Punkt {
...
}

Datei 2:

package Nahe;
public class Punkt {
...}

Datei 3:

package Nahe;

            

public class Strecke {
Punkt anfang;
Punkt ende;
}

Die Antwort finden Sie auf der nächsten Seite (URL rechts unten klicken).

Niveau 2
Schwierigkeitsgrad mittel
Zeit 4 Minuten

Antwort zu Frage 4: Klassen importieren ohne Schlüsselwort

Beim impliziten Import. Man gibt bei der Benennung des Typs alle Pakete mit an. Bespiel:

 

Paket1.Person p = new Paket1.Person();
javafrage Sat, 02/25/2012 - 11:57

Anonymous (not verified)

Mon, 04/12/2021 - 21:42

Fehlt hier in der letzten Zeile nicht ein Name für das neue Objekt? Wie referenzieren wir sonst unser Paket1.Person Objekt?

Antwort zu Frage 5.

Antwort zu Frage 5.

Erstmal nur eine Antwort

Frage 5: Pakete und Importdeklarationen

Importmöglichkeit 1 Importmöglichkeit 2
Datei 1:
package Entfernt;
public class Punkt {
...
}

Datei 2:

package Nahe;
public class Punkt {
...}

Datei 3:

package Nahe;
import Entfernt;
            

public class Strecke {
Punkt anfang;
Punkt ende;
}

Datei 1:
package Entfernt;
public class Punkt {
...
}

Datei 2:

package Nahe;
public class Punkt {
...}

Datei 3:

package Nahe;

            

public class Strecke {
Entfernt.Punkt anfang;
Entfernt.Punkt ende;
}

javafrage Mon, 11/07/2016 - 11:28