Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

POO : Je ne comprends plus

7 réponses
Avatar
Tao
Bonjour =E0 tous

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)

Merci

Tao

7 réponses

Avatar
Romain PETIT
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+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
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
;-)
--
Avatar
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é)


Avatar
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é)
Avatar
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)
Avatar
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é)
Avatar
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)