Hallo,
im Forum und auch allgemein im Internet habe ich einige Links und Hinweise auf OOP-Precompiler gefunden. Es scheint mir allerdings, dass es keinen funktionierenden Download-Link gibt.
Täusche ich mich, oder sind sämtliche Projekte eingestellt/deaktiviert?
Herzlichen Dank für eventuelle Auskünfte
Jens
OOP Precompiler
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: OOP Precompiler
Das wohl nicht, aber nicht unbedingt Sinnvoll, da es jetzt ja Module gibt, die ähnliches leisten, fast.Täusche ich mich, oder sind sämtliche Projekte eingestellt/deaktiviert?
Da ist OOP wohl noch unpupulärer als es vorher bereits war, vor allem bei Einsteigern.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Re: OOP Precompiler
Da muss ich Thomas recht geben. Mit der Einführung von Modulen sinn einige Sachen einfacher geworden. Ich selber bin von OOP-Precompiler auf Modul mit OOP Funktionen umgestiegen (Siehe Link).ts-soft hat geschrieben:Da ist OOP wohl noch unpupulärer als es vorher bereits war, vor allem bei Einsteigern.
Aber je nach Anwendungsfall macht es sinn auch ein Object (OOP) zu programmieren. Dazu finde ich aber die PB-Hilfe was ein Objekt ist und wie dieses zu verwenden ist nicht ausreichend.
Manche OOP Implementierung bauen eine komplette neu Syntax für PB auf, was auch gut umgesetzt ist. Ich selber mag es lieber an die Syntax von PB zu halten, wo man auch sehr gut mit Objekten arbeiten kann.
Bei kleinen Projekten sollte man die Objekte komplett selber mit Module programmieren...
Hier mal ein Beispiel wie man mit Modulen rechts einfach Objekte programmieren kann
Code: Alles auswählen
; Module OOP Example by mk-soft
DeclareModule MyObject
Interface iMyObject
Release()
Clear()
Add(Value.i)
Sub(Value.i)
Result()
ResultS.s()
EndInterface
Declare New(Startwert = 0)
EndDeclareModule
Module MyObject
EnableExplicit
; Objektdaten
Structure sMyObject
*vTable ; Immer als erster Eintrag. Systemregel
summe.i
EndStructure
; Object anlegen
Procedure New(Startwert = 0)
Protected *object.sMyObject
*object = AllocateStructure(sMyObject)
If *object
; Virtuelle Funktionstabelle zuweisen
*object\vTable = ?vMyObject
; Daten zuweisen
*object\summe = Startwert
EndIf
ProcedureReturn *object
EndProcedure
; Object freigeben
Procedure Release(*this.sMyObject)
FreeStructure(*this)
ProcedureReturn 0
EndProcedure
; Object funktionen
Procedure Clear(*this.sMyObject)
With *this
\summe = 0
EndWith
EndProcedure
Procedure Add(*this.sMyObject, Value.i)
With *this
\summe + Value
EndWith
EndProcedure
Procedure Sub(*this.sMyObject, Value.i)
With *this
\summe - Value
EndWith
EndProcedure
Procedure Result(*this.sMyObject)
With *this
ProcedureReturn \summe
EndWith
EndProcedure
Procedure.s ResultS(*this.sMyObject)
With *this
ProcedureReturn "Result = " + Str(\summe)
EndWith
EndProcedure
; Funktionstabelle. Gleiche Reihenfolge wie das Interface
DataSection
vMyObject:
Data.i @Release()
Data.i @Clear()
Data.i @Add()
Data.i @Sub()
Data.i @Result()
Data.i @ResultS()
EndDataSection
EndModule
; Test
Define.MyObject::iMyObject *obj1, *obj2
*obj1= MyObject::New()
*obj2= MyObject::New(100)
*obj1\Add(10)
*obj2\Sub(10)
Debug *obj1\Result()
Debug *obj2\ResultS()
*obj1\Release()
*obj2\Release()
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
-
- Beiträge: 8
- Registriert: 03.01.2017 18:28
Re: OOP Precompiler
Hallo und herzlichen Dank für die Antworten.
Die muss ich jetzt erst einmal durcharbeiten und verstehen.
Ich hatte als Mangel empfunden, dass ich bei der Lösung Interface mit "darunterliegender" Struktur nicht auf die einzelnen Felder/Properties (wie auch immer das richtig in PB genannt wird) zugreifen kann, sondern alles mit Prozeduren erledigen muss. Aber offensichtlich kann dieses Problem gelöst werden, indem ich mir mit einer Prozedur den Zeiger auf die Struktur geben lasse.
Viele Grüße
Jens
Die muss ich jetzt erst einmal durcharbeiten und verstehen.
Ich hatte als Mangel empfunden, dass ich bei der Lösung Interface mit "darunterliegender" Struktur nicht auf die einzelnen Felder/Properties (wie auch immer das richtig in PB genannt wird) zugreifen kann, sondern alles mit Prozeduren erledigen muss. Aber offensichtlich kann dieses Problem gelöst werden, indem ich mir mit einer Prozedur den Zeiger auf die Struktur geben lasse.
Viele Grüße
Jens