delete

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: SimpleOOP - Opensource Precompiler

Beitrag von NicTheQuick »

Mal 'ne blöde, weil ich den Thread jetzt nicht komplett gelesen und im Download nur Exe-Dateien gefunden hab: Funktioniert SimpleOOP auch unter Linux, wenn ich die Sourcen dort kompiliere?
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Re: SimpleOOP - Opensource Precompiler

Beitrag von Blackskyliner »

Wenn du die wenigen API Funktionen ersetzt siehe 5 Posts oder so vor deinem stehen alle genutzten API Funktionen...
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: SimpleOOP - Opensource Precompiler

Beitrag von CSHW89 »

Hi Sirhc.ITI,
also ersteinmal eine Top-Arbeit :allright: .
hab hier im thread schon öfter mal gelesen. hab mich aber nie so richtig begeistern können von einem oop-precompiler. aber ich dachte mir mal, da ich ein paar kleine projekte realisieren will, die es in java z.b. schon gibt, dachte ich mal, warum dann nicht auch objektorientiert. und da ja SimpleOOP anscheinend nicht links liegen gelassen wird, so wie manch andere Projekte, dachte ich mal fängste hier mit an.

so lange rede kurzer unsinn...
jetzt zum thema. ich hab nämlich leider auch was zu bemängeln. nun ich bin halt ein kleiner java-fetischist, und deshalb fehlt mir was ganz entscheidenes in SimpleOOP: 'InstanceOf'.
kleine erklärung: die methode überprüft zur Laufzeit, ob ein Objekt der angegebenen Klasse angehört, oder einer Klasse die von dieser angegebenen Klasse erbt. hier mal ein kleines beispiel um das zu veranschaulichen:

Code: Alles auswählen

Class Objekt
EndClass

Class Fahrzeug Extends Objekt
EndClass

Class Auto Extends Fahrzeug
EndClass

Procedure Test(*fahrzeug.Fahrzeug)
  
  If InstanceOf(*fahrzeug, Auto)
    Debug "ist Auto"
  EndIf
  If InstanceOf(*fahrzeug, Objekt)
    Debug "ist Objekt"
  EndIf
  
EndProcedure

*auto.Auto = NewObject.Auto
*fahrzeug.Fahrzeug = NewObject.Fahrzeug

Test(*auto)     ; Ausgabe: "ist Auto" und "ist Objekt"
Test(*fahrzeug) ; Ausgabe: "ist Objekt"
also ich hatte schon mal eine eigene oo-programmiersprache geschrieben, die sehr an java angelehnt war, deshalb weiß ich, dass das schwieriger aussieht als man denkt.

so die erste bedingung "ein Objekt der angegebenen Klasse angehört" ist ja noch recht leicht zu realisieren: um zu prüfen, ob ein objekt z.b genau ein auto ist, als durch 'NewObject.auto' erstellt wurde, müsste jedes objekt nur eine int-variable besitzen. zudem hat jede klasse eine eigene id. in der int-variablen wird dann die id der jeweiligen klasse gespeichert. bei InstanceOf muss nur dieser int-wert mit der id der klasse verglichen werden.

die zweite bedingung "einer Klasse die von dieser angegebenen Klasse erbt" ist halt der knackpunkt. ohne zu viel in deiner jetzigen strukture zu ändern wüsste ich da jetzt nicht, wie man das machen sollte. vielleicht hast du ja ne gute lösung dafür. würde mich sehr darüber freuen, denn das halte ich für sehr wichtig in einer oo-sprache.

ansonsten werd ich mir noch was überlegen, wie es ohne viel aufwand möglich wäre. SimpleOOP ist ja OpenSource :allright: .

bis denne
lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: SimpleOOP - Opensource Precompiler

Beitrag von CSHW89 »

hi, sorry ich muss dir leider nochmal ein messer in den bauch stechen :evil: . nein quatsch, also:
ich weiß zwar nicht wie das in anderen oo-sprachen ist, aber aus java kenn ich halt, dass private methoden und argumente in der klasse nicht nur von this benutzt werden dürfen, sondern auch von allen variablen, die diese klasse als struktur haben und in dieser klasse definiert wurden. hier mal ein beispiel (unter java würde so was z.b funktionieren):

Code: Alles auswählen

Class Test
  
  value.i
  
  Public Method Init(value.i)
    This\value = value
  EndMethod
  
  Public Method.i compareTo(*obj.Test)
    If (This\value < *obj\value)  ; *obj ist auch von der Klasse Test, in der wir gerade drin sind.
      MethodReturn -1             ; also müsste es möglich sein, auf value zugreifen zu können
    ElseIf (This\value = *obj\value)
      MethodReturn 0
    Else
      MethodReturn 1
    EndIf
  EndMethod
    
EndClass
das ist hier in diesem beispiel noch einfach zu lösen. aber bei komplexen datenstrukturen, wie z.b binäre Suchbäume, die intern verändert werden müssen bei einer bestimmten operation, wie einfügen oder so was, dort muss es möglich sein, nicht nur den baum in 'this' zu verändern, sondern auch die unterbäume. gleichzeitig will man natürlich auch nicht, dass der benutzer dies verändern kann.

ich hoffe ich konnte das problem verständlich erklären und hoffe natürlich auch, dass du nicht denkst, ich will alles nur schlecht reden. stimmt natürlich nicht. ich will halt ein paar datenstrukturen ect. mal schreiben, vielleicht auch für die öffenlichkeit. da bräuchte ich aber schon solche sachen. also nicht böse sein :wink: .

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: SimpleOOP - Opensource Precompiler

Beitrag von CSHW89 »

So zum zweiten Punkt hab ich ein wenig gegoogelt. so wie ich das verstanden hab ist das auch in anderen oo-sprachen so (man möge mich steinigen, wenns nicht so ist, und bitte meldet euch, falls jemand dort wirklich ahnung hat). aber ehrlich gesagt, bei rekursiven datenstrukturen, mit denen ich mich schon sehr oft beschäftigt hab, geht das gar nicht, so wies bei dir zur zeit ist. zumindest kann ich dann die attribute nicht vor dem benutzer verstecken. hier mal ein etwas ausführlicheres beispiel:

sagen wir mal, ich will mir einen binären suchbaum 'BinTree' als rekursive datenstruktur erstellen. dazu hat der binäre suchbaum einen linken und einen rechten teilbaum auch vom Typ 'BinTree'. nun will ich eine methode bereitstellen, damit ein element eingefügt werden kann. es soll aber an der richtigen stelle im baum eingefügt werden (also alle elemente im linken teilbaum müssen kleiner sein, als die wurzel, rechts größer), somit es immer noch ein binären suchbaum darstellt. hier mal als code verdeutlicht (ist nicht vollständig):

Code: Alles auswählen

Class BinTree
  *left.BinTree
  *right.BinTree
  *obj
  
  Public Method add(*new)
    *parent.BinTree
    *tree.BinTree
    While (*tree <> #Null) ; In der Schleife durchlaufe ich den Baum von oben nach unten, bis ich eine leere Stelle finde
      *parent = *tree
      If (*new < *tree.obj)   ; Ab hier hab ich ein Problem
        *tree = *tree.left
      Else
        *tree = *tree.right
      EndIf
    Wend
    If (*new < *parent.obj)
      *parent.left = NewObject.BinTree(*new)
    Else
      *parent.right = NewObject.BinTree(*new)
    EndIf
  EndMethod
EndClass
ich will halt nicht, dass ich dem benutzer lese- und schreibrechte für 'left', 'right' und 'obj' gebe, will aber trotzdem in der lage sein, intern eine solch rekursive datenstruktur zu verändern.

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Re: SimpleOOP - Opensource Precompiler

Beitrag von X0r »

Download-Link ist tot, wie auch bei vielen anderen Projekten.
Das passiert also wenn man einem Kiddy vertraut, das Webhoster spielen will. /:->
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: SimpleOOP - Opensource Precompiler

Beitrag von edel »

@Sirhc

Koenntest du noch "static" mit einbauen? Ich hab es zwar versucht, kommt aber nix sinnvolles bei rum.

Code: Alles auswählen

Class Test 
    
    Public Static Method Callback()
        
    EndMethod    
    
EndClass
Methoden mit Static sind unabhaengig von der instanz, man kann also auch kein this in der Methode benutzen. Sehr sinnvoll z.b. fuer Callbacks.
Fuer mehr infos kannst du ja mal hier reinschauen
http://de.wikibooks.org/wiki/C%2B%2B-Pr ... in_Klassen
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: SimpleOOP - Opensource Precompiler

Beitrag von edel »

naja, dann muss ich sie ja so oder so ausserhalb der Klasse schreiben. Aber im Moment eilt hier eh nix...
Benutzeravatar
gekkonier
Beiträge: 314
Registriert: 20.04.2007 09:06
Wohnort: Wien

Re: SimpleOOP - Opensource Precompiler

Beitrag von gekkonier »

Hallo, ich wollte Dir hier huldigen:
:praise:

Das Ding ist Gold wert und macht auch Spaß! Auf etwaigen Overhead der durch das Featureaufpeppen passieren könnt wird - ihr wisst schon was!
Antworten