Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
isiprimax
Anmeldungsdatum: 02.01.2009 Beiträge: 77
|
Verfasst am: 01.10.2010, 04:43 Titel: OOP - Anfänger fragen |
|
|
Hallo Forum,
ich befasse mich zur zeit mit OOP und habe jetzt kleinen Code geschrieben.
Meine Frage ist, ob es ein guter Programmierstiel ist (im Zusammenhang mit OOP, also nicht wie man Variablen benennt oder sonstiges).
Code: | '----- Type t_adresse -----------------------------------------------
Type t_adresse
Public:
Declare Constructor()
Declare Function getName() As String
Private:
_name As String
End Type
Constructor t_adresse()
_name = Str(Rnd*800)
Print "Adresse erstellt!"
End Constructor
Function t_adresse.getName() As String
Return _name
End Function
'----- Type liste ---------------------------------------------------
Type t_liste
Public:
Declare Constructor()
Declare Constructor(anzahl As Integer)
Declare Sub viewList()
Private:
_anzahl As Integer
_adresse As t_adresse Ptr
End Type
Constructor t_liste()
_anzahl = 0
_adresse = 0
End Constructor
Constructor t_liste(anzahl As Integer)
Dim adresse As t_adresse Ptr = New t_adresse[anzahl]
_adresse = adresse
_anzahl = anzahl
End Constructor
Destructor t_liste()
Delete _adresse
End Destructor
Sub t_liste.viewList()
For i As Integer = 0 To _anzahl - 1
Print i &" - Name:" &_adresse[i].getName()
Next
End Sub
'----- Main Program -------------------------------------------------
Dim aListe As t_liste = t_liste(10)
aListe.viewList()
Sleep
|
Der Code macht zur Zeit nur eine kleine Liste, die einem Random Zahlen zurückgibt. Meine Befürchtung ist, das ich den Constructor des t_list nicht sauber gelöst habe.
Über Meinungen und Ratschläge wäre ich dankbar.
Mfg |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 01.10.2010, 17:28 Titel: |
|
|
Den Leerkonstruktor kannst du weglassen. FB initialisiert auf 0. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 01.10.2010, 17:43 Titel: |
|
|
Vorsicht: den Constructor ohne Parameter kann man weglassen, wenn man keinen anderen Constructor mit Parametern im UDT hat.
Ein Beispiel:
Code: | Type myType
Declare Constructor ()
x As Integer
End Type
Constructor myType ()
End Constructor
Dim As myType variable |
In diesem Fall lässt sich der Constructor auch weglassen, das verursacht keine Probleme.
Code: | Type myType
Declare Constructor (zahl As Integer)
x As Integer
End Type
Constructor myType (zahl As Integer)
This.x = zahl
End Constructor
Dim As myType variable |
Das hier ohne Constructor geht allerdings nicht, da die letzte Zeile, also die Deklarierung der Variable vom Typ myType ohne direkte Zuweisung den Defaultconstructor aufruft. Gibt es den nicht, gibt es einen Fehler. Hier muss man also einen der folgenden Codes verwenden:
Code: | Type myType
Declare Constructor ()
Declare Constructor (zahl As Integer)
x As Integer
End Type
Constructor myType ()
End Constructor
Constructor myType (zahl As Integer)
This.x = zahl
End Constructor
Dim As myType variable |
oder
Code: | Type myType
Declare Constructor (zahl As Integer)
x As Integer
End Type
Constructor myType (zahl As Integer)
This.x = zahl
End Constructor
Dim As myType variable = 0 |
Tutorials zu dem Thema finden sich im FreeBASIC-Portal |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.10.2010, 02:06 Titel: |
|
|
freebasic ist übrigens ne dumme idee zum OOP lernen weils kein OOP kann.. nur "klassen" (types mit funktionen und konstruktoren/destruktoren drin). Vererbung und polymorphie gibts nicht, das heißt zwei der drei größten bestandteile von OOP fehlen einfach. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 30.03.2011, 20:57 Titel: |
|
|
Ich grab mal diesen Thread aus, da er thematisch sehr gut passt.
Für die, die es eventuell noch nicht wissen, v1ctor hat FB Vererbung spendiert. Fast fertig und bald in der neuen Version. Polymorphismus kommt dann vielleicht zur darauffolgenden Version hinzu. Das verdient ein "Yeay!" an v1c.
Yeay!  |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 30.03.2011, 21:36 Titel: |
|
|
ich bin zwar eher für ein "yay!", aber das ist wohl ansichtssache
davon abgesehen werde ich es vmtl trotzdem nicht nutzen. c++ macht einfach süchtig, wenn mans erstmal mag
aber das ist definitiv ein schritt, der fb wieder attraktiv macht _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 30.03.2011, 22:21 Titel: |
|
|
ungefähr 75% des wertes von vererbung kommt aus der kombination mit polymorphie und dynamischem dispatch x.X einfach nur vererbung ist witzlos..
ist das ganze wenigstens soweit ausgereift, dass man damit mehr oder weniger ein template method pattern umsetzen kann? _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 30.03.2011, 22:30 Titel: |
|
|
Immer dieses schlecht machen von allem. Ich schreib doch extra schon, dass Polymorphie im nächsten Rutsch kommen soll.
Sobald das ganze gemerged wird, werde ich es mal testen. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 30.03.2011, 22:32 Titel: |
|
|
deswegen ja die frage ob man damit wenigstens schon ein template method pattern machen kann
und um das ganze ein bisschen weiter schlecht zu reden: Ich behaupte mal, wenn einfach nur vererbung ungefähr einer arbeitseinheit entspricht, dann ist polymorphie mit dynamischem dispatch (je nach dem wie ordentlich die vererbung schon ist) zwischen 5 und 20 arbeitseinheiten, also ich wäre vooorsichtig mit dem enthusiasmus. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 01.04.2011, 17:26 Titel: |
|
|
MisterD hat Folgendes geschrieben: | ungefähr 75% des wertes von vererbung kommt aus der kombination mit polymorphie und dynamischem dispatch x.X einfach nur vererbung ist witzlos..
ist das ganze wenigstens soweit ausgereift, dass man damit mehr oder weniger ein template method pattern umsetzen kann? |
immerhin ein fortschritt
aber, ja, momentan kriegt mich kein basic von c++ weg  _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
|