| |
VB.NET - Ein- und UmsteigerRe: Problem mit OPP Klassenaufbau | | | Autor: Micke | Datum: 31.08.12 12:39 |
| Hi Hannibal,
Interface IErinnerungen --> in deinem Fall hinfällig, ErinnerungsBasis hat alles in sich.
ErinnerungsBasis.Erinnerungsdatum - glaube nicht daß es overridable sein muß.
Private myErinnerungsdatum As Date = #1/1/1900#
Private myErinnerungstext As String = ""
--> lass die variablen auf nothing, die werte sind murks
so zu deiner eigentlichen Frage
Geburtstag.Erinnerungstext.Get --> das scheint klar zu sein
Geburtstag.Erinnerungstext.Set --> du meinst wenn hier ein zusammengesetzter string reinkommt, wie darüber bspw. auch der name sauber gesetzt wird ?
Du hast ja die zusammensetzungsregel im get definiert, was fehlt dir da noch ? string.split wird für sowas gern genutzt.
Micke
Beitrag wurde zuletzt am 31.08.12 um 12:41:01 editiert. | |
Problem mit OOP Klassenaufbau | | | Autor: Hannibal | Datum: 30.08.12 20:44 |
| Hallo,
will ein Erinnerungsprogramm für Geburtstage usw. schreiben
Leider hab ich ein Problem und weiß nicht wie ich die Klassen genau aufbauen soll.
Ich will ein Interface erstellen, aus dem ich dann eine Generische Klasse erstellen will mit Timerlogik usw.
Ich brauche also einmal einen Erinnerungstext bei normalen Erinnerungen brauche und bei Geburtstagen aber Vorname und Nachname, die ja dann den Erinnerungstext darstellen.
Kann Vor- und Nachname natürlich intern als Erinnerungstext zusammenbauen, aber umgekehrt wird es schon schwieriger. Wie erreiche ich, dass der Erinnerungstext immer richtig gesplittet wird?
Brauche einen kleinen Denkanstoß, hier mal ein kleines Beispiel wie ich mir das ungefähr vorstelle.
Public Interface IErinnerungen
Property Erinnerungsdatum As Date
Property Erinnerungstext As String
End Interface
Public Enum ErinnerungSortierung
Erinnerungstext
Erinnerungsdatum
End Enum
Public MustInherit Class ErinnerungsBasis
Implements IErinnerungen
Private myErinnerungsdatum As Date = #1/1/1900#
Private myErinnerungstext As String = ""
Public Overridable Property Erinnerungsdatum As Date Implements _
IErinnerungen.Erinnerungsdatum
Get
Return myErinnerungsdatum
End Get
Set(ByVal value As Date)
myErinnerungsdatum = value
End Set
End Property
Public Overridable Property Erinnerungstext As String Implements _
IErinnerungen.Erinnerungstext
Get
Return myErinnerungstext
End Get
Set(ByVal value As String)
myErinnerungstext = value
End Set
End Property
End Class
Public Class Erinnerung
Inherits ErinnerungsBasis
End Class
Public Class Geburtstag
Inherits ErinnerungsBasis
Private myVorname As String
Private myNachname As String
Public Property Geburtsdatum As Date
Get
Return MyBase.Erinnerungsdatum
End Get
Set(ByVal value As Date)
MyBase.Erinnerungsdatum = value
End Set
End Property
Public Overridable Property Vorname As String
Get
Return myVorname
End Get
Set(ByVal value As String)
myVorname = value
End Set
End Property
Public Overridable Property Nachname As String
Get
Return myNachname
End Get
Set(ByVal value As String)
myNachname = value
End Set
End Property
End Class Gruß
Hannibal
_____________________________________________________
Programmieren ist heute ein Wettrennen zwischen Programmierern, die versuchen bessere und idiotensicherere Programme zu entwickeln und dem Universum, dass versucht bessere Idioten zu entwickeln | |
Re: Problem mit OPP Klassenaufbau | | | Autor: Hannibal | Datum: 31.08.12 19:47 |
| Hallo Micke,
mit dem Interface hast du vielleicht recht, aber schaden sollte es auch nicht und ich weiß ja nicht wie sich das Projekt noch entwickelt.
Dachte mir das in etwa so
Public Overridable Property Vorname As String
Get
Return myVorname
End Get
Set(ByVal value As String)
myVorname = value
myErinnerungstext = myVorname & ", " & myNachname
End Set
End Property
Public Overridable Property Nachname As String
Get
Return myNachname
End Get
Set(ByVal value As String)
myNachname = value
myErinnerungstext = myVorname & ", " & myNachname
End Set
End Property
Public Overrides Property Erinnerungstext As String
Get
Return myErinnerungstext
End Get
Set(ByVal value As String)
myErinnerungstext = value
myVorname = myErinnerungstext.Split(CChar(", "))(0)
myNachname = myErinnerungstext.Split(CChar(", "))(1)
End Set
End Property Aber wie garantiere ich, dass der Erinnerungstext also Vorname und Nachname in der Klasse Geburtstag auch immer gleich getrennt wird, hier z.B. mit ", "?
Wie soll ich eine Ausnahme oder ähnliches auslösen falls dies nicht der Fall ist? Und das wichtigste wie kann ich trotzdem in der Klasse Erinnerung eine Erinnerungstext ohne Komma eingeben.
Meine Idee ist die Formatüberprüfung einfach über eine Maskedtextbox in der Form zu machen, da die Klasse sowieso nur ich benutze, aber das ist ja nicht Sinn der OOP...
Schonmal Danke.
Gruß
Hannibal
_____________________________________________________
Programmieren ist heute ein Wettrennen zwischen Programmierern, die versuchen bessere und idiotensicherere Programme zu entwickeln und dem Universum, dass versucht bessere Idioten zu entwickeln | |
Re: Problem mit OPP Klassenaufbau | | | Autor: Micke | Datum: 01.09.12 12:34 |
| Public Overridable Property Vorname As String
Get
Return myVorname
End Get
Set(ByVal value As String)
myVorname = value
End Set
End Property
Public Overridable Property Nachname As String
Get
Return myNachname
End Get
Set(ByVal value As String)
myNachname = value
End Set
End Property
protected delimeter as string = ", "
Public Overrides Property Erinnerungstext As String
Get
Return Vorname & ", " & Nachname
End Get
Set(ByVal value As String)
Vorname = value.Split(delimeter)(0)
Nachname = value.Split(delimeter)(1)
End Set
End Property Micke | |
Re: Problem mit OPP Klassenaufbau | | | Autor: Manfred X | Datum: 01.09.12 13:03 |
| Hallo!
Zunächst benötigst Du vermutlich eine Enumeration, die
die möglichen Arten der "Erinnerung" enthält:
Enum RememberEnum
Nur_Text
Geburtstag
Hochzeitstag
Besprechungstermin
Zahlungstermin
usw.
End Enum
Zusätzlich benötigst Du eine Eigenschaft dieses
Enumerationstyps, damit die Instanz erkennen kann, wie
der Erinnerungstext (Zugriff auf spezifische Eigenschaften)
aufgebaut werden muß.
Je nachdem, welche Art der Erinnerung in einer Instanz
gegeben ist, wird dann bei der Abfrage (Get) der Wert der
Eigenschaft Vor-/Zuname, Meldetext, Datum/Uhrzeit, Zahlungsbetrag
o.ä. als Erinnerung zurückgegeben.
MfG
Manfred
Beitrag wurde zuletzt am 01.09.12 um 13:06:58 editiert. | |
Re: Problem mit OOP Klassenaufbau | | | Autor: Hannibal | Datum: 05.09.12 08:55 |
| Hallo,
danke für die Vorschläge, werde dies jetzt einfach mal alles probieren und dann entscheiden wie es für mich am besten funktioniert.
Danke für eure Hilfe
Gruß
Hannibal
P.s. Danke demjenigen der den Beitragstitel geändert hat ;)
_____________________________________________________
Programmieren ist heute ein Wettrennen zwischen Programmierern, die versuchen bessere und idiotensicherere Programme zu entwickeln und dem Universum, dass versucht bessere Idioten zu entwickeln
Beitrag wurde zuletzt am 05.09.12 um 08:56:51 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|