rainerdam hat gesagt.:
alles klar danke schoen
es war mir zwar halbwegs klar, nu is es aber ganz klar
was macht denn das hier dann ueberhaupt aus in class1:
protected System.Web.UI.WebControls.TextBox TextBox1;
weil ohne das kommt ein anderer Fehler, dass er halt TextBox1 nicht gibt in dem Namespace. Und als der Fehler damit weg war, dacht ich, kennt die Klasse nun die TextBox1 auch (falsch gedacht).
Wenn ich nochmal auf die Aufteilung in Klassen zurueck kommen darf(eigentlich hats psychtron ja schon gut beschrieben):
Wie sieht eine sinnvolle Aufteilung aus? Wenn ich z.B. 2 Webseiten hab, eine administriert die Datenbank(edit,delete etc.), die andere Stellt die Namen der Datenbank dar. Die Virsualisierung sollte also in den WebForms ansich stattfinden und der Rest in der Klasse?
Ich hab mal gelesen, man soll allen Code in eine Codedatei schreiben, aber das kam mir sehr komisch vor.
Also mir gehts jetzt allgemein um ein paar Grundsaetze wie man die Klassen einteilt.
danke schone
RAiner
Eine "sinnvolle" Aufteilung liegt größtenteils in deiner Hand. Eine Klasse ist ja eine abstrakte Beschreibung eines Objektes. In ihr solltest du Methoden und Eigenschaften kapseln, die zu dem Objekt gehören, daß du beschreiben willst.
Angenommen du hättest ein Objekt "Mensch". Diesem würdest du (aus deiner Erfahrung) bestimmte Eigenschaften und Methoden zuteilen, andere wiederum würden zu diesem Objekt nicht passen.
Bei Klassen in Programmiersprachen ist das wiederum etwas anderes. In den Büchern werden meist alle möglichen Haustiere durcherklärt und voneinander abgeleitet, die Progammierrealität ist jedoch deutlich komplexer. Hier hat man einfach die Erfahrungen nicht, wie man am sinnvollsten kapselst. Die Klasse ist dort nichts, unter dem du dir einen konkretes Bild machen kannst oder schon ein konkretes Bild hast, du stehst einfach vor einem Haufen Eigenschaften und Methoden und weißt nicht, wohin damit. Letztendlich gibt es auf deine Frage nach den Grundsätzen nur die oben benannten. Fasse zusammen, was deiner Meinung nach zusammen gehört, so das eine abstrakte Beschreibung eines Objektes entsteht, mit der du etwas anfangen kannst.
Intuitiv lernen kannst du das, indem du auf Fehler bei deiner Einteilung im Laufe der Programmierung stößt und indem du dir andere Klassen anschaust.
Über das Tool WinCV, daß bei Visual Studio mitgeliefert wirst, hast du binnen Sekunden eine Übersicht über alle Methoden und Eigenschaften aller .NET-Klassen. Dort hast du viele Beispiele, wie man kapselt.
Auf einen wichtigen Grundsatz bist du ja schon selbst gestoßen: die Visualisierung gehört auf die Oberfläche und möglichst nicht in die Klasse, weil die Klasse eine andere Aufgabe hat.
Die von dir beschriebene Funktionalität der beiden Webseiten gehört meines Erachtens in eine Klasse. Beide beziehen sich auf deine Datenbank -> Objekt -> Klasse und deren Eigenschaften und Methoden.
Ein Beispiel, an dem ich gerade arbeite: Ich habe eine Klasse, die verschiedene Funktionalitäten zur Verfügung stellt.
Sie wird für zwei vollkommen unterschiedliche Programme genutzt. In ASP.NET nehme ich die Klasse, um Statistiken aus der Datenbank in einem DataGrid darzustellen und die Daten über ein Formular zu filtern. Ebenso wird eine grafische Darstellung generiert.
Das Folgeprogramm wird sich darum drehen, in festen Intervallen Berichte auf Basis der selben Daten wie das ASP.NET-Programm automatisch zu erstellen und diese per Mail zu verschicken. Beide Programm bereiten Daten vollkommen unterschiedlich auf, nutzen jedoch die selbe Klasse um sich die Daten zu holen.
Hätte ich bei der ASP.NET-Seite nur eine Webform an meine Klasse als Parameter zur Visualisierung übergeben, wäre die Klasse für mein zweites Programm nutzlos gewesen.
Und hier kommen wir zu einem weiteren wichtigen Grundsatz von Klassen: Dynamik.
Eine Frage die du dir immer stellen muss ist, was passiert mit meiner Klassen, wenn sich die Umwelt der Klasse ändert ? Passt sich meine Klasse an, wenn sich die Umwelt ändert oder muss ich die Klasse an die Umwelt anpassen (worst-case). Du solltest also Schnittstellen über die Klasse bereitstellen, aber die Klasse möglichst nicht mit der Umwelt verwurzeln.