Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 20.08.2012, 16:49 Titel: |
|
|
Yeah, Vererbung  _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 20.08.2012, 18:27 Titel: |
|
|
Ganz gut, dass etwas Leben in die Bude kommt, aber fast alles was neu ist, ist ein wenig merkwürdig implementiert und erinnert von der Umsetzung her an eine Mischung aus C, PHP und Java - man hätte dazulernen können. Schlagwörter, gerade nicht viel Zeit: "foo extends object", "threadcall funktionsname(parameter)", "base", ... |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 21.08.2012, 08:08 Titel: |
|
|
EXTENDS OBJECT
Hier wollte ich gern mal nachhaken was es wirklich effektiv bringt bzw welche möglichkeiten einem sich damit bieten?
Bisher erkenne ich daraus eigentlich nur eine ersparnis von schreibarbeit, wenn ich nur als kurzes Beispiel ein solches 'konstrukt' nehme;
Code: |
Type vector2 EXTENDS OBJECT
x as integer
y as integer
'diverse methoden
End Type
Type vector3 EXTENDS vector2
z as integer
'diverse methoden
End Type
Type vector4 EXTENDS vector3
w as integer
'...
End Type
|
Hier könnte ich aber auch wie gehabt die drei types schreiben, und würden ebenfalls ganz genauso funktionieren und erkenne daher wie gesagt
nur den Vorteil das ich mir schreibarbeit erspare (wobei das mit copy&paste sooo viel dann nun auch nicht wäre...)
Eigentlich müsste es prinzipiell auch möglich sein sowas wie UDT-UDT's damit zu kreieren?
Also quasi ein klassen-baustein-prinzip um eine klasse/object aus mehreren (erst später bekannten) object-parts zu erstellen
so zB wie;
Code: |
'pseudocode
type spielobject extends object
type position extends spielobject
type groesse extends spielobject
...
...
'brauche nun eine UDT-Klasse Spielobjekt mit folgenden 'erweiterungen' position ect...
|
ist das möglich oder ist das ganze wirklich nur zum sparen von arbeit gedacht? _________________
 |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 21.08.2012, 09:14 Titel: |
|
|
Ich vermute, es is zum Code-spaaren.
stell dir vor, du schreibst ein konstrukt, das viele UDTs benötigt (GUI). viele elemente sind in den meisten UDTs identisch (pos, gröse, farbe, usw.) ... aber einige eigenschaften sind objekt-spezifisch (dropbox, liste, ...) ... da kann man dann viel code-spaaren, wenn man ein allgemeines udt baut, und dann die erweiterungen "extendet"
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 21.08.2012, 13:14 Titel: |
|
|
Wenn du dann im (Groß-)Eltern-UDT eine Erweiterung oder ein Fix vornimmst, wirkt sich diese(r) auch gleich auf alle (Enkel-)Kinder aus, sofern sie diese Bereiche nicht selbst überschreiben. Es geht also auch um Wartbarkeit. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.08.2012, 13:17 Titel: |
|
|
Eternal_pain hat Folgendes geschrieben: | EXTENDS OBJECT
Hier wollte ich gern mal nachhaken was es wirklich effektiv bringt bzw welche möglichkeiten einem sich damit bieten? |
Und von "Objektorientierung" habt iher noch beide nie gehört?
https://de.wikipedia.org/wiki/Vererbung_%28Programmierung%29
Code zu sparen ist ein netter Nebeneffekt, aber ein besonders wichtiger Aspekt der Vererbeung ist eben auch, dass jedes speziellere Objekt (z.B. Auto) an den Stellen verwendet werden kann, wo ein allgemeineres Objekt (Fortbewegungsmittel) erwartet wird. Macht den Code übersichtlicher und leichter zu verstehen.
Edit: nemored war schneller. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 21.08.2012, 13:52 Titel: |
|
|
Objektorientierung oder OOP war mir ansich schon ein begriff aber eher Theorie als Praxis
Ich erkenne schon die Vroteile daran, allerdings dachte ich das noch mehr dahinter steckt...
zugegeben erspart es einem eine menge arbeit... man spart Code, es ist übersichtlicher, änderungen müssen (meist) nur in einer Klasse getätigt werden...
Allerdings dachte da wär noch mehr, also irgendwas das ohne ganz und gar nicht möglich wäre... _________________
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.08.2012, 14:14 Titel: |
|
|
Alles was du mit OOP programmieren kannst, kannst du auch irgendwie ohne programmieren, aber es ist halt sehr schmerzhaft, denn du musst die OOP-Mechanismen dann selbst implementieren. In diesem Fall wäre das eben nicht nur das Duplizieren von Membervariablen und Funktionen, sondern auch das Kopieren von Funktionen, die so ein Objekt als Input bekommen...
Beispiel:
Code: |
Sub Vorwaerts(gefaehrt as Fortbewegungsmittel)
gefaehrt.x += 10
Print "Das Fortbewegungsmittel " & gefaehrt.name & " befindet sich nun an Position " & gefaehrt.getCoord()
End Sub
|
Natürlich könnte man die Funktion 10 mal implementieren für alle Fortbewegunsmittel, oder man castet alle Fortbewegungsmittel auf eine "Basisklasse" (ziemlich dreckig)... Aber das ist alles wesentlich weniger elegant und zudem fehleranfälliger. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.08.2012, 14:40 Titel: |
|
|
Interessanter wird mein Beispiel auch noch, wenn man statt "gefaehrt.x += 10" eine Funktion gefaehrt.movePos(10) verwenden würde, denn dann könnte man jeweils noch die interne Funktionalität dieser Funktion je nach Klasse überladen (Stichwort Polymorphie)... Und um sowas ohne OOP zu realisieren, müsstest du schon selbst eine Art Dispatcher schreiben, und das wird dann maximal hässlichst.  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 21.08.2012, 19:00 Titel: |
|
|
Eternal_pain hat Folgendes geschrieben: | Ich erkenne schon die Vorteile daran, allerdings dachte ich das noch mehr dahinter steckt... | Man muss hinzufügen, dass der FBC inzwischen zwar tum Teil Konzepte der objektorientierten Programmierung unterstützt, aber darüber hinaus noch viele weitere der OOP angerechnete Mechanismen existieren, die der FBC (noch?) nicht beherrscht. Virtuelle Methoden oder Abstrakte Klassen wären hierzu meines Wissens nach - und ich habe mich noch nicht mit den hinzugekommenen Funktionen auseinandergesetzt - beispielhaft zu erwähnen. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
|