Cours C Et Programmation Orientée Objet La Programmation .

3y ago
43 Views
2 Downloads
846.04 KB
87 Pages
Last View : 7d ago
Last Download : 3m ago
Upload by : Sutton Moon
Transcription

Université Mouloud Mammeri Tizi-ouzouFaculté d’électronique et d’informatiqueDépartement d’électroniqueCours C et programmation orientée objetLa programmation orientée objetMr. ABAINIAMaster µElectronique et instrumentation

UMMTOConcept de POO ?Cours c et programmation orientée objetLes instructions de contrôle,tableaux et fonctions2

UMMTOApparu dans les années 60s au sein de MITOffre une grande souplesse de travail maintenance aiséeObjet en programmation objet dans le monde réelObjet propriétés (attributs) actions (méthodes)Objet en C Structure de données(objet simple)Cours c et programmation orientée objetClasse(objet avancé)Programmation orientée objet3

UMMTOObjet voiturePropriétés nb. rouespuissancesuspensionmatriculefabricantFigure tirée du blog http://oldiesfan67.canalblog.cometc.Actions marche arrièremarche avantetc.Cours c et programmation orientée objetProgrammation orientée objet4

UMMTOProblème réel !On veut représenter numériquement une liste d’étudiantsqui vont passer un examen.Solution basique (sans objet) on crée un tableau pourchaque propriété (caractéristique) des étudiants, e.g. nom,prénom, date de naissance, etc.Inconvénients on manipule les différents tableaux pouraccéder aux informations d’un étudiant quelconque.Résultats perte de temps et manipulation complexe.Cours c et programmation orientée objetProgrammation orientée objet5

UMMTO#include iostream using namespace std;int main(){int nb inscription[100];string nom[100];string prenom[100];string date naissance[100];On risque de setremper sur lesindices des tableaux// affichage des informations du troisième étudiantcout ’’ Nom : ’’ nom[2] endl;cout ’’ Prenom : ’’ prenom[2] endl;cout ’’ Date de naissance : ’’ date naissance[2] endl;cout ’’ Nombre d’inscription : ’’ nb inscription[2] endl;return 0;}Cours c et programmation orientée objetProgrammation orientée objet6

UMMTOSolution avec les objets on crée un objet regroupanttoutes les propriétés des étudiants, puis un tableaud’objets.Avantages on manipule un seul tableau dont la liste desétudiants. Les informations sont hiérarchiquementstructurées.Résultats gain de temps et programmation facile.Cours c et programmation orientée objetProgrammation orientée objet7

UMMTOStructure de données(objet simple)Cours c et programmation orientée objetLes instructions de contrôle,tableaux et fonctions8

UMMTO Un concept utilisé pour créer des types composés dontplusieurs variables de différents types (attributs). Il sert également pour décomposer un type en bits. Une structure peut contenir des fonctions pour manipulerles attributs et effectuer différentes opérations.Cours c et programmation orientée objetProgrammation orientée objet9

UMMTOPour créer une structure de données, on utilise le mot cléstruct en suivant la syntaxe suivante:Syntaxe:Exemple:struct nom type{type variable;type variable;type variable; };struct Etudiant{string nom;string prenom;string date naissance;int nombre inscription;};Cours c et programmation orientée objetProgrammation orientée objet10

UMMTO// Utilisation de l’objet crééEtudiant etud;etud.nom “nom quelconque”;etud.prenom “quelconque”;etud.date naissance “12/10/2000”;etud.nombre inscription 7;// définition de l’objetstruct Etudiant{string nom;string prenom;string date naissance;int nombre inscription;};// tableau dynamique de type EtudiantEtudiant* liste etudiant;liste etudiant new Etudiant[100];// tableau statique de type EtudiantEtudiant liste etudiant 2[100];Cours c et programmation orientée objetProgrammation orientée objet11

UMMTOOn peut déclarer les noms des objets (variables) à utiliserau moment de la définition de l’objet lui-même.Exemple:Syntaxe:struct nom type{type variable;type variable;type variable; } nom1, nom2, nom3 ;struct Personne{string nom;string prenom;string date naissance;int numero social;} etudiant, enseignant, administrateur,agent securite, *liste etudiant ;enseignant.nom “nom quelconque”;enseignant.prenom “prénom”;etudiant.prenom “prénom”;Cours c et programmation orientée objetProgrammation orientée objet12

UMMTODéfinition d’un nouvel objet:struct Personne{string nom;string prenom;string date naissance;int numero social;void affichage(){// afficher des informations}void changerNumeroSocial(int num){numero social num;}};Cours c et programmation orientée objetProgrammation orientée objet13

UMMTOUtilisation de l’objet créé:// déclaration variable statiquePersonne etudiant;//déclaration variable dynamiquePersonne* enseignant;// accéder aux éléments avec pointetudiant.nom “nom quelconque”;// allouer l’objet crééenseignant new Personne;// accéder aux élément avec - enseignant- nom “nom quelconque”;Cours c et programmation orientée objetProgrammation orientée objet14

UMMTOReprenons l’exercice N 5 de la série N 1, et on propose une solutionplus facile.// décomposition d’un type en bitsstruct Protocole{unsigned char act 1 : 3;unsigned char act 2 : 3;unsigned char act 3 : 2;};On met deux points eton précise le nombrede bitsSyntaxe:memcpy(ptr dest , ptr src , taille)// dans la fonction mainint temp; // va contenir une valeur codé sur 8 bits (1 octet)cin temp; // on tape une valeur entre 0-255Protocole proto;memcpy(&proto , &temp , 1); // fonction spéciale pour copier un contenucout proto.act 1 endl;cout proto.act 2 endl;cout proto.act 3 endl;Cours c et programmation orientée objetProgrammation orientée objet15

UMMTOProgrammation orientée objet(Les classes ou objets avancés)Cours c et programmation orientée objetLes instructions de contrôle,tableaux et fonctions16

UMMTOProblème On reprend l’exemple précédent de l’étudiant,l’enseignant, l’administrateur et l’agent de sécurité. Toutes les catégories précédentes des personnespartagent quelques propriétés communes (e.g. nom,prénom, date de naissance, etc.). Chaque catégorie a quelques propriétés uniques.Comment peut-on représenter toutes ces catégories ?Cours c et programmation orientée objetProgrammation orientée objet17

UMMTOSolution archaïqueLa solution utilisant les structures consiste à créer un objet(structure) indépendant pour chaque catégorie. trop de redondances occupation d’espace mémoire important maintenance couteuse qui pourra causer des problèmesCours c et programmation orientée objetProgrammation orientée objet18

UMMTO// structure pour les étudiants// structure pour les enseignantsstruct Etudiant{string nom;string prenom;string date naissance;int numero social; };struct Enseignant{string nom;string prenom;string date naissance;int numero social;int grade;string diplome; };RedondanceCours c et programmation orientée objetProgrammation orientée objet19

UMMTOSolution idéaleL’utilisation des objets plus évolués (classes) qui permettentde bien structurer le code et faciliter la conception.Classe vs structure: Encapsulation Héritage Polymorphisme InterfaceCours c et programmation orientée objetProgrammation orientée objet20

UMMTOPersonnestring nom;string prenom;string date naissance;int numero social;HériteEtudiantEmployeint salaire;int echelon;string diplome;HériteAdministrateurstring fonction;Cours c et programmation orientée objetEnseignantint grade;Programmation orientée objet21

UMMTOPour créer une classe, on utilise le mot clé class en suivantla syntaxe suivante:Exemple:Syntaxe:class nom classe{type variable;type variable;class Personne{string nom;string prenom;string date naissance;void marcher( ){// écrire un code}type fonction( ) { }type fonction( ) { } };int dormir( ){// écrire un code}};Cours c et programmation orientée objetProgrammation orientée objet22

UMMTOEn C , il y a trois manières de créer le contenu(implémenter) des classes: Déclarer et définir les membres à l’intérieur. Déclarer les membres à l’intérieur et les définir à l’extérieur. Déclarer les membres à l’intérieur et les définir dans un autrefichier.Membre attribut (variable) ou méthode (fonction)Cours c et programmation orientée objetProgrammation orientée objet23

UMMTO1) Déclarer et définir les membres à l’intérieur ?class Personne{string nom;string prenom;string date naissance;void marcher( ){// écrire un code}Fortement déconseilléint dormir( ){// écrire un code}};Cours c et programmation orientée objetProgrammation orientée objet24

UMMTO2) Déclarer les membres à l’intérieur et les définir à l’extérieur?class Personne{string nom;string prenom;string date naissance;Ce n’est pasprofessionnel !void marcher( );int dormir( );};void Personne :: marcher( ){// écrire un code}int Personne :: dormir( ){// écrire un code}Cours c et programmation orientée objetOn écrit seulement l’entêtedes fonctions avec lesparamètres s’il y en aOn définit le contenu desméthodes à l’extérieur dela classeProgrammation orientée objet25

UMMTOPour définir le contenu des méthodes (fonctions) en dehors de laclasse on met le nom de la classe suffixé par :: entre le type et lenom de la méthode.Nom de la classeNom de laméthodeType de laméthodevoid Personne :: marcher( ){// écrire un code}Quatre points::Cours c et programmation orientée objetProgrammation orientée objet26

UMMTO3) Déclarer les membres à l’intérieur et les définir dans un autrefichier?class Personne{string nom;string prenom;string date naissance;void marcher( );int dormir( );};fichier.h#include ’’fichier.h’’void Personne :: marcher( ){// écrire un code}int Personne :: dormir( ){// écrire un code}fichier.cppMéthode conseillée et professionnelleCours c et programmation orientée objetProgrammation orientée objet27

UMMTO On fait la même chose que la deuxième manière, mais enimplémentant les fonctions dans un fichier indépendant. On appelle le fichier contenant la déclaration «un fichier entêteou fichier d’interface» et doit porter l’extension .h (abréviation deheader). L’implémentation des méthodes doit se faire dans un fichiersource ayant une extension .cpp et de préférence le même nomdu header. Dans le fichier source (implémentation), on inclut le fichierheader avec la directive #include.Cours c et programmation orientée objetProgrammation orientée objet28

UMMTOCette méthode de programmationest appelée D.D.U(abréviation de Déclaration-Définition-Utilisation)Avec cette méthode on crée des bibliothèquespersonnelles.L’utilisateur peut consulter le fichier d’interface(header) pour savoir le fonctionnement de la classe(un manuel).Cours c et programmation orientée objetProgrammation orientée objet29

UMMTO// fichier RobotMobile.hclass RobotMobile{float position x;float position y;Exercice: on veut créerune classe simple pourreprésenter un robotmobile.void avancer(float x , float y);};// fichier RobotMobile.cpp#include ’’RobotMobile.h’’void RobotMobile ::avancer(float x , float y){position x x;position y y;}Cours c et programmation orientée objetProgrammation orientée objet30

UMMTODéclaration d’une variable detype classe est appeléeinstance de la classe// fichier main.cpp#include ’’RobotMobile.h’’// fichier main.cpp#include ’’RobotMobile.h’’int main() {RobotMobile *robot;robot new RobotMobile ;// initialisationrobot- position x 10.0;robot- position y 0.3;int main() {RobotMobile robot;// initialisationrobot.position x 10.0;robot.position y 0.3;// avancer dans l’espacerobot- avancer(1.0 , 1.0);if(robot ! NULL) {delete robot;robot NULL;}return 0;// avancer dans l’espacerobot.avancer(1.0 , 1.0);return 0;}}Cours c et programmation orientée objetProgrammation orientée objet31

UMMTOAttention// fichier engin.hclass Engin{};// fichier vehicule.h#include ’’engin.h’’class Vehicule : Engin{};Erreur:Redéfinition de laclasse Engin// fichier bateau.h#include ’’engin.h’’class Bateau : Engin{};// fichier main.cpp#include ’’vehicule.h’’#include ’bateau.h’’int main(){}Cours c et programmation orientée objetProgrammation orientée objet32

UMMTOSolution// fichier engin.h#ifndef ENGIN H#define ENGIN H// code source#endif// fichier vehicule.h#ifndef VEHICULE H#define VEHICULE H// code source#endifAjouter despréprocesseurs de test// fichier bateau.h#ifndef BATEAU H#define BATEAU H// code source#endif// fichier main.cpp#include ’’vehicule.h’’#include ’bateau.h’’int main(){}Cours c et programmation orientée objetProgrammation orientée objet33

UMMTOConstructeur et DestructeurCours c et programmation orientée objetLes instructions de contrôle,tableaux et fonctions34

UMMTO Les constructeurs et destructeurs sont des méthodes(fonctions) spécifiques sans types de retour, mais ilspeuvent avoir des paramètres. Le constructeur est appelé automatiquement lors de lacréation de l’objet statique ou dynamique. Le destructeur est appelé automatiquement lors desuppression de l’objet créé (dynamique) ou à la fin duprogramme si l’objet est statique.Cours c et programmation orientée objetProgrammation orientée objet35

UMMTOLe constructeur porte le mêmenom de la classe en respectantle majuscule et le minuscule.// fichier RobotMobile.hclass RobotMobile{float position x;float position y;void avancer(float x , float y);RobotMobile(); RobotMobile();};Le destructeur porte le même nomde la classe en respectant lemajuscule et le minuscule et doitêtre préfixé du caractère .Cours c et programmation orientée objetProgrammation orientée objet36

UMMTO Le constructeur sert pour: initialiser les attributs (variables) de la classe. allouer l’espace mémoire des variables dynamique. appeler des fonctions pour faire un prétraitement dans les programmesavancés. Le constructeur est appelé lors de la déclaration d’uneinstance statique. Il est appelé lors de l’utilisation de l’opérateur new pourallouer l’espace d’une instance dynamique. Le destructeur sert pour libérer l’espace mémoire alloué par les variablesdynamiques.Cours c et programmation orientée objetProgrammation orientée objet37

UMMTO// fichier main.cpp// fichier main.cpp#include ’’RobotMobile.h’’int main() {RobotMobile robot; #include ’’RobotMobile.h’’int main() {RobotMobile *robot;robot new RobotMobile ; Appel du constructeurCours c et programmation orientée objetProgrammation orientée objet38

UMMTO // avancer dans l’espacerobot- avancer(1.0 , 1.0); if(robot ! NULL) {delete robot;robot NULL;}return 0;// avancer dans l’espacerobot.avancer(1.0 , 1.0);return 0;}}Appel du destructeurCours c et programmation orientée objetProgrammation orientée objet39

UMMTO// fichier RobotMobile.h// fichier RobotMobile.cppclass RobotMobile{float position x;float position y;#include ’’RobotMobile.h’’void avancer(float x , float y);RobotMobile :: RobotMobile(float x , float y){position x x;position y y;}RobotMobile(float x , float y); RobotMobile();};RobotMobile :: RobotMobile(){// on n’a rien à libérer}void RobotMobile ::avancer(float x , float y){position x x;position y y;}Cours c et programmation orientée objetProgrammation orientée objet40

UMMTOAppel du constructeur pourinitialiser la position// fichier main.cpp// fichier main.cpp#include ’’RobotMobile.h’’#include ’’RobotMobile.h’’int main() {RobotMobile robot(10.0 , 0.3);int main() {RobotMobile *robot;robot new RobotMobile(10.0 , 0.3);// avancer dans l’espacerobot.avancer(1.0 , 1.0);// avancer dans l’espacerobot- avancer(1.0 , 1.0);return 0;if(robot ! NULL) {delete robot;robot NULL;}return 0;}Appel du destructeurCours c et programmation orientée objet}Programmation orientée objet41

UMMTOEncapsulationCours c et programmation orientée objetLes instructions de contrôle,tableaux et fonctions42

UMMTOL’encapsulation sert pour: donner des droits d’accès aux membres des classes. protéger les attributs contre la modification de l’extérieur.Il existe trois modificateurs d’accès: public membres accessibles même par d’autres objets private membres accessibles par la classe seulement protected membres accessibles par la classe et ses enfantsTous les membres sont par défaut en mode private.Cours c et programmation orientée objetProgrammation orientée objet43

UMMTOScénario (1)On utilise quotidiennement un instrument électroniquecomme la télévision (objet) sans savoir sa constitution.Le publique effectue seulement des actions de base tel que: Allumer la télé Eteindre la télé Changer les chaines Régler les paramètres software Brancher des périphériques externesCours c et programmation orientée objetProgrammation orientée objet44

UMMTOScénario (2)La télé est dotée de quelques caractéristiques internes: Voltage de fonctionnement Puissance consommée Résistance des boutons Microcontrôleur Enceinte du son éristiques, car elles sont protégées par le fabricant.C’est dans cet aspect que l’encapsulation dans POO a étéconçue.Cours c et programmation orientée objetProgrammation orientée objet45

UMMTOPour désigner le mode d’accès à certains membres (attributs ouméthodes), on met le modificateur suffixé par deux points ( : ).Remarque: tous les membres qui succèdent le modificateur suivront le mêmemode d’accès. Donc, il faut faire attention aux autres membres.// exempleclass RobotMobile{private:float position x;float position y;public:void avancer(float x , float y);Accessible seulementpar les méthodes de laclasseAccessible par n’importequelle méthode ou fonctionRobotMobile(float x , float y); RobotMobile();};Cours c et programmation orientée objetProgrammation orientée objet46

UMMTOAttention ! Erreur !// fichier main.cpp#include ’’RobotMobile.h’’int main() {RobotMobile robot;// initialisationrobot.position x 10.0;robot.position y 0.3;On ne peut pas accéder à unmembre privé (private) endehors de la classe.// avancer dans l’espacerobot.avancer(1.0 , 1.0);return 0;}Cours c et programmation orientée objetProgrammation orientée objet47

UMMTOAttention ! Erreur !// fichier RobotMobile.hclass RobotMobile{private:float position x;float position y;Oublier de mettre le modificateurpour les méthodes publiquesvoid avancer(float x , float y);RobotMobile(float x , float y); RobotMobile();};Résultat tous les attributs et toutes les méthodes seront considéréscomme private.Cours c et programmation orientée objetProgrammation orientée objet48

UMMTOGetter et SetterCours c et programmation orientée objetLes instructions de contrôle,tableaux et fonctions49

UMMTOVu qu’on ne peut pas accéder directement aux membresprivate et protected, il y a toujours un moyen de le faire. On utilise les Getters (méthodes) pour lire les valeurs On utilise les Setters (méthodes) pour modifier les valeurs// fichier RobotMobile.h// fichier RobotMobile.cppprivate:float position x;float position y;public:void RobotMobile :: setPosX(float x){position x x;}float RobotMobile :: getPosX(){return position x;}public:void setPosX(float x);float getPosX();Cours c et programmation orientée objetProgrammation orientée objet50

UMMTOHéritage en POOCours c et programmation orientée objetLes instructions de contrôle,tableaux et fonctions51

UMMTO Le concept d’héritage consiste à éliminer la redondancedans l’abstraction des données. L’héritage consiste à unifier des variables et fonctionspartagés entre plusieurs objets dans un seul objet. Les objets enfants héritent tous ou quelques membres(attributs et méthodes) de l’objet parent. L’objet parent et enfant doivent garder la sémantique.Cours c et programmation orientée objetProgrammation orientée objet52

UMMTOPersonnestring nom;string prenom;string date naissance;int numero social;HériteEtudiantEmployeint salaire;int echelon;string diplome;HériteAdministrateurstring fonction;Cours c et programmation orientée objetEnseignantint grade;Programmation orientée objet53

UMMTOErreur sémantique !Employé ne doit pas hériter de Mammifère quelque soit, carils ne sont pas sémantiquement liés.MammifèreHéritestring nom;int poids;int taille;HériteChienEmployéint salaire;

Cours c et programmation orientée objet Programmation orientée objet 3 UMMTO Apparu dans les années 60s au sein de MIT Offre une grande souplesse de travail maintenance aisée Objet en programmation objet dans le monde réel Objet propriétés (attributs ) actions (méthodes ) Objet en C Structure de données (objet simple ) Classe

Related Documents:

Sujets Spéciaux (STT2000) cours d'option cours d'ouverture nouveau cours nouveau cours nouveau nouveau cours nouveau cours nouveau cours nouveau cours nouveau cours nouveau cours nouveau cours SAS / R!9. exemple d'horaire 2 1 Toutes les concentrations 9h 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 20h 21h Automne lundi mardi mercredi jeudi vendredi M1112 Calcul 1 M1112 Calcul 1 TP M1112 .

Programmation pour la physique Ce cours est une introduction a plusieurs sujets importants pour la programmation scienti que : R evision de la programmation procedurale avec le langage Python Initiation aux principes el ementaires de la programmation orient ee objet Probl emes choisis de l'algorithmique : Algorithmes de tri Probl emes choisis de l'analyse num erique : Recherche des z eros .

PROGRAMMATION DES COURS 6 INSCRIPTION 7 PARCS ET INSTALLATIONS RÉCRÉATIVES 8-9 BIBLIOTHÈQUE 10-11 JOURNÉES DE LA CULTURE VILLE.SAINT-SAUVEUR.QC.CA Ville de Saint-Sauveur UNE RÉALISATION DE ACTIVITÉS COURS ET PROGRAMMATION DES En raison de l'évolution constante des consignes gouvernementales, soyez avisés que cette programmation .

La programmation objets expliquée aux programmeurs Si vous êtes programmeur, mais habitué aux langages de programmation "procéduraux" (pascal, fortran, C, perl, etc.), ce chapitre est pour vous: il essaie d'expliquer comment on peut passer de la programmation procédurale à la programmation objet, via la programmation structurée.

Langages de programmation et compilation Jean-Christophe Filli atre Cours 1 / 23 septembre 2016 Jean-Christophe Filli atre Langages de programmation et compilation 2016{2017 / cours 1 1. pr esentation du cours cours le vendredi, 8h30{10h30 en salle UV polycopi e ensemble des transparents TD le jeudi/vendredi, 10h30{12h15 en salle Info 4 NIR avec L elio Brun (lelio.brun@inria.fr) a partir d .

avis sur tout aspect de ces cours. Vos avis ou réactions peuvent inclure des observations sur : Le contenu et l'organisation des cours Les manuels de lecture et ressources des cours. Les exercices des cours. Les évaluations des cours. La durée des cours. Le soutien aux cours (tuteurs désignés, soutien technique,

LA PROGRAMMATION OBJET EN JAVA Michel Divay M. DIVAY IUT BTS Licence Écoles d'ingénieurs LA PROGRAMMATION OBJET EN JAVA Michel Divay COURS 9 782100 496976 ISBN 2 10 049697 2 LA PROGRAMMATION OBJET EN JAVA www.dunod.com Ce livre s'adresse aux étudiants en IUT, BTS, licences et écoles d'ingénieurs des filières informatiques.

Adventure Tourism has grown exponentially worldwide over the past years with tourists visiting destinations previously undiscovered. This allows for new destinations to market themselves as truly .