C++ : Notion de classe

Documents pareils
Chapitre 2. Classes et objets

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Introduction à l héritage en C++

et Programmation Objet

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Diagramme de classes

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Héritage presque multiple en Java (1/2)

Généralités sur le Langage Java et éléments syntaxiques.

I. Introduction aux fonctions : les fonctions standards

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

GOL502 Industries de services

I. MySQL : Serveur et SGBD

Programmer en JAVA. par Tama

Initiation à JAVA et à la programmation objet.

Rappels Entrées -Sorties

TP1 : Initiation à Java et Eclipse

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Apprendre Java en 154 minutes

Cours 1: Java et les objets

Application web de gestion de comptes en banques

Premiers Pas en Programmation Objet : les Classes et les Objets

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Les chaînes de caractères

Introduction au langage C

Cours d initiation à la programmation en C++ Johann Cuenin

Langage Java. Classe de première SI

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Chapitre 10. Les interfaces Comparable et Comparator 1

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Cours Programmation Système

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Une introduction à Java

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

as Architecture des Systèmes d Information

Projet gestion d'objets dupliqués

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Cours 14 Les fichiers

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

AxCrypt pour Windows

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Plan Pédagogique du cours

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation par les Objets en Java

Université de Bangui. Modélisons en UML

Le Langage De Description De Données(LDD)

01V96i Editor Manuel d'installation

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

UML : DIAGRAMME D ETATS

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

RMI le langage Java XII-1 JMF

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Cours de Génie Logiciel

Java DataBaseConnectivity

Programmation Orientée Objet en C#

INITIATION AU LANGAGE JAVA

Utilisation d objets : String et ArrayList

Package Java.util Classe générique

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Création et Gestion des tables

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Java c est quoi? Java pourquoi?

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

IRL : Simulation distribuée pour les systèmes embarqués

Chapitre 1 : La gestion dynamique de la mémoire


Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

Introduction à la Programmation Parallèle: MPI

Introduction à C++ et à wxwidgets

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Support de cours et TD Programmation Orientée Objet

TP, première séquence d exercices.

Java Licence Professionnelle CISII,

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

CHARTE INFORMATIQUE LGL

Cours d Algorithmique et de Langage C v 3.0

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Java Licence Professionnelle CISII,

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

LE LANGAGE C++ ENAC 1997 A. DANCEL

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

La carte à puce. Jean-Philippe Babau

Manuel d utilisation NETexcom

Transcription:

C++ : Notion de classe Les classes sont des modèles d'objets qui en définissent : les attributs (aspect statique, données) les méthodes (aspect dynamique, traitements) ATTRIBUTS Classe METHODES Faites la question 17 1/19

C++ : la déclaration Syntaxe de la déclaration Analogue à celle des structures en C class Nom_class { private :... membres privés (attributs et méthodes) public :... membres publics (attributs et méthodes) }; Faites la question 18 2/19

C++ exemple de déclaration class CPoint { private : int x; int y; public : void initialise(int,int); void affiche(); }; Point.h Point.cpp void CPoint::initialise(int a,int b) { x=a; y=b;} void CPoint::affiche() { cout<<"ma position est "<<x<<","<<y<<endl; } Faites les questions 19 et 20 3/19

C++ : les classes et les objets Les objets sont des instances (exemplaires) de classe Ils peuvent être créés : statiquement : dans le code du programme dynamiquement : en cours d'exécution avec l'utilisation de pointeur et de l'opérateur d'allocation mémoire new 4/19

C++ : instance de classe Exemple d instanciation statique: en utilisant la classe CPoint déclaration et instanciationde deux points p1 et p2 CPoint p1,p2; initialisation des deux points p1.initialise(0,0); p2.initialise(1,2); affichage des deux points p1.affiche(); p2.affiche(); Répondez aux questions 21 à 24 5/19

C++ : portée des membres Modificateur Public : Private : Protected : description Le membre est utilisable partout dans l'application. Le membre est utilisable uniquement par des fonctions membres et amies de la classe dans laquelle il est déclaré. Même chose que private. Il est également utilisable par les fonctions membres et amies des classes dérivées et dans les objets de type dérivé. 6/19

C++ : pointeur this Moyen d accéder à l'objet courant C'est un pointeur Comment accéder à un attribut de la classe article à l'aide de this? Quel intéret d'utiliser this? 7/19

C++ la construction d objet Les constructeurs permettent la création, l'initialisation et la copie des objets d'une classe. Ils peuvent être implicites ( non définis par le programmeur ) ou explicite Le constructeur porte le nom de la classe Il est appelée automatiquement lors de la définition d'une nouvelle instance de l'objet. 8/19

C++ constructeurs suite Constructeur implicite : constructeur par défaut pas de paramètre Constructeur explicite : il est déclaré et défini explicitement les paramètres lui sont passés sous forme d arguments Comment sait-on qu'une classe utilise un constructeur implicite? 9/19

C++ exemple de constructeurs Point.h class CPoint { private: int x; int y; public: point() ; point (int x_init,int y_init) ; point (double x_reel_init, double y_reel_init) ; }; CPoint :: CPoint() { x=0; y=0; } CPoint :: CPoint (int x_init,int y_init) { x=x_init; y=y_init; ) } Point.cpp CPoint ::CPoint (double x_reel_init, double y_reel_init) { x = (int) x_reel_init; y = (int) y_reel_init; } 10/19

C++ constructeur : la liste d'initialisation Permet d'initialiser directement les attributs lors de leur création Débute par le signe deux points (:) et chaque élément est séparé par une virgule Peut appeler constructeur parent Ne peut pas réaliser de code à exécuter Se place entre la parenthèse fermante du constructeur et L'accolade ouvrante du corps du constructeur 11/19

C++ constructeur : la liste d'initialisation exemple /* Il est impossible d'initialiser pelage dans la liste car il demande une allocation dynamique */ chat::chat (float t, float p, const char *pel) : taille(t), poids(p) { strcpy(pellage, pel); cout<<"le chat naît donc un jour il mourra...:))"; } class chat { public: float taille, poids; char pellage[10]; chat(float t, float p,const char *pel); chat(); ~chat(void); } 12/19

C++ Le constructeur copie Ce constructeur fabrique un nouvel objet comme clone d'un objet existant Il a pour paramètre une référence constante sur l'objet à copier Pourquoi la référence doit-elle être constante? 13/19

C++ Le constructeur copie (2) class Chat { public: float taille, poids; char pellage[10]; Chat(float t, float p, char *pel); Chat(const Chat &chatorigine); Chat(); ~Chat(void); } Void testchat() { Chat monchat(40, 2,12, «Chat botté»); Chat autre = monchat; } Faites les question 25 et 26? /* copie de tous les attributs de chat origine */ Chat::Chat (const Chat &chatorigine) :taille(chatorigine.taille), poids(chatorigine.poids) { strcpy(pellage, chatorigine.pellage); cout<<"le chat naît donc un jour il mourra..."; } 14/19

Copie ou affectation L'affectation d'un objet d'une classe donnée à un objet de cette même classe est possible en C++. Tous les membres (privés et publics) sont alors recopiés exemple : point p1, p2; p1.initialise(1,1); p2 = p1; //???? Point p3 = p1; //???? Comment reconnait-on une copie d'une affectation? Complétez les commentaires 15/19

C++ exemple d instanciation Exemples : point p1; point p2 (10, 20); point p3 (2.0, 5.0); point *p_point=new point(10,5); point *tab_points=new point[10]; 16/19

C++ destructeur d objet Pour détruire un objet appartenant à une classe, on fait appel à un destructeur d'objets associé à la classe Les objets sont détruits : soit implicitement (portée d'une déclaration) soit explicitement par l'opérateur delete dans les deux cas le destructeur est appelé 17/19

C++ exemple de destructions Lorsqu'un objet de la classe point est détruit, le destructeur adapté est appelé. Contrairement aux constructeurs, il n'existe qu'une méthode de destruction d'un objet. point p1 (1.0,5.0); point *p_point=new point(); point *tab_point=new point[10]; applic.cpp // l'objet p1 sera détruit en quittant son bloc de déclaration delete p_point; // Détruit l'objet pointé par p_point delete[] tab_point; // Détruit le tableau tab_point 18/19

C++ le destructeur Le destructeur est une fonction membre portant le même nom que la classe. cette fonction est précédée du signe ~. Elle n'a pas de paramètre et n'est pas typée. Un destructeur implicite existe si l'utilisateur n'en a pas déclaré class point { private: int x; int y; public: ~point() }; Point::~point() { } Répondez à la question 27 19/19