La programmation orientée objet




Alexandre Dubois
alexandre.dubois@y-nov.com



Votre formateur


Alexandre Dubois  32 ans
Scrum Master @Helloasso
Enseignant  @Y-Nov (2013+)
Blogueur  @L'Atelier du Geek (2009+)
E-commerçant

#développement      #conseil     #e-commerce     #formation     #scrum    #méthodes-agiles

#running   #hacking   #smart-home
Cdiscount, Clever Age, GHX, Atos Origin, Capgemini...

Vous




https://bit.ly/2l4D7QM




Votre cours



40h, découpées en 10 séances



Objectif : Vous rendre à l'aise avec les concepts de base de la programmation orientée objet

Les règles du jeu



Il n'y a pas de question "bête"


Vous pouvez me tutoyer, m'appeler par mon prénom

Je ne vous donnerai pas ou peu de devoirs
Une interrogation éclair à chaque séance




Mieux vaut une tête bien faite qu'une tête bien pleine

Montaigne

CE COURS SERA...


...centré sur les concepts de la POO, leurs utilisations, leurs raisons d'être



Ce cours ne sera pas...


...un cours de Java, C#, C++, PHP, Python... mais pourra y faire appel !

Programme


  • Composition d'un objet
  • Classe
  • Communication entre objets
  • Constructeurs / Destructeurs
  • Modificateurs d'accès
  • Héritage
  • Classe abstraite
  • Interface




C'est parti !

Un brin d'histoire


Au commencement, il y avait...


L'assembleur !

mov eax,10
mov ebx,ecx
mov edx,0A1h
mov eax,[data1]
mov bl,[data2]

La programmation se fait au plus près de la machine

UN BRIN D'HISTOIRE


PUIS Les besoins ont évolué...



La programmation  se détache de l'architecture technique sur laquelle elle évolue.

C'est l'heure de gloire du C, du Pascal...

On parle de Programmation Procédurale

INTRODUCTION À LA POO


La Programmation Procédurale en bref


Un programme  =  

Des variables (données)  
+ un ensemble de fonctions pour les manipuler (traitements)

INTRODUCTION À LA POO


Mais...


  • Pourquoi cette séparation données/traitements ?
  • Pourquoi privilégier les uns par rapport aux autres ?


Et si l'on considérait les programmes comme un ensemble d'objets informatiques qui "dialoguent" entre eux ?




Introduction à la programmation orientée objet



Quelques mots barbares...


  • Objet
  • Classe
  • Instance
  • ...

Voyons tout cela de plus près !

Qu'est ce qu'un objet ?


Bien souvent, un objet informatique correspond à une entité du monde réel.

Ex : le tableau devant vous, votre vélo, l'école, la salle de classe...





Toutes ces entités ont des caractéristiques et des comportements

QU'EST CE QU'UN OBJET ?


Quelques exemples


Les vélos ont des caractéristiques
vitesse, poids, pignon courant, propulsion...

Les vélos ont des comportements
freiner, changer de pignon...

QU'EST CE QU'UN OBJET ?


QUELQUES EXEMPLES


Les salles de classe ont des caractéristiques
nom, température, porte ouverte...

Les salle de classe ont des comportements
augmenter la température, verrouiller la porte...

QU'EST CE QU'UN OBJET ?


Exercices


Citer quelques objets de la vie courante, et donner pour chacun d'eux quelques caractéristiques et comportements

Qu'est-ce qu'un objet


Un objet logiciel...

...est modélisé d'après un objet du mon réel

Il conserve ses caractéristiques dans des variables
Il implémente des comportements à l'aide de méthodes


Définition : Un objet est un regroupement logiciel de variables et de méthodes associées.

QU'EST-CE QU'UN OBJET


L'objet  logiciel qui modélise votre salle de classe du monde réel possède donc des variables qui permettent de connaitre son état.

  • Sa température actuelle est de 21°C
  • Sa capacité maximale est de 42 personnes
  • Sa porte est déverrouillée
  • ...

On parle de variables d'instance.



Questions


En algorithmique ou dans les langages procéduraux (C, Pascal...), comment regrouper des variables ?

A votre avis, quel est l'intérêt de l'objet à ce niveau ?

Qu'est-ce qu'un objet


Cet objet "salle de classe" possède aussi des méthodes d'instance qui permettent de modifier ces variables

  • Augmenter la température
  • Verrouiller la porte
  • ...

QU'EST-CE QU'UN OBJET


Un objet se limite à ses caractéristiques et ce qu'il peut faire.


Ex : La salle de classe n'a pas de vitesse, ne peut pas freiner etc... 

Par conséquent l'objet logiciel correspondant n'aura pas de variable "vitesse" ni de méthode "freiner"

QU'EST-CE QU'UN OBJET


  • Les variables de l'objet sont au centre de celui-ci, c'est son noyau
  • Les méthodes de l'objet entourent et masquent le noyau face aux autres objets du programme


On appelle ce principe l'encapsulation

QU'EST-CE QU'UN OBJET




Encapsulation


Idée de protéger l'information contenue dans un objet et de ne proposer que des méthodes de manipulation de cet objet.

QU'EST-CE QU'UN OBJET


Encapsulation


L'encapsulation est utilisée pour cacher les détails d'une implémentation vis à vis des autres objets.

Dans le monde réel, vous n'avez pas besoin de connaître comment la climatisation fonctionne physiquement pour agir sur la température d'une salle.

Vous avez simplement besoin de savoir sur quel bouton appuyer

QU'EST-CE QU'UN OBJET


Encapsulation


Dans le monde logiciel, vous n'avez pas besoin de connaitre comment la méthode est implémentée.

Vous avez juste besoin de savoir quelle méthode appeler

Ceci permet de changer à volonté l'implémentation du comportement sans affecter le reste du programme

QU'EST-CE QU'UN OBJET


Encapsulation


L'encapsulation a plusieurs avantages (1/2)

La modularité : le code source interne de l'objet est découplé du code source du programme.




QU'EST-CE QU'UN OBJET


ENCAPSULATION


L'encapsulation a plusieurs avantages (2/2)


La possibilité de masquer des informations :

  • Un objet offre une interface de communication avec les autres objets
  • On peut modifier à n'importe quel moment les informations  d'un objet sans perturber les autres objets




exercices


Donner 3 exemples d'objets qui pourraient tirer profit de ce mécanisme qu'est l'encapsulation ?




Les messages

Qu'est-ce qu'un message ?


Un objet seul n'est pas très utile...

Habituellement, un objet n'est qu'un composant d'un programme beaucoup plus grand qui contient d'autres objets

C'est l'interaction de ces objets qui permet d'arriver à des comportements complexes

QU'EST-CE QU'UN MESSAGE ?


Les objets logiciels communiquent et interagissent entre eux en s'envoyant des messages.

Quand l'objet A veut que l'objet B fasse une action, il lui envoie un message.

QU'EST-CE QU'UN MESSAGE ?


Parfois, les messages sont simples, ils contiennent à minima
  • Le destinataire : Qui va exécuter l'action ?
  • La méthode à exécuter : Quelle action exécuter ?


Ex : 

QU'EST-CE QU'UN MESSAGE ?


Souvent il faut ajouter des paramètres pour préciser le comportement attendu

Ex : 
  • Destinataire : la salle
  • Méthode : DéfinirTempérature()
  • Paramètre : 21°C



Qu'est-ce qu'un message



Les avantages des messages


Le comportement d'un objet est exprimé à travers ses méthodes exposées

Les objets n'ont pas besoin d'être dans le même processus ou sur la même machine pour communiquer



Exercices


Donner 5 exemples de messages du monde réel avec pour chacun son destinataire, la méthode invoquée et les paramètres nécessaires




Les classes

Qu'est-ce qu'une classe ?


Une classe est une famille d'objet

Les objets d'une même classe ont les mêmes méthodes et variables d'instances.

On dit que chaque objet est une instance d'une classe.

Un objet ne peut exister sans classe.

QU'EST-CE QU'UNE CLASSE ?


Ex : les salles G2 et G3 sont des instances de la classe "Salle de cours".

Si la classe "salle de cours" définit des variables d'instance comme température ou capacité, alors chacun des objets G2 et G3 possèderont les mêmes caractéristiques (mais pas forcément les mêmes valeurs !).

Qu'est-ce qu'une classe ?


Représentation simplifiée :



QU'EST-CE QU'UNE CLASSE ?


La différence entre "Classe" et "Objet" est souvent source de confusion.

Dans le monde réel, c'est évident que les classes ne sont pas elles-mêmes les objets qu'elles décrivent :

ex : 
  • le plan d'une salle (= classe), la salle G2 (= objet)
  • le moule d'un stylo(=classe), mon stylo(=objet)

QU'EST-CE QU'UNE CLASSE ?


De nombreux développeurs parlent d'objet, qu'ils soient en train de désigner une classe ou une instance...


C'est mal !

QU'EST-CE QU'UNE CLASSE ?



L'utilisation des classes d'objet a un grand avantage : la réutilisabilité.

Si un développeur a créé une classe "salle de cours", il pourra instancier autant d'objets de ce type qu'il le souhaitera, par exemple pour modéliser toute une école.

Exercice


Pour chacune des classes suivantes, dresser le diagramme de classe de chacune :

Etudiant
Professeur
Voiture
Chaise
Bus

Que remarquez-vous ?

Introduction à la programmation orientée objet

By Alexandre Dubois

Introduction à la programmation orientée objet

  • 4,182