Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
Advertisements

Formation universitaire à .NET: Introduction à C#
Introduction à Java - les paquetages -
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Programmation Orientée Objet (POO)
INTRODUCTION.
UML (Unified Modeling Langage)
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
Diagrammes de communication
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Chapitre III Héritage (début)
Principes de programmation (suite)
FSAB1402: Informatique 2 Techniques de Programmation Orientée Objet
Programmation orientée objet
Analyse et Conception orientée objet
Principes de la technologie orientée objets
Analyse et Conception orientée objet
Initiation à la conception de systèmes d'information
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
C++ : classes Introduction aux Langages Orientés Objets
RDF(S)
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Vers la conception objet
.Net Remoting.
Structures de données IFT-2000
IGL301 - Spécification et vérification des exgiences 1 Chapitre 1 Introduction (ref : Bray chapitre 1)
Introduction au paradigme orienté-objet (suite)
Langages orientés objets
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Programmation non procédurale Le projet ECOLE 2000
Structures de données IFT Abder Alikacem Gestion des exceptions Module 2 Département dinformatique et de génie logiciel Édition Septembre 2009.
Classes et objets Types de données abstraits, programmation orientée objet, classes, objets,
Patrons de conceptions de créations
Plan cours La notion de pointeur et d’adresse mémoire.
Héritage et composition
INTRODUCTION.
Les principes de la modélisation de systèmes
ARP Le protocole ARP Pour qui utilise-t-on le protocole ARP ? ou
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
12/04/ Le polymorphisme Cours 8 Cours 8.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
Introduction à la programmation objet en C++
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
MOCK.
Les classes Introduction aux Langages Orientés Objets
Power AMC-Rational Rational Rose, Étude comparative
La programmation par objets Principes et concepts Etude de Smalltalk.
Fichier=open('monfichier.txt','w') >>> fichier.write('bonjour\n') 8 >>> liste ['le chien', 'le chat', 'le loup'] >>> for s in liste: fichier.write(s+'\n')
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Applications Internet Cours 3 21 janvier 2010 Cours 3 21 janvier 2010.
Campus-Booster ID : Copyright © SUPINFO. All rights reserved La programmation objet, un fondement de la programmation évènementielle.
Nouvelles Technologies Internet & Mobile
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Introduction à la Programmation Orientée Objet
TP D’UML Groupe N° 3.
Retour sur les interfaces Les méthodes définies dans une interface sont des méthodes qui doivent absolument être implémentées par une ou des sous-classes.
GPA – 19 novembre Mécanisme d'héritage au sein des diagrammes de classes UML GPS Mars Dimitri MEUNIER.
Transcription de la présentation:

Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.

Concepts de base : la Classe Cette analogie est erronée car la structure en C ne permet pas dappliquer des mécanismes comme lencapsulation, lhéritage, … Pour comprendre en quoi une classe est différente dune structure avec des méthodes, il est nécessaire de comprendre ces mécanismes.

Concepts de base : LEncapsulation Lencapsulation est un des mécanismes qui permet de mettre en oeuvre la pensée objet. Prenons un exemple simple, celui dune classe CMonitoring qui permet de capturer des paquets sur une interface Ethernet.

Concepts de base : LEncapsulation Variable Membre Méthodes Propriété

Concepts de base : LEncapsulation La classe CMonitoring aura besoin dutiliser un driver de la carte Ethernet afin de capturer réellement les paquets. Considérons quune classe de plus bas niveau, CDriverEthernet permette de faire cette capture.

Concepts de base : LEncapsulation

On remarque que la classe CMonitoring va avoir besoin de la classe CDriverEthernet afin de capturer les paquets. Pour ce faire, la classe CMonitoring va utiliser une variable membre du type CDriverEthernet.

Concepts de base : LEncapsulation Variable Membre

Concepts de base : LEncapsulation Dune façon simplifiée nous avons donc ceci : ceci nest en rien une notation UML CDriverEthernetCMonitoring !

Concepts de base : LEncapsulation La classe CMonitoring utilise la classe CDriverEthernet sous forme dune variable membre m_DriverEthernet afin de capturer les paquets et cache la complexité de CDriverEthernet. Par exemple, nous pourrions imaginer la méthode Start() de la classe CMonitoring comme ceci.

Concepts de base : LEncapsulation

La méthode Stop() ressemblerait à :

Concepts de base : LEncapsulation Notre classe CMonitoring permet donc de démarrer et darrêter une capture réseau. Létat de la capture (en cours ou arrêtée) dépend donc de la variable m_DriverEthernet (== null ou de null).

Concepts de base : LEncapsulation Pour une utilisation normale de la classe CMonitoring, on devrait avoir ceci :

Concepts de base : LEncapsulation Mais que se passerait-il si nous avions ceci :

Concepts de base : LEncapsulation Il est donc nécessaire de protéger des éléments (variables, méthodes, …) de la classe afin quils ne soient pas directement accessibles et ce afin de garantir la cohérence et lintégrité de létat de lobjet. Cest ce que lon appelle lencapsulation.

Concepts de base : LEncapsulation Eléments protégés, inaccessibles Interface de la classe

Concepts de base : LEncapsulation

Lencapsulation est donc un mécanisme donné au concepteur et au programmeur afin quil puisse différencier la partie utilisable de la classe de la partie interne de la classe. La partie interne ou privée na donc de sens que pour celui qui développe la classe et non pour celui qui lutilise. Celui qui utilise la classe ne doit même pas connaître lexistence de cette partie interne.

Concepts de base : LInterface Lencapsulation permet donc de différencier la partie utilisable de la classe et la partie interne, encapsulée de la classe. La partie utilisable de la classe (Start(), Stop(), …) est ce que lon appelle linterface de la classe.

Concepts de base : Classe versus Objet Nous avons dit quune classe sapparentait à une structure mais que cette comparaison était erronée. En effet, nous avons vu que la classe, contrairement à la structure, supporte lencapsulation, autrement dit, la possibilité de différencier ce qui est interne et ce qui est utilisable. Mais quelle est la différence entre une classe et un objet ?

Concepts de base : Classe versus Objet Une classe nest jamais quune description textuelle (écrite ou codée). In fine, une classe est écrite dans un langage de programmation et compilée par un compilateur (ou interprétée).

Concepts de base : Classe versus Objet Lobjet lui occupe une place en mémoire (données + code). Il est créé à un instant et détruit à un autre. Lobjet est donc un élément matériel dans le sens où il occupe un espace mémoire et est « capable dexécuter » du code. La classe nest que la description de lobjet, ou de lensemble des objets de cette classe, rien dautre.

Concepts de base : Classe versus Objet Par exemple, une classe peut définir quune variable est privée. Lorsque dans le code, on créera un objet de cette classe, le compilateur générera une erreur si on essaye daccéder directement à cette variable. Dans ce sens, la classe dicte au compilateur les vérifications à effectuer et le code à générer. A lexécution, cette notion de public/privé nexiste plus. Il serait possible daccéder directement à la variable privée en accédant directement à la mémoire (soit avec un outil externe soit en utilisant des pointeurs dans le code).

Concepts de base : Classe versus Objet ClasseObjet en mémoire Processus Données CodePile

Concepts de base : Héritage Etant donné que le concept dhéritage, a été vu dans le cadre du cours de programmation orienté objet, nous ne ferons quun simple rappel sous forme dexemples. Pour une définition plus précise, on se référera au livre de POO.

Concepts de base : Héritage Reprenons notre classe CMonitoring qui encapsule un driver Ethernet. Nous savons quil existe plusieurs types de drivers permettant de capturer des trames : Ethernet, Wifi, … Il serait donc possible de concevoir une classe CMonitoring pour une carte Ethernet et une autre classe CMonitoring pour une carte Wifi. Mais le principe de monitoring reste le même : – Démarrage de la capture – Utilisation des trames/paquets capturés – Arrêt de la capture. Lhéritage va permettre de définir une super-classe exposant linterface commune et des sous-classes qui implémenteront un comportement spécifique.

Concepts de base : Héritage Notre classe CMonitoring devient :

Concepts de base : Héritage Avec une première sous-classe pour lEthernet :

Concepts de base : Héritage Avec une deuxième sous-classe pour le WIFI :

Autres concepts Pour les autres concepts de lorienté objets, tels que le polymorphisme, les classes génériques… on se référera au livre de POO.