Site Announcements

Liebe Gäste des Forums, wir freuen uns, dass ihr zu uns gelangt seid.
Windev ist eine sehr umfangreiche und starke Entwicklerumgebung für Anwendungen unter Windows, Linux und Internetapplikationen inkl. Mobile.
Hier sind Antworten und Anregungen dazu zu finden!
Möchtest du aktiv mitschreiben? Dann melde dich durch Klick auf den Text "Registrieren" hier rechts oberhalb an.

Zuweisungen von Klassen

Alle Themen rund um die Erstellung von Programmen

Re: Zuweisungen von Klassen

Beitragvon FDominicus » 3. Juli 2017, 13:16

Nun ich habe genau das gefunden was funktioniert (als einziges)
AClass is a Class

END

PROCEDURE Constructor()


PROCEDURE Destructor()


PROCEDURE run()
Trace("AClass.run")



Dann die BClass

BClass is a Class
inherits AClass
END

PROCEDURE Constructor()


PROCEDURE Destructor()


// Redefinition of AClass.run method
PROCEDURE run()
Trace("BClass.run")


Nun kann ich zumindest diese einem anderen Objekt zuwweisen:
oTest is object dynamic
oTest = new AClass()
oTest.run()
oTest = new BClass()
oTest.run()

Genau das ergibt zumindest die richtigen Ausgaben. Und vor allem kann ich oTest AClass und BClass zuweisen.

Was ich will ist ganz klar. Ich implementiere einen Algorithmus. In diesem kann ich dann die einzelnen Prozeduren so überschreiben, daß es für ein bestimmes Objekt paßt. Bei mir aktuell geht es um die Kommunikation mit einer Waage. Eine Systec Waage hat ein anderes Programmiermodell als eine Wöhrle. Ich kann aber die Gemeinsamkeiten in einer Oberklasse herausarbeiten in dieser wird dann je nach aktuelle Waage eben das Systec oder Wöhrle Protokoll abgespult und das geht nur auf die oben angeführte Weise. Variant kann man dafür anscheinend nicht benutzen.

Offensichtlich geht es auch mit oAClass is Aclass dynamic. So das W-Language Zauberwort scheint hier dynamic zu sein....
FDominicus
Junior Member
 
Beiträge: 21
Registriert: 9. Mai 2015, 08:19
Has thanked: 0 time
Have thanks: 0 time

Re: Zuweisungen von Klassen

Beitragvon Lewi » 3. Juli 2017, 18:41

Eine Variable als 2x als Objekt zu deklarieren ohne das sie auf "null" gesetzt wird, halte ich persönlich für einen schlechten Programmstil und es kann im Weiten zu "Speicher-Lecks" führen. In C z.B. sollte ein Objekt mit ::Delete gelöscht werden - damit der Speicherbereich durch den Garbage-Colector wieder frei gegeben wird (Bereinigung des Stacks bzw, Heaps)- um dann die gleiche Variable auf ein anderes Objekt zu referenzieren. Dies gilt insbesondere, wenn mit dynamischen Arrays gearbeitet wird.

In WinDev würde ich in diesem Sinne vorgehen und ein
Code: Alles auswählen
oTest = NULL
einfügen.

Mir ist immer noch nicht deutlich geworden, warum die OOP-Fähigkeiten von WinDev "armselig" sind. Dein angeführtes Beispiel ist diesbezüglich nicht schlüssig und auch "kontraproduktiv".

Gruß, Olaf
Lewi
Member
 
Beiträge: 74
Registriert: 3. September 2010, 14:45
Wohnort: Hamburg
Has thanked: 0 time
Have thanks: 1 time

Re: Zuweisungen von Klassen

Beitragvon FDominicus » 10. Juli 2017, 10:08

Nun ich habe geschrieben was das "Zauberwort" war: dynamic. Damit bekomme ich genau was ich in anderen OO-Sprachen auch bekomme. Das war mir aber so nicht ersichtlich. Hätte es aber sein können den in C ++ ist es eben auch ein Unterschiede ob man Class * pointerToClass hat oder nicht. Dynamic ist dafür offensichtlich der Name in W-Language.

Und das macht nun Polymorphismus und polymorphe Zuweisungen möglich....
FDominicus
Junior Member
 
Beiträge: 21
Registriert: 9. Mai 2015, 08:19
Has thanked: 0 time
Have thanks: 0 time

Re: Zuweisungen von Klassen

Beitragvon FDominicus » 10. Juli 2017, 10:19

Lewi hat geschrieben:Eine Variable als 2x als Objekt zu deklarieren ohne das sie auf "null" gesetzt wird, halte ich persönlich für einen schlechten Programmstil und es kann im Weiten zu "Speicher-Lecks" führen. In C z.B. sollte ein Objekt mit ::Delete gelöscht werden - damit der Speicherbereich durch den Garbage-Colector wieder frei gegeben wird (Bereinigung des Stacks bzw, Heaps)- um dann die gleiche Variable auf ein anderes Objekt zu referenzieren. Dies gilt insbesondere, wenn mit dynamischen Arrays gearbeitet wird.

In WinDev würde ich in diesem Sinne vorgehen und ein
Code: Alles auswählen
oTest = NULL
einfügen.

Mir ist immer noch nicht deutlich geworden, warum die OOP-Fähigkeiten von WinDev "armselig" sind. Dein angeführtes Beispiel ist diesbezüglich nicht schlüssig und auch "kontraproduktiv".

Gruß, Olaf


Ich denke die W-Language hat einen Garbage Collector, delete ist für spezielle "Aufräumaktionen", ist aber nach meinem Verständnis nicht nötig es explizit aufzurufen. Definitiv eine der großen Vorteile der W-Language. Sie ist halt schon speziell, m..E. war es gar nicht nötig die W-Language zu erfinden. Da hätten andere existierende durchaus schon gereicht. Ich bin jetzt aber erst mal beruhigt, weil man W-Language doch als "vernünftige" OO-Sprache benutzen kann ohne die Assignments zwischen Vorgänger und Nachfolger wäre es der eine Mist gewesen und eine Mogelpackung. Eine OO-Sprache muß das haben.
FDominicus
Junior Member
 
Beiträge: 21
Registriert: 9. Mai 2015, 08:19
Has thanked: 0 time
Have thanks: 0 time

Vorherige

Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast