21
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 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 CM2-1 : Introduction aux objets

CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

Embed Size (px)

Citation preview

Page 1: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

CM2-1 : Introduction aux objets

Page 2: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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/20

Page 3: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

IXe siècle : Al Khuwarizmi (algorithmique)

1842 : Ada Lovelace et Babbage (programmation)

1854 : Boole (logique)

1936 : Turing (machine de)

1951 : Grace Murray Hopper (compilateur/bogue)

1954 : Fortan et système d’exploitation

1955 - 1980 : cartes perforées

1970 : programmation structurée

1980 – 1990 : programmation orientée objet (POO)

Programmation : historique

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

Page 4: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Code source traditionnel Code source orienté objet

Qu’est-ce qu’un objet ?

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

Page 5: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Code source traditionnel Code source orienté objet

Qu’est-ce qu’un objet ?

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

« Un objet est une capsule logicielle oblative avec un tropisme conatif dont

l'hétéronomie est la marque de la durée, de l'éphémère et de la hoirie »

— Serge Miranda

4/20

Page 6: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Diminuer le coût d’un logiciel

Faciliter la conception et l’évolution du code

Augmenter la durée de vie d’un logiciel

Augmenter la réutilisabilité d’un logiciel

Augmenter la facilité de maintenance d’un logiciel

Pourquoi la POO ?

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

Conception d’un logiciel à la manière

de la fabrication d’une voiture

5/20

Page 7: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Communication inter-objets par messages

À la réception d’un message :

Appel d’une méthode qui modifie son état

Appel d’une méthode qui envoie un message à son tour

Principe de la POO

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

Ma voiture Le moteurdémarre

6/20

Page 8: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Paradigme (≠ méthodologie)

Concept :

Objet :

État (attributs)

Comportement (méthodes)

Identité

Encapsulation

Héritage

Polymorphisme

Langage de programmation :

Java, C++, Ada, PHP, C#, Objective C, Python, etc.

Programmation objet

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

Page 9: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Objet : un concept, une idée/entité du monde physique

Exemples : voiture, étudiant, chat, fenêtre, forme, etc.

Classe : regroupe les objets de mêmes comportements

Instancier : fabriquer un exemplaire d'un élément à partir

d'un modèle qui lui sert en quelque sorte de moule

Un objet est une instance de classe

Réification : permet de transformer ou à transposer un concept

en une entité informatique

Objet et classe

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

Une classe représente une responsabilité

8/20

Page 10: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

État :

Défini par l’ensemble des attributs

Attribut, variable d’instance, donnée membre :

Variable spécifique à l’objet

Comportement :

Défini par l’ensemble de méthodes

Méthode : fonctions spécifique à l’objet

Méthodes :

Constructeur : appelé à la création de l’objet

Destructeur : appelé à la destruction d’un objet

Méthode abstraite : méthode sans code

Accesseurs et mutateurs : sert de mandataire d’accès à l’état de l’objet (depuis l’extérieur de celui-ci)

État et comportement

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

Page 11: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

POO et magie

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

Page 12: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

POO : deux aspects Programme en cours d’écriture :

Ensemble de classes

Chaque classe a des attributs et des méthodes

Programme en cours d’exécution (processus) :

Ensemble d’objets

Chaque objet a son état courant et un comportement

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

Page 13: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Association de variables et fonctions dans une même entité

L'objet est vu de l'extérieur comme une boîte noire ayant

certaines propriétés et ayant un comportement spécifié

Encapsulation

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

Variables

Fonction

Variables

Variables

Fonction

Attribut

Méthode

Attribut

Attribut

Méthode

12/20

Page 14: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

POO et magie

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

Page 15: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Concerne : classe, constructeur, attribut et méthode

Visibilité :

Publique : accessible de partout et sans aucune restriction

Protégée : accessible aux classes du module (ou paquetage) et

à ses classes filles

Privée : accessible uniquement au sein de sa classe

Accesseurs (getters) / mutateurs (setters) :

Permet de récupérer/modifier la valeur d’un attribut avec une

visibilité restreinte grâce à une méthode

Encapsulation : accessibilité

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

Page 16: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Objets techniques qui rendent des services

Objets métiers qui implémentent les aspects métiers du

système (s’appuie sur un lexique) :

Aspect pragmatique

Aspect sémantique

Aspect logique

Typologie des objets

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

Page 17: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Construction d’une classe à partir d’autres classes

en partageant leurs attributs et méthodes

Spécialisation (ou généralisation), enrichissement

Réutilisation

Redéfinition

Héritage

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

Vehicle

Car

ER Vehicle

Ambulance

Bike

16/20

Page 18: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Classes et sous-classes B hérite de A

A est la classe mère, B la classe fille

A est la super-classe de B

B est une sous-classe de A

Un objet de type B est aussi un objet de type A

Un objet de type A n’est pas un objet de type B

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

A

B

17/20

Page 19: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Opérateurs

Données :

Variables ≠ attributs

Constantes

Valeurs littérales ("hello!", 3, 2.75, true)

Expressions (et expressions « parenthésées »)

Affectation ≠ condition

Instructions

Fonction ≠ procédure ≠ méthode (signature)

Paramètres (formels) ≠ arguments (paramètres effectifs)

Exécution séquentielle

Notions générales

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

Page 20: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Prototype

Mixin

Trait

Aller plus loin

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

Page 21: CM2-1 : Introduction aux objets Mickaël Martin-Nevotmickael-martin-nevot.com/cnam/analyste-programmeur/... · Langage de programmation : ... Protégée: accessible aux classes du

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

Mickaël Martin-Nevot

[email protected]

Carte de visite électronique

Relecteurs

Crédits

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