Laden...

Fragen bzgl. OOP / Sinnvollem Klassenaufbau für Abarbeitung von Batch-Dateien

Erstellt von TheMichi vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.450 Views
T
TheMichi Themenstarter:in
60 Beiträge seit 2009
vor 15 Jahren
Fragen bzgl. OOP / Sinnvollem Klassenaufbau für Abarbeitung von Batch-Dateien

Ein herzliches Hallo an alle MyCSharp`ler 😉

zunächst will ich mich kurz vorstellen. Ich studiere Angewandte Informatik und bin derzeit in meinen 2. Praxissemester. Vorher habe ich mich weitgehend mit Webentwicklung (PHP, MySQL, JS, AJAX...) beschäftigt und in meinem aktuellen Praktikum entwickle ich ein Tool mit C# und VS 2005. Ich habe bewusst dieses Praktikum gewählt, da ich tiefer in den Bereich "außerhalb" der Webentwicklung einsteigen will (Ob dies eine kluge Entscheidung war sei dahingestellt). Nunja, jetzt sitze ich seit knapp 2 Wochen hier und arbeite mit C# und ich muss sagen ich bin echt überrascht, was einem hier teilweise für Arbeit abgenommen wird bzw. wie einfach sich eine einigermaßen annehmbare GUI bauen lässt.

Nun zum eigentlichen Thema. Derzeit habe ich noch sehr große Schwierigkeiten OOP richtig anzuwenden. Versteht mich nicht falsch, durch diverse Vorlesungen habe ich mir schon einiges an theoretischem Wissen angeeignet und in kleineren Projekten angewendet. Ich weis also was es mit Interfaces, Komposition, Aggregation und Design Patterns etc. pp auf sich hat 😉 jedoch habe ich noch kein Gefühl dafür, dieses Wissen zum richtigen Zeitpunkt bzw. effizient anzuwenden.

++Beispiel: ++In meinem Tool sollen von einer List View aus Batch Dateien per Checkbox ausgewählt werden können und durch clicken eines Buttons dann nacheinander abgearbeitet werden. Meine Überlegung war, dass ich zunächst eine BatchFile Klasse erstelle, in deren Objekt alle nötigen Informationen gespeichert werden. Danach wird dieses Objekt an eine BatchFileProcessor Klasse übergeben, wo zunächst mittels Methoden Überladung unterschieden wird, ob mehrere bzw. eine Batch datei angestoßen werden soll. Danach erfolgt die Abarbeitung und Klassenevents geben laut wenn die Datei nicht existiert bzw. ein Fehler auftritt. Nach Abarbeitung soll man sich die Ergebnisse in einem Log ansehen können und auch drucken bzw. in einem Textfile speichern können. Bildet das eine Sinnvolle Grundlage um eine Klasse / Klassenstruktur zu erstellen?

Ich hoffe ich habe euch jetzt nicht mit zuviel OT überschwemmt und hoffe jemand liest sich mein geschwafel durch 😉

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo TheMichi,

GUI und Modell zu trennen ist schon mal eine gute Idee. Eine Klasse BatchFile entspricht dem oo Vorgehen. Eine Klasse BatchFileProcessor schon nicht mehr so ganz. Ich halte sie für überflüssig. Auf Fehler, wie nicht vorhandene Dateien, solltest du mit einer Exception und nicht mit Ereignissen reagieren. Logging ist ein sog. Aspekt (siehe AOP). Das Ansehen, Drucken und Speichern des Logs würde ich tendenziell nicht mit in die Anwendung selbst packen. Dafür gibt es ja schon viele gute Tools.

herbivore

T
TheMichi Themenstarter:in
60 Beiträge seit 2009
vor 15 Jahren

Danke für deine Antwort herbivore 😃 Das hat mir schon ein bisschen weitergeholfen 😃

Ok gut das Logging lagere ich dann aus (da hätte ich wirklich selber draufkommen müssen). Überlege mir eine LoggingInterface zu implementieren und daraus dann z.B. ConsoleLogger oder TextfileLogger abzuleiten. Gibt zwar schon viele gute fertige Lösungen zum Thema Logging, aber glaube das wäre eine gute Übung.

Wegen der Klasse zum abarbeiten der Batchfiles bin ich jetzt am überlegen. Soll ich das alles in einen ClickEvent im Form stecken? Also wenn "Compile" gedrückt wird, dann geht er mir die Files nacheinander durch. Ich dachte immer man sollte das möglichst auslagern.

Mal eine allgemeine Frage... Wielange hat es denn bei dir/euch gedauert bis du/ihr einigermaßen ein Gefühl für die OOP bekommen habt? Mir macht das Programmieren mit C# wirklich Spass, jedoch habe ich immer die "Angst" im Hinterkopf alleine den Grundsätzlichen Aufbau des Programmes schon falsch zu machen. Stichwort Planung... bei mir entwickelt sich die meisten Ideen zum Aufbau erst während des Programmierens. Also ich seh den Code und dann fällt mir auf: "Hey, das könnte man doch noch schön in eine Methode/Klasse stecken".

Gruß Michi

3.003 Beiträge seit 2006
vor 15 Jahren

Wielange hat es denn bei dir/euch gedauert bis du/ihr einigermaßen ein Gefühl für die OOP bekommen habt? Mir macht das Programmieren mit C# wirklich Spass, jedoch habe ich immer die "Angst" im Hinterkopf alleine den Grundsätzlichen Aufbau des Programmes schon falsch zu machen.

Gefühl für OOP: halbes Jahr (nach etlichen Jahren Pascal/C/PHP3)
Gefühl für Aufbau/Architektur: entwickle ich immer noch
Zweifel ablegen, ob man nicht doch etwas falsch gemacht hat: bloß nicht 😉.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo TheMichi,

Soll ich das alles in einen ClickEvent im Form stecken? Also wenn "Compile" gedrückt wird, dann geht er mir die Files nacheinander durch.

ich würde das wohl so machen. Das ist ja im Grunde nur eine Schleife und die brauchst du sowieso, um die SelectedItems durchzugehen. Eine zusätzliche Klasse würde zwar formal die Trennung zwischen Modell und GUI verbessern, aber praktisch nur zusätzliche Redundanz bringen.

Wielange hat es denn bei dir/euch gedauert bis du/ihr einigermaßen ein Gefühl für die OOP bekommen habt?

Ich stimme LaTino zu. Wobei ich denke, dass man das halbe Jahr ruhig verdoppeln kann.

Also ich seh den Code und dann fällt mir auf: "Hey, das könnte man doch noch schön in eine Methode/Klasse stecken".

Hm, falsche Ansatz 😃 Klassen sollte man immer anhand der Daten und nicht der Funktionen lokalisieren.

herbivore

1.002 Beiträge seit 2007
vor 15 Jahren

Hallo TheMichi,

Ich stimme LaTino zu. Wobei ich denke, dass man das halbe Jahr ruhig verdoppeln kann.

Denke ich auch. Es geht ja nicht primär darum, zu verstehen, was genau eine Klasse oder eine Schnittstelle ist, sondern das Gefühl zu entwickeln, wann man bestimmte Techiniken wie z.B. Entwurfsmuster verwenden sollte. Dieses Gefühl entwickelt man nicht so schnell, das kommt im Laufe der Zeit mit vielen Projekten und (Online-)Büchern.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

T
TheMichi Themenstarter:in
60 Beiträge seit 2009
vor 15 Jahren

Ich danke euch für die Antworten 😃 Gut, ich glaube ich war zu fixiert auf dieses ganze OOP Thema und hab versucht mit biegen und brechen alles in Klassen zu quetschen, obwohl dies nur (wie herbivore schon gesagt hat) zu Redundanz führt.

Bei meinem Tool handelt es sich bis jetzt größtenteils um Dateioperationen, d.h. ich hab auf einem Form zwei ListViews, in dem einen ListView werden alle aktuellen Ordner im Verzeichnis angezeigt. Klick ich auf einen Ordner, werden mir in der zweiten ListView alle .txt Files angezeigt -> Klick ich auf ein Textfile wird mir der Inhalt des Files in einer Textbox angezeigt.´

Ich glaube ich werde mir Privat mal ein kleines Programm bauen, z.B. eine Kunden- inkl. Auftragsverwaltung oder ein Loginsystem mit User- und Sessionverwaltung in PHP. Ich denke das dürfte mich der OOP ein Stückchen näher bringen.

Ihr werdet mich hier aber nicht so schnell los 😉 Schön eine so nette Community gefunden zu haben ---> Schonmal vorschleimen für die vllt. zukünfitig ein oder andere dumme fragen 😛 😉

Gruß Michi

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo TheMichi,

Gut, ich glaube ich war zu fixiert auf dieses ganze OOP Thema und hab versucht mit biegen und brechen alles in Klassen zu quetschen, obwohl dies nur (wie herbivore schon gesagt hat) zu Redundanz führt.

Sicher, OOP ist kein Selbstzweck. Anderseits sollte man auch nicht zu leichtfertig damit umgehen. Siehe dazu auch 3-Schichten-Design?? Hilfe bei der Umsetzung.

herbivore