Objets Et Classes C++ [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Programmation Orientée Objet en C++ 8ème Partie: Objets et Classes

Fabio Hernandez [email protected]

Vue d'Ensemble } } } } } } } } } } } } } }

Notions de base Types, variables, opérateurs Contrôle d'exécution Fonctions Mémoire dynamique Qualité du logiciel Evolution du modèle objet Objets et classes Fonctions membres Classes génériques Héritage Polymorphisme Héritage multiple Entrée/sortie

POO en C++: Objets et Classes

197

© 1997-2003 Fabio HERNANDEZ

Table des Matières } } }

Nature d'un Objet Nature d'une Classe Exemple: une classe simple „ „ „ „ „ „ „ „

}

abstraction définition de l'interface utilisation implémentation modification fonction membres contrôle d'accès initialisation/destruction

Résumé

POO en C++: Objets et Classes

198

© 1997-2003 Fabio HERNANDEZ

Nature d'un Objet }

}

Un objet représente une entité individuelle et identifiable, réelle ou abstraite, avec un rôle bien défini dans le domaine du problème Exemple: dans une usine de fabrication d'automobiles, on peut identifier des objets tels „ „ „ „ „

}

moteur châssis volant système électrique processus de montage

Des objets peuvent être tangibles, mais peuvent ne pas avoir une frontière physique très bien définie (rivière, des nuages, ...)

POO en C++: Objets et Classes

199

© 1997-2003 Fabio HERNANDEZ

Nature d'un Objet (suite) }

Caractéristiques d'un objet „ „ „

}

Etat Comportement Identité

Etat „

„

„ „

„

un attribut est une caractéristique, qualité ou trait intrinsèque qui contribue à faire unique un objet l'état d'un objet comprend les propriétés statiques (attributs) et les valeurs de ces attributs les valeurs des attributs peuvent être statiques ou dynamiques du fait d'avoir un état, un objet occupe un espace dans le monde physique et dans la mémoire de l'ordinateur exemple: les attributs de l'objet point en deux dimensions sont les coordonnées x et y

POO en C++: Objets et Classes

200

© 1997-2003 Fabio HERNANDEZ

Nature d'un Objet (suite) }

Comportement „

„ „

„ „

„

}

façon d'agir et de réagir d'un objet comme conséquence des changements d'état et des opérations effectuées sur lui représente l'activité de l'objet vue de l'extérieur si on regarde un objet comme un serveur, son comportement est l'ensemble des services offerts par lui à ses clients exemple: un point peut être déplacé, tourné autour d'un autre point, etc. le comportement dépend de l'état de l'objet et de l'opération effectuée sur lui l'état d'un objet représente le résultat cumulé de son comportement

Identité „

propriété d'un objet qui permet de le distinguer des autres objets de la même classe

POO en C++: Objets et Classes

201

© 1997-2003 Fabio HERNANDEZ

Nature d'une Classe } }

} }

}

}

Les notions de classe et d ’objet sont étroitement liées Une classe est un ensemble d'objets qui partagent une structure et un comportement communs Une classe est seulement une abstraction Un objet est une instance (entité concrète) d'une classe en temps d'exécution On peut voir la classe comme un moule pour la fabrication d'objets Les objets fabriqués avec le même moule partagent structure et comportement

POO en C++: Objets et Classes

202

© 1997-2003 Fabio HERNANDEZ

Nature d'une Classe (suite) }

Deux vues d'une classe „ „

}

interface implémentation

Interface „ „ „

„ „ „

vue externe abstraite d'une classe liste de services offerts par les instances de la classe (contrat) une opération non spécifiée dans l'interface d'une classe ne peut être appliquée sur une instance (objet) de cette classe cache la structure interne de la classe (encapsulation) réponse à la question quoi contenue dans un fichier d'entête (.h)

POO en C++: Objets et Classes

203

© 1997-2003 Fabio HERNANDEZ

Nature d'une Classe (suite) }

Implémentation „ „ „

„ „

vue interne d'une classe comprend les secrets (détails internes) de son comportement l'implémentation d'une classe est constituée de l'implémentation de chacune des opérations définies dans son interface réponse à la question comment contenue dans un fichier d'implémentation (.cpp)

POO en C++: Objets et Classes

204

© 1997-2003 Fabio HERNANDEZ

Exemple: classe Point }

Ecriture en C++ d'une classe (interface et implémentation) représentant la notion d'un point en deux dimensions

y ρ θ x

O

POO en C++: Objets et Classes

205

© 1997-2003 Fabio HERNANDEZ

Classe Point: abstraction }

Quels sont les attributs d'un point qui nous intéressent? „ „ „ „

}

la coordonnée x la coordonnée y la distance à l'origine (ρ) l'angle par rapport à l'horizontale (θ)

Quelles sont les opérations applicables sur un point qui nous intéressent ? „ „ „

translation rotation autour de l'origine ...

POO en C++: Objets et Classes

206

© 1997-2003 Fabio HERNANDEZ

Classe Point : interface } }

Définition (incomplète) de l'interface de la classe Point Fichier Point.h class Point { public: float getX(); float getY(); float rho(); float theta();

// Not yet finished !!!

// returns the x coordinate // returns the y coordinate // returns the distance to the origin // returns the angle to the // horizontal axis void translate(float horizontal, float vertical); void rotate(float angle);

}; POO en C++: Objets et Classes

207

© 1997-2003 Fabio HERNANDEZ

Classe Point : interface (suite) }

}

} }

getX, getY, rho, theta, translate et rotate sont des méthodes (services) fournies par toutes les instances de la classe Point getX, getY, rho et theta retournent une valeur de type float translate et rotate ne retournent rien translate et rotate ont besoin d'information supplémentaire pour accomplir leur mission „ „

}

}

un déplacement horizontal et vertical, dans le cas de translate un angle, dans le cas de rotate

Y a-t-il des similarités avec la déclaration des fonctions, étudiée précédemment? Le mot clé public sert à contrôler l'accès aux méthodes de la classe. Plus d'informations à ce propos plus tard.

POO en C++: Objets et Classes

208

© 1997-2003 Fabio HERNANDEZ

Classe Point : utilisation }

Comment utiliser les services offerts par les objets de la classe Point? „ „

}

il faut définir un objet de cette classe et ensuite... lui envoyer un message indiquant le service que l'on demande

La définition de l'objet est faite de la même façon que la définition des objets des types primitifs int count; Point p;

}

Pour envoyer le message indiquant le service demandé on utilise la notation service demandé

objet destinataire du message POO en C++: Objets et Classes

p.rotate(45.0); argument(s) du service 209

© 1997-2003 Fabio HERNANDEZ

Classe Point : utilisation (suite) }

Utilisation d'objets de la classe Point (fichier main.cpp) #include #include "Point.h" void main() { // Instantiate a Point object Point p;

inclusion du fichier qui contient l'interface de la classe

// Show its coordinates cout