1 / 31

Concepts de base : la Classe

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.

thimba
Télécharger la présentation

Concepts de base : la Classe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Concepts de base : la Classe • Cette analogie est erronée car la structure en C ne permet pas d’appliquer des mécanismes comme l’encapsulation, l’héritage, … • Pour comprendre en quoi une classe est différente d’une structure avec des méthodes, il est nécessaire de comprendre ces mécanismes.

  3. Concepts de base : L’Encapsulation • L’encapsulation est un des mécanismes qui permet de mettre en oeuvre la pensée objet. • Prenons un exemple simple, celui d’une classe CMonitoring qui permet de capturer des paquets sur une interface Ethernet.

  4. Concepts de base : L’Encapsulation Variable Membre Méthodes Propriété

  5. Concepts de base : L’Encapsulation • La classe CMonitoring aura besoin d’utiliser un ‘driver’ de la carte Ethernet afin de capturer réellement les paquets. • Considérons qu’une classe de plus bas niveau, CDriverEthernet permette de faire cette capture.

  6. Concepts de base : L’Encapsulation

  7. Concepts de base : L’Encapsulation • 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.

  8. Concepts de base : L’Encapsulation Variable Membre

  9. CDriverEthernet CMonitoring Concepts de base : L’Encapsulation • D’une façon simplifiée nous avons donc ceci : ceci n’est en rien une notation UML !

  10. Concepts de base : L’Encapsulation • La classe CMonitoring utilise la classe CDriverEthernet sous forme d’une 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.

  11. Concepts de base : L’Encapsulation

  12. Concepts de base : L’Encapsulation • La méthode Stop() ressemblerait à :

  13. Concepts de base : L’Encapsulation • Notre classe CMonitoring permet donc de démarrer et d’arrê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).

  14. Concepts de base : L’Encapsulation • Pour une utilisation normale de la classe CMonitoring, on devrait avoir ceci :

  15. Concepts de base : L’Encapsulation • Mais que se passerait-il si nous avions ceci :

  16. Concepts de base : L’Encapsulation • Il est donc nécessaire de protéger des éléments (variables, méthodes, …) de la classe afin qu’ils ne soient pas directement accessibles et ce afin de garantir la cohérence et l’intégrité de l’état de l’objet. • C’est ce que l’on appelle l’encapsulation.

  17. Eléments protégés, inaccessibles Interface de la classe Concepts de base : L’Encapsulation

  18. Concepts de base : L’Encapsulation

  19. Concepts de base : L’Encapsulation • L’encapsulation est donc un mécanisme donné au concepteur et au programmeur afin qu’il puisse différencier la partie utilisable de la classe de la partie ‘interne’ de la classe. • La partie ‘interne’ ou privée n’a donc de sens que pour celui qui développe la classe et non pour celui qui l’utilise. • Celui qui utilise la classe ne doit même pas connaître l’existence de cette partie interne.

  20. Concepts de base : L’Interface • L’encapsulation 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 l’on appelle l’interface de la classe.

  21. Concepts de base : Classe versus Objet • Nous avons dit qu’une classe s’apparentait à une structure mais que cette comparaison était erronée. • En effet, nous avons vu que la classe, contrairement à la structure, supporte l’encapsulation, 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 ?

  22. Concepts de base : Classe versus Objet • Une classe n’est jamais qu’une 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).

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

  24. Concepts de base : Classe versus Objet • Par exemple, une classe peut définir qu’une 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 d’accéder directement à cette variable. • Dans ce sens, la classe dicte au compilateur les vérifications à effectuer et le code à générer. • A l’exécution, cette notion de public/privé n’existe plus. Il serait possible d’accé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).

  25. Concepts de base : Classe versus Objet Processus Données Code Pile Classe Objet en mémoire

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

  27. Concepts de base : Héritage • Reprenons notre classe CMonitoring qui encapsule un driver Ethernet. • Nous savons qu’il 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. • L’héritage va permettre de définir une super-classe exposant l’interface commune et des sous-classes qui implémenteront un comportement spécifique.

  28. Concepts de base : Héritage • Notre classe CMonitoring devient :

  29. Concepts de base : Héritage • Avec une première sous-classe pour l’Ethernet :

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

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

More Related