WD8 / POO: au secours !!!!

Le
I.G.LOG
Je viens de télécharger la dernière version de WD 8 (814i) et j'ai ntoujours
warnings et plantages sur le code suivant:

// Déclaration
Objet1 est une classe
Designation est une chaine
Fin
Objet2 est une classe
Hérite de objet1
Designation est une chaine // WARNING: membre masque le membre
Designation de Objet1
Fin

// Go
Objet2:Objet1::Designation // j'ai une erreur grave à l'exécution

Sous Windev 5.5, ce code fonctionnait parfaitement. Et je migre le projet
depuis quatre mois !!!
Avez-vous une solution à ce problème sans que je sois obligé de modifier
toutes mes classes ?

PS: quand même pas normal de ne pas pouvoir faire ça. Je vous donne un
exemple "éloquent" d'utilisation:
Articles et Catégories d'articles

// Classe catégorie d'article
Categorie est une classe
Ident est une chaine
Designation est une chaine
fin

// Classe article
Article est une classe
Hérite de Categorie
Ident est une chaine
Reference est une chaine
Designation est une chaine // Warning du compilo
et plante à l'exé
fin
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
I.G.LOG
Le #13417201
Pour ceux que ca interresse, précision après essais.
Le plantage ne survient que dans le cas ou on a passé l'objet à une fonction
avec l'affectation du membre ancetre à une variable, soit:

// Déclaration
Objet1 est une classe
Designation est une chaine
Fin
Objet2 est une classe
Hérite de objet1
Designation est une chaine // WARNING: membre masque le membre
Designation de Objet1
Fin



// Programme test
lObj est un Objet2

lObj:Objet1:Designation = "Titi"
lObj:Designation = "Toto"
Essai(lObj)
RETOUR


PROCEDURE Essai(pObj)

lDesign est une chaine

info(pObj:Objet1::Designation) // OK !
lDesign = pObj:Objet1::Designation // ERREUR grave à l'exécution !!!!
Pierre-Yves TAVERNIER
Le #13417181
Bonjour,

Pourquoi as tu bessoin de redéfinir le membre Designation ?
Pour toi à quoi sert l'héritage ?

Cordialement

PYT

"I.G.LOG" news:c5h8gp$a5m$
Pour ceux que ca interresse, précision après essais.
Le plantage ne survient que dans le cas ou on a passé l'objet à une


fonction
avec l'affectation du membre ancetre à une variable, soit:

// Déclaration
Objet1 est une classe
Designation est une chaine
Fin
Objet2 est une classe
Hérite de objet1
Designation est une chaine // WARNING: membre masque le membre
Designation de Objet1
Fin



// Programme test
lObj est un Objet2

lObj:Objet1:Designation = "Titi"
lObj:Designation = "Toto"
Essai(lObj)
RETOUR


PROCEDURE Essai(pObj)

lDesign est une chaine

info(pObj:Objet1::Designation) // OK !
lDesign = pObj:Objet1::Designation // ERREUR grave à l'exécution !!!!




elecoest
Le #13417131
"Pierre-Yves TAVERNIER" message de news: 407c3192$0$17490$

Pourquoi as tu bessoin de redéfinir le membre Designation ?



Je me suis posé la même question.

Pour toi à quoi sert l'héritage ?



A lui de répondre ;-)

Je ne pense pas qu'il veuille surcharger le membre désignation (c'est normal
que WD7.5 passe en warning, pour moi on surcharge une méthode, pas un
membre) mais bien utiliser les 2 membres Désignation, un pour la catégorie,
un pour son produit.

Emmanuel


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.618 / Virus Database: 397 - Release Date: 09/03/2004
Pierre-Yves TAVERNIER
Le #13417121
En relisant sont exemple, il doit confondre héritage (est une sorte de) et
agregation (appartient à) :

A lui de nous expliquer ce qu'il veut faire.

PYT
Romain PETIT
Le #13417101
Pierre-Yves TAVERNIER avait soumis l'idée :

A lui de nous expliquer ce qu'il veut faire.



A mon avis il veut simplement pouvoir migrer sans devoir réécrire ses
classes WD55 (codées bizarrement il est vrai)... ce qui risque de
s'avérer difficile.

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
I.G.LOG
Le #13417081
Bonjour à tous,
Je veux simplement gérer les désignations de l'article et de sa catégorie.
En effet, la notion est plus agrégation (appartient à) que héritage (est une
sorte de).
Mais comment modéliser ce concept. (en s'appuyant sur l'expemple Article -
Catégorie d'article)

"Romain PETIT" news:
Pierre-Yves TAVERNIER avait soumis l'idée :

> A lui de nous expliquer ce qu'il veut faire.

A mon avis il veut simplement pouvoir migrer sans devoir réécrire ses
classes WD55 (codées bizarrement il est vrai)... ce qui risque de
s'avérer difficile.

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Romain PETIT
Le #13417071
I.G.LOG a formulé la demande :
Bonjour à tous,



Bonjour,

Je veux simplement gérer les désignations de l'article et de sa catégorie.
En effet, la notion est plus agrégation (appartient à) que héritage (est une
sorte de).
Mais comment modéliser ce concept. (en s'appuyant sur l'expemple Article -
Catégorie d'article)



Pourquoi ne pas définir un membre spécifique de la classe héritée ?
(évidemment tu vas devoir remplacer du code...)

// Classe catégorie d'article
Categorie est une classe
Ident est une chaine
Designation est une chaine
fin

// Classe article
Article est une classe
Hérite de Categorie
IdentArticle est une chaine
ReferenceArticle est une chaine
DesignationArticle est une chaine
fin

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
I.G.LOG
Le #13417031
J'avais bien pensé à ça pour régler le problème. Mais il faut que je modifie
toutes les classes !!!
Je trouve que les membres de classes portant le même nom que la rubrique du
fichier était bien "parlant" et j'ai donc utilisé la possibilité de WD5.5
d'accès grace au double deux points (::) Je ne vois plus leur interet si on
nomme les membres différemment.
Il me reste donc encore pas mal de boulot pour migrer ce projet...
Merci à tous

"Romain PETIT" news:
I.G.LOG a formulé la demande :
> Bonjour à tous,

Bonjour,

> Je veux simplement gérer les désignations de l'article et de sa


catégorie.
> En effet, la notion est plus agrégation (appartient à) que héritage (est


une
> sorte de).
> Mais comment modéliser ce concept. (en s'appuyant sur l'expemple


Article -
> Catégorie d'article)

Pourquoi ne pas définir un membre spécifique de la classe héritée ?
(évidemment tu vas devoir remplacer du code...)

// Classe catégorie d'article
Categorie est une classe
Ident est une chaine
Designation est une chaine
fin

// Classe article
Article est une classe
Hérite de Categorie
IdentArticle est une chaine
ReferenceArticle est une chaine
DesignationArticle est une chaine
fin

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Alain Derome
Le #13416871
Bonjour,

> > Mais comment modéliser ce concept. (en s'appuyant sur l'expemple
Article -
> > Catégorie d'article)
>
> Pourquoi ne pas définir un membre spécifique de la classe héritée ?
> (évidemment tu vas devoir remplacer du code...)
>
> // Classe catégorie d'article
> Categorie est une classe
> Ident est une chaine
> Designation est une chaine
> fin
>
> // Classe article
> Article est une classe
> Hérite de Categorie
> IdentArticle est une chaine
> ReferenceArticle est une chaine
> DesignationArticle est une chaine
> fin



J'avais bien pensé à ça pour régler le problème. Mais il faut que je
modifie toutes les classes !!!



Pour cet exercice de da haute voltige, je vous conseille de renommer les
2 membres Designation: DesignationCategorie et DesignationArticle.
WinDev vous signalera alors les erreurs à la compilation.

Si l'un de ces membres continue à s'appeler Designation, vous risquez de
détecter vos erreurs seulement à l'exécution ...


Amicalement,

Alain Derôme
I.G.LOG
Le #13416841
Je vais essayer ça (beaucoup de boulot). Mais je me repete: si ce n'est pour
accéder aux membres de classe ancetre, a quoi sert donc le double-point (::)
?
Mon problème n'est pas réglé (du moins simplement).
Merci à tous

"Alain Derome" news:c5iv1q$t2o$
Bonjour,

> > > Mais comment modéliser ce concept. (en s'appuyant sur l'expemple
> Article -
> > > Catégorie d'article)
> >
> > Pourquoi ne pas définir un membre spécifique de la classe héritée ?
> > (évidemment tu vas devoir remplacer du code...)
> >
> > // Classe catégorie d'article
> > Categorie est une classe
> > Ident est une chaine
> > Designation est une chaine
> > fin
> >
> > // Classe article
> > Article est une classe
> > Hérite de Categorie
> > IdentArticle est une chaine
> > ReferenceArticle est une chaine
> > DesignationArticle est une chaine
> > fin

> J'avais bien pensé à ça pour régler le problème. Mais il faut que je
> modifie toutes les classes !!!

Pour cet exercice de da haute voltige, je vous conseille de renommer les
2 membres Designation: DesignationCategorie et DesignationArticle.
WinDev vous signalera alors les erreurs à la compilation.

Si l'un de ces membres continue à s'appeler Designation, vous risquez de
détecter vos erreurs seulement à l'exécution ...


Amicalement,

Alain Derôme





Publicité
Poster une réponse
Anonyme