CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré...

18
Mickaël Martin Nevot 30/11/2015 20:00 Cette œuvre de Mickaël Martin Nevot est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage à l'Identique 3.0 non transposé. Cette œuvre de Mickaël Martin Nevot est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage à l'Identique 3.0 non transposé. V2.0.0 CM2 : Programmation orientée objet

Transcript of CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré...

Page 1: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Mickaël Martin Nevot

30/11/2015 20:00

Cette œuvre de Mickaël Martin Nevot est mise à disposition selon les termes de la

licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage à l'Identique

3.0 non transposé.

Cette œuvre de Mickaël Martin Nevot est mise à disposition selon les termes de la

licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage à l'Identique

3.0 non transposé.

V2.0.0

CM2 : Programmation orientée objet

Page 2: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

I. Prés.

II. POO

III. Objet

IV. Java

V. Types

VI. Héritage

VII. Outils

VIII. Exceptions

IX. Polymorphisme

X. Thread

XI. Avancé

Java Mickaël Martin Nevot 1/17

Page 3: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Héritage

Java Mickaël Martin Nevot

Animal

Mammal

Whale Wolf

Other

Eagle Auk

2/17

Page 4: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Classe abstraite :

Ne peut pas être instanciée (mais constructeur[s] possible[s])

Méthode abstraite :

Aucun service offert par la méthode mais une sémantique

d’utilisation offerte

Si une seule méthode est abstraite, la classe l’est aussi

Abstraction

Java Mickaël Martin Nevot

Vehicle

Car Bike

3/17

Page 5: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Modèle pour une classe

Classe totalement abstraite sans attribut (non constant)

Une classe implémentant une interface doit implanter

(implémenter) toutes les méthodes déclarées par l’interface

Interface

Java Mickaël Martin Nevot

Smartphone

VideoGameConsole Telephone Calendar

4/17

Page 6: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Héritage

Java Mickaël Martin Nevot

Walker Flyer Swimmer

Animal

Mammal

Whale Wolf

Other

Eagle Auk

5/17

Page 7: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Type :

Défini les valeurs qu’une donnée peut prendre

Défini les opérateurs qui peuvent lui être appliqués

Défini la syntaxe : « comment l’appeler ? »

Défini la sémantique : « qu’est ce qu’il fait ? »

Une classe est un type (composé), une interface aussi…

Polymorphisme :

Capacité d’un objet à avoir plusieurs types

Permet d’utiliser une classe héritière comme une classe héritée

Type et polymorphisme

Java Mickaël Martin Nevot 6/17

Page 8: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Catégories de polymorphisme

Java Mickaël Martin Nevot

Surcharge :

Permet d'avoir des méthodes de même nom, avec des

fonctionnalités similaires

Paramétrique :

Permet de définir plusieurs méthodes de même nom mais

possédant des paramètres différents

D’héritage :

Permet de redéfinir une méthode dans des classes héritières

(l’appel se fait sans se soucier de son type intrinsèque)

Polymorphisme

Ad hoc Surcharge

Universel

Paramétrique

D’héritage

7/17

Page 9: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Généricité (polymorphisme paramétrique de type) :

Polymorphisme : objet pouvant prendre plusieurs types

Paramétrique : le type est paramétré par un autre type

Type : définition de la syntaxe et de la sémantique d’utilisation

Comportement unique pour des types polymorphes

Généricité

Java Mickaël Martin Nevot

Aussi appelé type abstrait de données

Pair<T>

Pair<Shoes> Pair<Ace> Pair<Animal>

8/17

Page 10: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Regroupement de codes sources en unités de travail

logiques

Encapsulation

Réutilisabilité et partage du code facilités

Facilitation de réalisation de bibliothèques

Généricité possible

Paquetage : organisation sémantique de classes en répertoires

Module et paquetage

Java Mickaël Martin Nevot 9/17

Page 11: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Couplage :

Interconnexion de deux classes (modules)

Couplage fort : une modification d’une classe nécessite la

modification de l’autre

Couplage faible : communication de données uniquement

grâce à des « interfaces »

Cohésion :

Relations des données au sein d’une même classe

Centré sur un but : se concentre sur tâche unique et précise

Couplage et cohésion

Java Mickaël Martin Nevot 10/17

Page 12: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

S Responsabilité unique (single

responsibility principle - SRP)

Une classe doit avoir une et une seule

responsabilité

O Ouvert/fermé (open/closed principle -

OCP)

Une classe doit être ouverte à l'extension,

mais fermée à la modification

L Substitution de Liskov (Liskov

substitution principle - SLP)

Une classe doit pouvoir être remplacée par

une instance d'un des ses sous-types, sans

modifier la cohérence du programme

I Ségrégation des interfaces (interface

segregation principle - ISP)

Préférer plusieurs interfaces spécifiques

pour chaque client plutôt qu'une seule

interface générale

D Inversion des dépendances

(dependency inversion principle - DIP)

Il faut dépendre des abstractions, pas des

implémentations

S.O.L.I.D

Java Mickaël Martin Nevot 11/17

Page 13: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Loi de Déméter pour les fonctions et les

méthodes : LoD-F

Principe de connaissance minimale

Ne parlez qu'à ses amis immédiats

Toute méthode d'un objet peut simplement

invoquer les méthodes des types suivants

d'objets :

Lui-même

Ses paramètres

Les objets qu'il crée/instancie

Ses objets composants

Loi de Démeter

Java Mickaël Martin Nevot 12/17

Page 14: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Avantages :

Résultat plus maintenable et plus adaptable

Faible dépendance entre les objets

Réduit la probabilité d'erreurs logicielles

Inconvénients :

Multiplication des wrappers :

Augmenter le temps de développement initial

Accroître l'espace mémoire utilisé

Diminuer les performances

Loi de Démeter

Java Mickaël Martin Nevot

Méthode permettant la propagation d’appels de méthodes à leurs composants

13/17

Page 15: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Modèle-Vue-Contrôleur Architecture et méthode de conception d’IHM

Modèle : données et leur manipulation

Vue : élément de l’interface graphique

Contrôleur : orchestre les actions, synchronise

MVC 2 : un seul contrôleur

Java Mickaël Martin Nevot 14/17

Page 16: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Prototype et slot

Mixin

Trait

Réflexion

λ-calcul

Programmation orientée aspect (POA)

Programmation orientée acteur

Programmation par contrat

Espace de noms

Métaclasse

Aller plus loin

Java Mickaël Martin Nevot 15/17

Page 17: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Documents électroniques :

http://hdd34.developpez.com/cours/artpoo/

http://fabrique-jeu-video.blogspot.fr/2013/08/poo.html

Document classique :

Hugues Fauconnier. Programmation orientée objet en Java.

Guillaume Revy. Introduction à la Programmation Orientée

Objet... et son application au C++.

Craig Larman. UML2 et les design patterns.

Mathieu Nebra. La programmation orientée objet.

Liens

Java Mickaël Martin Nevot 16/17

Page 18: CM2 : Programmation orientée objet Mickaël Martin Nevot...Paramétrique: le type est paramétré par un autre type Type: définition de la syntaxe et de la sémantique d’utilisation

Prés. > POO > Objet > Java > Types > Héritage > Outils > Exceptions > Polymorphisme > Thread > Avancé V2.0.0

Auteur

Mickaël Martin Nevot

[email protected]

Carte de visite électronique

Cours en ligne sur : www.mickael-martin-nevot.com

Relecteurs

Mickaël Martin Nevot

[email protected]

Carte de visite électronique

Crédits

Java Mickaël Martin Nevot

17/17