Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1541 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Héritage multiple en Delphi ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Héritage multiple en Delphi ???

n°861209
Stef.D
hip..
Posté le 30-09-2004 à 17:29:45  profilanswer
 

Je sais que l'héritage multiple à proprement parler en delphi n'existe pas, ce qui me parait logique puisque toutes les classes VCL héritent de cette maudite classe TObjet, ce qui induirait des conflits avec l'héritage multiple (multiples définitions)...
Mais bon forcément ça me pose un gros problème, les interfaces c bien sympa mais on peut pas y mettre de code !
 
et donc imaginons que j'ai X classes définit comme suit :
 
MyComboBox = class(TCustomComboBox, IMyData)
MyEdit = class(TCustomEdit, IMyData)
MyListBox = class(TCustomListBox, IMyData)
....
 
L'idée c'est que l'interface IMyData définie des méthodes génériques utilisées dans chacunes de mes classes... certaines de ces méthodes sont identiques pour toutes les classes, d'autres non...
J'aimerais que le code des classes identiques soit donc directement dans l'interface, histoire de pas me taper X copier/coller à chaque modif du code :-/
Mais bon, pas moyen de mettre du code dans une interface donc ma question est la suivante :
Y'a-t-il un moyen de contourner cette limitation de manière propre ? classe abstraite ? ça existe ça en delphi ?
je me vois mal mettre une instance de la classe IMyData dans chaque classe ... ça serait vraiment pas glop :-/
 
merci d'avance pour toute aide :)

mood
Publicité
Posté le 30-09-2004 à 17:29:45  profilanswer
 

n°861229
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-09-2004 à 18:02:44  profilanswer
 

Stef.D a écrit :

cette maudite classe TObjet


 
C'est bien pratique d'avoir un ancêtre commun dans certains cas :o
 

Stef.D a écrit :


J'aimerais que le code des classes identiques soit donc directement dans l'interface, histoire de pas me taper X copier/coller à chaque modif du code :-/
Mais bon, pas moyen de mettre du code dans une interface donc ma question est la suivante :
Y'a-t-il un moyen de contourner cette limitation de manière propre ? classe abstraite ? ça existe ça en delphi ?


 
Je suis pas sûr que ce soit possible malheureusement.
Il n'y a pas de classe abstraite, juste des méthodes de class (class procedure / class function) qui s'appliquent donc à la classe et non à une instance (le Create en est une par exemple).


Message édité par antp le 30-09-2004 à 18:04:06

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°861819
Stef.D
hip..
Posté le 01-10-2004 à 10:25:52  profilanswer
 

Citation :

C'est bien pratique d'avoir un ancêtre commun dans certains cas :o


 
Oui c vrai, et cette classe est bien pratique à plusieurs niveau (l'opérateur IS découle très probablement de l'intégration de cette classe)... mais en contre parti ça alourdit un peu l'appli surtout si comme moi, on utilise les classes même la où une simple structure suffirait... je trouve la manipulation des structures en delphi pas pratique (syntaxiquement surtout).
 

Citation :


Je suis pas sûr que ce soit possible malheureusement.
Il n'y a pas de classe abstraite, juste des méthodes de class (class procedure / class function) qui s'appliquent donc à la classe et non à une instance (le Create en est une par exemple).


 
Arg :-( donc je vais être obligé de ma taper 20 fois le même code :-/
je comprends pas pourquoi certains disent que l'utilisation d'interface permet de rémédier à l'héritage multiple, ça comble une des facettes de l'héritage multiple, mais c'est loin de le remplacer...
 
Merci de ton aide en tout cas :)


Message édité par Stef.D le 01-10-2004 à 10:30:41
n°902832
dreameddea​th
Posté le 19-11-2004 à 15:14:36  profilanswer
 

Pour moi une classe abstraite est une classe qui n'est pas instanciable, car l'une de ses méthodes est abstraite (seul le model est définit).
Pour moi, les interfaces ne permettent pas de remédier complètement à l'héritage multiple : elles permettent seulement d'avoir d'être certain q'une serie de méthode existent pour les classes implémentant l'interface, le code restant à implémenter pour chaque classe... Ca ressemble a l'héritage multiple avec des classes avec que des méthodes abstraites.
SInon pourrait-tu dire ce à quoi te sert ton interface IMyData pour essayer de trouver une façon d'implémenter ça le plus "proprement" possible....


Message édité par dreameddeath le 19-11-2004 à 15:15:25
n°903013
chrisbk
-
Posté le 19-11-2004 à 18:34:08  profilanswer
 

dreameddeath a écrit :

Ca ressemble a l'héritage multiple avec des classes avec que des méthodes abstraites.
SInon pourrait-tu dire ce à quoi te sert ton interface IMyData pour essayer de trouver une façon d'implémenter ça le plus "proprement" possible....


 
point du tout, vu qu'une classe abstraite peut avoir des données membre (et c'est surtout les données qui foutent le bordel dans l'heritage multiple)

n°903464
melancolik
Posté le 20-11-2004 à 14:49:18  profilanswer
 

... ou on peut aussi attendre un peu, et utiliser delphi 2005. Qui devrait ne plus tarder d'ailleurs


Message édité par melancolik le 25-11-2004 à 09:36:15

---------------
http://www.crystalvcl.net
n°903718
antp
Super Administrateur
Champion des excuses bidons
Posté le 20-11-2004 à 21:11:57  profilanswer
 

Ils ont ajouté ça dans Delphi 9 ? :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°903811
zion
Plop
Posté le 21-11-2004 à 00:51:22  profilanswer
 

Passage en coup de vent...
 
Indice: Regarde du côté du "implements", c'est nickel pour utiliser plusieurs interfaces dans une classe en utilisant des objets externes qui chacun implémente une interface.

n°904175
melancolik
Posté le 21-11-2004 à 16:25:33  profilanswer
 

ui ui, z'ont rajouté ca o_o!


Message édité par melancolik le 25-11-2004 à 09:36:04

---------------
http://www.crystalvcl.net
n°904616
dreameddea​th
Posté le 22-11-2004 à 13:12:57  profilanswer
 

chrisbk a écrit :

point du tout, vu qu'une classe abstraite peut avoir des données membre (et c'est surtout les données qui foutent le bordel dans l'heritage multiple)


justement c'est bien pour cela que je dis que les interfaces ne permettent pas "d'émuler" l'heritage multiple : je dis qu'au mieux les interfaces permettent d'émuler l'héritage multiple de classes qui n'ont QUE DES METHODES ABSTRAITES (et donc pas de données membres).
 
Sinon pour ce qui est delphi 2005 je ne vois pas en quoi il y a de l'héritage multiple (sauf si c'est dans .NET que je ne connais pas...
 
++


Message édité par dreameddeath le 22-11-2004 à 13:14:49
mood
Publicité
Posté le 22-11-2004 à 13:12:57  profilanswer
 

n°904664
antp
Super Administrateur
Champion des excuses bidons
Posté le 22-11-2004 à 14:04:33  profilanswer
 

dreameddeath a écrit :


Sinon pour ce qui est delphi 2005 je ne vois pas en quoi il y a de l'héritage multiple  


 
Tu l'as déjà testé ou quoi ? :D

n°904675
Taz
bisounours-codeur
Posté le 22-11-2004 à 14:11:12  profilanswer
 

Stef.D a écrit :

Je sais que l'héritage multiple à proprement parler en delphi n'existe pas, ce qui me parait logique puisque toutes les classes VCL héritent de cette maudite classe TObjet, ce qui induirait des conflits avec l'héritage multiple (multiples définitions)...

y a des langages qui gèrent ça très bien tu sais

n°907433
melancolik
Posté le 25-11-2004 à 09:33:43  profilanswer
 

Un exemple en delphi 2005....
 
Interfaces may employ multiple inheritance. In the following example, the interface IComboBox inherits from both ITextBox and IListBox:
Interface IControl
   Sub Paint()
End Interface  
 
Interface ITextBox
   Inherits IControl
   Sub SetText([text] As String)
End Interface  
 
Interface IListBox
   Inherits IControl
   Sub SetItems(items() As String)
End Interface  
 
Interface IComboBox
   Inherits ITextBox, IListBox  
End Interface


Message édité par melancolik le 25-11-2004 à 09:35:53

---------------
http://www.crystalvcl.net
n°907436
Taz
bisounours-codeur
Posté le 25-11-2004 à 09:37:12  profilanswer
 

ben c'est des interfaces ça ...

n°907438
chrisbk
-
Posté le 25-11-2004 à 09:40:58  profilanswer
 

oué la, y'a pas de quoi pousser des hauts cris.


---------------
NP: HTTP Error 764 Stupid coder found
n°907503
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-11-2004 à 10:59:09  profilanswer
 

C'est clair, en plus il y a ça déjà depuis plusieurs versions de Delphi :o
 
Et l'exemple, c'est du VB on dirait :heink: (les sub, inherits, as, etc., c'est pas du Delphi)


Message édité par antp le 25-11-2004 à 11:00:23
n°907512
melancolik
Posté le 25-11-2004 à 11:18:10  profilanswer
 

Autant pour moi, ceci concerne bien vb.net, les nouveauté en langage pur delphi sont:
Delphi Language Enhancements
 
Delphi has a new for-in-do statement that you can use to iterate over containers. See the Delphi Language Guide topic Declarations and Statements for more information.  
The compiler now supports function and procedure inlining. See the Delphi Language Guide topic Calling Procedures and Functions for more information.  
The Delphi language has been expanded to include alphabetic and alphanumeric Unicode characters in identifiers. Note: Unicode characters are not allowed in identifiers in published sections of classes, or in types used by published members.  
The language now supports the aggregation of multiple units within a namespace. See the topic Using Namespaces with Delphi for more information.  
The Delphi for .NET compiler now supports dynamically allocated multi-dimensional arrays. See the Delphi Language Guide topic Structured Types for more information.  


---------------
http://www.crystalvcl.net
n°907532
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-11-2004 à 11:37:17  profilanswer
 

"The Delphi language has been expanded to include alphabetic and alphanumeric Unicode characters in identifiers"
 
la VCL supporte pas l'unicode en natif, mais ils foutent de l'unicode dans les identifiants, c'est le monde à l'envers [:kiki]

n°907536
chrisbk
-
Posté le 25-11-2004 à 11:40:52  profilanswer
 

>Delphi has a new for-in-do statement that you can use to iterate over containers
 
c'est trop la mmode du foreach ces tps ci


---------------
NP: HTTP Error 764 Stupid coder found
n°907628
melancolik
Posté le 25-11-2004 à 13:39:11  profilanswer
 

Je suis en train de tester la version 2005 là et première reflexion: 'putain c lourd!', moi qui avait l'habitude de planter delphi en jouant un peu trop avec les allocations et l'assembleur va falloir que je fasse un peu plus attention...
Ensuite, c'est vrai que c'est du pur multi-langage. Dans un sens c'est interessant, c'est du bon boulot... Mais en fait je me dis que si je code en delphi c'était justement pour ne pas coder en c# ou pour .net... Alors bon je ne sais pas trop encore quoi penser...
Ensuite, j'ai essayé de compiler 3 projets coder en delphi 7 et 5 (ou 6 je crois); un des deux en delphi 7 s'est compilé sans problèmes, l'autre a butter sur des utilisations de freemem() qui passe pourtant tres bien dans la version 7. Je souligne aussi que ceux qui utilise les interfaces directdraw risquent d'avoir des soucis de compil'... Le projet en delphi 5/6 est passé correctement. Enfin le compilateur à l'air costaud avec un bon système de debugage c'est le seul truc qui me fait plaisir, avec l'ide sans doute qui est une tite merveille d'intégration. Pour ce qui est de l'aspect de .Net , je ne l'ai pas encore utiliser car pour l'instant ca ne m'interesse pas. Alors je ne sais pas quoi penser de cette version. Pour conclure: technologiquement parlant c bô, mais en fait je trouve pas que ca réponds à mes besoins... Borland m'aurait filé un add-on à delphi 7 avec le nouvel ide et les 5 conneries qu'ils ont rajoute au compilo (bon ok le inline c'est sympa et les supports extnsion cpu natif c'est cool mais bon...) ca m'aurait largement suffit... Et je ne sais pas pour vous mais à 999 euros pour se servir juste du vcl, je trouve ça moyen bof..


---------------
http://www.crystalvcl.net
n°907635
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-11-2004 à 13:47:36  profilanswer
 

999 € c'est la version complète, la mise à jour est à 399 € :o (comme pour l'upgrade vers le 7)

n°907650
melancolik
Posté le 25-11-2004 à 14:07:16  profilanswer
 

C'est la version complete pro, la version complete architect est à 3000 euros...


---------------
http://www.crystalvcl.net
n°907670
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-11-2004 à 14:18:25  profilanswer
 

bah oui mais si t'as le 7 ça te coûte pas 999 € de passer à la la 2005 :o

n°907686
melancolik
Posté le 25-11-2004 à 14:25:26  profilanswer
 

Non mais nul part je n'ai parlé d'une upgrade o_o


---------------
http://www.crystalvcl.net
n°907702
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-11-2004 à 14:33:33  profilanswer
 

Citation :


Borland m'aurait filé un add-on à delphi 7 avec le nouvel ide et les 5 conneries qu'ils ont rajoute au compilo [...] Et je ne sais pas pour vous mais à 999 euros pour se servir juste du vcl, je trouve ça moyen bof..


 
999 € c'est pour le complet, donc s'il est au même prix de D7 je vois pas le problème. Et celui qui a déjà D7 il paiera pas 999 €.

n°907708
melancolik
Posté le 25-11-2004 à 14:40:40  profilanswer
 

C'est peu etre pas clair, mais j'explique par cette phrase que j'aurai préféré un simple add-on a delphi 7 avec quelques mises à jour plutot que la sortie d'une grosse suite logiciel que de toute manière je n'utiliserais pas. Bien sûr ca n'engage que moi.


---------------
http://www.crystalvcl.net
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Héritage multiple en Delphi ???

 

Sujets relatifs
Cherche contrôle Delphi de gestion arborescente d'optionsproblem template et héritage
[Delphi] ShellExecute() qui marche pas.comment recuperer le repertoire partager sous delphi ?
delphi :ShellExecute probleme pour parametrePB avec delphi 6 : delphi se ferme a l'ouverture d'un fichier
Migrer une application delphi 7 en 8delphi : bouton
delphi : une image qui s enfonce comme un bouton qd on clique dessus?delphi 8
Plus de sujets relatifs à : Héritage multiple en Delphi ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR