Wann ist es sinnvoll OOP zu nutzen
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
FreemanBetreff: Wann ist es sinnvoll OOP zu nutzen |
Mi, Jul 06, 2005 21:13 Antworten mit Zitat |
|
---|---|---|
hi
ich habe heut ein paar stunden damit zugebracht etwas oop zu üben. Wenn ich es richtig gemacht habe ist mir aufgefallen das es manchmal situationen gibt an denen man ohne oop besser fährt. Mal eine llgemeine frage zu oop. Eigentlich packt man doch alles in types, bastelt methodes um die eigenschaften besser beschreiben zu können und das ganze wird dann in den functionen genutzt oder? wenn ich falsch liege dnn berichtigt mich bitte. Wäre nett wenn ihr mal ein paar richtige oop beispiele posten könntet. thx FrEeMaN |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
Dreamora |
Mi, Jul 06, 2005 21:26 Antworten mit Zitat |
|
---|---|---|
Es hat hier in der FAQ Sektion einen interessanten Artikel dazu:
https://www.blitzforum.de/viewtopic.php?t=11419 |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
TheShadowModerator |
Mi, Jul 06, 2005 21:56 Antworten mit Zitat |
|
---|---|---|
Ich persönlich nutze mehr Funktionen ausserhalb von Types.
Irgendwie wird der Code sonst zu unübersichtlich wenn ich alles in Types reinquetsche... Zudem muss man irgendwelche kaputten Variablen-Namen nutzen: Type abc Field x Field y Method setcoord(_x,_y) x=_x y=_y EndMethod EndType Aber wenn man es komplett in Include auslagert - Z.B. button-Type in 1 Datei, window-type in 2 Datei usw, dann ist es beser. |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
regaa |
Mi, Jul 06, 2005 23:24 Antworten mit Zitat |
|
---|---|---|
Ich benutze nur noch OOP in Blitz, weil...(und das ist bei mir so)...ich viel besser in Objekten denken kann. Es hilft zu denken . Es ist für mich viel logischer
Auto.Fahren() als AutoFahren(Auto) zu schreiben. Find ich viel übersichtlicher. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Freeman |
Mi, Jul 06, 2005 23:44 Antworten mit Zitat |
|
---|---|---|
sicher, haste mal den speedtest gemacht? wie schnell ds programm brauch deine befehle durchzugehen? also bei mir ist es oft so das das oop zeug langsamer is.
FrEeMaN |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
Dreamora |
Do, Jul 07, 2005 0:11 Antworten mit Zitat |
|
---|---|---|
Dann machst du etwas falsch ...
In allen bisherigen Tests war OO beträchtlich schneller als prozedural, da das Prozedurale immer erst das Objekt "herschaffen" muss um damit zu programmieren. Von daher vermute ich, verwendest du das OO falsch oder in einer prozeduralen Weise, was es dann natürlich relativ lahmlegt ... hast du ein beispiel wo OO langsamer ist? |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Freeman |
Do, Jul 07, 2005 0:46 Antworten mit Zitat |
|
---|---|---|
weis nich ob das richtig ist...drum eben der thread, hier nen kleines bsp.
?oop? Code: [AUSKLAPPEN] Graphics 800,600,0 Type test Field x:Float Field y:Float Field frame:Int Field imagename:String Field image:TImage Field ms:Int Method load() image=LoadImage(imagename) End Method Method draw() DrawImage(image,x,y,frame) End Method End Type Local t:test=New test t.imagename="test.png" t.ms=MilliSecs() t.load() t.draw() flip() Print MilliSecs()-t.ms "normal" Code: [AUSKLAPPEN] Graphics 800,600,0 ms=MilliSecs() image=LoadImage("test.png") DrawImage(image,0,0,0) flip() Print MilliSecs()-ms bei beiden durchläufen bekomme ich werte um 225. Wo liegt die speedbremse? ich denke mal mein oop is kein oop FrEeMaN |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
Dreamora |
Do, Jul 07, 2005 1:18 Antworten mit Zitat |
|
---|---|---|
naja da hat es ja auch noch keine wirkliche anwendung. du lädst etwas und zeichnest es einmal.
98% der gesamten zeit geht da mit laden drauf, unabhängig davon ob OO oder nicht OO Wir hatten ja erst grad das Bank Problem, wo OO 8x so schnell wie wie prozedural. (vor allem mit den BM internen Typen muss man wohl immer OO gehen) Übrigens fehlt da ein flushmem am ende der mainloop, wenn du das dann um eine Loop erweiterst |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
bruZard |
Do, Jul 07, 2005 7:15 Antworten mit Zitat |
|
---|---|---|
TheShadow hat Folgendes geschrieben: Ich persönlich nutze mehr Funktionen ausserhalb von Types.
Irgendwie wird der Code sonst zu unübersichtlich wenn ich alles in Types reinquetsche... Zudem muss man irgendwelche kaputten Variablen-Namen nutzen: Type abc Field x Field y Method setcoord(_x,_y) x=_x y=_y EndMethod EndType Aber wenn man es komplett in Include auslagert - Z.B. button-Type in 1 Datei, window-type in 2 Datei usw, dann ist es beser. Warum machst Du das hier? Code: [AUSKLAPPEN] Method(_x,_y)
Mache es doch so: Code: [AUSKLAPPEN] Type abc Field x Field y Method setcoord(x,y) self.x=x self.y=y EndMethod EndType Keine "kaputten" Variablennamen. |
||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
Henry |
Do, Jul 07, 2005 8:00 Antworten mit Zitat |
|
---|---|---|
Ich finde das mit den "kaputten" Variablen Namen gar nicht so schlimm.
Ich habe es mir mittlerweile angewöhnt, die Variablen innerhalb eines Types mit dem Unterstrich voran zu benennen. Code: [AUSKLAPPEN] Type foo Field _x:int Field _y:int Method Init( x:int, y:int ) _x = x _y = y End Method End Type Aber letzten Endes ist das persönliche Geschmacksache. |
||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
Artemis |
Do, Jul 07, 2005 8:32 Antworten mit Zitat |
|
---|---|---|
Ich schreibe immer Self.Variable, da ich es schon von C# mit this.Variable gewähnt bin.
Außerdem, weiß man dann direckt ob die Variable jetzt dem Objekt angehört. |
||
Dreamora |
Do, Jul 07, 2005 11:27 Antworten mit Zitat |
|
---|---|---|
Ich nix kaputte Variablennamen ... da ich mit Private - Public die Informationen immer verschwinden lasse, kann ich bei der "öffentlichen" Variante normale Variablennamen nehmen, selbst wenn sie bei der Implementation voll kryptisch sind danach | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Henry |
Do, Jul 07, 2005 11:38 Antworten mit Zitat |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Ich nix kaputte Variablennamen ... da ich mit Private - Public die Informationen immer verschwinden lasse, kann ich bei der "öffentlichen" Variante normale Variablennamen nehmen, selbst wenn sie bei der Implementation voll kryptisch sind danach
Ähem....Wäs? |
||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
Dreamora |
Do, Jul 07, 2005 11:39 Antworten mit Zitat |
|
---|---|---|
Infoermation hiding (siehe das entsprechende Post in der FAQ)
zB so Code: [AUSKLAPPEN] Public
Type MAP Function create:MAP (width:Int,height:Int) Return MAP (MAP_IMP.create (width,height)) End Function End Type Private Type MAP_IMP Extends MAP Field fields:TILE[,,] Function create:MAP (w:Int,h:Int) Local t:MAP_IMP = New MAP_IMP t.fields = New TILE[w,h,10] Return t End Function End Type Der Private Teil existiert dabei nur innerhalb der BMX in welcher es vorkommt. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Henry |
Do, Jul 07, 2005 13:52 Antworten mit Zitat |
|
---|---|---|
Achso...mich hat das "kryptisch" verwirrt! | ||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
TheShadowModerator |
Do, Jul 07, 2005 17:53 Antworten mit Zitat |
|
---|---|---|
achso bruz - ja stimmt schon
so geht es auch - nur dann hat man längere namen... Zitat: Wir hatten ja erst grad das Bank Problem, wo OO 8x so schnell wie wie prozedural. (vor allem mit den BM internen Typen muss man wohl immer OO gehen)
Nö das siehst du falsch. In BBmax ist es so, dass wenn man kein Typ hinschreibt, dann wird Handle zu Integer konvertiert. Und in FOR-Schleife dann wieder aufwändig zurück - das ist dadurch höllisch langsam. Wenn schon dann sollte man Bank (mit Typehandle) mit einem Array vergleichen. Und ich denke Array wäre dann schneller. |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Dreamora |
Fr, Jul 08, 2005 6:41 Antworten mit Zitat |
|
---|---|---|
Hab ich ja gesagt
Ohne Type wirds zu BB like code sprich prozedural ... Ich nutze in BM ja net ma % # $ etc, da ich das als relativ schludrige Deklaration ansehe ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
TheShadowModerator |
Fr, Jul 08, 2005 15:36 Antworten mit Zitat |
|
---|---|---|
ja ich mag diese symbole auch nicht - in BB-classic war es akzeptabel - in BBmax ist es unsinn.... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Artemis |
Fr, Jul 08, 2005 15:39 Antworten mit Zitat |
|
---|---|---|
richtig, genauso wie programmieren ohne strict!
Wofür ist Strict da? Genau, damit man keine Fehler durch Schreibfehler bekommt! Also immer schön "Strict"en |
||
regaa |
Fr, Jul 08, 2005 15:39 Antworten mit Zitat |
|
---|---|---|
Ist Geschmackssache. Ich persönlich mag Hallo:String viel mehr als Hallo$, weil ich sonst das Dollarzeichen immer vor die Variable stellen will und nachher ein Fehler kommt, weil PHP einfach aus Reflex dazwischenkommt^^. | ||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group