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

POO: membres et héritage (WD 5.5 -> 7.5)

7 réponses
Avatar
I.G.LOG
Je suis en cours de migration d'un projet important WD5.5 -> 7.5 (puis 8 ?!)
et j'ai des warnings sur l'héritage de classe, certains membres masquant
d'autres comme dans l'exemple qui suit ou j'ai une erreur sur le membre
Reference:

Document est une classe
Ident est un entier
Reference est une chaine
...

CliFac est une classe
un objet Document
Reference est une chaîne
SoldeDu est un monétaire
...

----> Warning : Le membre 'Reference' de la classe 'CliFac' masque le membre
'Reference' de la classe de base 'Document'.
CliFac

De plus sous WD 5.5 on pouvait accéder aux deux membres, soit
CliFac:Reference ou CliFac:Document::Reference (deux doubles-points). En
7.5, j'ai une erreur de compilation. La majorité de mes objets sont-ils à
revoir (et donc tous le code qui en découle) ?

Merci de vos conseils.
P. Hantz

7 réponses

Avatar
Romain PETIT
"I.G.LOG" a formulé ce lundi :

----> Warning : Le membre 'Reference' de la classe 'CliFac' masque le membre
'Reference' de la classe de base 'Document'.



Oui, mais ce n'est qu'un warning.

De plus sous WD 5.5 on pouvait accéder aux deux membres, soit
CliFac:Reference ou CliFac:Document::Reference (deux doubles-points). En
7.5, j'ai une erreur de compilation. La majorité de mes objets sont-ils à
revoir (et donc tous le code qui en découle) ?



Ca marche si tu fais appel à l'objet avec cette synthaxe :

cCliFac est un objet CliFac
cCliFac:Reference = "toto"
cCliFac:Document::Reference = "titi"

Trace(cCliFac:Reference)
Trace(cCliFac:Document::Reference)

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
I.G.LOG
Après différents essais, la syntaxe "cCliFac est un objet CliFac" n'est pas
reconnue sour wd7.5.
L'equivalent du code WD5.5 suivant:
CliFac est une classe
un objet Document
...
devient sous WD 7.5:
CliFac est une classe
Herite de Document
...
Avec cette syntaxe, tout semble renter dans l'ordre (sous réserve de tests
!)
Merci pour la réponse
PS: migration pas aisée; plus qu'à me retrousser les manches !

"Romain PETIT" a écrit dans le message de
news:
"I.G.LOG" a formulé ce lundi :

> ----> Warning : Le membre 'Reference' de la classe 'CliFac' masque le


membre
> 'Reference' de la classe de base 'Document'.

Oui, mais ce n'est qu'un warning.

> De plus sous WD 5.5 on pouvait accéder aux deux membres, soit
> CliFac:Reference ou CliFac:Document::Reference (deux doubles-points). En
> 7.5, j'ai une erreur de compilation. La majorité de mes objets sont-ils


à
> revoir (et donc tous le code qui en découle) ?

Ca marche si tu fais appel à l'objet avec cette synthaxe :

cCliFac est un objet CliFac
cCliFac:Reference = "toto"
cCliFac:Document::Reference = "titi"

Trace(cCliFac:Reference)
Trace(cCliFac:Document::Reference)

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



Avatar
Romain PETIT
"I.G.LOG" avait écrit le 23/12/2003 :
Après différents essais, la syntaxe "cCliFac est un objet CliFac" n'est pas
reconnue sour wd7.5.
L'equivalent du code WD5.5 suivant:
CliFac est une classe
un objet Document
...



C'est bizarre, tu es sous quelle version de WD7.5.
Chez moi pas de soucis avec cette syntaxe pour l'héritage (WD7.5-206g)
:
C'est d'ailleurs spécifié dans l'aide :

<Extrait de l'aide>

Héritage de classe
[...]
Syntaxe conservée pour compatibilité
<NomClasseDérivée> est une classe
[PRIVE, PROTEGE, PUBLIC]
Un objet <NomClasseAncêtre>
<Nom Membre classe Dérivée> est <Type du membre>
...
FIN

<Extrait de l'aide>

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
I.G.LOG
Suis en 7.5-206h (version de la dernière lst).
La syntaxe
CliFac est une classe
un objet Document
est en effet conservée mais génère des erreurs de compilation sur les ::
(message ":: interdits") alors qu'avec la déclaration "Herite de " je n'ai
plus ce message (d'après mes premieres constatations, sans plus de tests)
Par contre la syntaxe "CliFac est un objet <objet>" est rejetée !


"Romain PETIT" a écrit dans le message de
news:
"I.G.LOG" avait écrit le 23/12/2003 :
> Après différents essais, la syntaxe "cCliFac est un objet CliFac" n'est


pas
> reconnue sour wd7.5.
> L'equivalent du code WD5.5 suivant:
> CliFac est une classe
> un objet Document
> ...

C'est bizarre, tu es sous quelle version de WD7.5.
Chez moi pas de soucis avec cette syntaxe pour l'héritage (WD7.5-206g)
:
C'est d'ailleurs spécifié dans l'aide :
> <Extrait de l'aide>

Héritage de classe
[...]
Syntaxe conservée pour compatibilité
<NomClasseDérivée> est une classe
[PRIVE, PROTEGE, PUBLIC]
Un objet <NomClasseAncêtre>
<Nom Membre classe Dérivée> est <Type du membre>
...
FIN

<Extrait de l'aide>

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



Avatar
Romain PETIT
"I.G.LOG" a couché sur son écran :
Suis en 7.5-206h (version de la dernière lst).
La syntaxe
CliFac est une classe
un objet Document
est en effet conservée mais génère des erreurs de compilation sur les ::
(message ":: interdits") alors qu'avec la déclaration "Herite de " je n'ai
plus ce message (d'après mes premieres constatations, sans plus de tests)
Par contre la syntaxe "CliFac est un objet <objet>" est rejetée !



Avec la 206g je n'ai pas ce problème (à part le warning du membre masqué) :

***** code de la classe cDocument ****
cDocument est une classe
Ident est un entier
Reference est une chaîne
FIN
PROCEDURE Constructeur()
:Reference = "référence Document"


***** code de la classe cCliFac ****
cCliFac est une classe
un objet cDocument
Reference est une chaîne
SoldeDu est un monétaire
FIN
PROCEDURE Constructeur()
:Reference = "référence CLIFAC"


****** code d'un bouton quelconque ****
cF est un objet cCliFac
Trace(cF:Reference)
Trace(cF:cDocument::reference)
// pas de probleme de compilation et les 2 références
// sont bien tracées

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Romain PETIT
Le 23/12/2003, "I.G.LOG" a supposé :
Par contre la syntaxe "CliFac est un objet <objet>" est rejetée !



Ben ça c'est un peu normal puisque tu as déjà une classe qui s'appelle CliFax...
Tu peux faire ça en WD55 ?

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
I.G.LOG
J'avais mal compris. Je pensais que la syntaxe de déclaration de classe
aurait pu être "CliFac est un objet Document"
Au lieu de:
CliFac est une classe
un Objet Document
...
Mais ça, ça empecherais l'héritage multiple !

"Romain PETIT" a écrit dans le message de
news:
Le 23/12/2003, "I.G.LOG" a supposé :
> Par contre la syntaxe "CliFac est un objet <objet>" est rejetée !

Ben ça c'est un peu normal puisque tu as déjà une classe qui s'appelle


CliFax...
Tu peux faire ça en WD55 ?

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