none
Objekte in der Praxis RRS feed

  • Frage

  • Hallo Forum

    Seit ein paar Wochen bin ich dabei, mich mittels Video-Training und Büchern in C# einzuarbeiten. Im wesentlichen ist mir das Prinzip der Objekt-Orentierung klar, nur habe ich nicht wirklich den Einblick, wie das in der Praxis gehandhabt wird. Im Lernmaterial wird der Umgang mit Objekten meist anhand simpler, klar verständlicher Beispiele gezeigt. Da ist es kein Problem, mal eben ein paar Objekte einer Klasse "von Hand" zu instanzieren (bzw. die Instanzierung direkt im Code zu implementieren). Aber ist das in der Praxis auch so? Irgendwie hab ich das (womöglich falsche) Gefühl, dass man nicht den ganzen Aufwand der Klassendeklaration treibt, nur um dann ein oder zwei Instanzen davon zu kreieren. Werden nicht viel eher dutzende oder hunderte Objekte instanziert? Falls dem so ist: Wie wird das gehandhabt? Ich habe bisher keine Möglichkeit gefunden, ein Objekt automatisch zu generieren (d.h. mit automatisch generiertem Bezeichner). Benutzt man dazu Collections? Oder gibt es doch eine Möglichkeit, den Objektbezeichner in einem (dynamisch generierten) String zu ergeben?

    Vielen Dank für Eure Einsichten und beste Grüsse
    - spitfire
    Dienstag, 9. Februar 2010 17:29

Antworten

  • Hallo Spitfire,

    wieviele Instanzen man braucht, hängt ganz vom Anwendungsfall ab.
    In einer realen Anwendung kommen schnell tausende und abertausende zusammen.

    Nur ohne ein konkretes Ziel wirst Du Dich nicht wirklich einarbeiten können.
    Trainingsunterlagen gehen von einfachsten Fällen aus, schon um den Leser -
    bei dem man kein Vorwissen voraussetzen kann - nicht zu überfordern.
    Wenn dort z. B. wie häufig ein Fahrzeug/Flugzeug zur Demonstration von Vererbung etc.
    gezeigt wird, hat das bestenfalls ein paar Räder, einen Motor und andere Kleinigkeiten.
    Nur besteht selbst ein einfacher Motor in der Praxis aus vielen Teilen.

    Und natürlich wird man einen solchen Motor nich in einer C# Codedatei
    ablegen, sondern aus einer Datenbank/Datei erzeugen. .NET hat dafür
    auch unterschiedlichste Wege, wie Activator.CreateInstance

    Für ein richtiges objektorientierte Programmieren ist aber weniger die Erzeugung
    das Problem, als sich in dem Entwurf von Klassen und -bibliotheken zu schulen.
    Dazu gehört das Verständnis von Entwurfsmustern , die auch für Erzeugen existieren.
    Und geht bis hin zu ganzen Muster-Katalogen

    Dies übt man aber besser nicht isoliert, denn damit wird man schwerlich
    den Grund für dies oder das erkennen (und es soll Entwickler geben, die
    solche Muster stumpf abarbeiten, ohne sie wirklich je verstanden zu haben).

    Ein besserer Rat: Suche Dir ein Musterprojekt aus, das Deinen Interessen entspricht,
    und versuche es in die Praxis umzusetzen. Dabei lernt man am meisten -
    denn lernen wirst Du dabei ein Leben lang - ich mache das schon mehr als 2 Jahrzehnte...

    Und wenn es nicht zu exotisch ist, wirst Du auch andere Projekte finden,
    an denen Du studieren kannst - siehe Sites wie CodePlex , Google Code , SourceForge uam.

    Gruß Elmar


    • Als Antwort vorgeschlagen Elmar Boye Mittwoch, 10. Februar 2010 09:47
    • Als Antwort markiert Robert Breitenhofer Donnerstag, 11. Februar 2010 10:03
    Dienstag, 9. Februar 2010 18:12

Alle Antworten

  • Hallo Spitfire,

    wieviele Instanzen man braucht, hängt ganz vom Anwendungsfall ab.
    In einer realen Anwendung kommen schnell tausende und abertausende zusammen.

    Nur ohne ein konkretes Ziel wirst Du Dich nicht wirklich einarbeiten können.
    Trainingsunterlagen gehen von einfachsten Fällen aus, schon um den Leser -
    bei dem man kein Vorwissen voraussetzen kann - nicht zu überfordern.
    Wenn dort z. B. wie häufig ein Fahrzeug/Flugzeug zur Demonstration von Vererbung etc.
    gezeigt wird, hat das bestenfalls ein paar Räder, einen Motor und andere Kleinigkeiten.
    Nur besteht selbst ein einfacher Motor in der Praxis aus vielen Teilen.

    Und natürlich wird man einen solchen Motor nich in einer C# Codedatei
    ablegen, sondern aus einer Datenbank/Datei erzeugen. .NET hat dafür
    auch unterschiedlichste Wege, wie Activator.CreateInstance

    Für ein richtiges objektorientierte Programmieren ist aber weniger die Erzeugung
    das Problem, als sich in dem Entwurf von Klassen und -bibliotheken zu schulen.
    Dazu gehört das Verständnis von Entwurfsmustern , die auch für Erzeugen existieren.
    Und geht bis hin zu ganzen Muster-Katalogen

    Dies übt man aber besser nicht isoliert, denn damit wird man schwerlich
    den Grund für dies oder das erkennen (und es soll Entwickler geben, die
    solche Muster stumpf abarbeiten, ohne sie wirklich je verstanden zu haben).

    Ein besserer Rat: Suche Dir ein Musterprojekt aus, das Deinen Interessen entspricht,
    und versuche es in die Praxis umzusetzen. Dabei lernt man am meisten -
    denn lernen wirst Du dabei ein Leben lang - ich mache das schon mehr als 2 Jahrzehnte...

    Und wenn es nicht zu exotisch ist, wirst Du auch andere Projekte finden,
    an denen Du studieren kannst - siehe Sites wie CodePlex , Google Code , SourceForge uam.

    Gruß Elmar


    • Als Antwort vorgeschlagen Elmar Boye Mittwoch, 10. Februar 2010 09:47
    • Als Antwort markiert Robert Breitenhofer Donnerstag, 11. Februar 2010 10:03
    Dienstag, 9. Februar 2010 18:12
  • Hallo Elmar

    Herzlichen Dank für Deine umgehende, kompetente und ausführliche Antwort mit den nützlichen Links! Wege wie Activator.CreateInstance sind genau das fehlende Mosaiksteinchen, das ich gesucht hatte!

    Als Musterprojekt habe ich mir bereits eine Adress- und Personen-Verwaltung ausgesucht. In SQL-Server steht und funktioniert das Ganze bereits. Das Projekt besteht nun quasi darin, in C# ein User-Interface zu programmieren, so dass auch meine Frau die Datenbank bearbeiten kann - ohne SQL-Kenntnisse. Ado.Net wird da das Instanzieren - soweit ich das bisher verstanden habe - übernehmen; auch wenn ich soweit als möglich (zwecks Lernen und Flexibilität) selbst programmieren möchte anstatt die vorgefertigten Formulare zu nutzen (zumindest versuchen). Daher hat mich interessiert, wie Instanzen denn "abseits" von SQL-Adaptern automatisch erstellt werden können (um einen etwas breiteren Einblick zu erhalten). Nochmals vielen Dank, dass Du mir dabei geholfen hast! :)

    Liebe Grüsse
    Hanspeter
    Dienstag, 9. Februar 2010 22:15
  • Hallo Hanspeter,

    wer es wirklich dynamisch liebt, wird anstatt Activator.CreateInstance selbst zu programmieren,
    in IOC Framework nehmen, siehe z. B. Unity . Wobei man es fürs Verständnis mindestens
    einmal selbst versucht haben sollte.

    Und viel Spaß bei Deinem Projekt :-)

    Gruß Elmar


    Mittwoch, 10. Februar 2010 09:47
  • Vielen Dank für den Tip, ich werde mir das auch anschauen!

    Gruss
    Hanspeter
    Mittwoch, 10. Februar 2010 17:46