18
Mickaël Martin-Nevot 22/03/2017 22:43 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é . V1.0.0 CM3 : Programmation orientée objet

CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Mickaël Martin-Nevot

22/03/2017 22:43

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é.

V1.0.0

CM3 : Programmation orientée objet

Page 2: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.0.0

I. Prés.

II. Java : bases

III. Objet

IV. Héritage

V. POO

VI. Exceptions

VII. Polymorphisme

VIII.Thread

IX. Avancé

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 1/17

Page 3: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.0.0

Héritage

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot

Animal

Mammal

Whale Wolf

Other

Eagle Auk

2/17

Page 4: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot

Vehicle

Car Bike

3/17

Page 5: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot

Smartphone

VideoGameConsoleTelephone Calendar

4/17

Page 6: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.0.0

Héritage

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot

Walker FlyerSwimmer

Animal

Mammal

Whale Wolf

Other

Eagle Auk

5/17

Page 7: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 6/17

Page 8: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.0.0

Catégories de polymorphisme

NFA032 : Programmation avec Java : POO 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: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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é

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot

Aussi appelé type abstrait de données

Pair<T>

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

8/17

Page 10: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 9/17

Page 11: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 10/17

Page 12: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.0.0

SResponsabilité unique (single

responsibility principle - SRP)

Une classe doit avoir une et une seule

responsabilité

OOuvert/fermé (open/closed principle -

OCP)

Une classe doit être ouverte à l'extension,

mais fermée à la modification

LSubstitution 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

ISé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

DInversion des dépendances

(dependency inversion principle - DIP)

Il faut dépendre des abstractions, pas des

implémentations

S.O.L.I.D

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 11/17

Page 13: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 12/17

Page 14: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot

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

13/17

Page 15: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 14/17

Page 16: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 15/17

Page 17: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 16/17

Page 18: CM3 : Programmation orientée objet Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/...Paramétrique: le type est paramétré par un autre type Type: définition

Prés. > Java : bases > Objet > Héritage > POO > Exceptions > Polymorphisme > Thread > Avancé V1.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

NFA032 : Programmation avec Java : POO Mickaël Martin-Nevot 17/17