Warum wird die Menge aller Klassen eines Projekts in Pakete unterteilt?
Zur logischen Strukturierung der Klassen sowie zur Aufteilung der Aufgaben im Entwicklungsteam.
Was ist ein Paket?
Ein Element zur Strukturierung der Java-Klassen eines Entwicklungsprojektes; Klassen werden Paketen zugeordnet, Pakete können selbst wieder Pakete enthalten.
Nach welchem Kriterium werden Klassen gleichen Paketen zugeordnet?
Klassen mit ähnlichen Funktionen und Klassen, die stark voneinander abhängen.
Worauf hat die Zuordnung zu Paketen Auswirkungen?
Auf den Speicherort der Klasse und auf die Zugriffsberechtigungen auf Methoden anderer Klassen.
Mit welchem Konzept des Dateisystems lassen sich Pakete vergleichen, und was ist die Analogie zur Klasse?
Mit Verzeichnissen; eine Klasse entspricht dabei einer Datei.
In wie vielen Verzeichnissen/Paketen kann eine Datei/Klasse jeweils gespeichert sein, und dürfen Dateien/Klassen weitere Dateien/Klassen enthalten?
Jede Datei (Klasse) wird in genau einem Verzeichnis (Paket) gespeichert; Dateien (Klassen) können keine weiteren Dateien oder Verzeichnisse (Klassen oder Pakete) enthalten – nur Verzeichnisse (Pakete) können Unterverzeichnisse (Pakete) enthalten.
Was steht in der ersten Quelltextzeile einer Java-Klasse, und was folgt danach?
Die Angabe des Pakets, in dem sich die Klasse befindet; erst danach folgt die Deklaration der Klasse.
Wie ergibt sich der Speicherort der Datei einer Klasse?
Aus dem Paket der Klasse – für jedes Paket wird ein Verzeichnis angelegt, und die Datei muss sich in diesem Verzeichnis befinden.
Wie lautet der Dateipfad für die Klasse "Kunde" im Paket "onlineshop.nutzer"?
onlineshop/nutzer/Kunde.java
Müssen Klassennamen innerhalb eines Pakets eindeutig sein?
Ja, Klassennamen müssen innerhalb eines Pakets eindeutig sein.
Was ist der "qualifizierte Name" einer Klasse, und woraus setzt er sich zusammen?
Der für die Java-Laufzeitumgebung vollständige Name einer Klasse; er setzt sich aus dem Paket der Klasse und dem Namen der Klasse zusammen (z. B. onlineshop.nutzer.Kunde).
onlineshop.nutzer.Kunde
Warum kann es gleichzeitig eine Klasse "Kunde" im Online-Shop und eine Klasse "Kunde" in einem Bibliothekssystem geben, ohne dass es zu einem Konflikt kommt?
Weil sich die qualifizierten Namen durch das jeweilige Paket unterscheiden: onlineshop.nutzer.Kunde und bibliothek.nutzer.Kunde sind trotz gleichen Klassennamens eindeutig unterscheidbar.
bibliothek.nutzer.Kunde
Was sind Sichtbarkeitsmodifikatoren?
Elemente von Java, mit denen die Sichtbarkeit von Attributen, Klassen und Methoden gegenüber anderen Klassen und Paketen eingestellt werden kann.
Auf welche 3 Elemente können Sichtbarkeitsmodifikatoren angewendet werden?
Klasse, Attribut, Methode.
Wie viele Sichtbarkeitsmodifikatoren gibt es in Java?
4: public, "(nichts)"/paketsichtbar, protected, private.
public
protected
private
Was bedeutet public, und auf welche Elemente anwendbar?
Das Element ist für alle Klassen des Programms sichtbar; anwendbar auf Klassen, Attribute, Methoden.
Was bedeutet die Angabe von "nichts" (kein Modifikator), und auf welche Elemente anwendbar?
Das Element ist nur im gleichen Paket sichtbar; anwendbar auf Klassen, Attribute, Methoden.
Was bedeutet protected, und auf welche Elemente anwendbar?
Das Element ist nur im gleichen Paket oder in abgeleiteten Klassen sichtbar (Details zu abgeleiteten Klassen in Lektion 5); anwendbar auf Attribute, Methoden (nicht auf Klassen).
Was bedeutet private, und auf welche Elemente anwendbar?
Das Element ist nur für Elemente der gleichen Klasse sichtbar; anwendbar auf Attribute, Methoden (nicht auf Klassen).
Welche Sichtbarkeit sollten Attribute laut Skript außer in gut begründeten Ausnahmefällen immer erhalten?
private.
Warum sollten Attribute fast immer mit private versehen werden, obwohl Java auch andere Sichtbarkeiten erlauben würde?
Weil das dem Prinzip der Kapselung entspricht (siehe 1.4/2.4): Attribute sollen nicht direkt von außen zugänglich sein, sondern nur kontrolliert über Methoden gelesen/verändert werden. private erzwingt genau das technisch, während public bei Attributen die Kapselung faktisch aufheben würde.
Worin liegt der Unterschied zwischen "nichts" (paketsichtbar) und private bei einem Attribut?
private erlaubt Zugriff ausschließlich innerhalb derselben Klasse. "Nichts" (Paket-Sichtbarkeit) erlaubt zusätzlich den Zugriff durch alle anderen Klassen im selben Paket – ist also eine Stufe offener als private.
Warum ist die Aufteilung eines großen Projekts in Pakete sinnvoll, wenn ein Projekt mehrere hundert Klassen umfasst?
Ohne Pakete wären alle Klassen unstrukturiert nebeneinander, was Übersicht und Wartbarkeit erschweren würde. Pakete gruppieren fachlich zusammengehörige oder stark abhängige Klassen, erleichtern die Aufgabenverteilung im Entwicklungsteam und ermöglichen über die Sichtbarkeitsmodifikatoren eine gezielte Kontrolle, welche Klassen von außerhalb eines Pakets zugreifen dürfen.
Erkläre am Paketaufbau des Online-Shops von Herrn Koch, wie Pakete zur Strukturierung eingesetzt werden.
Das übergeordnete Paket "onlineshop" enthält drei weitere Pakete: "nutzer", "abwicklung" und "waren". In jedem dieser drei Unterpakete befinden sich die jeweils fachlich passenden Klassen (z. B. "Kunde" im Paket "nutzer", "Bestellung" im Paket "abwicklung"). Die Klasse "Bestellung" befindet sich damit im Paket "onlineshop.abwicklung", ihre Datei muss im Verzeichnis "onlineshop/abwicklung/Bestellung.java" liegen, und ihr qualifizierter Name lautet "onlineshop.abwicklung.Bestellung".
Erklären Sie den Zweck von Paketen und die vier Sichtbarkeitsmodifikatoren in Java.
Pakete dienen der logischen Strukturierung der Klassen eines Projekts sowie der Aufteilung der Aufgaben im Entwicklungsteam; sie lassen sich mit Verzeichnissen vergleichen, wobei jede Klasse (wie eine Datei) genau einem Paket zugeordnet ist und Pakete weitere Pakete enthalten können. Die erste Zeile einer Java-Klasse gibt stets das zugehörige Paket an; der qualifizierte Name einer Klasse ergibt sich aus Paket und Klassenname und muss eindeutig sein. Zusätzlich legen die vier Sichtbarkeitsmodifikatoren fest, wer auf Klassen, Attribute und Methoden zugreifen darf: public (sichtbar für alle Klassen des Programms), "nichts" (nur im gleichen Paket sichtbar), protected (im gleichen Paket oder in abgeleiteten Klassen sichtbar) und private (nur innerhalb derselben Klasse sichtbar). Attribute sollten dabei außer in begründeten Ausnahmefällen immer private sein, um das Prinzip der Kapselung einzuhalten.
Last changed2 days ago