Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

OOP - Anfänger fragen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
isiprimax



Anmeldungsdatum: 02.01.2009
Beiträge: 77

BeitragVerfasst am: 01.10.2010, 04:43    Titel: OOP - Anfänger fragen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 01.10.2010, 17:28    Titel: Antworten mit Zitat

Den Leerkonstruktor kannst du weglassen. FB initialisiert auf 0.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 01.10.2010, 17:43    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 04.10.2010, 02:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 30.03.2011, 20:57    Titel: Antworten mit Zitat

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! happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 30.03.2011, 21:36    Titel: Antworten mit Zitat

ich bin zwar eher für ein "yay!", aber das ist wohl ansichtssache lächeln

davon abgesehen werde ich es vmtl trotzdem nicht nutzen. c++ macht einfach süchtig, wenn mans erstmal mag zwinkern

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 30.03.2011, 22:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 30.03.2011, 22:30    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 30.03.2011, 22:32    Titel: Antworten mit Zitat

deswegen ja die frage ob man damit wenigstens schon ein template method pattern machen kann Zunge rausstrecken


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
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 01.04.2011, 17:26    Titel: Antworten mit Zitat

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 zwinkern
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz