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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  [Delphi] Différence class / object

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi] Différence class / object

n°308590
dweis
Posté le 13-02-2003 à 17:40:26  profilanswer
 

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...

mood
Publicité
Posté le 13-02-2003 à 17:40:26  profilanswer
 

n°308603
BifaceMcLe​OD
The HighGlandeur
Posté le 13-02-2003 à 17:56:31  profilanswer
 

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).


Message édité par BifaceMcLeOD le 13-02-2003 à 17:58:24
n°308604
antp
Super Administrateur
Champion des excuses bidons
Posté le 13-02-2003 à 17:58:53  profilanswer
 

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é.


Message édité par antp le 13-02-2003 à 17:59:27
n°308610
dweis
Posté le 13-02-2003 à 18:04:27  profilanswer
 

donc là j'ai déclaré un objet avec un code comme ça


    CCuboid = object
      m_pD3DDevice : IDIRECT3DDEVICE8;
      m_pVertexBuffer : IDIRECT3DVERTEXBUFFER8;


 
donc en fait c'est une classe sauf que j'utilise un mot-clé déprécié ?

n°308616
antp
Super Administrateur
Champion des excuses bidons
Posté le 13-02-2003 à 18:07:59  profilanswer
 

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 :


As an alternative to class types, you can declare object types using the syntax
 
type objectTypeName = object (ancestorObjectType)
 
  memberList
end;
 
where objectTypeName is any valid identifier, (ancestorObjectType) is optional, and memberList declares fields, methods, and properties. If (ancestorObjectType) is omitted, then the new type has no ancestor. Object types cannot have published members.
Since object types do not descend from TObject, they provide no built-in constructors, destructors, or other methods. You can create instances of an object type using the New procedure and destroy them with the Dispose procedure, or you can simply declare variables of an object type, just as you would with records.
 
Object types are supported for backward compatibility only. Their use is not recommended.


 
en plus ça a l'air chiant à gérer :D (New/Dispose pour la création/destruction)

n°308630
taureau
Posté le 13-02-2003 à 18:14:54  profilanswer
 

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
 

n°308641
dweis
Posté le 13-02-2003 à 18:20:06  profilanswer
 

ok, merci pour ces précisions ;)

n°309355
[SDF]Poire
Vive Grumly
Posté le 14-02-2003 à 14:33:12  profilanswer
 

zion a écrit :


Comme l'a copié/collé antp, les "object" ce sont des records avec des adresses de fonctions sans être vraiment des objets vu qu'ils ne sont pas instanciés et donc que dans la fonction tu sais pas déterminer pour quel record (objet) tu l'as apellé.
 
si tu veux toujours pouvoir apeller des fonctions sans instancier une classe tu peux faire des class methods:
 
TPlop = class
private
  FPlop: Integer;
public
  class function Plop: Integer;
end;
 
Tu pourras alors faire
 
a := TPlop.Plop;
 
Mais pas moyen dans la fonction d'aller chercher FPlop.
 
 :hello:  


 
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 ?


Message édité par [SDF]Poire le 14-02-2003 à 14:34:14

---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°309396
[SDF]Poire
Vive Grumly
Posté le 14-02-2003 à 14:53:15  profilanswer
 

zion a écrit :


Tu nous fait quoi la sylvain?
 
 

Citation :

[Error] Unit1.pas(35): Instance variable 'FPlop' inaccessible here

 
 
ca me parait clair non?
 
En déclarant une classe tu as juste déclaré le type, si tu as pas de code à la classe ca représentera 0byte dans ton exe vu que ce n'est qu'un type et non en Delphi y a pas de classe ni de variable statique [:tapai]
 
Et oui tu peux faire FPlop.Plop mais ca n'a aucun intérêt vu que la fonction n'est pas associée à l'instance, c'est juste un moyen de grouper des fonctions d'un même type sans devoir instancier un objet.
 
Tu nous ferais pas un peu trop de VB pour le moment toi?  :sarcastic:  


m'en parle pas  :cry:  
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  :D  
 
Donc ton truc C complétement inutile :p Domage, je croyais avoir mal compris pour le FPlop, mais non


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°309404
[SDF]Poire
Vive Grumly
Posté le 14-02-2003 à 14:57:28  profilanswer
 

zion a écrit :


C'est pas parce que tu comprends pas que c'est pas utile mon choubichou :whistle:  
 
C'est très très utile au contraire  :o  


Explicite alors...
un exemple d'utilisation ?


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
mood
Publicité
Posté le 14-02-2003 à 14:57:28  profilanswer
 

n°309417
[SDF]Poire
Vive Grumly
Posté le 14-02-2003 à 15:05:36  profilanswer
 

t'as raison j'pige pas, enfin j'vois pas
Edit : pas drôle ta signature  :cry:


Message édité par [SDF]Poire le 14-02-2003 à 15:06:57

---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
n°312349
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 18-02-2003 à 18:06:31  profilanswer
 

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.
D'après la doc vaut mieux pas les utiliser :


 
 
???!!!!!
 
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 :
  1. ASpecScroller = class(TObject)
  2.       procedure init; virtual; abstract;
  3.       procedure addBmp(bmp: TBitmap); virtual; abstract;
  4.       function canScroll: boolean; virtual; abstract;
  5.       function scroll(direction: SmallInt): TBitmap; virtual; abstract;
  6.       function scrollByValue(value: integer): TBitmap; virtual; abstract;
  7.    end;


 
(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".
 

n°312376
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 18-02-2003 à 18:10:46  profilanswer
 

(au temps pour moi, antp, j'avais jamais vu le mot clé object) :/
 
dweis : n'utilise pas le type "object", c'est SAL.

n°312382
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 18-02-2003 à 18:12:21  profilanswer
 

zion a écrit :


 
 
Chapeau, tu as rien lu du topic et tu viens nous sortir un discours de 2 pages...  :pfff:  


 
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...

n°312389
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 18-02-2003 à 18:13:55  profilanswer
 

zion a écrit :


 
merci mais moi ce sera zion si tu permets  :D  


 
 
LOL, je te répondais pas en fait ...  
 
c'était un petit ajout à  

Citation :


???!!!!!
 
Bertrand Meyer s'en arracherais les cheveux !!!
bon, c'est peut être une définition Delphi...
 


 
que j'avais écrit en regardant la ré&ponse d'antp...
 
et j'avais pas encore vu ta réponse à ce moment là :)))

n°312393
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 18-02-2003 à 18:16:46  profilanswer
 

zion a écrit :


 
benh on l'a dit aussi ca déjà  :heink:  


 
heu... j'viens de relire... j'vois po. :heink:
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)
 :jap:  
 
mille pardons pour ce dérangement :/

n°312400
Kristoph
Posté le 18-02-2003 à 18:31:31  profilanswer
 

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 ...


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

  [Delphi] Différence class / object

 

Sujets relatifs
Cherche Delphi 7 Studio d'occaz sur Paris ...Delphi : TDate existe, pk pas TTime ?!? Quoi pour remplacer ?
Quel livre pour apprendre le Delphi ?Delphi + TQuery + Access
[Delphi perso edition]Manque de bibliotheques..[Delphi] p'tit blem de conversion
Delphi 7 - TClientSocket not found ... que faire ?sous Delphi probleme !
jbuilder utuliser un fichier .class[DELPHI] Drag n drop d'une listbox vers une autre ???
Plus de sujets relatifs à : [Delphi] Différence class / object


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