vorteile von oop an praktischen beispielen erklärt
Übersicht

![]() |
diGGaGruppenKasparBetreff: vorteile von oop an praktischen beispielen erklärt |
![]() Antworten mit Zitat ![]() |
---|---|---|
hhooh
da ich atm geld spare um bald ( so nem monat oder so ) mir bmax zuzulegen, würde ich gerne mal an praktischen beispielen oop erklärt bekommen... ok erklärt is wahrscheinlich zuviel verlangt... ich würd halt gerne wissen was die vorteile von oop, an praktischen beispielen (bb code / bmx code - sowas in der art) erklärt, genau sind und wie sich das ausdrückt... vielleicht kann ich mir dann besser den unterschied (bis auf module etc) von bmx/bb vorstellen (dann freu ich mich vll noch mehr drauf xD) falls das schonmal wo geschrieben wurde, link plz ![]() danke schonmal im vorraus an alle fleissigen bmaxler ![]() |
||
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und glaubte im Licht der Straßenlampe Den Geist unseres jahrhunderts auf der Straße zu sehen Der uns sagte, daß wir alle am Rande des Abgrunds stehen. - Al Steward Athlon 64 3000+ / Radeon 9600 / 1024mb ddram |
Sebe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, mit Code tue ich mich gerade etwas schwer aber ein Vorteil der mir auf Anhieb einfällt: Verkettete Listen! Ich habe noch nie eine verkettete Liste in einer 100% prozedualen Sprache gesehen und Objekte, die man mit Hilfe von Listen während der Laufzeit erstellen und verwalten kann sind ein sehr grosser Vorteil. | ||
MasterK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
verkettete listen sind mit prozeduralen sprachen durchaus möglich, in C zB. es müssen eben nur entsprechende datentypen vorhanden sein, aber sobald eine sprache pointer-ähnliches bietet ist das an sich kein problem.
die vorteile voon OOP lassen sich in 2 oder 3 programmzeilen nur schwerlich darstellen. idR ist es so dass man mit steigende projektgrösse von OOP profitiert da sich dann durch vererbungen und beziehungen von projekten manche probleme fast von selbst lösen. des weiteren fördert OOP (sofern man es sauber programmiert) auch sehr die verständlichkeit und erweiterbarkeit von code. |
||
+++ www.masterk.de.vu +++
Lila FTW! |
![]() |
diGGaGruppenKaspar |
![]() Antworten mit Zitat ![]() |
---|---|---|
jaa das hab ich alles schonmal gelesen. aber wirklich wissen wo denn nun der vorteil liegt kann ich immernoch nicht ![]() |
||
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und glaubte im Licht der Straßenlampe Den Geist unseres jahrhunderts auf der Straße zu sehen Der uns sagte, daß wir alle am Rande des Abgrunds stehen. - Al Steward Athlon 64 3000+ / Radeon 9600 / 1024mb ddram |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Type Fahrzeug field Rad:Rad[4] field Farbe:int end type type Ferrari extends Fahrzeug field PS:int field Chasis:int end type type Transporter extends Fahrzeug field ladekapazität:int field Länge:int end type Das ist einer der Vorteile. Ein weiterer ist, dass in OOP Methoden und Funktionen in Types existieren (funktionen sind vom type, methoden von typeinstanzen), als auch globals und konstanten (erstere existieren nur 1x für alle instanzen des types und letztere sind für alle instanzen des types nutzbar ) Für längere praktische Beispiele siehe Vertex's DreiDe |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
diGGaGruppenKaspar |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für deine antwort ![]() |
||
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und glaubte im Licht der Straßenlampe Den Geist unseres jahrhunderts auf der Straße zu sehen Der uns sagte, daß wir alle am Rande des Abgrunds stehen. - Al Steward Athlon 64 3000+ / Radeon 9600 / 1024mb ddram |
Gombolo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Als man früher angefangen hat größere Programme zu schreiben stellte man fest das viele Routinen immer wieder vorkommen.
Das führe dazu das man diese Routinen in Funktionen ausgliederte. Die ersten Programmbiblitoheken enstanden. Später kammen eigene Datentypen hinzu. Z.B. in BlitzBasic die Types, in C die Struct's. Diese kapselten Daten. Ein Auto hat eine Marke, max Geschw. ect... Die OOP ist die Verknüpfung dieser Datentypen und Funktionen zu einem Objekt. Nun hat man nicht nur die Daten(Eigenschaften), sondern auch Funktionen(Methoden) um mit diesen Daten arbeiten zu können. Man kann sich das wie ein Videorekorder vorstellen. Du schiebst eine Kasette ein und drückst auf Play. In der modularen Programmierung würde das bedeuten. Du musst die Verkabelung im Rekorder jedesmal neu verlegen um Play zu aktivieren. Das ist nur ein sehr sehr kurzer Versuch die OOProgrammierung zu erklären. Am besten sucht man sich ein Buch über dieses Thema. |
||
Heute ist der erste Tag vom Rest deines Lebens
http://gombolo.go.funpic.de/ |
![]() |
diGGaGruppenKaspar |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja cool das is mal ne erklärung für jemanden der davon nix versteht ![]() |
||
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und glaubte im Licht der Straßenlampe Den Geist unseres jahrhunderts auf der Straße zu sehen Der uns sagte, daß wir alle am Rande des Abgrunds stehen. - Al Steward Athlon 64 3000+ / Radeon 9600 / 1024mb ddram |
![]() |
diGGaGruppenKaspar |
![]() Antworten mit Zitat ![]() |
---|---|---|
möcht jetz nich extra n thread aufmachen: wieviel sind die exen von blitzmax kleiner? | ||
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und glaubte im Licht der Straßenlampe Den Geist unseres jahrhunderts auf der Straße zu sehen Der uns sagte, daß wir alle am Rande des Abgrunds stehen. - Al Steward Athlon 64 3000+ / Radeon 9600 / 1024mb ddram |
Nemesis |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das hängt davon ab wieviel module du verwendest und reinpackst. | ||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Exen, sind z.Z. von ca. 10 kb bis ca 700 kb
mit debug, ca. 50% mehr. |
||
between angels and insects |
![]() |
diGGaGruppenKaspar |
![]() Antworten mit Zitat ![]() |
---|---|---|
also hat man sozusagen selber in der hand.. wie bei purebasic oder cpp oder so.. desto mehr funktionen/module genutzt werden desto größer wird auch die exe. | ||
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und glaubte im Licht der Straßenlampe Den Geist unseres jahrhunderts auf der Straße zu sehen Der uns sagte, daß wir alle am Rande des Abgrunds stehen. - Al Steward Athlon 64 3000+ / Radeon 9600 / 1024mb ddram |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
jap. | ||
between angels and insects |
Serge |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat ja schon die Vererbung an einem Code erklärt,
Nun, OOP Objekte können auch Funktionen beinhalten, die nur für das Objekt da sind. z. B. Code: [AUSKLAPPEN] Type Fahrzeug Field Geschwindigkeit:Int method beschleunigen() Geschwindigkeit:+1 end method end Type Ein großer Vorteil ist, dass man beim Vererben (beim erstellen einer neuen Klasse/Types, der die Eigenschaften von "Fahrzeug" übernimmt) Die Methods Überschreiben kann. Es ist dann immernoch die selbe Funktion mit dem selbem Namen, nur dass sie, je nach Objekt, etwas anderes tut. Code: [AUSKLAPPEN] Type Fahrzeug Field Geschwindigkeit:Int method beschleunigen() Geschwindigkeit:+1 end method End Type Type Ferrari extends Fahrzeug method beschleunigen() Geschwindigkeit:+3 end method End Type Nun könnte man ein Array oder eine Liste vom Typ "Fahrzeug" erstellen. Dann steckt man da einige Objekte des Type "Fahrzeug" und einige des Type "Ferrari" rein. Nun könnte man mit einem Schleifendurchgang die Liste/array durchgehen und bei jedem Objekt die Funktion "Beschleunigen()" aufrufen, obwohl die Funktion bei manche Types was komplett anderes macht.. Nunja, hoffe du hast es verstanden, im erklären war ich noch nie der beste ![]() |
||
http://www.dark-matter-soft.de |
![]() |
diGGaGruppenKaspar |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für deine antwort ![]() http://blitzbasic.com/Communit...opic=42619 |
||
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und glaubte im Licht der Straßenlampe Den Geist unseres jahrhunderts auf der Straße zu sehen Der uns sagte, daß wir alle am Rande des Abgrunds stehen. - Al Steward Athlon 64 3000+ / Radeon 9600 / 1024mb ddram |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, ich versuch das gerade auch zu verstehen:
Man kann also eine Funktion in ein Typ integrieren, aber in weiteren Typ´s die man definiert die Eigenschaften des ersten übernehmen indem man sie "vererbt"? Gibt es auch unterschiedliche Listen für ein und dieselbe Objektart? Oder werden automatisch alle Objekte die man durch Vererbung erstellt in die gleiche Liste eingetragen? Muss man, wenn man eine normale Funktion aus dem Objekt heraus aufrufen möchte, diese dann nochmal in eine Funktion des Objektes integrieren oder kann man sie direkt aus dem Objekt ausrufen? Ist es dadurch z.B. möglich einem Objekt (Button) einzuspeichern, dass er, wenn er gedrückt wird, eine bestimmte normaler Funktion aufzurufen die man vorher bei der Erstellung nur per Namen übergeben hat? Quasi: Code: [AUSKLAPPEN] create_schalter("print_help")
function create_schalter(funktionsname$) schalter.schalter=new schalter schalter\funktion=execute funktionsname end function function print_help() print "Help" end function oder so ähnlich? |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das geht mit den Funktionspointern.
Mfg Suco [/code] |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das hört sich recht schmackhaft an ![]() Daran bin ich nämlich mal verzweifelt in BB. Zudem es ja auch auf Linux kommen soll. Ich würde echt gerne auch für Lunux proggen, vor allem Spiele gibt es dort noch zu wenig meinem Geschmack nach. |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Firstdeathmaker hat Folgendes geschrieben: Man kann also eine Funktion in ein Typ integrieren, aber in weiteren Typ´s die man definiert die Eigenschaften des ersten übernehmen indem man sie "vererbt"?
Genau, nicht nur die Eigenschaften sondern auch die Funktionen und Methoden werden mit übernommen. Diese kann man aber im Type der vom ersten geerbt hat überschreiben falls sie etwas anderes tun sollen als der erste Type. Zitat: Gibt es auch unterschiedliche Listen für ein und dieselbe Objektart?
Oder werden automatisch alle Objekte die man durch Vererbung erstellt in die gleiche Liste eingetragen? In BMax funktioniert das mit den Listen nun etwas anderes. Du kannst Objekte frei erstellen ohne dass diese gleich zu einer Liste gehören, wie jeder andere Datentyp auch. Für die Listen gibts dann einen speziellen Type (TList). Hier ein kleines Beispiel: Code: [AUSKLAPPEN] Type Auto Field farbe End Type Local AutoListe:TList = CreateList() Local Auto1:Auto = new Auto Local Auto2:Auto = new Auto Auto1.farbe = $FF0000 Auto2.farbe = $0000FF ListAddLast(AutoListe, Auto1) 'Fügt das erste Auto am Ende der Liste ein AutoListe.AddLast(Auto2) 'Macht genau das selbe, hier wird die Methode von TList direkt aufgerufen 'Alle Autos in der Liste durchgehen. For Local meinAuto:Auto = EachIn AutoListe Print String(meinAuto.farbe) Next Es ist also möglich sogar für den selben Type soviele separate Listen anzulegen wie du willst. Zitat: Muss man, wenn man eine normale Funktion aus dem Objekt heraus aufrufen möchte, diese dann nochmal in eine Funktion des Objektes integrieren oder kann man sie direkt aus dem Objekt ausrufen?
Die muss man in einer Funktion oder Methode des Types aufrufen, ausser du verwendest einen Functionpointer als Eigenschaft des Types: Code: [AUSKLAPPEN] Type test Field function() End Type Function myfunc() Print "Hallo Welt!" End Function Local t:test = new test t.function = myfunc t.function() Jedoch musst du dann zuerst dem Functionpointer auch eine Funktion zuordnen bevor du die aufrufen kannst. Und zu erwähnen ist noch dass du nur Funktionen zuordnen kannst die den gleichen Aufbau wie der Functionpointer haben, also gleicher Rückgabetyp und gleiche Parameter. Zitat: Ist es dadurch z.B. möglich einem Objekt (Button) einzuspeichern, dass er, wenn er gedrückt wird, eine bestimmte normaler Funktion aufzurufen die man vorher bei der Erstellung nur per Namen übergeben hat?
Funktioniert dann so ähnlich wie in dem Beispiel oben ![]() |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Echt? Also um bei deinem Beispiel zu bleiben:
BlitzBasic: [AUSKLAPPEN] Type test Funktioniert das so in etwa? |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group