Aktuelle Zeit: 18.12.2018 21:08

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 50 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5
Autor Nachricht
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 02.05.2017 01:14 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Zu A:
In dem Sinne gibt es kein Copy-Kontruktor. Was du wahrscheinlich meinst ist ein kopieren des Objekts.
Diese ist aber so komplex das die Objekt-Klasse die Methode Copy mitliefern muss. Um die BaseClass bei mir sauber in eine neues Objekt zu kopieren gibt es das Hilfs-Macro CloneObject(). Alles andere wie zum Beispiel ein Image zu kopieren muss in der Methode programmiert werden.

Zu B:
Die Reihenfolge von Dispose kann man ja mal ändern. Aber wie du sagst macht es in 99,9% der Fälle keinen Unterschied.

Deine Bezeichnung ParentClass und ChildClass finde ich nicht ganz passend. Nach einer Vererbung erhält man eine neue Objekt-Klasse welches nur die Methoden und Properties erworben hat. Jede Änderung an der neuen Objekt-Klasse darf an den Original der geerbten Klasse keinen Einfluss haben.

Den Begriff Parent verstehe ich als einen Verweis auf das übergeordnete Objekt welches das Objekt erzeugt hat. Die Methode Parent muss das Objekt liefern.

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 02.05.2017 04:45 
Offline

Registriert: 29.08.2004 13:18
mk-soft hat geschrieben:
Zu A:
In dem Sinne gibt es kein Copy-Kontruktor. Was du wahrscheinlich meinst ist ein kopieren des Objekts.
Diese ist aber so komplex das die Objekt-Klasse die Methode Copy mitliefern muss. Um die BaseClass bei mir sauber in eine neues Objekt zu kopieren gibt es das Hilfs-Macro CloneObject(). Alles andere wie zum Beispiel ein Image zu kopieren muss in der Methode programmiert werden.


Hmm... so schwer stell ich mir das nicht vor. Du musst nur eine weitere Liste, neben Initalize.udtInvoke() und Dispose.udtInvoke() führen. Das Image zu kopieren ist klar die Aufgabe der entsprechenden "SubClass". Aber dein Code sieht das bisher nicht so vor. Konstruktoren würde ich jetzt nicht zwingend als Methode bezeichnen. Sie sind zumindest eine Sonderstellung, gerade weil sie nicht überschrieben werden.

Zitat:
Die Reihenfolge von Dispose kann man ja mal ändern. Aber wie du sagst macht es in 99,9% der Fälle keinen Unterschied.


Ich mag so kleine Details. Es sind meist so kleinigkeiten, über die man nicht nachdenkt, aber irgendwann enorm wichtig werden könnten.

Zitat:
Deine Bezeichnung ParentClass und ChildClass finde ich nicht ganz passend. Nach einer Vererbung erhält man eine neue Objekt-Klasse welches nur die Methoden und Properties erworben hat. Jede Änderung an der neuen Objekt-Klasse darf an den Original der geerbten Klasse keinen Einfluss haben.

Den Begriff Parent verstehe ich als einen Verweis auf das übergeordnete Objekt welches das Objekt erzeugt hat. Die Methode Parent muss das Objekt liefern.


Scheint wohl beides zu geben, siehe Wikipedia https://de.wikipedia.org/wiki/Vererbung_(Programmierung)
Zitat:
Die vererbende Klasse wird meist Basisklasse (auch Super-, Ober- oder Elternklasse) genannt, die erbende abgeleitete Klasse (auch Sub-, Unter- oder Kindklasse).

In englischen sind sie sich auch uneinige. Da wird an einer stelle von "Such an inherited class is called a subclass of its parent class or super class." und an anderer "A Subclass, "derived class", heir class, or child class"
Macht auch Sinn, man spricht ja von Vererbung :) Aber Super- und Subclass wären wohl eindeutiger

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 02.05.2017 15:06 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Ok.
Die Reihenfolge von Dispose habe ich jetzt geändert. War auch irgendwie auf meine ToDo liste.

Das mit Images, Fonts, etc hat bei mir nichts in der BaseClass zu suchen. Der Konstruktor (Initalize) bleibt bei mir nur zum anlegen eines neuen Objektes vorbehalten. Verliere sonst die Kompatibilität zu den Standards zum erstellen von Objekten.

Mein Ziel ist es immer noch mit Purebasic möglichst einfach ein Objekt zu erstellen und nicht eine neu Objektsprache zu implementieren.

Vielen Dank für Deine Anregungen die zu einen Update geführt haben. Auch gerade für mein Projekt BaseClass ClassDispatch zur Erstellung von COM-DLL´s.

Link ClassDispatch http://www.purebasic.fr/english/viewtop ... 12&t=68101

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Zuletzt geändert von mk-soft am 02.05.2017 15:22, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 02.05.2017 15:06 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Update v1.29
- Dispose Object wird jetzt rückwärts verarbeitet.
- LinkedList Initalize() und Dispose() über Mutex geschützt da diese über alle Objekte der Klasse gemeinsam verwendet werden.
- ObjectCounter über alle Klassen hinzugefügt. Kann dazu verwendet werden um ein Programm oder eine DLL erst zu beenden wenn kein Object mehr referenziert ist.
(If BaseClass::Class\ObjectCounter = 0 ...)

:wink:

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 02.05.2017 15:38 
Offline

Registriert: 29.08.2004 13:18
Ich hätte noch einen Vorschlag:
Code:
Procedure __AddDisposeObject#Name()
      If FindMapElement(Class\Entry(), #PB_Compiler_Module)
        FirstElement(Class\Entry()\Dispose())
        InsertElement(Class\Entry()\Dispose())
        Class\Entry()\Dispose()\Invoke = @Name()
      Else
        Debug "Error: Class is not initialized. Module '" + #PB_Compiler_Module + "'!"
        CallDebugger
      EndIf
    EndProcedure : __AddDisposeObject#Name()

So wird die Liste gleich von Anfang an "Rückwärts" aufgebaut. So kann man mit einer einfachen ForEach-Next-Schleife alle Proceduren aufrufen.

Ich glaub du hast mich leicht missverstanden. Der Konstruktor ist nicht gleich der Kopie-Konstruktor. Das sind zwei paar Stiefel. Ist auch keine Erfindung von mir, sondern wird bspw. in C++ verwendet.
Die Images, Fonts etc. haben in der BaseClass natürlich nichts zu suchen, aber in einer eigenen Konstrukt. Wie wäre es bspw. mit einen Image-Objekt, das alle Funktionen zum manipulieren in Image enthält? Wenn man jetzt eine Kopie von den Objekt erstellen will, weil man bspw. die Größe ändern will (Thumbnail-Bild), aber das Original nicht verlieren will, dann wird ein Copy-Funktion sehr praktisch. Wenn man jetzt ein SubKlasse von dieser Image-Klasse erstellt, müsste man aktuell den komplette Copy-Methode neu schreiben. Mit einen Copy-Construktor-Ding wird das einfacher. Ist halt ein i-Tüpfelchen.

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 23.08.2017 13:11 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Update v1.31
- Rechtschreibkorrektur: Initalize -> Initialize

Sorry, ist mir bis nicht aufgefallen...

Eigene Projekte einfach mit 'Suchen und Ersetzen' korrigieren.

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 28.08.2017 11:29 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Update v1.32
- Geändert: Interne Initialize und Dispose von List auf Array geändert, zur Vermeidung von Thread-Blocking
- Hinzugefügt: Kurze Version von 'BaseClass' hinzugefügt 'Modul_BaseClassSmall'

:wink:

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 29.10.2017 10:27 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
BaseClass small version

Update v1.05
- Now compatible to extended version
+ Macro AsNewMethode, Macro CloneObject

Immer noch der kleinste Code zur Erstellung von Objekts :wink:

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 22.12.2017 17:27 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Update v1.07
- Bugfix FreeMutex

Habe noch ein Bug gefunden. Bei Release Object wurde das Mutex nicht freigegeben

Link zum BaseClass

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Modul BaseClass (Modul als Objekt)
BeitragVerfasst: 25.01.2018 16:31 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Neue Version der BaseClassSmall :wink:

Update v1.09r3
- Die Klassen im Modul gekapselt
- Überprüfung der neuen Klasse in der Procedure 'AddClass(...)' erweitert
- Macros geändert da die Klassen nicht mehr global sind
- Geändert CheckInterface. Der Parameter wird nicht mehr benötigt
- Die Namen der Klassen sind nicht mehr 'Case Sensitive'

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 50 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye