Zum Inhalt springen

XML Validator Objekt instanzieren für alle Klassen


mintmaroo

Empfohlene Beiträge

Hallo ihr Lieben,

wie ihr aus anderen Beiträgen entnehmen könnt, entwickel ich an einem XML Validator zur Zeit. Ich bin an einem Punkt angelangt, an dem ich nur eingeschränkten Überblick habe, da ich 6 Klassen geschrieben habe und noch Anfänger bin.

Ich habe eine Klasse ModelAusgabe, die alle Attribute und Getter und Setter enthält. In einer Klasse ControllerAusgabe mappe ich den Inhalt aus einer Txt-Datei auf die Attribute. Jetzt möchte ich in einer Klasse FileRead alle Attribute aus ModelAugabe auslesen und als Variabeln in den Code einspeise. Meine Frage: Wo instanziere ich das Objekt von ModelAusgabe, damit ich mit allen Klassen darauf zugreifen kann?

Wenn ihr den Quellcode braucht, sagt Bescheid, dann poste ich diesen nachträglich hier ein.

Hoffe ihr versteht mich und könnt mir helfen.

VG, mintmaroo

Bearbeitet von mintmaroo
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erste Frage: Der Unterschied zwischen einer Klasse und einem Objekt ist dir klar? Wenn nicht, dann schau dir das erstmal an; als einfache Analogie fand' ich immer den Zusammenhang zwischen Blaupause und Haus ganz anschaulich. In dem Beispiel ist die Klasse die Blaupause und das Haus das Objekt.

Das nur vorweg, damit wir auch vom gleichen reden.

Ich verstehe deinen Satz mit FileRead nicht wirklich. Du möchtest ein Objekt vom Typ ModelAusgabe entgegennehmen und dann ... was? Das erschließt sich mir nicht ganz. Zur Frage, wo du ModelAusgabe instanzieren sollst: Du schreibst doch selber, dass deine Klasse ControllerAusgabe Inhalt einer Textdatei auf die Attribute deines Models mappt. Wieso erzeugst du dann das Model nicht genau da, wo du die Datei ausliest?

Also irgendwie sowas:

class ControllerAusgabe{
  public ModelAusgabe readFromFile(String filePath){
    ModelAusgabe model = new ModelAusgabe();
    // werte aus Datei lesen und in model eintragen
    return model;
  }
}

class FileRead{
  public void otherMethod(ModelAusgabe model){
    String x = model.GetX();
    // ich verstehe nicht genau, was du hier machen möchtest
  }
}

Das ganze wird normalerweise ja von irgendwo aus aufgerufen, bspw. aus deiner Main.java:

public static void main(){
 ControllerAusgabe controller = new ControllerAusgabe();
 ModelAusgabe model = controller.readFromFile(theFile);
 
  FileRead read = new FileRead();
  read.otherMethod(model);
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn wir tatsächlich darüber sprechen, dass du eine XML-Datei nach Fehler überprüfen willst, dann würde ich dir sehr stark davon abraten, dies selbst zu schreiben, da das nicht so trivial ist, wie du dir das wohl vorstellst. Wieso verwendest du nichts fertiges? Oder soll das eine Übungsaufgabe sein?

Aber ehrlich gesagt, verstehe ich denen gesamten Text nicht. Wofür dient ModelAusgabe? Was für Getter und Setter besitzt sie? Wenn du das Model-View-Controller-Pattern benutzen willst, dann ist ControllerAusgabe nicht die richtige Klasse. Der Controller sollte am besten das Model reingereicht bekommen. Das Parsen der XML-Datei geschieht also außerhalb des Controllers. Der Controller sollte nur zwischen der View und dem Modell koordinieren.

Dein "FileRead" nennt sich auch Parsing bzw. Deserialisierung und dafür gibt es auch schon fertige Klassen, die eine XML-Datei deserialisieren.

Bearbeitet von Whiz-zarD
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wo kommt denn auf einmal Dependency Injection her?

Ohne dir zu nahe treten zu wollen, aber deine Wortwahl ("Property", "static Vars", ...) klingt irgendwie danach, als wärst du noch nicht ganz sattelfest in OOP. Ich würde dir nahelegen, dich einmal gründlich mit den Grundlagen vertraut zu machen, bevor du versuchst, komplexe(re) Dinge zu lösen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Minuten schrieb arlegermi:

Wo kommt denn auf einmal Dependency Injection her?

Das frage ich mich auch. Weiß du überhaupt, was "Dependency Injection" bedeutet?

 

vor 16 Minuten schrieb arlegermi:

Ohne dir zu nahe treten zu wollen, aber deine Wortwahl ("Property", "static Vars", ...) klingt irgendwie danach, als wärst du noch nicht ganz sattelfest in OOP.

Die Properties-Klasse verwendet er wohl, weil man darüber XML-Dateien lesen und schreiben kann. Also geht es im Grunde nicht um einen XML-Validator, sondern lediglich um einen XML-Parser.

"var" hat man in Java 9 eigentlich auch nur aufgrund der Lesbarkeit eingeführt, weil man somit unnötigen Code sparen kann. "static var" klingt in der Tat sehr gruselig und würde einem "static object" gleichkommen. Ich kenne nun das "var" unter Java nicht ganz so gut, da ich mit Java schon seit Jahren nicht mehr entwickelt habe aber unter C# würde dies gar nicht funktionieren und würde auch eher auf die "Dinge, die man nie tun sollte"-Liste gehören. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...