Dateisystem

Status
Nicht offen für weitere Antworten.
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
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ß
 
S

SlaterB

Gast
1.
du erzeugst keine Objekte, nur an Objekten kannst du nichtstatischen Operationen aufrufen

2.
> nicht ganz funktioniert.

genauer gehts nicht?
Java-Version 1.5 vorhanden?

3.
> Warum geht [..] nicht

genauer gehts nicht?
IMMER Compilerfehler, Exception zur Laufzeit oder Fehlverhalten exakt beschreiben

was soll die Operation denn machen, wozu überhaupt die Schleife?
nach dem ersten Element ist in jedem Fall Schluss, da sowohl bei Treffer als auch bei nicht-Treffer etwas zurückgegeben wird,

vielleicht willst du bei nicht-Treffer die Operation gar nicht beenden sondern erst noch die anderen Elemente der Liste anschauen?
das Programm macht nicht das was du denkst (und nicht mal hier nennst) sondern was du hinschreibst
 
N

newb

Gast
Danke für die schnelle Antwort.

Und stimmt meine Lösung so, oder hab ich paar Fehler drin?

zu deiner 1. Antwort: Wie müsste ich denn dann ein Objekt ereugen, damit ich dann meine nicht-statischen Methoden aufrufen kann? Steh grad etwas aufm Schlauch ;-)

Der Rest der Fragen hat sich erledigt, hatte wohl nen kleinen Hänger gerade....

Vielen Dank
Gruß
 
S

SlaterB

Gast
Verzeichnis v = new Verzeichnis();
v.dateiAnlegen("Hund","Stefan","Admin",400);

---------


> Und stimmt meine Lösung so, oder hab ich paar Fehler drin?

oh, ne, für mich leider zu viel Aufwand,
Aufgabe posten + Code + Analyse erwarten ist nicht gerade Standard ;)


teste selber (ob dateiAnlegen() oder findeDatei() funktioniert, merkst du schon)
und wenn du wieder konkrete Fragen hast, dann gehts weiter,
oder jemand anders findet sich dafür
 
N

newb

Gast
Ach ja klar, heut steh ich echt neben mir. Jetzt is mir alles klar.


Mein Programm funktioniert zwar, aber ich werde es mal einem Prof zeigen ;-) zur Sicherheit

Vielen Dank, du hast meinem Verständnis echt auf die Sprünge geholfen.

Gruß
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben