OOP Tutorial

Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.

Jolinah

Betreff: OOP Tutorial

BeitragFr, Jun 09, 2006 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte schon mehrere Tutorials für OOP geschrieben, trotzdem jetzt hier nochmal was neues als PDF, wo so ziemlich Alles oder jedenfalls das wichtigste über OOP in BlitzMax erwähnt wird. Ich habe alles frei aus dem Kopf heraus geschrieben und hoffe es hat nicht zu viele Fehler Wink

http://zehr.de/downloads/BlitzMax-OOP.pdf

simi

BeitragFr, Jun 09, 2006 21:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow, sieht gut aus!
Schickes Design......

Vielleicht könntest du noch Const, super und final erklären? (vielleicht hab ichs auch übersehen.....)

Weiter so!

Jolinah

BeitragSa, Jun 10, 2006 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Wink

Du hast recht, Super wollt ich auf jedenfall noch einbauen, hab ich ganz vergessen. Und an Const und Final hab ich wohl in dem Moment auch grad nicht mehr gedacht, werd ich auch noch irgendwo was dazu schreiben.
 

Dreamora

BeitragSa, Jun 10, 2006 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs mir mal ein wenig durchgesehen. Sieht gut aus Smile

Allerdings ist mir bei Abstract ein Fehler aufgefallen und zwar schreibst du, das abstrakte Methoden Methoden ohne Definitionen seien. Denke du meintest Methoden ohne Implementationen, denn Definition ist der Grund warum man überhaupt etwas abstrakt definiert Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Jolinah

BeitragSa, Jun 10, 2006 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, Implementation würde wohl besser klingen, da hast du recht. Mit Methoden ohne Definition meinte ich Methoden wo der Funktionskörper nicht definiert ist, die Methode selbst wurde natürlich definiert Wink

Werde das auch noch anpassen. Ich habe es in MS Word geschrieben und in der Firma mit Adobe Acrobat Professional in ein PDF konvertiert. Ich bin aber die nächsten 2-3 Wochen nicht in der Firma, daher werd ich wohl das neue PDF erst dann online stellen können. Hab keine Lust extra Open Office etc. zu installieren ^^
 

Dreamora

BeitragSa, Jun 10, 2006 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt sonst auch free PDF printer Treiber, die es dir ermöglichen PDF zu speichern, wenn du kein "richtiges" Office drauf hast Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Jolinah

BeitragSa, Jun 10, 2006 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, überredet Smile Ich habe jetzt so einen Treiber installiert.
Die neue Version mit den Änderungen ist jetzt unter dem gleichen Link wie oben verfügbar:

http://zehr.de/downloads/BlitzMax-OOP.pdf

Die Anordnung der einzelnen Kapitel wurde auch noch etwas geändert.

Firstdeathmaker

BeitragSo, Jun 11, 2006 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, irgentwie finde ich die Überschrift etwas irritierend. Ich hatte jetzt ein Tutorial erwartet indem gezeigt wird, wie man genau OOP programmieren kann, also wie ein Program dann am besten aufgebaut ist damit. Statdesssen ist das eher ein Type-Tutorial für BMax, ein sehr gutes und ausführliches. Vielleicht solltest du den Titel etwas umändern um dieses Missverständnis aus dem weg zu räumen, oder noch einen Teil anfügen indem du auf den Aufbau eines Programes per OOP eingehts.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Jolinah

BeitragSo, Jun 11, 2006 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, vielleicht werde ich noch etwas anhängen da ich das etwas vernachlässigt habe. Das ist allerdings ein recht grosses Thema, und eigentlich gibt es auch keine beste Variante wie man mit OOP programmiert. Jeder geht meist seinen eigenen Weg. Mit dem kleinen Beispiel wie man eine GUI angehen könnte, wollte ich sowas zeigen. Aber ich suche mal noch ein paar andere Fälle, wo ich eine gute OOP Lösung zeigen kann und hänge die an Wink

Aber generell braucht das einfach ein bisschen Gefühl und Erfahrung. Es empfiehlt sich zuerst ein wenig mit den Types rumzuspielen, mit allen Möglichkeiten, damit man die Zusammenhänge besser versteht. Dann weiss man von alleine mit der Zeit wie man am besten etwas in OOP implementieren kann.
 

Dreamora

BeitragSo, Jun 11, 2006 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
FDM:
Was du meinst ist Programmdesign, nicht OO Programmierung.
Wobei es gewiss nicht schlecht wär irgendwann auch dafür ein Tutorial zu haben, wobei das etwas ist, was auf dem hier vorherrschenden Niveau (ohne OO Paradigmen und Korrektheitsgarantie) etwas sehr projekt- und nutzungsspezifisches ist ... Sprich ich weiss nicht inwiefern man da etwas allgemeins machen kann, ohne das man dann direkt auch noch Hooks, Events etc mit einbinden müsste (denn das wird eigentlich gebraucht wenn man schon OO macht ... da man dann auch moderne Programmierungsansätze nutzen sollte und nicht stupid 100% CPU ziehen oder delay nutzen sollte).

Wenn du lernen möchtest, wie du Programme allgemein aufbauen kannst mit OO und BM, so kann ich dir sonst diese Tutorials ans Herz legen: http://www.2dgamecreators.com/...ssari.html (und ja, ich weiss, sie sind englisch. Aber englisch ist in der Informatik eine zwingende Grundvoraussetzung, welche man vor OO min. grundlegend beherrschen sollte)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Firstdeathmaker

BeitragSo, Jun 11, 2006 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
"Was du meinst ist Programmdesign, nicht OO Programmierung. "

Äh, jein. was ich meinte war, wie man ein Programm unter OOP-Aspekten am besten designen kann (oder vielleicht ein paar gute Ansätze zu dem Thema). Ich sehe hier im Forum öfters Codes in denen das sehr gut strukturiert scheint, wie z.B. das GameManager Modul wo ein schöner Ansatz zur Strukturierung von Programmen gezeigt wird, vor allem was die Wechselbeziehungen von Objekten aufeinander angeht. Also im grunde genommen geht es mir um die Frage: Welcher Type darf was? Wenn ich einen Raumschifftype hab, und einen der Informationen zu Raumschifftypen enthält, wie soll ich das erstellen eines neuen Raumschiffes realisieren? Soll der Infotype eine Create Methode enthalten mit der ich ein Raumschiff diesen Typs erstellen kann, oder soll ich im Raumschiftyp eine Funktion anlegen weche dieses macht und dann dafür aber das Hande des Infotypes braucht? Naja, so ungefähre Tipps eben wie man ein OOP Progamm designt.

Die Tutorials richten sich ja eher an Anfänger die gar keine Ahnung haben wie sie ein Programm aufbauen sollen, und es wird auch nur sehr einfach auf die Objekte eingegangen (Ist schon klar dass sich ein Raumschiff selbst zu Updaten hat, aber mir geht es mehr um Interaktionen der Objekte untereinander).

Apropos: "und ja, ich weiss, sie sind englisch" - Ist für mich kein Thema, bin ja nicht irgentein blutiger Noob Wink
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Justus

BeitragSo, Jun 11, 2006 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir dein Tutorial durchgelesen, Jolinah, und befinde es für sehr gut.

Doch genau wie FDM fehlt mir da etwas der Bezug zur Praxis Wink

Jolinah

BeitragSo, Jun 11, 2006 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Wink

Zitat:
Soll der Infotype eine Create Methode enthalten mit der ich ein Raumschiff diesen Typs erstellen kann, oder soll ich im Raumschiftyp eine Funktion anlegen weche dieses macht und dann dafür aber das Hande des Infotypes braucht?


Genau das meinte ich, mit jeder geht bzw. findet seinen eigenen Weg. Eigentlich spielt das überhaupt keine Rolle. Einige finden die erste Variante besser, und andere die zweite. Es ist auch ein wenig Geschmackssache bei der OOP. Das zumindest in diesem Fall. Es mag schon Fälle geben, wo eine bestimmte Lösung besser ist, als eine andere.

Daher bin ich jetzt noch am überlegen, was für Beispiele denn sinnvoll wären. Wenn ihr Ideen oder Vorschläge habt kann ich diese ja noch ins Dokument einbauen Wink

Vielleicht sowas? (Beispiel wie man Monster und dessen KI verwalten könnte)
Code: [AUSKLAPPEN]

'KI Basis-Type
Type BaseKI Abstract
   Field Monster:BaseMonster

   'Events die vom Monstertype aufgerufen werden
   Method OnDeath() Abstract
End Type


'Monster Basis-Type
Type BaseMonster Abstract
   Field X:Int, Y:Int
   Field Health:Int, MaxHealth:Int
   Field Death:Int
   
   'Die aktuelle KI für das Monster
   Field KI:BaseKI
   
   'Update-Methode die für alle Monster gilt, sofern sie nicht überschrieben wird
   Method Update()
      If Health <= 0 And Not Death Then
         Death = True
         If KI <> Null Then KI.OnDeath()
      EndIf
   End Method
   
   'Methode um das Monster zu bewegen
   Method Move(xval:Int, yval:Int)
      X :+ xval
      Y :+ yval
   End Method
End Type


'Ein erstes Monster ^^
Type Fledermaus Extends BaseMonster

   'Zum erstellen einer Fledermaus und zuordnen einer KI
   Function Create:Fledermaus(X:Int, Y:Int, Health:Int, KI:BaseKI)
      Local f:Fledermaus = New Fledermaus
      f.X = X
      f.Y = Y
      f.Health = Health
      f.MaxHealth = Health
      f.KI = KI
      f.KI.Monster = f '<-- Monster für die KI setzen
      Return f
   End Function
End Type


'Eine KI zu dem Monster, lässt sich dann natürlich für mehrere Benutzen
Type EasyKI Extends BaseKI

   'Wird aufgerufen wenn die Fledermaus tot ist ^^
   Method OnDeath()
      Monster.Move(1,1)
      Print "Juhu, ich bin tot"
   End Method
End Type


Graphics 800, 600, 0

Local KI_1:EasyKI = New EasyKI
Local f:Fledermaus = Fledermaus.Create(10, 10, 100, KI_1)

Repeat
Cls

   If KeyHit(KEY_SPACE) Then f.Health :- 100
   f.Update()

Flip
Until KeyHit(KEY_ESCAPE)

EndGraphics
End
 

Barbapapa

BeitragMo, Okt 16, 2006 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, ich hoffe, dieser Thread bleibt kein Zombie, das Tutorial ist nämlich wirklich gut gelungen, ein paar Fragen hätte ich noch, aber da ich noch keine Zeit hatte, alles wirklich durch zu arbeiten, wollte ich warten, vielleicht verstehe ich diese Teile besser, wenn mal angewendet. Aber auch der Bereich OOP-based-design mit BMax würde mich sehr interessieren. Also bitte nicht aufhören!

Grüße
 

ThomasT

BeitragMo, Feb 26, 2007 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
wirklich sehr gelungen. Hab eben erst von BlitzMax gelesen und das damit auch OOP möglich ist, freut mich sehr. Um die Grundlagen zu zeigen, sind diese einfachen Beispiele meiner Meinung nach aber vollkommen ausreichend.
 

Sterbendes Lüftlein

BeitragDi, Jan 25, 2011 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Text entfernt

empet

BeitragDi, Jan 25, 2011 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn wir schon dabei sind diesen alten thread auszugraben, möchte ich auch noch sagen,
dass ich durch dieses tutorial BMX gelernt habe, mit vorkentnissen von B3D.

BladeRunner

Moderator

BeitragDi, Jan 25, 2011 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Jippieh, ihr zwei habt mit Geblubber einen Thread getötet!
Seid stolz auf euch. Oder besser doch nicht.

~GESCHLOSSEN~
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.


Übersicht BlitzMax, BlitzMax NG FAQs und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group