Fragen zu OOP syntax

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

SpionAtom

Betreff: Fragen zu OOP syntax

BeitragMo, Okt 10, 2005 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Also vorweg: objektorientiert zu programmieren habe ich in der Schule mit Java gelernt. Ich möchte es aber auch in BlitzMax können Very Happy
Aber vieles habe ich noch längst nicht raus.

Werden referenzlose Objekte automatisch gelöscht (wie bei Java mit dem Garbage-collector), oder muss man das selbst machen?

Wie macht man eine null-Referenz? Quasi ein leeres Objekt.

Wie kann man bestimmte Methoden public oder private machen? Ich werde aus der Hilfe nicht schlau. Question

Danke im vorraus
Spion

TheShadow

Moderator

BeitragMo, Okt 10, 2005 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja Obj. ohne Referenz werden gekillt

LOCAL myvar:mytype
ist autom. NULL

oder

myvar=NULL
nachträglich noch
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

SpionAtom

BeitragMo, Okt 10, 2005 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Hilfe.
Aber nochmal konkret zum private/public problem:


Wo setze ich private ein, um die Fields anzahl:Int und cKnoten:stackKnoten pivat zu machen?
Und wo kommt das public hin, wenn die Methodes alle öffentlich sein sollen?

Code: [AUSKLAPPEN]

Type Stack
   Field anzahl:Int = 0
   Field cKnoten:stackKnoten
   
   Method isEmpty:Int()
      Return (anzahl = 0)   
   End Method
      
   Method add(pInt:Int)
      If anzahl = 0 Then
         self.cKnoten = New stackKnoten
         self.cKnoten.setInfo(pInt)
         'cKnoten.setPre()   'Der erste Knoten hat keinen Vorgänger
      Else
         oKnoten:stackKnoten = self.cKnoten
         self.cKnoten = New stackKnoten
         self.cKnoten.setInfo(pInt)
         self.cKnoten.setPre(oKnoten)
      End If
      anzahl = anzahl + 1
   End Method
         
   Method remove()
      If anzahl = 1 Then
         anzahl = 0
      End If
      If anzahl > 1 Then
         self.cKnoten = self.cKnoten.getPre()
         anzahl = anzahl - 1      
      End If
   End Method
   
   Method show:Int()
      Return self.cKnoten.getInfo()
   End Method
   
End Type

 

Dreamora

BeitragDi, Okt 11, 2005 1:32
Antworten mit Zitat
Benutzer-Profile anzeigen
garnicht.
Es gibt kein private - public in klassen. Du kannst nur komplette Codeblöcke privat - public machen, also komplette klassen.

in der FAQ habe ich vor "langem" eine kurze Erklärung zu Information Hidding in Modulen gemacht. Dies ist aktuell die einzige Möglichkeit private - public sinnvoll zu nutzen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

SpionAtom

Betreff: Also ich hab da noch ein Problem

BeitragSo, Okt 16, 2005 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Folgender Code wird beendet, sobald diese Zeile kommt:
Player[i] = New Snake

Gibt es da was zu beachten, wenn ich Arrays und Objekte benutze?


Code: [AUSKLAPPEN]

   Type Snake                  'Die OOP-Fähigkeit ist natürlich auch ein Hammer
      Field xdir:Int
      Field ydir:Int
      
      Field k_up:Int
      Field k_down:Int
      Field k_left:Int
      Field k_right:Int
      
      Field headnode:node
   EndType
   
   Type node
      Field xpos:Int
      Field ypos:Int
      Field suc:node
   EndType


         
   Global anzahl_spieler:Int = 1
   Global Player:Snake[anzahl_spieler]
   For i = 1 To anzahl_spieler
      Player[i] = New Snake
   Next

Suco-X

Betreff: .......

BeitragSo, Okt 16, 2005 12:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrays fangen bei 0 an und hören 1 vor der Grösse auf.

Also entweder

Code: [AUSKLAPPEN]

For i = 0 To anzahl_spieler-1


Oder die neue Bmax Variante dafür

Code: [AUSKLAPPEN]

For i = 0 until anzahl_spieler


Zweiteres ist das gleiche wie ersteres.
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

SpionAtom

BeitragSo, Okt 16, 2005 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Cool! Danke ging schnell!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group