Probleme mit Daten die in entsprechende Klassen unter zubringen !

Reverent

Erfahrenes Mitglied
Hallo Leute,

EDIT // Tut mir leid ich habe leider zuspät gemerkt das dies nicht ganz das richtige Forum ist hätte unter Datenverwaltung gemußt. SORRY

ich möchte zu Übungszwecken einen Terminplaner programmieren und zwar soll er Termine, Aufgaben, Notizen und Erinnerungen verwalten.
Die vier Gebiete bestehen aus folgenden Werten

Notizen -> Beschreibung, idBesitzer
Aufgaben -> Beschreibung, Tag, idBesitzer
Erinnerungen -> Beschreibung, Tag, idBesitzer
Termine -> Beschreibung, Tag, Zeit, idBesitzer

Ich wollte drei Kassen anlegen die da heißen


Code:
public class csNotizen

public string Beschreibung;
public int idBesitzer;

Code:
public class csAufgabenErinnerung : clNotizen

public DateTime Tag;

Code:
public class csTermine : csAufgabenErinnerung

public DateTime Zeit;

und so könnte ich dann für jeden Eintrag im Terminplaner egal welches Gebiet ein entsprechendes Objekt erstellen z.B.

Code:
csAufgabenErinnerung objAufgabe = new csAufgabenErinnerung();

objAufgabe.idBesitzer ...
objAufgabe.Beschreibung ...
objAufgabe.Tag ...

Jetzt wollte ich EUCH dazu mal fragen, was Ihr dazu meint, was man noch anders oder vielleicht besser machen könnte!
 
Zuletzt bearbeitet:
Hallo Reverent!

:eek: Warum hast Du alle Klassen miteinander vererbt? :)
Ich würd für jede Klasse eine Collection implementieren (welche Du verwendest ist Dir überlassen).
zB csNotizenColl : CollectionBase
und die Notitzen darin ablegen.
Code:
[Serializable()]
internal class csNotitz
{
	int _OwnerID;
	string _Contend;

	public int ID {
		get { return _OwnerID; }
		set { _OwnerID = value; }
	}

	public string Contend {
		get { return _Contend; }
		set { _Contend = value; }
	}

	public csNotitz( int OwnerID, string Contend ) {
		_OwnerID = OwnerID;
		_Contend = Contend;
	}
}

[Serializable()]
internal class csNotizenColl : CollectionBase
{
	public void Add( csNotitz Notitz ) {
		this.List.Add( Notitz );
	}

	public csNotitz this[ int Index ] {
		get { return (csNotitz) this.List[ Index ]; }
		set {
			if ( !value.GetType().Equals( typeof(csNotitz) ) )
				throw new Exception( "Wert kann nicht zu csNotitz konvertiert werden!" );
			this.List[ Index ] = value;
		}
	}
}
Das ganze hat den Vorteil, dass Du viel schneller an deine Daten rankommst.

MfG, cosmo
 
Naja, er hats deshalb vererbt, weil er sich gedacht hat "Hey, die zwei Felder sind überall vorhanden, das eine Feld, ist dort und dort noch vorhanden." Prinzipiell kein blöder Gedanke, aber die Vererbung war dann doch anders gedacht ;-)

Die Vererbung sollte irgendwie in Richtung: Ich hab einen PKW und ein PKW ist ein Auto. Das heißt, Zusammengehöriges und nicht willkürliches.

Weiters: Keine Membervariablen öffentlich zugänglich machen. Immer Properties (Getter/Setter unter Java) verwenden. Cosmo hats dir eh ganz nett vorgemacht, wobei Cosmo hier die Java-Welt mit der C#-Welt zu vereinigen versucht mit seinen Unterstrichen (_) was ja grauslich unleserlich aussieht.
 
Norbert Eder hat gesagt.:
Naja, er hats deshalb vererbt, weil er sich gedacht hat "Hey, die zwei Felder sind überall vorhanden, das eine Feld, ist dort und dort noch vorhanden." Prinzipiell kein blöder Gedanke, aber die Vererbung war dann doch anders gedacht ;-)

Die Vererbung sollte irgendwie in Richtung: Ich hab einen PKW und ein PKW ist ein Auto. Das heißt, Zusammengehöriges und nicht willkürliches.
Ich unterscheide aber zwischen Notizen, Aufgaben, Erinnerungen und Terminen. Oder hab ich Dich jetzt falsch verstanden?
Der Reverent hat auch
Reverent hat gesagt.:
Notizen -> Beschreibung, idBesitzer
Aufgaben -> Beschreibung, Tag, idBesitzer
Erinnerungen -> Beschreibung, Tag, idBesitzer
Termine -> Beschreibung, Tag, Zeit, idBesitzer
angegeben.

// Edit: Er könnte Beschreibung & idBesitzer abstrakt vererben. Das währe ne Möglichkeit. :)

Norbert Eder hat gesagt.:
Cosmo hats dir eh ganz nett vorgemacht, wobei Cosmo hier die Java-Welt mit der C#-Welt zu vereinigen versucht mit seinen Unterstrichen (_) was ja grauslich unleserlich aussieht.
Es ist doch sein Ding was er aus dem ( _ ) macht.
Btw. denke ich reicht das für reine Containerklassen.
Oder ist es etwa faulheit?.... :D
Wenn dort Logik rein muss, dann würd ich sie 100%ig typorientiert benennen. :p
 
Zuletzt bearbeitet:
cosmochaosmaker hat gesagt.:
Ich unterscheide aber zwischen Notizen, Aufgaben, Erinnerungen und Terminen. Oder hab ich Dich jetzt falsch verstanden?
Der Reverent hat auchangegeben.
Gehe zurück an den Start.
Lies meinen Text nochmal durch, dann wird dir einleuchten, dass du mich absolut falsch verstanden hast. Ich kenn mich mit der OOP schon aus, kein Grund also mir das vorzukauen.
cosmochaosmaker hat gesagt.:
Es ist doch sein Ding was er aus dem ( _ ) macht.
Btw. denke ich reicht das für reine Containerklassen.
Oder ist es etwa faulheit?.... :D
Wenn dort Logik rein muss, dann würd ich sie 100%ig typorientiert benennen. :p
Und was genau hat _ mit typorientiert zu tun? Wenn du ihm schon Styleguides raufdrücken willst, dann bitte gleich ordentlich und verweise auf die Styleguides von Microsoft und net so halb das und halb das.
 
Norbert Eder hat gesagt.:
Gehe zurück an den Start.
Lies meinen Text nochmal durch, dann wird dir einleuchten, dass du mich absolut falsch verstanden hast. Ich kenn mich mit der OOP schon aus, kein Grund also mir das vorzukauen.
Ja hab dich falsch verstanden. Hab es aber nicht Dir sondern ihm vorgekaut.
Norbert Eder hat gesagt.:
Und was genau hat _ mit typorientiert zu tun? Wenn du ihm schon Styleguides raufdrücken willst, dann bitte gleich ordentlich und verweise auf die Styleguides von Microsoft und net so halb das und halb das.
Und ich hab nicht gesagt das er das SO machen soll.
Reden wir jetzt vollkommen aneinander vorbei?
Ich meinte er könnte anstatt des ( _ ) irgend ein Typkürzel vorsetzen.
Hier [post=1069488]mein StyleGuide[/post].
Und auf MS find ich sowas nicht. Ich bekomm nur unsinnige Ergebnisse auf google und in der msdn.
Aber dafür find ich allerhand im Inet.
Ich denke jeder hat seinen eigenen Styleguide.
Und wenn man sich viele der anderen Posts hier anschaut,
kann man sagen das sich viele erst mit der Zeit oder gar keine Gedanken darüber machen
und nicht merken, was die sich dadurch für einen persönlichen Overhead verpassen.
 
Danke mage :)

Und nein, es ist falsch, wenn jeder seinen eigenen Styleguide hat. Wie soll denn das in einem Team funktionieren, wenn jeder seine eigenen Würste kocht? Deshalb einen hochoffiziellen Styleguide lernen und dann passt das. Und da gibts genau zwei für C#. Einmal den von Microsoft und einmal den von ic#code.
 
Bei einem gemeinsamen Projekt werden diese sowieso abgesprochen, dachte ich.
Aus dem Link von MS entnehme ich nicht mehr als ich schon weiss.
Ausserdem find ich einige der Vorschläge Intellisense feindlich.
Und wenn ihr euch die Tutorials von TheCodeProject anschaut,
haben die auch dort entweder keinen oder so einen ähnlichen wie ich gepostet hatte.

Mit dem Syleguide von ic#code macht man sich als Programmierer im Team eher Feinde.
MyValue || condition || TextBox textBox
Was'n das? :eek:

Oder meintest Du einen anderen?
 
Dank an euch beiden für eure Antworten,
und cosmo was hat das mit der Collection auf sich, mit der kenne ich mich noch nicht aus und um was neues zulernen wär das ja nicht schlecht. Ich bitte um einen kleinen Überblick.

Und Norbert hat es richtig erkannt!
Hey, die zwei Felder sind überall vorhanden, das eine Feld, ist dort und dort noch vorhanden.

Die Vererbung sollte irgendwie in Richtung: Ich hab einen PKW und ein PKW ist ein Auto. Das heißt, Zusammengehöriges und nicht willkürliches

Und wo liegt da der Unterschied zu meinem, OK eine Auto hat auch Funktionen, wie z.B. 'Bremsen' und Funktionen kommen in meinen Klassen nicht vor, nur halt die gleichen Variablen.
 
Zurück