Différence class / object [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 13-02-2003 à 17:56:31
Si je me souviens bien, l'ambiguité vient du fait que pour définir une classe, Delphi utilise le mot-clé "object"...
Mais tu n'as pas à t'en faire. Quand tu définis un type de données comme étant "object", tu définis une classe. Et quand tu déclares une variable de ce type-là, tu déclares un objet (de cette classe).
Marsh Posté le 13-02-2003 à 17:58:53
Un objet est une instance d'une classe:
Objet := Classe.Create;
Dans le temps on utilisait le mot clé object à la place de class pour les déclarations, mais c'est dépassé.
Marsh Posté le 13-02-2003 à 18:04:27
donc là j'ai déclaré un objet avec un code comme ça
|
donc en fait c'est une classe sauf que j'utilise un mot-clé déprécié ?
Marsh Posté le 13-02-2003 à 18:07:59
En fait les object sont comme des class sauf qu'ils ne descendent pas de TObject, donc pas de constructeur/destructeur par défaut.
D'après la doc vaut mieux pas les utiliser :
Citation : |
en plus ça a l'air chiant à gérer (New/Dispose pour la création/destruction)
Marsh Posté le 13-02-2003 à 18:14:54
les classes Object sont héritées du Pascal, Class est propre à Delphi
les classes Object (donc Pascal) supporte 3 niveaux de confidentialité : private, protected et public
Delphi y ajoute : published et Automated
Marsh Posté le 14-02-2003 à 14:33:12
zion a écrit : |
Donc on peut faire ? :
var
MyPlop: TPlop;
begin
MyPlop.Plop
end;
mais la fonction plop peut bien accéder à FPlop
genre
class function TPlop.Plop: Integer;
begin
result := FPlop
end;
ça fait une classe statique en gros non ?
Marsh Posté le 14-02-2003 à 14:53:15
zion a écrit :
|
m'en parle pas
saloperie de VB
euh donc le seul moyen C celui dont on parlait l'aut jour... instancier ds l'initialise... mais bon C pas top top top, et des fois C chiant de se taper une classe l'initialisation, etc.. mais en même temps C pratique
Donc ton truc C complétement inutile Domage, je croyais avoir mal compris pour le FPlop, mais non
Marsh Posté le 14-02-2003 à 14:57:28
zion a écrit : |
Explicite alors...
un exemple d'utilisation ?
Marsh Posté le 14-02-2003 à 15:05:36
t'as raison j'pige pas, enfin j'vois pas
Edit : pas drôle ta signature
Marsh Posté le 18-02-2003 à 18:06:31
antp a écrit : En fait les object sont comme des class sauf qu'ils ne descendent pas de TObject, donc pas de constructeur/destructeur par défaut. |
???!!!!!
Bertrand Meyer s'en arracherais les cheveux !!!
bon, c'est peut être une définition Delphi...
(alors, tend, j'ouvre mon ti cours d'objet Sophie©)
Classe : "Entité conceptuelle dévrivant un ensemble d'objets et chargée de les générer." En gros, c'est la description de tes objets (comportement (méthodes) et données (attributs))
Objet : "Un objet est une instance, à l'exécution, d'une classe."
Donc, en gros :
var
mon_objet: ma_classe;
begin
// instanciation :
mon_objet := ma_classe.create(tonQLeparametre);
...
end;
pour ce qui est de Delphi, je n'ai jamais utilisé le mot clé Object... mais plutôt :
petit exple sorti de mon dev :
Code :
|
(fait pas attention aux virtual et abstract... , c'est encore une autre histoire : le principe d'héritage et de polymorphisme et les classes abstraites...)
vouala pour ce qui est de la définition plus "universitaire".
Marsh Posté le 18-02-2003 à 18:10:46
(au temps pour moi, antp, j'avais jamais vu le mot clé object)
dweis : n'utilise pas le type "object", c'est SAL.
Marsh Posté le 18-02-2003 à 18:12:21
zion a écrit : |
c'était pas important de connaitre la différence fondamentale entre un objet et une classe ?
pour faire de la POO... ça me parait indispensable...
et ds le topic, j'avais pas compris qu'il parlait des mots clés... alors au tps pour moi...
Marsh Posté le 18-02-2003 à 18:13:55
zion a écrit : |
LOL, je te répondais pas en fait ...
c'était un petit ajout à
Citation : |
que j'avais écrit en regardant la ré&ponse d'antp...
et j'avais pas encore vu ta réponse à ce moment là ))
Marsh Posté le 18-02-2003 à 18:16:46
zion a écrit : |
heu... j'viens de relire... j'vois po.
enfin, bref, j'arrête de polluer.
j'avoue que je me suis un peu précipité pour répondre en voyant la réponse d'antp et sans avoir vraiment compris la question de dweis (j'pensais qu'il avait un pb de concept plus que de mot clés)
mille pardons pour ce dérangement
Marsh Posté le 18-02-2003 à 18:31:31
Moi, j'utilises des object pour definir des objets que je veux allouer sur la pile et non sur le tas. J'utilises class pour tous les autres cas ...
Marsh Posté le 13-02-2003 à 17:40:26
Dans mon bouquin sur le pascal ils parlaient uniquement des object. bon pas de problème, j'ai bien pigé. par contre dans delphi si les objets marchent sans problème, apparement c'est plutot les class qui semblent être utilisées mais le problème c'est que je ne vois pas la différence entre les 2.
si qqun pouvait m'eclaircir un peu ce point...