quelqu un dans la salle ? [ Les Classes et la POO ] - Divers - Programmation
Marsh Posté le 14-12-2002 à 15:40:16
J-'-R a écrit : qq1 saurrait m expliquer rapidement ce que sont les classes, |
'culture' et 'rapide' sont deux beaux antonymes ...
ça a déjà été abordé, il y a des liens sur le forum, et puis ... google.
Marsh Posté le 14-12-2002 à 15:41:57
de ce que j ai compris on definit des "objets"
qui on chaqu un des fonctions et proprietes
et d un objet on fait appel a un autre etc.
non ?
Marsh Posté le 14-12-2002 à 15:46:49
en gros, oui. mais ça t'avance à quoi de t'intéresser à ça si tu ne fais pas au moins un tutorial ? regarde par ex comment ça marche en php http://www.php.net/manual/fr/language.oop.php
Marsh Posté le 14-12-2002 à 15:47:22
Ouais, en gros c'est ca...
Mais c'est vraiment tres tres tres simplifié
Marsh Posté le 14-12-2002 à 16:21:43
Une classe, c'est un peu comme une structure, c'est à dire un enregistrement de données avec en plus des fonctions spécifiques aux objets de cette classe.
classe > objet
type > variable
Une classe peut servir à décrire des objets. Par exemple en pseudo-code :
Professeur { |
La classe Professeur permet de décrire des professeurs :
Professeur foldingue; |
foldingue est un objet de la classe professeur.
Ensuite on peut décrire des fonctions spécifiques à cette classe d'objets. Par exemple une fonctions qui attribue une note à chaque élève (Eleve).
Eleve { |
Ensuite tu as d'autres concepts : encapsulation, polymorphisme...
Marsh Posté le 14-12-2002 à 16:24:03
ReplyMarsh Posté le 14-12-2002 à 16:27:23
lorill a écrit : |
Quand je veux expliquer à qqn ce que c'est qu'une classe, je ne trouve rien de mieux à dire que c'est un type évolué pour créer des variables évoluées. C'est vrai que c'est pas très clair.
Marsh Posté le 14-12-2002 à 16:29:13
Cherrytree a écrit : Quand je veux expliquer à qqn ce que c'est qu'une classe, je ne trouve rien de mieux à dire que c'est un type évolué pour créer des variables évoluées. C'est vrai que c'est pas très clair. |
non, en fait c'est par rapport a la symbolique que tu as utilisé, je n'ai réellement pas compris ce que tu voulais dire.
En gros tu dis qu'on utilise des types pour créer des variables et des classes pour créer des objets, c'est ca ?
Marsh Posté le 14-12-2002 à 16:30:06
lorill a écrit : |
Oui.
Marsh Posté le 14-12-2002 à 16:32:20
Ah ben je suis pas du tout d'accord.
Pour moi variable et objet n'ont rien a voir. Une variable, c'est juste une "poignée" qu'on attache a un objet (créé par un type de base ou par une classe, ou autre) pour pouvoir le manipuler.
Marsh Posté le 14-12-2002 à 16:34:55
J-'-R a écrit : qq1 saurrait m expliquer rapidement ce que sont les classes, |
une petite explication pour une question sammalltalk :
http://forum.hardware.fr/forum2.ph [...] subcat=388
et un truc pour aller plus loin : http://nraynaud.com.free.fr/types.html
Marsh Posté le 14-12-2002 à 16:42:32
lorill a écrit : Ah ben je suis pas du tout d'accord. |
Euh... Peut-être.
Marsh Posté le 14-12-2002 à 16:44:38
lorill a écrit : Ah ben je suis pas du tout d'accord. |
+1
Marsh Posté le 14-12-2002 à 16:51:59
lorill a écrit : Ah ben je suis pas du tout d'accord. |
[+++] et on peut d'ailleur pas mal jouer sur la différence entre le type de la poignée et le type de l'objet qui est derrière ... à condition d'avoir une liaison retardée des méthodes ...
Marsh Posté le 15-12-2002 à 00:24:14
nraynaud a écrit : |
J'ai rien compris.
Marsh Posté le 15-12-2002 à 00:28:17
lorill a écrit : Ah ben je suis pas du tout d'accord. |
Si j'écris :
int i = 0; |
je me dis implicitement que je crée une variable nommée i, de type int.
De même si j'écris :
String s = new String("Hello" ); |
je me dis que je crée un objet nommé s, appartenant à la classe String.
Ai-je tort ?
Marsh Posté le 15-12-2002 à 00:48:43
Cherrytree a écrit : Si j'écris :
|
ben t'as une variable qui s'appelle s, qui pointe vers une instance de String
Marsh Posté le 15-12-2002 à 01:00:23
Et avec
|
Que dis tu ?
J'ai l'impression que tu accroche aux notions de variables et d'objets des notions C qui sont pile et tas, mais qui n'ont rien à voir. Je vote plutot de la définition qu'a donné lorill tout à l'heure. Un objet est une instance en mémoire, la variable est un moyen de le manipuler.
Marsh Posté le 15-12-2002 à 01:21:48
Cherrytree a écrit : J'ai rien compris. |
A est une classe, B une de ses filles
soit va une variable de type A.
soit vb une variable de type B non nulle.
D'après le principe de hiérachie des types, va = vb est une affectation valide.
va est donc une poignée de type A pour un objet de type réel B.
et ça va bien plus loin, la différence entre le type d'une variable et le type réel de l'objet qui est derrière peut être énorme.
Marsh Posté le 15-12-2002 à 04:13:13
lorill a écrit : Ah ben je suis pas du tout d'accord. |
Dans quel langage ?
En C++ j'ai vraiment pas appris comme ça.
instance: exemplaire d'un certain type.
variable: instance de type intégré.
objet: instance de classe (type utilisateur élaboré).
Nuance subtile, on a le droit de mélanger.
Si je comprends bien, vous appelez 'variable' la référence (sens pur) qui désigne une instance en mémoire.
Là où le C++ n'à que des pointeurs (explicites) et des références (quasi-indifférenciables de l'instance).
Non seulement on n'utilise pas les mêmes langages informatiques, mais on ne parle même plus la même langue !
Ça va être dur de communiquer .
Pour la question originale, en bref et à peu près:
classe:
Type élaboré, pouvant être composé d'autres types, et regroupant les fonctions qui lui sont spécifiques (méthodes).
Plutôt que d'avoir des fonctions auquelles ont passe des variables "fonc(var)", on a des objets dont on apelle des les méthodes "var.fonc()".
objet: exemplaire de classe.
POO: Le programme consiste en associations d'objets plutôt que séquence d'instructions.
héritage: Les classes sont organisées en linées, et disposent automatiquement des caractéristiques de leur ancêtres/parents.
Marsh Posté le 15-12-2002 à 11:48:40
Musaran a écrit : |
Indépendamment de n'importe quel langage. Si tu commance à t'accrocher à un langage, tu vas tomber dans les particularité de chacun (notamment le C++, qui est quand même spécial) et tenter de généraliser un concept C++ alorsque ce concept est en fait une résurgence du C, et n'a pas grand intêret face à la POO.
Marsh Posté le 15-12-2002 à 12:20:38
kadreg a écrit :
|
OK, je m'incline.
Marsh Posté le 15-12-2002 à 12:23:44
la meilleur approche c'est d'apprendre à faire des ADT et apres de les traduire dans un langage donné (on fait pas de l'objet pareil en C++ et en Scheme, pourtant c'est toujours de l'objet, basé sur le meme ADT)
Marsh Posté le 15-12-2002 à 16:17:49
Musaran a écrit : |
va changer l'état d'un objet passé par référence et va changer celui d'un autre passé par valeur, tu vas voir si c'est pas différentiable !
C'est plutôt pointeur et référence qui sont pareil sauf que un pointeur c'est une variable et une référence a une sémantique proche du "let binding" de ML.
Marsh Posté le 16-12-2002 à 05:10:37
(quasi-indifférenciables de l'instance qu'elle désigne).
Ça te va ?
Je ne vois que le polymorphisme et typeid pour savoir qu'on a affaire à une référence C++ plutôt qu'un objet direct.
Donc... Le concept de variable manipulant une instance est indispensable pour l'aspect polymorphisme de la POO ?
Sachant que la POO n'est pas définie avec exactitude, y a-t'il d'autre approches ?
Pour C++, la 'variable' est manipulable comme un objet, et la distinction n'existe donc pas vraiment. Seule reste la notion de d'indirection.
Marsh Posté le 16-12-2002 à 05:37:35
Musaran a écrit : (quasi-indifférenciables de l'instance qu'elle désigne). |
Heu c'est surtout que tu peux prendre plusieurs fois la même référence sur le même objet et donc les modifications de l'état de l'objet sont visible par tout le monde . Ce qui ne se produit pas si tu recopie à chaque fois ton instance sur la pile.
Marsh Posté le 14-12-2002 à 15:37:14
qq1 saurrait m expliquer rapidement ce que sont les classes,
la logique de la POO
( c est pour ma culture perso )
MERCI
---------------
Perdu ? Vous êtes ici : --> *