Uploaded by TOP 10

I511 - Chapitre 1- Introduction générale

advertisement
PROGRAMMATION ORIENTÉE
OBJET AVEC JAVA
LSTI Génie logiciel S5
Module: I511
FST – Errachidia
2021/2022
Pr. Mohamed OUALLA
m.oualla@umi.ac.ma
Bibliographie
https://www.pdfdrive.com/
2
Plan du cours
• Chp 1: Introduction générale
• Chp 2: Présentation du langage JAVA
• Chp 3: Les bases de Java
• Chp 4: Classes et objets
• Chp 5: Héritage et polymorphisme
• Chp 6: Compléments utiles
3
Introduction générale
• Introduction
• Langages de programmation
• Modes de fonctionnement des langages de programmation
• Types de langages de programmation
• Programmation Orientée Objet ?
• Quelques concepts de la POO
• Classe et Objet
• Abstraction et Encapsulation
• Héritage et Polymorphisme
CHAPITRE I
CHAPITRE i
Introduction
Introduction
générale
• Le besoin de communiquer avec l’ordinateur:
• Connaitre son langage (des 1 et des 0)
Calculer la
somme de
deux nombres
entiers
001101010001
100101000111
10010
Logiciel
(Programmes)
Calculer la
somme de
deux nombres
entiers
"Traducteur"
Alors c’est
quoi un
programme et
comment le
créer ?
00110101000110
01010001111001
0
5
CHAPITRE i
Définitions
Introduction
générale
• Un programme est une suite d'instructions définissant des opérations à exécuter par l’ordinateur.
• Une instruction est un ordre donné à un ordinateur.
• Pour écrire des programmes, on se sert d'une notation, appelée langage de programmation
destiné à décrire l'ensemble des instructions qu'un ordinateur doit exécuter.
• Java, Python, C, C++,
• etc.
6
CHAPITRE i
Langage de programmation
Rédige un programme
à l’aide d’un langage
de programmation
développeur
•
•
•
Affiche la somme de 10 et 34
Calcule l'âge en fonction de la date
Affiche l'âge calculé
Programme
(Code source)
Plusieurs façons de rédiger un
programme
→ Différents types de langages
de programmation.
(Ex. POO)
Introduction
générale
00110101011
Traducteur
(Compilateur ou interpréteur)
Exécute le code
Plusieurs façons de traduire
→ Différents modes de
fonctionnement de langages
de programmation.
(Compilé, Interprété)
7
Modes de fonctionnement des langages de
programmation
CHAPITRE i
Introduction
générale
• Trois grands modes de fonctionnement des langages de programmation :
• Les langages interprétés.
• Les langages compilés.
• Les langages intermédiaires.
8
CHAPITRE i
Les langages interprétés vs compilés (1/2)
Introduction
générale
Fichier contenant le code source
Lecture
ligne 3
Lecture
ligne 2
Lecture
ligne 1
1.
2.
3.
Affiche la somme de 10 et 34
Calcule l'âge en fonction de la date
Affiche l'âge calculé
Lance la
compilation
Compilateur
Interpréteur
ligne 3
ligne 2
Création de l’exécutable
OS
ligne 1
10001101
00111100
Exécution
01100011
Exécution
Le processeur
exécute le code
00011101010100011
11001010101000111
01011001110101001
Fichier compilé
(exécutable)
9
CHAPITRE i
Les langages interprétés vs compilés (2/2)
Introduction
générale
• Dans un langage interprété, le même code source pourra marcher directement sur n’importe
quel OS. Avec un langage compilé, il faudra (en général) tout recompiler à chaque modification
et chaque changement du OS. (Portabilité)
• Dans un langage compilé, le programme est directement exécuté sur l'ordinateur, donc il sera en
général plus rapide que le même programme dans un langage interprété. (Rapidité)
• Un programme compilé a pour avantage de garantir la sécurité du code source. Par contre, un
langage interprété, qui est directement lisible, permet à n'importe qui de connaître les secrets
de fabrication d'un programme et donc de copier et de modifier le code. (Sécurité)
10
CHAPITRE i
Les langages intermédiaires (Exemple Java)
Code source
1.
2.
3.
Fichier bytecode
Compilateur
(monFichier.java)
Affiche la somme de 10 et 34
Calcule l'âge en fonction de la date
Affiche l'âge calculé
Création du
bytecode
Lance la
compilation
Introduction
générale
monFichier.class
Les fichiers bytecode peuvent être envoyés sur
les ordinateurs clients où ils doivent s’exécuter
000111
010101
000111
monFichier.class
Fichier bytecode
Ordinateur du
client
Machine virtuelle
Fichier à
exécuter
OS Windows
Le processeur
exécute le code
11
Exemple de
langages
https://www.scr
iptol.fr/program
mation/listelangagesprogrammation.
php#language-a
Langage
Domaine d'application principal
CHAPITRE i
Compilé/interprété
ADA
Le temps réél
Introduction
Langage compilé
BASIC
Programmation basique à but éducatif
Langage interprété
C
Programmation système
Langage compilé
C++
Programmation système objet
Langage compilé
Cobol
Gestion
Langage compilé
Fortran
Calcul
Langage compilé
Java
Programmation orientée objet
Langage intermédiaire
MATLAB
Calcul mathématique
Langage interprété
Mathematica
Calcul mathématique
Langage interprété
LISP
Intelligence artificielle
Langage intermédiaire
Pascal
Enseignement
Langage compilé
PHP
Développement de sites web dynamiques
Langage interprété
Prolog
Intelligence artificielle
Langage interprété
Perl
Traitement de chaînes de caractères
Langage interprété
Python
Intelligence artificielle, calcul
mathématique
Langage intermédiaire
générale
12
CHAPITRE i
Langage de programmation
Rédige un programme
à l’aide d’un langage
de programmation
développeur
•
•
•
Affiche la somme de 10 et 34
Calcule l'âge en fonction de la date
Affiche l'âge calculé
Programme
(Code source)
Plusieurs façons de rédiger un
programme
→ Différents types de langages
de programmation.
(Ex. POO)
Introduction
générale
00110101011
Traducteur
(Compilateur ou interpréteur)
Exécute le code
Plusieurs façons de traduire
→ Différents modes de
fonctionnement de langages
de programmation.
(Compilé, Interprété)
13
CHAPITRE i
Types de langages de programmation
Introduction
générale
• Les langages procéduraux
• Les langages orientés objets (L.O.O)
• Les langages logiques
• Les langages de spécification
• Les langages hybrides
14
CHAPITRE i
PP vs POO
Introduction
générale
• PP: Basée sur les traitements :
• POO: Basée sur les données :
• Décomposer le programme en un ensemble de
fonctions (modules) simples.
• Définir les données intéressantes, et les regrouper
dans des structures qui ont un sens.
• Définir les données à manipuler par ces fonctions.
• Définir les méthodes d’accès à ces données, et les
calculs qui seront effectués dessus.
• Le programme est une liste des tâches et des
opérations à exécuter.
• Le programme est l’ensemble des objets et des
interactions entre ces objets.
Objet 1
Données
globales
Données
Objet 2
Données
Fonction 1:
calcule()
Données
locales
Fonction 2:
Factorise()
Données
locales
………
……
…
Méthodes:
Init()
Calcule()
Factorise()
Méthodes :
Init()
Trie()
Permute()
Objet 3
Données
Méthodes :
Supprime()
Ajoute()
Insère()
15
CHAPITRE i
Exemple: Inscription à la FSTE
Introduction
générale
• Programmation procédurale:
• Programmation orienté objet:
• Inscription en ligne
• Etudiant
• Remplir le formulaire en ligne
• Données à traiter: nom, prénom, mention,…
• Envoyer le formulaire
• Inscription finale
• Déposer le dossier
• Validation de l’inscription
• Etudier le dossier
• Données: nom, prénom,…
• Comportement: s’inscrire en ligne, déposer le
dossier, …
• Scolarité
• Données: dossiers des étudiants, …
• Comportement: Etudier le dossier, répondre le
candidat, …
• Verdict du jury
• Etc.
16
CHAPITRE i
PP vs POO
Introduction
générale
Programmation Procédurale
Programmation Orientée Objet
Programmes
Le programme principal est divisé en petites
parties selon les fonctions. Structuration
"descendante" du programme
Le programme principal est divisé en
petit objet en fonction du problème.
Conception d’un logiciel à la manière de
la fabrication d’une voiture
Les données
Chaque fonction contient des données
différentes.
Les données et les fonctions de chaque
objet individuel agissent comme une
seule unité.
La
Les fonctions communiquent avec d’autres
Un objet est lié à l’autre en utilisant le
communication fonctions en conservant les règles habituelles. message qui passe.
Importance
Les fonctions ou les algorithmes ont plus
d’importance que les données dans le
programme.
Les données prennent plus d’importance
que les fonctions du programme.
Exemples
Pascal, Fortran
PHP5, C ++, Java.
17
CHAPITRE I
Programmation Orientée Objet (POO)
Introduction
générale
• La programmation orientée objet (POO) est un paradigme de programmation inventé au début
des années 1960 (le langage SIMULA en 1967).
• POO est une programmation dans laquelle un programme est organisé comme un ensemble
d'objets disposant de ressources et de moyens pour interagir entre eux.
• POO permet de décrire le problème avec les termes mêmes du problème plutôt qu'avec les
termes de la machine.
18
CHAPITRE I
Quelques concepts de la POO
Introduction
générale
• Abstraction
• Classe et Objet
• Encapsulation
• Héritage
• Polymorphisme
19
CHAPITRE I
1- Abstraction
Introduction
générale
• L’abstraction, en informatique, est une manière de représenter des objets qui appartiennent au
monde réel dans un modèle informatique convenable en se limitant aux aspects utiles pour
l’utilisateur de cet abstraction.
• Dans un programme de gestion du personnel, un professeur peut être représenté par une classe ayant
comme attributs: CIN, nom, prénom et grade.
• Dans un programme de gestion des emplois, ce même professeur peut être représenté par une classe
ayant comme attributs: nom, prénom et matière.
• Abstraction par simplification: simplifier une réalité complexe, elle consiste à négliger ce qui
n’a pas d’importance (variable, classe, etc.)
• Abstraction par généralisation: consiste à remonter du particulier vers le général (héritage,
polymorphisme)
• L’abstraction, en OO, est un processus permettant de construire des classes pertinentes, dans le
domaine d'application considéré en réduisant le monde réel afin d'en gérer la complexité .
20
CHAPITRE I
2- Classe et Objet: Objet
Introduction
générale
• Un objet représente toute entité du monde physique (matériel), un concept ou une idée
(immatériel).
• Exemple: une voiture, une personne, une facture, un nombre complexe, …
• Un objet est caractérisé par une identité, des états significatifs et un comportement.
• Identité: Permet de distinguer les objets les uns par rapport aux autres.
• Etat: Correspond aux valeurs de tous les attributs (Données) à un instant donné.
• Comportement: Se défini par l’ensemble des opérations (Méthodes) qu’il peut exécuter en
réaction aux messages envoyés par les autres objets.
• Un message = demande d’exécution d’une opération
21
CHAPITRE I
2- Classe et Objet: Exemple d’un objet
Introduction
générale
• Dans une usine, l’objet voiture1 est caractérisé par:
• Son identité : voiture1
• Son état:
•
•
•
•
marque: Renault
modèle : Megane
couleur : Noire
moteur: Diesel, 85 Chevaux
Identité
Etat
• Son comportement:
•
•
•
•
demarrer()
arreter()
peindre(NouvColor)
getModele()
Comportement
:voiture1
voiture1
marque: Renault
modèle : Megane
couleur : Noire
moteur: Diesel,
Diesel; 85 Chevaux
demarrer()
Démarrer()
arreter()
Arrêter()
peindre(NouvColor)
Peindre(NouvColor)
getModele()
GetEtat()
22
CHAPITRE I
2- Classe et Objet: Classe
Introduction
générale
• Les objets qui ont les mêmes attributs et les mêmes comportements sont regroupés dans des
classes.
• Un objet est une variable (presque) comme les autres. Il faut notamment qu’il soit déclaré avec
son type (le nom de la classe).
• Le type d’un objet est un type complexe (par opposition aux types primitifs entier, caractère,
etc.) qu’on appelle une classe.
• Les classes servent de « moules » pour la création des objets.
• Un objet est une instance (exemplaire) d’une classe.
• Une classe possède des membres :
• Attributs : les éléments données de la classe.
• Méthodes : fonctions qui donnent accès ou modifient les attributs.
23
2- Classe et Objet: Exemple d’une classe et ses
objets
marque : Renault
modèle : Megane
année : 2009
Classe
Voiture
Attributs
marque : String
modèle : String
année : int
Méthodes
demarrer() : void
arreter() : void
peindre(String) : void
getModele() : String
:voiture2
Instanciation
marque : Peugeot
modèle : 308
année : 2016
:voiture3
marque : BMW
modèle : BMW série 3
année : 2018
…
Introduction
générale
Objets
(Instances ou exemplaires)
:voiture1
CHAPITRE I
…
24
CHAPITRE I
2- Classe et Objet: Exercice
Introduction
générale
• Représenter les classes suivantes avec deux objets pour chacune:
• Point: qui représente un point de l’espace géométrique, caractérisé par ses coordonnées;
l’abscisse et l’ordonnée.
• Cette classe possède les méthodes suivantes:
• deplacerX: déplacer un point d'une longueur sur l'axe des x.
• deplacerY: déplacer un point d'une longueur sur l'axe des y.
• Carré: qui représente un carré en géométrie, caractérisé par la longueur de son coté et le point
qui représente son coin supérieur gauche.
• Cette classe possède les méthodes suivantes:
• claculerPerimetre: Calculer son périmètre.
• calculerSurface: Calculer son air.
• changerPosition: Changer sa position.
25
CHAPITRE I
2- Classe et Objet: la classe Point
Introduction
générale
Objets
Classe
:p1
abscisse : 2
ordonnee : 10
Point
abscisse : int
ordonnee : int
deplacerX(int longueur) : void
deplacerY(int longueur) : void
Instanciation
:p2
abscisse : 25
ordonnee : 12
26
CHAPITRE I
3- Encapsulation
Introduction
générale
• L'encapsulation est un moyen de présenter une abstraction par le fait de rassembler les données et les
méthodes au sein d'une même classe en cachant l'implémentation de l'objet.
• C’est un mécanisme de masquage des données, permettant
Proposer un service
Données
d’empêcher l'accès aux données par un autre moyen
que les méthodes proposées.
Messages
Encapsulation
Méthodes
• Le niveau privé : les attributs sont masqués à l’intérieur d’un objet et l'accès
à ces données est limité aux méthodes de la classe elle-même.
Niveau de protection le plus élevé.
• Le niveau public : l'accès aux données peut être fait par les
méthodes de toutes les classes. Niveau de protection le plus bas.
Réagir aux messages
(Répondre aux messages)
• Trois niveaux d'encapsulation:
• Le niveau protégé: l'accès aux données est réservé aux méthodes
des classes dérivées .
(Recevoir des messages)
en POO
objet
Données
Autre
objet
Méthodes
27
CHAPITRE I
3- Encapsulation
Introduction
générale
Proposer un service et réagir aux messages
28
CHAPITRE I
4- Héritage
Introduction
générale
• L’héritage définit une relation de classification (généralisation-spécialisation) entre une classe
plus générale ou super-classe, et une ou des classe(s) plus spécifique(s) ou sous-classes .
• L'héritage est un mécanisme par lequel une super-classe partage ses attributs et ses opérations
Spécialisation
Forme
Rectangle
Triangle
Carre
Généralisation
avec ses sous-classes.
• L’héritage permet la réutilisation du code et l’organisation hiérarchique des classes.
29
CHAPITRE I
5- Polymorphisme
Introduction
générale
• Le polymorphisme décrit la caractéristique d'un élément qui peut se présenter sous des formes
différentes.
• Le polymorphisme d’objet: Un objet peut appartenir à plus d'un type (héritage). On raffine un
type-père en un autre type (le sous-type) par des restrictions sur les valeurs possibles des
attributs. Ainsi, les objets de ce sous-type sont conformes avec le type père.
• Le polymorphisme de méthode: On dit qu'une méthode est polymorphe si elle réalise des actions
différentes selon la nature des objets sur lesquels elle s’applique:
• Surcharge,
• Redéfinition,
• Méthodes abstraites.
30
Download