[ Les Classes et la POO ] quelqu un dans la salle ?

quelqu un dans la salle ? [ Les Classes et la POO ] - Divers - Programmation

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 : --> *
Reply

Marsh Posté le 14-12-2002 à 15:37:14   

Reply

Marsh Posté le 14-12-2002 à 15:40:16    

J-'-R a écrit :

qq1 saurrait m expliquer rapidement ce que sont les classes,
la logique de la POO ( c est pour ma culture perso :) )

'culture' et 'rapide' sont deux beaux antonymes ...  
 
ça a déjà été abordé, il y a des liens sur le forum, et puis ... google.

Reply

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 ?


---------------
Perdu ? Vous êtes ici : --> *
Reply

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

Reply

Marsh Posté le 14-12-2002 à 15:47:22    

Ouais, en gros c'est ca...
Mais c'est vraiment tres tres tres simplifié

Reply

Marsh Posté le 14-12-2002 à 15:49:56    

sauf qu'on peut très bien faire de la POO sans classes ;)

Reply

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 {
  int age;
  int salaire;
  String nom;
  String discipline;
}


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 {
  int age;
  String nom;
  File compte_rendu;
}
 
Professeur::note(Eleve e) {
  open(e.compte_rendu);
  ...
}


 
Ensuite tu as d'autres concepts : encapsulation, polymorphisme...

Reply

Marsh Posté le 14-12-2002 à 16:24:03    

Cherrytree a écrit :


classe > objet
type > variable


tu veux dire quoi par la ?

Reply

Marsh Posté le 14-12-2002 à 16:27:23    

lorill a écrit :


tu veux dire quoi par la ?

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.

Reply

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 ?

Reply

Marsh Posté le 14-12-2002 à 16:29:13   

Reply

Marsh Posté le 14-12-2002 à 16:30:06    

lorill a écrit :


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 ?

Oui.

Reply

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.

Reply

Marsh Posté le 14-12-2002 à 16:34:55    

J-'-R a écrit :

qq1 saurrait m expliquer rapidement ce que sont les classes,
la logique de la POO
 
( c est pour ma culture perso :) )
 
MERCI


 
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

Reply

Marsh Posté le 14-12-2002 à 16:42:32    

lorill a écrit :

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.

Euh... Peut-être.

Reply

Marsh Posté le 14-12-2002 à 16:44:38    

lorill a écrit :

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.


 
+1

Reply

Marsh Posté le 14-12-2002 à 16:51:59    

lorill a écrit :

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.


 
[+++] 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 ...

Reply

Marsh Posté le 15-12-2002 à 00:24:14    

nraynaud a écrit :


 
[+++] 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 ...

J'ai rien compris.

Reply

Marsh Posté le 15-12-2002 à 00:28:17    

lorill a écrit :

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.

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 ?

Reply

Marsh Posté le 15-12-2002 à 00:48:43    

Cherrytree a écrit :

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 ?


 
ben t'as une variable qui s'appelle s, qui pointe vers une instance  de String


Message édité par HappyHarry le 15-12-2002 à 00:50:03
Reply

Marsh Posté le 15-12-2002 à 01:00:23    


 
Et avec  
 


int toto = new int ();
String str = "";


 
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.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

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.

Reply

Marsh Posté le 15-12-2002 à 04:13:13    

lorill a écrit :

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.


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 [:iznogoud_23].
 
 
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.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 15-12-2002 à 11:48:40    

Musaran a écrit :


Dans quel langage ?


 
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.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 15-12-2002 à 12:20:38    

kadreg a écrit :


 
Et avec  
 


int toto = new int ();
String str = "";


 
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.

OK, je m'incline.


---------------
Le site de ma maman
Reply

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)


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 15-12-2002 à 16:17:49    

Musaran a écrit :


 
Là où le C++ n'à que des pointeurs (explicites) et des références (quasi-indifférenciables de l'instance).


 
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.

Reply

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.


Message édité par Musaran le 16-12-2002 à 05:11:09

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 16-12-2002 à 05:37:35    

Musaran a écrit :

(quasi-indifférenciables de l'instance qu'elle désigne).
 
Pour C++, la 'variable' est manipulable comme un objet, et la distinction n'existe donc pas vraiment. Seule reste la notion de d'indirection.


 
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.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed