N
newb
Gast
Hallo,
ich habe hier einen Code zu einer Prüfungsaufgabe geschrieben, ich denke ich habe es komplett. Es wäre nett, wenn mir jemand sagen könnte, ob das so richtig ist, bzw. was ich falsch gemacht habe.
Ich poste vorher mal die Angabe:
Ein einfaches Dateisystem kann als Verzeichnis aufgefasst werden, das als Einträge sowohl Dateien als auch weitere Verzeichnisse enthalten kann.
Zur Vereinfachung wird angenommen, dass ein Verzeichnis maximal 1000 Einträge haben kann.
–Sowohl Dateien als auch Verzeichnisse verfügen über eine Bezeichnung, einen Eigentümer und eine Berechtigung, die eine Beschreibung der Zugriffsrechte enthält. Diese Attribute können über Zeichenketten modelliert werden.
–Jedes Verzeichnis verfügt über eine Reihung mit Einträgen und ein Attribut anzahlEinträge, dass die Anzahl dieser Einträge enthält.
–Jede Datei verfügt über die Angabe der Dateigröße (Anzahl der Bytes als ganzzahligen Wert).
a) Entwerfen und implementieren Sie eine geeignete Klassenhierarchie für dieses Dateisystem. Konstruktoren und get...-Methoden (z.B. getBerechtigung()) müssen nicht definiert werden und können im weiteren als gegeben angenommen werden.
b) Ergänzen Sie die Klasse Verzeichnis um die Methode dateiAnlegen. Diese Methode erhält als Parameter die Bezeichnung, den Eigentümer, die Berechtigung der Datei und die Dateigröße.
c) Deklarieren Sie in allen Klassen Ihrer Klassenhierarchie die Methode
Datei findeDatei(String dateiName)
Diese Methode soll in der jeweiligen Klasse nach einer Datei mit dem
angegebenen Namen suchen und diese, falls gefunden, zurückgeben; andernfalls
soll eine null-Referenz zurückgegeben werden.
Implementieren Sie diese Methode in der Klasse Verzeichnis und, falls
notwendig, in weiteren Klassen. Die Methode findeDatei der Klasse
Verzeichnis soll all ihre Dateien und Unterverzeichnisse durchsuchen, um die
angegebene Datei zu finden; die erste Datei mit dem gesuchten Namen soll
zurückgegeben werden.
Hier mal mein Code:
Dateisystem.class
Datei.class
Verzeichnis.class
Ich hätte dann noch ein paar fragen dazu.
1. läuft mein Programm nur, wenn ich sämtliche Methoden und Attribute in Verzeichnis.class static mache, warum? Das kann doch nicht sein, dass alles static sein muss? Was mache ich falsch in meinem Code?
2. Wie würde denn eine erweiterte for-Schleife bei der Methode public Datei findeDatei() aussehen?
Da for(Datei d : einträge) nicht ganz funktioniert.
3. Warum geht folgendes if/else Konstrukt für die Methode public Datei findeDatei nicht:
Es wäre nett, wenn mir dabei jemand helfen könnte, gecodet hab ich ja schon alles, nur eben prüfen, ob es richtig ist und die 3 Fragen beantworten, da ich, wenn ich es einem Professor schreibe 4 Wochen drauf warten muss....
Gruß
ich habe hier einen Code zu einer Prüfungsaufgabe geschrieben, ich denke ich habe es komplett. Es wäre nett, wenn mir jemand sagen könnte, ob das so richtig ist, bzw. was ich falsch gemacht habe.
Ich poste vorher mal die Angabe:
Ein einfaches Dateisystem kann als Verzeichnis aufgefasst werden, das als Einträge sowohl Dateien als auch weitere Verzeichnisse enthalten kann.
Zur Vereinfachung wird angenommen, dass ein Verzeichnis maximal 1000 Einträge haben kann.
–Sowohl Dateien als auch Verzeichnisse verfügen über eine Bezeichnung, einen Eigentümer und eine Berechtigung, die eine Beschreibung der Zugriffsrechte enthält. Diese Attribute können über Zeichenketten modelliert werden.
–Jedes Verzeichnis verfügt über eine Reihung mit Einträgen und ein Attribut anzahlEinträge, dass die Anzahl dieser Einträge enthält.
–Jede Datei verfügt über die Angabe der Dateigröße (Anzahl der Bytes als ganzzahligen Wert).
a) Entwerfen und implementieren Sie eine geeignete Klassenhierarchie für dieses Dateisystem. Konstruktoren und get...-Methoden (z.B. getBerechtigung()) müssen nicht definiert werden und können im weiteren als gegeben angenommen werden.
b) Ergänzen Sie die Klasse Verzeichnis um die Methode dateiAnlegen. Diese Methode erhält als Parameter die Bezeichnung, den Eigentümer, die Berechtigung der Datei und die Dateigröße.
c) Deklarieren Sie in allen Klassen Ihrer Klassenhierarchie die Methode
Datei findeDatei(String dateiName)
Diese Methode soll in der jeweiligen Klasse nach einer Datei mit dem
angegebenen Namen suchen und diese, falls gefunden, zurückgeben; andernfalls
soll eine null-Referenz zurückgegeben werden.
Implementieren Sie diese Methode in der Klasse Verzeichnis und, falls
notwendig, in weiteren Klassen. Die Methode findeDatei der Klasse
Verzeichnis soll all ihre Dateien und Unterverzeichnisse durchsuchen, um die
angegebene Datei zu finden; die erste Datei mit dem gesuchten Namen soll
zurückgegeben werden.
Hier mal mein Code:
Dateisystem.class
Code:
package Aufgabe3;
public abstract class Dateisystem {
protected String bez, eigentümer, berechtigung;
}
Datei.class
Code:
package Aufgabe3;
public class Datei extends Dateisystem {
protected int dateigröße;
public String getBez() {
return bez;
}
public void setBez(String bez) {
this.bez=bez;
}
}
Verzeichnis.class
Code:
package Aufgabe3;
public class Verzeichnis extends Dateisystem {
protected static int anzahlEinträge=1000; //laut Aufgabenstellung 1000 Einträge
protected Dateisystem[] einträge = new Dateisystem[anzahlEinträge];
protected static int i=0;
public void dateiAnlegen(String bez, String eigentümer, String berechtigung, int dateigröße) {
Datei datei = new Datei();
datei.bez=bez;
datei.eigentümer=eigentümer;
datei.berechtigung=berechtigung;
datei.dateigröße=dateigröße;
einträge[i]=datei;
i++;
printDatei(datei);
}
public Datei findeDatei(String dateiName) {
for(int i=0; i<anzahlEinträge; i++) {
if(dateiName.equals(((Datei) einträge[i]).getBez()))
return (Datei) einträge[i];
}
return null;
}
public static void main(String[] args) {
Datei test = new Datei();
dateiAnlegen("Hund","Stefan","Admin",400);
dateiAnlegen("Katze","Georg","Admin",800);
test=findeDatei("Hund");
String ausgabe=test.getBez();
System.out.println("Datei gefunden! "+ausgabe);
}
}
Ich hätte dann noch ein paar fragen dazu.
1. läuft mein Programm nur, wenn ich sämtliche Methoden und Attribute in Verzeichnis.class static mache, warum? Das kann doch nicht sein, dass alles static sein muss? Was mache ich falsch in meinem Code?
2. Wie würde denn eine erweiterte for-Schleife bei der Methode public Datei findeDatei() aussehen?
Da for(Datei d : einträge) nicht ganz funktioniert.
3. Warum geht folgendes if/else Konstrukt für die Methode public Datei findeDatei nicht:
Code:
public Datei findeDatei(String dateiName) {
for(int i=0; i<anzahlEinträge; i++) {
if(dateiName.equals(((Datei) einträge[i]).getBez()))
return (Datei) einträge[i];
else
return null;
}
Es wäre nett, wenn mir dabei jemand helfen könnte, gecodet hab ich ja schon alles, nur eben prüfen, ob es richtig ist und die 3 Fragen beantworten, da ich, wenn ich es einem Professor schreibe 4 Wochen drauf warten muss....
Gruß