POO : Je ne comprends plus

Le
Tao
Bonjour à tous

Je dois reprendre un existant et faire une migration windev 5.5 vers
11
Tout se passait bien (malgrès les différentes manipulations à faire. :
bonjour la compatibilité ascendante) jusqu'à ce que je veuille créer
une collection comme on peut en trouver par exemple en java.
En effet, je voulais parcourir une liste d'objet et pouvoir l'itérer
facilement.

Je me suis donc plongé dans la POO en W-Langage. Et là, ô suprise,
c'est quoi cette conception ?
Je ne comprends vraiment plus. L'héritage est complétement caduque (en
tout cas en version 7.5). Un exemple :
J'ai deux objets (SQLValue et Liste) héritant d'un objet
parent(aObject). Je créé 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ù est donc passé le polymorphisme et l'implémentation de base de la
POO ?
Les chti gars de Montpellier ont-ils craqués à ce point ou ai je zapp=
é
un (gros) passage dans mon autoformation sur le sujet.

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)

Merci

Tao
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Romain PETIT
Le #14603901
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é)
Jean-Yves BURLOT
Le #14603831
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
;-)
--
Tao
Le #14603731
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
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
Le #14603721
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é)
Pascal ROY
Le #14603711
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
Le #14603701
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
Le #14603611
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)
Publicité
Poster une réponse
Anonyme