.
Anmeldung | Registrieren | Hilfe
in Suchen

Allgemeine Fragen zum Verständnis von OOP und C#

Letzter Beitrag 30. Mrz 2010 9:12 von juetho. 4 Antworten.
Seite 1 von 1 (5 Treffer)
Beiträge sortieren: Zurück Weiter
  • 29. Mrz 2010 15:05

    • utobler
    • Top 150 Mitwirkender
    • Registriert am 23. Mrz 2010
    • Beiträge 10
    • Punkte 185

    Allgemeine Fragen zum Verständnis von OOP und C#

    Hallo zusammen

    Nach längerem Studium der OOP mit all den Möglichkeiten komme ich (leicht frustriert) mit konkreten Fragen zu Euch. Ich hoffe, dass es nicht all zu dämlich klingt und ihr mir trotzdem helfen könnt. Ich kenne Programmierung von früheren Sprachen mit Prozeduren/Funktionen und Umgebungen wo man immer jede Variable in irgendeiner Form bereitstellen musste, um später darauf zugreifen zu können. (soweit in wenigen Worten das spärliche Vorwissen).

    Diese Denkweise behindert mich jetzt, die richtige Sicht bei der OOP zu finden.

     

    Nun zum Vorhaben:

    Ich will auf ein vorliegenden Datenbestand zugreifen und dann diese Daten zur Weiterbearbeitung (Auswahl von Datensätzen, Änderung von Datensätzen, Weiterreichen zur Verarbeitung).

     

    Konkret:

    Mir liegen Kontaktdaten vor. Diese sollen in einer Listbox zur Auswahl gebracht werden. (kommen also in eine Win-Form zu liegen).

    Nun baue ich mir eine Class (zB. C_contact) die ich jetzt beschreibe. In der Classe kommen noch etliche Methoden hinzu um verschiedene Ausgabenkombinationen (Name und Vorname oder Name, Vorname, Ort) einfacher ansprechen zu lassen.

     

    Weiter habe ich festgestellt, dass gewisse Abläufe im Programm an verschiedenen Stellen auftreten. Diese sehen immer wieder gleich (oder ähnlich) aus.

    Beispielsweise ist ein Zugriff auf die Daten zuerst initialisiert werden, bevor Daten für einen Bereich abgefragt werden können. Dieses BefehlsModul, z.B. DataRead(ParameterWasZuSuchenIst) gehöret doch in eine Methode?

     

    Meine Frage: Wo im Programm gehört dieses Modul hin? In die Form wohl nicht und in die Klassenbibliothek auch nicht.

    Ich möchte es später auch anderswo wieder verwenden können.

     

    Falls meine Fragen zu trivial sind, bitte helft mir trotzdem. Auch beim eingehenden Studium der mir vorliegenden Fachbüchern bekomme ich den Durchblick nicht.

     

    Vielleicht finde ich irgendwo auch ein einfaches (nicht zu überladenes Beispiel zu Gesicht, welches mir weiter hilft,)

     

    Ich will nicht abkupfern. Ich will das wirklich verstehen und dafür bin ich bereit mich einzusetzen.

     

    Vielen Dank für Eure Hilfe

     

     

    • IP-Adresse ist Registriert
  • 29. Mrz 2010 20:11 Antwort zu

    • juetho
    • Top 100 Mitwirkender
      Männlich
    • Registriert am 29. Sep 2009
    • Beiträge 17
    • Punkte 235

    Allgemeine Fragen zum Verständnis von OOP und C#

    Hallo,
    du hast insofern recht mit deinem Verständnisproblem: Komplexe Situationen benötigen komplexe Beschreibungen und Lösungen.
    Vereinfacht möchte ich es so formulieren: Alles, was logisch zusammengehört, soll zusammen definiert und von anderen Zusammenhängen getrennt werden. Das bedeutet beispielsweise:
    * Die Daten gehören in eine eigene Klasse.
    * Das Einlesen und Speichern der Daten gehört in diese Klasse; das wird nur durch den Aufruf einer Methode "von außen" angestoßen.
    * Die gesamte Datenmenge kann wieder eine eigene Klasse sein.
    * Die Verbindung zwischen Datenmenge und Anzeige erfolgt über Datenbindung, z.B. BindingSource.
    * Ein Formular weiß überhaupt nichts von der Datenstruktur; das wird über die Datenbindung geregelt.
    Beispiel: DataTable enthält eine Liste von DataRow. Jede DataRow ist ein eigenes Objekt, nämlich ein Datensatz. Die DataTable wird an eine BindingSource geknüpft, die BindingSource an ein DataGridView oder an verschiedene TextBoxen.
    Ich schlage auch vor, dass du die Daten mit DataSet/DataTable erstellst. Da hast du eine Sammlung fertiger Klassen zur Verfügung und musst nicht alles selbst basteln. (Das ist einer der Vorteile der OOP: Was schon andere, z.B. die .NET-Entwickler, konstruiert haben, kann einfach genutzt werden.)
    Meine Frage: Wo im Programm gehört dieses Modul hin? In die Form wohl nicht und in die Klassenbibliothek auch nicht.
    Dieses "Modul" ist eine Klasse.(Alle "Strukturen" in der OOP sind Klassen bzw. Instanzen von Klassen.) Es gehört natürlich nicht in das Formular, weil es kein Element der Anzeige ist, aber es ist selbstverständlich Bestandteil einer Klassenbibliothek, nämlich von utobler.MeinProjekt.Data.dll.
    Ich hoffe, das hat dir wenigstens ein bisschen geholfen.
    Gruß Jürgen
    Jürgen Thomas
    • IP-Adresse ist Registriert
  • 29. Mrz 2010 20:43 Antwort zu

    • utobler
    • Top 150 Mitwirkender
    • Registriert am 23. Mrz 2010
    • Beiträge 10
    • Punkte 185

    Allgemeine Fragen zum Verständnis von OOP und C#

    Danke Jürgen das hast du gut und verständlich erklärt.
    Nur die Klassenbibliothek beim letzten Punkt: Macht mir der Kompiler diese utobler.MeinProjekt.Data.dll ?

    Die Daten möchte ich eigentlich nicht selber neu erstellen. Hier beabsichtige ich den Zugriff auf die Contactdaten in Outlook zu machen. Das habe ich soweit mit dem mapiNamespace aus dem Namespace Microsoft.Office.Interop.Outlook geschaft. *ratlosguck*
    Natürlich muss ich dann alle diese Felder selber erstellen und pflegen. Da wäre das mit der Datenbindung schon bequem weil dann die Textfelder zu den Daten verbundn werden können. Hab ich das richtig verstanden?

    Dank und Gruss Ueli

    • IP-Adresse ist Registriert
  • 30. Mrz 2010 7:43 Antwort zu

    • karle
    • Top 25 Mitwirkender
    • Registriert am 20. Okt 2008
    • Beiträge 177
    • Punkte 2.070

    Allgemeine Fragen zum Verständnis von OOP und C#

    Hallo,

    ich gehe nicht konkret auf deine Frage ein, mich würde nur interessieren, ob es eine Projektvorgabe ist, WinForm zu verwenden.

    Ansonsten würde ich dir raten WPF zu verwenden, da WinForm eigentlich (schon wegen der Architektur, die auf unsicheren WinApi-Funktionen basiert) in absehbarer zeit aussterben wird.

    Außerdem sparst du dir mit WPF eine Menge Code. Unter "MVVC" (Model/View/View-Model) findest du die Beschreibung wesentlicher Aspekte, die sich vom WinForm-Vorgehen unterscheiden.

    Ich gehe noch ganz kurz auf deine Frage der Dateninitialisierung ein:

    Da ein Datenzugriff immer Benutzerabhängig ist, gehört die erzeugung einer verbindung m.E. in das Benutzerpacket, das je nach umfang der Anforderung z.b. auch Sicherheitsaspekte wie überprüfung von benutzerrechten beinhalten kann. Konkret kann es z.b.

    Dim aB As Benutzer = Me.AngemeldeterBenutzer

    Dim aDv As Datenvebindung = aB.DatenVerbindungErzeugen()

    gruss, karle

    karle

    In meinem Keller ist der Eingang zur Hölle - aber es stehen Kartons davor.
    • IP-Adresse ist Registriert
  • 30. Mrz 2010 9:12 Antwort zu

    • juetho
    • Top 100 Mitwirkender
      Männlich
    • Registriert am 29. Sep 2009
    • Beiträge 17
    • Punkte 235

    Allgemeine Fragen zum Verständnis von OOP und C#

    Hm, was soll ich dazu sagen? Alles unter .NET sind Klassen. Eine Assembly enthält eine Sammlung von Klassendefinitionen. Wenn die Assembly eine Exe sein soll, wird sie als Anwendung oder Applikation bezeichnet und enthält genau eine Main-Methode als Einstiegspunkt der Anwendung. Wenn die Assembly keine Exe sein soll, dann heißt sie eben DLL und wird als Klassenbibliothek bezeichnet.

    Du sagst dem Compiler unter Projekt > Eigenschaften > Compiler, wie er das Projekt kompilieren soll - als Anwendung oder als Klassenbibliothek. Du vergibst auch den Namen dafür; mein Namensvorschlag greift einen denkbaren Namespace auf und macht deutlich, wofür diese dll gedacht ist.

    Wenn du auf den Namespace Microsoft.Office.Interop.Outlook (mit Referenz auf die entsprechende DLL, also die Office-Klassenbibliothek) zugreifst, dann beschränkt sich die Arbeit deiner Datenklasse darauf, dass die Contact-Daten von Outlook abgerufen, intern gespeichert und bei Bedarf gesichert werden.
    Trotzdem ist es notwendig, diese Daten in einer Klasse zusammenzufassen; und es ist nicht sinnvoll, dies direkt in der Form-Klasse zu machen.
    Natürlich muss ich dann alle diese Felder selber erstellen und pflegen. Da wäre das mit der Datenbindung schon bequem weil dann die Textfelder zu den Daten verbundn werden können.
    Du musst auch auf die Wortwahl genauer achten, damit man dein Problem versteht: Was meinst du mit "Felder"? Eine Spalte in der Definition einer Datenbank? Oder eine bestimmte Spalte einer bestimmten Zeile in der Datenmenge? Eine TextBox? Ein Feld (private, als Gegensatz zur public-Eigenschaft) einer Klasse? Felder einer eigenen Klasse werden natürlich selbst definiert. Bei allem anderen gilt: kommt drauf an.

    Gruß Jürgen

    PS. karles Hinweis ist korrekt: Wenn du ganz neu anfängst und noch keine Erfahrung mit einer IDE für Windows-Programme hast, dann fang gleich mit WPF an. Dessen Konzepte sind zukunftssicher (im Gegensatz zu WinForms) und erfordern ein ganz anderes Herangehen. Wer nicht "vorbelastet" ist durch frühere Erfahrungen, sollte sich gleich damit befassen.
    Jürgen Thomas
    • IP-Adresse ist Registriert
Seite 1 von 1 (5 Treffer)

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum