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:

Freebasic+Objektorientierung???
Gehe zu Seite 1, 2  Weiter
 
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
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 07.01.2008, 13:22    Titel: Freebasic+Objektorientierung??? Antworten mit Zitat

Hallo,
habe auf dem Wiki Eintrag von Freebasic
http://de.wikipedia.org/wiki/FreeBASIC
gelesen, dass Freebasic teilweise auch schon Objektorientierung
unterstützt. Wollte mal fragen in welchem Umfang dies möglich ist.
Überleg mir nämlich gerade was für eine Programmiersprache ich
für mein nächstes Projekt verwenden soll und auf Objekte würd
ich nur ungern verzichten da die für mehr Übersichtlichkeit sorgen...
MfG
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 07.01.2008, 13:33    Titel: Antworten mit Zitat

Da gab's neulich ne grosse Diskussion dazu:

http://forum.qbasic.at/viewtopic.php?t=5178

Zusammenfassung in drei Sätzen:

1. Bestimmte Elemente der OOP sind explizit implementiert (Klassen, Methoden, Konstuktoren/Destruktoren, Überladung (?))

2. Aber es ist noch lange nicht vollständig (Exceptions/Events, Vererbung, Streams fehlen. Templates/Generics sowieso.)

3. Weiterentwicklung von FB in diese Richtung unklar.


Zu deiner Suche nach einer geeigneten Sprache: OOP ist ein komplett anderes Programmier-Paradigma. Kein Feature so nebenher. Du programmierst nicht mal "auch ein bisschen" OOP. Sondern du tust es oder tust es nicht. Wenn du OOP programmieren willst, würde ich dir Java, C#, Python oder Ruby empfehlen - ja und Eiffel oder Smalltalk natürlich.

Wenn du auch "so ein bisschen Objekte" in deine Programme einbauen möchtest, dann bist du in FB richtig. (Manche nennen das "OVP", "Objektverarbeitend".)

Siehe auch hier.

Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



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

BeitragVerfasst am: 07.01.2008, 20:04    Titel: Antworten mit Zitat

das was du als "nicht vollständig" bezeichnest ist bis auf vererbung eigentlich nicht zwingend nötig für oop, aber fehlende vererbung ist definitiv das größte manko bei fb wenns um oop geht.
_________________
"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
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 07.01.2008, 21:56    Titel: Antworten mit Zitat

@Croco:
danke für deinen Post !!!! hilft mir weiter....
hmm weiß net ob ich C++ oder Freebasic nehmen soll mal schauen
@MisterD:
Das mit der Vererbung versteh ich eh nur bis zu nem gewissen Grad,
und die Freebasic OOP Features sind schon ganz brauchbar, um etwas Übersicht zu schaffen im Quellcode
MfG
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 07.01.2008, 23:47    Titel: Antworten mit Zitat

Heizi hat Folgendes geschrieben:
hmm weiß net ob ich C++ oder Freebasic nehmen soll mal schauen

Kann ich verstehen. Ich habe früher mal mit C++ angefangen (wollte unbedingt Windows-GUI-Progs schreiben), bin jetzt wieder zu Basic zurückgekehrt, nachdem FreeBasic auch die WinAPI kann.

Vererbung bedeutet, daß eine Klasse von einer anderen Klasse abgeleitet werden kann. Die Eigenschaften der "Eltern-Klasse" werden dann von der abgeleiteten Klasse übernommen (geerbt), nur die Änderungen werden speziell neu implementiert. Erspart bei großen Prjekten einen Haufen Schreibarbeit.

@YTwinky
Wie definiert sich "Klasse" in FreeBasic? Sind das nicht einfach UDTs?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.01.2008, 00:50    Titel: Antworten mit Zitat

Klassen in FB sind eine Klasse für sich..
Du hast mich da voll aufm falschen Fuß erwischt..
..mom, mal wechseln..
..nee, der andere wars leider auch nicht..
m. a. W.:k.A happy
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
MisterD



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

BeitragVerfasst am: 08.01.2008, 01:40    Titel: Antworten mit Zitat

der sinn an vererbung ist zum einen das übernehmen von methoden und eigenschaften die sich in der subklasse dann ändern (überschreiben) lassen, zum anderen aber auch, dass du sozusagen nen "type auto" hast, der dir sagt was ein auto alles können muss und einen "type lkw" und einen "type pkw" die beide von auto erben, wenn du dann ne werkstatt aufmachst und sagst, die werkstatt kann alle autos reparieren kannst du der werkstatt ohne irgendwelche komischen typenänderungen oder pointergemurkse oder sonstwas einfach ein lkw-objekt und ein pkw-objekt übergeben kannst - schließlich können pkws und lkws alles was autos auch können da sie davon erben. Das schöne ist halt, dass du jederzeit eine klasse nehmen kannst und sie durch eine andere, die von der alten erbt und ganz viele tolle neue funktionen bietet, ersetzen kannst ohne irgendwas beachten zu müssen da die funktionalität der alten klasse natürlich bestehen bleibt (sofern du sie nicht gezielt änderst).
_________________
"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
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 08.01.2008, 11:42    Titel: Antworten mit Zitat

@Heizi:
C++ würde ich mir stark überlegen. Der Ärger-zu-Lern-Quotient bei C++ ist am Anfang maximal. Vor allem aufgrund der Vermischung von C und (echtem) C++.

Beispiel: Du bekommst am Anfang fast jeder C++-Einführung beigebracht, Arrays mittels [] zu deklarieren. Das ist Quatsch. Das ist ein C-Array mit allen Nachteilen, die ein solches Array hat. Es hat in C++ nichts verloren, dafür gibt es <vector>. Dann bekommst du eine Einführung in Pointer - C-Pointer. Die haben in C++ heute ebenfalls nichts mehr verloren, man benutzt die smartpointer der boostlib (künftige C++-Laufzeitbib). Kurzum: C++ ist und bleibt die grosse Baustelle der Informatik.

Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 08.01.2008, 12:30    Titel: Antworten mit Zitat

croco97 hat Folgendes geschrieben:
Siehe auch hier.


ähem. Das Tut stammt wohl noch von FB v0.15 oder so? Heutzutage sind Konstruktoren und in UDTs eingebettete Objekte sowie Operator und Function Overloading kein Problem mehr.

mfG Cherry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 08.01.2008, 13:24    Titel: Antworten mit Zitat

Zitat:

Das Tut stammt wohl noch von FB v0.15 oder so?


Korrekt, bin etwas im Rückstand traurig . Genauer: Ich hätte erst dann Lust, ein OOP-Kapitel zu schreiben, wenn denn auch wirklich OOP inkl. Vererbung und Events möglich ist. Wobei ich nicht unbedint der Meinung bin, dass FB das unbedingt können sollte. Aber das wurde an anderer Stelle schon viel diskutiert.

Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 08.01.2008, 13:29    Titel: Antworten mit Zitat

Noch ne Frage, wollt mir vorhin das Datenmodell überlegen und mir ist aufgefallen dass ich auch noch static Variablen benötige.
Geht das in Freebasic und wenn ja wie?????
MfG
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 08.01.2008, 13:52    Titel: Antworten mit Zitat

Hmmmh, kurze, aber komplizierte Frage. Welche Bedeutung von "static" meinst du?

1.) Prozedural: Eigenschaften werden nur einmal während der Laufzeit instanziiert: ==> Ja

2.) OOP: Eigenschaften gehören zur Klasse, nicht zum Objekt ==> Nein.

3.) Statische Methoden ==> Ja


Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 08.01.2008, 15:28    Titel: Antworten mit Zitat

croco97 hat Folgendes geschrieben:
OOP: Eigenschaften gehören zur Klasse, nicht zum Objekt ==> Nein.


Fast. Man kann aber ein Element in allen Instanzen synchronisieren.

Code:
Type Object
    Private:
    Enum Acc_Mode
        _Get
        _Put
    End Enum
   
    Declare Static Sub _acc_Foo (ByRef _Foo As Integer, Mode As Object.Acc_Mode)

    Public:
    Declare Property Foo () As Integer
    Declare Property Foo (newval As Integer)

    Bar As Integer
End Type

Static Sub Object._acc_Foo (ByRef _Foo As Integer, Mode As Object.Acc_Mode)
    Static FooPtr As Integer Ptr
    If FooPtr = 0 Then FooPtr = New Integer
    If Mode = Object._Get Then
        _Foo = *FooPtr
    Else
        *FooPtr = _Foo
    End If
End Sub

Property Object.Foo () As Integer
    Dim _Foo As Integer
    Object._acc_Foo (_Foo, Object._Get)
    Return _Foo
End Property

Property Object.Foo (newval As Integer)
    Object._acc_Foo (newval, Object._Put)
End Property

Dim As Object my_obj1, my_obj2
my_obj1.Foo = 123
my_obj1.Bar = 456
Print my_obj1.Foo, my_obj1.Bar
Print my_obj2.Foo, my_obj2.Bar
Sleep


mfG Cherry


Zuletzt bearbeitet von Cherry am 08.01.2008, 15:40, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 08.01.2008, 15:38    Titel: Antworten mit Zitat

In der Theorie schon. Aber nicht wirklich schön, wenn es sich nicht um einen einzigen Integer, sondern um ganze Klassen handelt, die ev. selbst wieder Klassen als Eigenschaften enthalten usw. Thema copy-Konstruktor...

Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
atari
gesperrt


Anmeldungsdatum: 26.08.2007
Beiträge: 144

BeitragVerfasst am: 08.01.2008, 18:37    Titel: Antworten mit Zitat

vergleich mal deinen compilierten asm-code von freebasic und von c++.

dann siehst du, das freebasic weit weg ist von oop, so wie du es dir vorstellen tust.

freebasic hat eigene compilerstrukturen, die eingehalten werden müssen, das ist das manko daran die oop-struktur so einzuhalten , das der code auch eine effektivität hat.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 08.01.2008, 18:48    Titel: Antworten mit Zitat

Atari, Atari, Atari....

Im Compilat erkennst Du keine Objektorientierung mehr. An Hackfleisch kannst du auch nicht die Flecken der Kuh erkennen, oder? Der Rest Deiner Aussage ist genauso sinnfrei.


_________________
Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 08.01.2008, 19:58    Titel: Antworten mit Zitat

hmmm ok sieht wohl so aus als ob ich auf ne globale Variable ausweichen
muss ist zwar nicht so schön aber es sollte auch funktionieren
MfG
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 09.01.2008, 09:56    Titel: Antworten mit Zitat

@Heizi: War 2.) das "Static", was du gesucht hast? Ich hätte eher auf 1.) getippt...

Grüsse!

Croco
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Heizi



Anmeldungsdatum: 19.01.2005
Beiträge: 309

BeitragVerfasst am: 09.01.2008, 13:24    Titel: Antworten mit Zitat

Ja ich glaub es war 2). Um genauer zu sein meinte ich ne Variable
die für alle Objekte einer Klasse gleich sind...
aber das geht auch mit ner globalen Variable.
MfG
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



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

BeitragVerfasst am: 09.01.2008, 16:51    Titel: Antworten mit Zitat

wäre eine statische.
_________________
"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
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
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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