Je dois reprendre un existant et faire une migration windev 5.5 vers
11
Tout se passait bien (malgr=E8s les diff=E9rentes manipulations =E0 faire. :
bonjour la compatibilit=E9 ascendante) jusqu'=E0 ce que je veuille cr=E9er
une collection comme on peut en trouver par exemple en java.
En effet, je voulais parcourir une liste d'objet et pouvoir l'it=E9rer
facilement.
Je me suis donc plong=E9 dans la POO en W-Langage. Et l=E0, =F4 suprise,
c'est quoi cette conception ?
Je ne comprends vraiment plus. L'h=E9ritage est compl=E9tement caduque (en
tout cas en version 7.5). Un exemple :
J'ai deux objets (SQLValue et Liste) h=E9ritant d'un objet
parent(aObject). Je cr=E9=E9 un tableau de aObject dans lequel je veux
mettre des objets enfants. Le compilateur dans ce cas me dit que je ne
peux mettre de SQLValue dans un tableau de aObject.
O=F9 est donc pass=E9 le polymorphisme et l'impl=E9mentation de base de la
POO ?
Les chti gars de Montpellier ont-ils craqu=E9s =E0 ce point ou ai je zapp=
=E9
un (gros) passage dans mon autoformation sur le sujet.
PS : j'ai au passage =E9t=E9 surpris aussi que toutes classes n'h=E9ritaient
pas nativement d'un objet commun (=E9quivalent de la class Object en
java)
Où est donc passé le polymorphisme et l'implémentation de base de la POO ?
Un petit extrait de code ?
PS : j'ai au passage été surpris aussi que toutes classes n'héritaient pas nativement d'un objet commun (équivalent de la class Object en java)
WD n'est pas un langage objet par nature.
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Jean-Yves BURLOT
Romain PETIT a émis l'idée suivante :
Tao a émis l'idée suivante :
Bonjour à tous
Bonsoir,
Où est donc passé le polymorphisme et l'implémentation de base de la POO ?
Un petit extrait de code ?
PS : j'ai au passage été surpris aussi que toutes classes n'héritaient pas nativement d'un objet commun (équivalent de la class Object en java)
WD n'est pas un langage objet par nature.
A+
entierement raison,
c'est un grave manque en sachant que la conception de base de windev est réalisé en c++ et peut etre maintenant en .net Il manque dans les équipes de développement PC-SOFT une ou deux pointure
@+
-- Jean-Yves BURLOT suivre ce lien pour répondre : http://cerbermail.com/?zbQ7wrKUbu ;-) --
Romain PETIT a émis l'idée suivante :
Tao a émis l'idée suivante :
Bonjour à tous
Bonsoir,
Où est donc passé le polymorphisme et l'implémentation de base de la
POO ?
Un petit extrait de code ?
PS : j'ai au passage été surpris aussi que toutes classes n'héritaient
pas nativement d'un objet commun (équivalent de la class Object en
java)
WD n'est pas un langage objet par nature.
A+
entierement raison,
c'est un grave manque en sachant que la conception de base
de windev est réalisé en c++ et peut etre maintenant en .net
Il manque dans les équipes de développement PC-SOFT une ou deux
pointure
@+
--
Jean-Yves BURLOT
suivre ce lien pour répondre :
http://cerbermail.com/?zbQ7wrKUbu
;-)
--
Où est donc passé le polymorphisme et l'implémentation de base de la POO ?
Un petit extrait de code ?
PS : j'ai au passage été surpris aussi que toutes classes n'héritaient pas nativement d'un objet commun (équivalent de la class Object en java)
WD n'est pas un langage objet par nature.
A+
entierement raison,
c'est un grave manque en sachant que la conception de base de windev est réalisé en c++ et peut etre maintenant en .net Il manque dans les équipes de développement PC-SOFT une ou deux pointure
@+
-- Jean-Yves BURLOT suivre ce lien pour répondre : http://cerbermail.com/?zbQ7wrKUbu ;-) --
Tao
Voici un exemple :
aObject est une classe --- ValueObject est une classe Hérite de aObject ---- tab est un tableau de 10 aObject o1 est un ValueObject tab[0] = o1 --
La dernière ligne de code provoque une erreur au niveau de la compilation. donc ok le W-Langage n'est pas un langage objet nativement. En revanche, les fonctionnalités en terme de POO sont bien publiées et font partie de la promotion active du produit. Je ne me considère pas comme expert, mais ce genre de notion fait partie, selon moi, de la base indispendable à une approche orientée objet.
Y'a-t-il donc un moyen de réaliser des collections en Windev ? Je voudrais en fait avoir un tableau dont je ne connais pas la taille finale qui puisse être manipulé facilement (ajout/suppression/ itération).
Merci Tao
On 20 sep, 21:04, Romain PETIT wrote:
Tao a émis l'idée suivante :
> Bonjour à tous
Bonsoir,
> Où est donc passé le polymorphisme et l'implémentation de base de la > POO ?
Un petit extrait de code ?
> PS : j'ai au passage été surpris aussi que toutes classes n'hérit aient > pas nativement d'un objet commun (équivalent de la class Object en > java)
WD n'est pas un langage objet par nature.
A+
-- Romain PETIThttp://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Voici un exemple :
aObject est une classe
---
ValueObject est une classe
Hérite de aObject
----
tab est un tableau de 10 aObject
o1 est un ValueObject
tab[0] = o1
--
La dernière ligne de code provoque une erreur au niveau de la
compilation.
donc ok le W-Langage n'est pas un langage objet nativement. En
revanche, les fonctionnalités en terme de POO sont bien publiées et
font partie de la promotion active du produit. Je ne me considère pas
comme expert, mais ce genre de notion fait partie, selon moi, de la
base indispendable à une approche orientée objet.
Y'a-t-il donc un moyen de réaliser des collections en Windev ? Je
voudrais en fait avoir un tableau dont je ne connais pas la taille
finale qui puisse être manipulé facilement (ajout/suppression/
itération).
Merci
Tao
On 20 sep, 21:04, Romain PETIT <Vo...@Signature.fin> wrote:
Tao a émis l'idée suivante :
> Bonjour à tous
Bonsoir,
> Où est donc passé le polymorphisme et l'implémentation de base de la
> POO ?
Un petit extrait de code ?
> PS : j'ai au passage été surpris aussi que toutes classes n'hérit aient
> pas nativement d'un objet commun (équivalent de la class Object en
> java)
WD n'est pas un langage objet par nature.
A+
--
Romain PETIThttp://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
aObject est une classe --- ValueObject est une classe Hérite de aObject ---- tab est un tableau de 10 aObject o1 est un ValueObject tab[0] = o1 --
La dernière ligne de code provoque une erreur au niveau de la compilation. donc ok le W-Langage n'est pas un langage objet nativement. En revanche, les fonctionnalités en terme de POO sont bien publiées et font partie de la promotion active du produit. Je ne me considère pas comme expert, mais ce genre de notion fait partie, selon moi, de la base indispendable à une approche orientée objet.
Y'a-t-il donc un moyen de réaliser des collections en Windev ? Je voudrais en fait avoir un tableau dont je ne connais pas la taille finale qui puisse être manipulé facilement (ajout/suppression/ itération).
Merci Tao
On 20 sep, 21:04, Romain PETIT wrote:
Tao a émis l'idée suivante :
> Bonjour à tous
Bonsoir,
> Où est donc passé le polymorphisme et l'implémentation de base de la > POO ?
Un petit extrait de code ?
> PS : j'ai au passage été surpris aussi que toutes classes n'hérit aient > pas nativement d'un objet commun (équivalent de la class Object en > java)
WD n'est pas un langage objet par nature.
A+
-- Romain PETIThttp://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Romain PETIT
Tao a émis l'idée suivante :
Voici un exemple :
aObject est une classe --- ValueObject est une classe Hérite de aObject ---- tab est un tableau de 10 aObject o1 est un ValueObject tab[0] = o1 --
Il faut jouer avec les objets *dynamiques* pour pouvoir faire ça : (j'ai ajouté un membre public (chaine) "MonMembre" à aOject)
MonTableau est un tableau dynamique de 10 objets dynamiques MonTableau[1] = allouer un aObjet
o1 est un objet dynamique o1 = allouer un ValueObjet o1:MonMembre = "toto"
MonTableau[1] = o1
Trace(MonTableau[1]:MonMembre) // donne bien "toto"
La dernière ligne de code provoque une erreur au niveau de la compilation. donc ok le W-Langage n'est pas un langage objet nativement. En revanche, les fonctionnalités en terme de POO sont bien publiées et font partie de la promotion active du produit.
Ahem...il faut souvent bricoler...
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Tao a émis l'idée suivante :
Voici un exemple :
aObject est une classe
---
ValueObject est une classe
Hérite de aObject
----
tab est un tableau de 10 aObject
o1 est un ValueObject
tab[0] = o1
--
Il faut jouer avec les objets *dynamiques* pour pouvoir faire ça :
(j'ai ajouté un membre public (chaine) "MonMembre" à aOject)
MonTableau est un tableau dynamique de 10 objets dynamiques
MonTableau[1] = allouer un aObjet
o1 est un objet dynamique
o1 = allouer un ValueObjet
o1:MonMembre = "toto"
MonTableau[1] = o1
Trace(MonTableau[1]:MonMembre) // donne bien "toto"
La dernière ligne de code provoque une erreur au niveau de la
compilation.
donc ok le W-Langage n'est pas un langage objet nativement. En
revanche, les fonctionnalités en terme de POO sont bien publiées et
font partie de la promotion active du produit.
Ahem...il faut souvent bricoler...
A+
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
aObject est une classe --- ValueObject est une classe Hérite de aObject ---- tab est un tableau de 10 aObject o1 est un ValueObject tab[0] = o1 --
Il faut jouer avec les objets *dynamiques* pour pouvoir faire ça : (j'ai ajouté un membre public (chaine) "MonMembre" à aOject)
MonTableau est un tableau dynamique de 10 objets dynamiques MonTableau[1] = allouer un aObjet
o1 est un objet dynamique o1 = allouer un ValueObjet o1:MonMembre = "toto"
MonTableau[1] = o1
Trace(MonTableau[1]:MonMembre) // donne bien "toto"
La dernière ligne de code provoque une erreur au niveau de la compilation. donc ok le W-Langage n'est pas un langage objet nativement. En revanche, les fonctionnalités en terme de POO sont bien publiées et font partie de la promotion active du produit.
Ahem...il faut souvent bricoler...
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Pascal ROY
Romain PETIT a écrit :
Tao a émis l'idée suivante :
Voici un exemple :
aObject est une classe --- ValueObject est une classe Hérite de aObject ---- tab est un tableau de 10 aObject o1 est un ValueObject tab[0] = o1 --
Il faut jouer avec les objets *dynamiques* pour pouvoir faire ça : (j'ai ajouté un membre public (chaine) "MonMembre" à aOject)
MonTableau est un tableau dynamique de 10 objets dynamiques MonTableau[1] = allouer un aObjet
o1 est un objet dynamique o1 = allouer un ValueObjet o1:MonMembre = "toto"
MonTableau[1] = o1
Trace(MonTableau[1]:MonMembre) // donne bien "toto"
La dernière ligne de code provoque une erreur au niveau de la compilation. donc ok le W-Langage n'est pas un langage objet nativement. En revanche, les fonctionnalités en terme de POO sont bien publiées et font partie de la promotion active du produit.
Ahem...il faut souvent bricoler...
A+
En fait c'est pas tout a fait du bricolage, c'est plutot que Windev gère les objets "a l'ancienne" alors que tous les langages modernes gèrent les objets de manière dynamique implicitement.
Pour que la POO puisse etre polymorphe, les objets doivent être dynamiques et non statiques. En l'ecrivant, ca parait logique, non ? ;-)
-- Pascal ROY (Service Informatique - SODALEC)
Romain PETIT a écrit :
Tao a émis l'idée suivante :
Voici un exemple :
aObject est une classe
---
ValueObject est une classe
Hérite de aObject
----
tab est un tableau de 10 aObject
o1 est un ValueObject
tab[0] = o1
--
Il faut jouer avec les objets *dynamiques* pour pouvoir faire ça :
(j'ai ajouté un membre public (chaine) "MonMembre" à aOject)
MonTableau est un tableau dynamique de 10 objets dynamiques
MonTableau[1] = allouer un aObjet
o1 est un objet dynamique
o1 = allouer un ValueObjet
o1:MonMembre = "toto"
MonTableau[1] = o1
Trace(MonTableau[1]:MonMembre) // donne bien "toto"
La dernière ligne de code provoque une erreur au niveau de la
compilation.
donc ok le W-Langage n'est pas un langage objet nativement. En
revanche, les fonctionnalités en terme de POO sont bien publiées et
font partie de la promotion active du produit.
Ahem...il faut souvent bricoler...
A+
En fait c'est pas tout a fait du bricolage, c'est plutot que
Windev gère les objets "a l'ancienne" alors que tous les
langages modernes gèrent les objets de manière dynamique
implicitement.
Pour que la POO puisse etre polymorphe, les objets doivent
être dynamiques et non statiques. En l'ecrivant, ca parait
logique, non ? ;-)
aObject est une classe --- ValueObject est une classe Hérite de aObject ---- tab est un tableau de 10 aObject o1 est un ValueObject tab[0] = o1 --
Il faut jouer avec les objets *dynamiques* pour pouvoir faire ça : (j'ai ajouté un membre public (chaine) "MonMembre" à aOject)
MonTableau est un tableau dynamique de 10 objets dynamiques MonTableau[1] = allouer un aObjet
o1 est un objet dynamique o1 = allouer un ValueObjet o1:MonMembre = "toto"
MonTableau[1] = o1
Trace(MonTableau[1]:MonMembre) // donne bien "toto"
La dernière ligne de code provoque une erreur au niveau de la compilation. donc ok le W-Langage n'est pas un langage objet nativement. En revanche, les fonctionnalités en terme de POO sont bien publiées et font partie de la promotion active du produit.
Ahem...il faut souvent bricoler...
A+
En fait c'est pas tout a fait du bricolage, c'est plutot que Windev gère les objets "a l'ancienne" alors que tous les langages modernes gèrent les objets de manière dynamique implicitement.
Pour que la POO puisse etre polymorphe, les objets doivent être dynamiques et non statiques. En l'ecrivant, ca parait logique, non ? ;-)
-- Pascal ROY (Service Informatique - SODALEC)
Romain PETIT
Pascal ROY a émis l'idée suivante :
En fait c'est pas tout a fait du bricolage, c'est plutot que Windev gère les objets "a l'ancienne" alors que tous les langages modernes gèrent les objets de manière dynamique implicitement.
Il y a quand même quelques lacunes... - pas de surdéfinition (avoir plusieurs constructeurs ou plusieurs méthodes de même nom dans une classe mais avec des signatures différentes) - pas de notion d'interface (des "contrats à remplir" pour toute classe implémentant une classe interface)
Et puis : - le debogage est risqué (en tout cas en 7.5, le déboggueur a du mal et plante lamentablement parfois avec les procédures virtuelles et certains paramètres) - l'éditeur (le 7.5) n'est pas conçu pour la POO, ca se voit..
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Pascal ROY a émis l'idée suivante :
En fait c'est pas tout a fait du bricolage, c'est plutot que
Windev gère les objets "a l'ancienne" alors que tous les
langages modernes gèrent les objets de manière dynamique
implicitement.
Il y a quand même quelques lacunes...
- pas de surdéfinition (avoir plusieurs constructeurs ou plusieurs
méthodes de même nom dans une classe mais avec des signatures
différentes)
- pas de notion d'interface (des "contrats à remplir" pour toute classe
implémentant une classe interface)
Et puis :
- le debogage est risqué (en tout cas en 7.5, le déboggueur a du mal et
plante lamentablement parfois avec les procédures virtuelles et
certains paramètres)
- l'éditeur (le 7.5) n'est pas conçu pour la POO, ca se voit..
A+
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
En fait c'est pas tout a fait du bricolage, c'est plutot que Windev gère les objets "a l'ancienne" alors que tous les langages modernes gèrent les objets de manière dynamique implicitement.
Il y a quand même quelques lacunes... - pas de surdéfinition (avoir plusieurs constructeurs ou plusieurs méthodes de même nom dans une classe mais avec des signatures différentes) - pas de notion d'interface (des "contrats à remplir" pour toute classe implémentant une classe interface)
Et puis : - le debogage est risqué (en tout cas en 7.5, le déboggueur a du mal et plante lamentablement parfois avec les procédures virtuelles et certains paramètres) - l'éditeur (le 7.5) n'est pas conçu pour la POO, ca se voit..
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Pascal ROY
Romain PETIT a écrit :
Pascal ROY a émis l'idée suivante :
En fait c'est pas tout a fait du bricolage, c'est plutot que Windev gère les objets "a l'ancienne" alors que tous les langages modernes gèrent les objets de manière dynamique implicitement.
Il y a quand même quelques lacunes... - pas de surdéfinition (avoir plusieurs constructeurs ou plusieurs méthodes de même nom dans une classe mais avec des signatures différentes) - pas de notion d'interface (des "contrats à remplir" pour toute classe implémentant une classe interface)
Et puis : - le debogage est risqué (en tout cas en 7.5, le déboggueur a du mal et plante lamentablement parfois avec les procédures virtuelles et certains paramètres) - l'éditeur (le 7.5) n'est pas conçu pour la POO, ca se voit..
A+
He ! J'ai pas dit que c'était parfait ! :-) Non, loin de là, en effet. Mais je donnais juste l'explication du pourquoi du comment le polymorphisme exigeait des objets dynamiques en Windev et pas ailleurs :-)
Mais c'est clair que la POO de PCSoft ca reste tres limite et pas tres bien gérée. Il n'y a qu'a voir leur implémentation de code des objets (fenetre, bouton, tables, ...), on est loin d'un langage objet !
-- Pascal ROY (Service Informatique - SODALEC)
Romain PETIT a écrit :
Pascal ROY a émis l'idée suivante :
En fait c'est pas tout a fait du bricolage, c'est plutot que
Windev gère les objets "a l'ancienne" alors que tous les
langages modernes gèrent les objets de manière dynamique
implicitement.
Il y a quand même quelques lacunes...
- pas de surdéfinition (avoir plusieurs constructeurs ou plusieurs
méthodes de même nom dans une classe mais avec des signatures différentes)
- pas de notion d'interface (des "contrats à remplir" pour toute classe
implémentant une classe interface)
Et puis :
- le debogage est risqué (en tout cas en 7.5, le déboggueur a du mal et
plante lamentablement parfois avec les procédures virtuelles et certains
paramètres)
- l'éditeur (le 7.5) n'est pas conçu pour la POO, ca se voit..
A+
He ! J'ai pas dit que c'était parfait ! :-)
Non, loin de là, en effet. Mais je donnais juste
l'explication du pourquoi du comment le polymorphisme
exigeait des objets dynamiques en Windev et pas ailleurs :-)
Mais c'est clair que la POO de PCSoft ca reste tres limite
et pas tres bien gérée.
Il n'y a qu'a voir leur implémentation de code des objets
(fenetre, bouton, tables, ...), on est loin d'un langage objet !
En fait c'est pas tout a fait du bricolage, c'est plutot que Windev gère les objets "a l'ancienne" alors que tous les langages modernes gèrent les objets de manière dynamique implicitement.
Il y a quand même quelques lacunes... - pas de surdéfinition (avoir plusieurs constructeurs ou plusieurs méthodes de même nom dans une classe mais avec des signatures différentes) - pas de notion d'interface (des "contrats à remplir" pour toute classe implémentant une classe interface)
Et puis : - le debogage est risqué (en tout cas en 7.5, le déboggueur a du mal et plante lamentablement parfois avec les procédures virtuelles et certains paramètres) - l'éditeur (le 7.5) n'est pas conçu pour la POO, ca se voit..
A+
He ! J'ai pas dit que c'était parfait ! :-) Non, loin de là, en effet. Mais je donnais juste l'explication du pourquoi du comment le polymorphisme exigeait des objets dynamiques en Windev et pas ailleurs :-)
Mais c'est clair que la POO de PCSoft ca reste tres limite et pas tres bien gérée. Il n'y a qu'a voir leur implémentation de code des objets (fenetre, bouton, tables, ...), on est loin d'un langage objet !