Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 07.01.2008, 13:22 Titel: Freebasic+Objektorientierung??? |
|
|
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 |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 07.01.2008, 13:33 Titel: |
|
|
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 07.01.2008, 20:04 Titel: |
|
|
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 |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 07.01.2008, 21:56 Titel: |
|
|
@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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 07.01.2008, 23:47 Titel: |
|
|
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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 08.01.2008, 00:50 Titel: |
|
|
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
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 08.01.2008, 01:40 Titel: |
|
|
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 |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 08.01.2008, 11:42 Titel: |
|
|
@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 |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 08.01.2008, 12:30 Titel: |
|
|
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 |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 08.01.2008, 13:24 Titel: |
|
|
Zitat: |
Das Tut stammt wohl noch von FB v0.15 oder so?
|
Korrekt, bin etwas im Rückstand . 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 |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 08.01.2008, 13:29 Titel: |
|
|
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 |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 08.01.2008, 13:52 Titel: |
|
|
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 |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 08.01.2008, 15:28 Titel: |
|
|
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 |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 08.01.2008, 15:38 Titel: |
|
|
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 |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 08.01.2008, 18:37 Titel: |
|
|
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 |
|
 |
Lutz Ifer Grillmeister

Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 08.01.2008, 18:48 Titel: |
|
|
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 |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 08.01.2008, 19:58 Titel: |
|
|
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 |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 09.01.2008, 09:56 Titel: |
|
|
@Heizi: War 2.) das "Static", was du gesucht hast? Ich hätte eher auf 1.) getippt...
Grüsse!
Croco |
|
Nach oben |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 09.01.2008, 13:24 Titel: |
|
|
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 09.01.2008, 16:51 Titel: |
|
|
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 |
|
 |
|