Support de cours

Programmation orientée objet, Langage Java · course

Voir tous les documents en programmation

Support de cours

Programmation orientée objet Langage Java

Réalisé par: Chiheb-Eddine Ben N’Cir, Maitre-assistant à ESEN, Université de Manouba

Avant Propos

Ce document présente le support de cours du module «Programmation orientée objet (POO)» . Ce

module s'adresse aux étudiants de 2éme année Licence Fondamentale et appliquée en Informatique de

Gestion, de l’ecole supérieure d’economie numérique de l’université de la manouba.

Description du module Année universitaire 2016-2017 Col3 Col4 Col5 Col6 Col7
Année universitaire
2016-2017




2016-2017




2016-2017




2016-2017




2016-2017




2016-2017




Volume Horaire semestriel
* (14 semaines)*
Total

Cours
TD
TD
TP
Cours intégré
Volume Horaire semestriel
* (14 semaines)*


1.5
1.5
1.5


Equipe pédagogique
Chargé des cours
Chargé des cours
Chargé des cours
Chiheb-eddine ben n’cir
Chiheb-eddine ben n’cir
Chiheb-eddine ben n’cir
Equipe pédagogique

Chargé des TD

Chargé des TD

Chargé des TD



Niveau d’étude


2~~ère~~ année


2~~ère~~ année


2~~ère~~ année


2~~ère~~ année


2~~ère~~ année


2~~ère~~ année
Plan du Cours
Bibliographies :


Bibliographies :


Bibliographies :


Bibliographies :


Bibliographies :


Bibliographies :


Bibliographies :


Partie 1 : Support de cours

Plan Chapitre 1

CHAPITRE 1 : ...................................................................................................................................................... 1

INTRODUCTION A LA PROGRAMMATION ORIENTEE OBJET ............................................................ 1

1. INTRODUCTION A LA CONSTRUCTION DE LOGICIELS .............................................................. 1

1.1 PROBLEMATIQUES ..................................................................................................................................... 1 1.2 SOLUTIONS .................................................................................................................................................... 1

2. PROGRAMMATION PROCEDURALES ............................................................................................... 3

3. PASSAGE DE LA PROGRAMMATION PROCEDURALE A LA PROGRAMMATION OBJETS 5

4. LES PRINCIPES DE LA PROGRAMMATION ORIENTEE OBJET ................................................. 6

CHAPITRE 2 : ...................................................................................................................................................... 8

PRESENTATION DE L’ENVIRONNEMENT JAVA ...................................................................................... 8

CHAPITRE 3 : .................................................................................................................................................... 10

CONCEPTS DE BASE DE LA PROGRAMMATION ORIENTEE OBJET ............................................... 10

1. STRUCTURE D’UN PROGRAMME ORIENTE OBJET .................................................................... 10

1.1. OBJET ................................................................................................................................................. 10 1.2. CLASSE ............................................................................................................................................... 11 1.3. ATTRIBUTS ......................................................................................................................................... 11 1.4. METHODES ......................................................................................................................................... 11 1.5. UN PACKAGE ...................................................................................................................................... 11

2. NOTIONS DE BASE D’UN PROGRAMME ORIENTE OBJET ........................................................ 12

2.1. ENCAPSULATION ................................................................................................................................. 12 2.2. ABSTRACTION ..................................................................................................................................... 13 2.3. SEPARATION ET SPECIALISATION ........................................................................................................ 13

3. APPLICATION : GESTION DE L’INSTITUTION. ............................................................................. 13

CHAPITRE 4 : .................................................................................................................................................... 15

CONSTRUCTION DES CLASSES ET INSTANCIATIONS DES OBJETS EN JAVA .............................. 15

1. DECLARATION DES CLASSES EN JAVA .......................................................................................... 15

1.1. LES ATTRIBUTS ................................................................................................................................... 16 1.2. LES METHODES ................................................................................................................................... 16 1.3. LES CONSTRUCTEURS ......................................................................................................................... 18 1.4. LES ACCESSEURS ................................................................................................................................ 20

2. INSTANCIATION DES OBJETS EN JAVA ......................................................................................... 21

2.1. LA CREATION D'UN OBJET : INSTANCIER UNE CLASSE .......................................................................... 21 2.2. APPEL DES ATTRIBUTS ET DES METHODES A PARTIR DES OBJETS ........................................................ 22 2.3. LA COMPARAISON DES OBJETS ............................................................................................................ 25

Publicité

3. LES MOTS CLEFS ET LES METHODES SPECIFIQUES (RELATIVES AUX METHODES ET CLASSES) ........................................................................................................................................................... 27

3.1. LE MOT CLE « FINAL » ......................................................................................................................... 27

3.2. LE MOT CLEFS « THIS » ....................................................................................................................... 27 3.3. LE MOT CLEFS « STATIC » ................................................................................................................... 28 3.4. LE MOT CLEFS « INSTANCEOF » .......................................................................................................... 29 3.5. LE MOT CLEFS « NULL » ...................................................................................................................... 29

4. LA SURCHARGE DES METHODES .................................................................................................... 30

CHAPITRE 5....................................................................................................................................................... 31

HERITAGE ET POLYMORPHISME ............................................................................................................. 31

1. L’HERITAGE............................................................................................................................................ 31

2. LA REDEFINITION ................................................................................................................................. 32

EXEMPLE 1 : ...................................................................................................................................................... 33 EXEMPLE 2 ........................................................................................................................................................ 34 EXERCICE .......................................................................................................................................................... 35

CHAPITRE 6....................................................................................................................................................... 37

ABSTRACTION ET UTILISATION DES INTERFACES ............................................................................ 37

1. LES CLASSES ABSTRAITES ................................................................................................................. 37

1.1. SYNTAXE DE DECLARATION DES CLASSES ET DES METHODES ABSTRAITES ......................................... 38

Programmation orientée objet

Chapitre 1 : Introduction à la programmation orientée objet 1. Introduction à la construction de logiciels

1.1 Problématiques

Un Logiciel est ensemble de programmes, de procédés, de règles, et des documentations relatifs au fonctionnement de l’ensemble des traitements d’un système d’information. Le principal rôle d’un logiciel est d’automatiser un processus d’information dans un système d’information. L’automatisation de ce processus permettra de faciliter les taches des utilisateurs.

La construction de logiciel est alors une activité importante qui nécessite l’implication de plusieurs ressources (financières, humaines) et nécessitent un temps considérable. La durée de vie du logiciel ne s’arrête pas au moment de son intégration en le rendant accessible et fonctionnel aux utilisateurs. Un logiciel doit être maintenu et peut évoluer et survivre des années et des années. D’où la nécessité de maintenir le logiciel au fur et à mesure de son utilisation. Les questions qui se posent : comment peuton produire des logiciels de qualité tout en :

  • Respectant les besoins des utilisateurs

  • Minimisant les couts de développement

  • Minimisant les coûts de maintenance et d’évolution

  • Garantir la Fiabilité

1.2 Solutions

Pour construire des logiciels de qualité il faut appliquer des méthodes et des principes connus de l’ingénieur au domaine du logiciel et qui seront la base de construction d’une industrie de logiciel. On parle des principes du génie logiciels . Quels sont ces principes ?

There are two ways of constructing a software design : One way is

to make it so simple that there are obviously no deficiencies, and
the other way is to make it so complicated that there are no obvious

deficiencies.Hoare

1 Chiheb-Eddine Ben N’Cir

Programmation orientée objet

Parmi les principes du génie logiciel on peut citer (selon C.ghezzi) :

La décomposition des problèmes en sous-problèmes indépendants.

Publicité

En anglais « Separation of concerns ». Il s’agit de :

  • Décorréler les problèmes pour n’en traiter qu’un seul à la fois.

  • Simplifier les problèmes (temporairement) pour aborder leur complexité progressivement

La modularité

C’est une instance cruciale du principe de décomposition des problèmes. Il s’agit de partitionner le logiciel en modules qui :

  • ont une cohérence interne (des invariants).

  • possèdent une interface ne divulguant sur le contenu du module que ce qui est strictement nécessaire aux modules clients.

L’évolution de l’interface est indépendante de celle de l’implémentation du module.

Les choix d’implémentation sont indépendants de l’utilisation du module.

Ce mécanisme s’appelle le camouflage de l’information (information hiding).

L’abstraction

C’est encore une instance du principe de décomposition des problèmes. Il s’agit d’exhiber des concepts généraux regroupant un certain nombre de cas particuliers et de raisonner sur ces concepts généraux plutôt que sur chacun des cas particuliers. Le fait de fixer la bonne granularité de détails permet :

  • de raisonner plus efficacement.

  • de factoriser le travail en instanciant le raisonnement général sur chaque cas particulier.

Exemples en programmation : les classes abstraites dans les langages orienté objets, les fonctions d’ordre supérieur.

La généricité.

Un logiciel réutilisable a beaucoup plus de valeur qu’un composant dédié. Un composant est générique lorsqu’il est adaptable à d’autre projet logiciel ou bien il est paramétrable dans d’autres contextes d’utilisations.

2 Chiheb-Eddine Ben N’Cir

Programmation orientée objet

Exemple : Comportement d’une pile sans savoir le type des données contenues.

La construction incrémentale

Un développement logiciel a plus de chances d’aboutir s’il suit une construction incrémental ( baby- steps ).

Exemple 1 :

Laquelle de ses deux méthodes de programmation est la plus efficace ?

  1. Écrire l’ensemble du code source d’un programme et compiler.

  2. Écrire le code source d’une fonction, le compiler et passer à la suivante.

Exemple 2 :

  1. Réaliser un noyau du logiciel
  2. Ajouter les fonctionnalités une à une.

Publicité

L’anticipation des évolutions.

Un logiciel a un cycle de vie plus complexe que l’habituel cycle « commande-spécificationproduction-livraison ». La maintenance est la gestion des évolutions du logiciels sont 2 phases importante dans le cycle de vie logiciel.

Il est primordial de prévoir les évolutions possibles d’un logiciel pour que la maintenance soit la plus efficace possible. Pour cela, il faut s’assurer que les modifications à effectuer soient le plus locales possibles. Ces modifications ne devraient pas être intrusives car les modifications du produit existant remettent en cause ses précédentes validations.

Il faut concevoir un système suffisamment riche pour que l’on puisse le modifier d’une façon incrémentale. Il faut prévoir et faciliter les changements en favorisant la construction modulaire et en gérants les configurations (trace de ce qu’on a modifié).

Appliquer le principe d’ouverture-fermeture : Le système doit être ouvert aux évolutions mais fermé aux changements.

2. Programmation procédurales

La programmation procédurale consiste à décomposer le processus de construction du logiciel ( on parle de la phase d’implémentation) en plusieurs fonctionnalités (procédures), de complexité plus réduite, qui :

- Effectuent un traitement sur des données
  • Qui retournent une valeur après leur invocation (fonction)

3 Chiheb-Eddine Ben N’Cir

Programmation orientée objet

L’approche procédurale se base sur la réponse à la question « Que doit faire mon programme ? »

La figure ci-dessus montre la décomposition d’un programme avec une approche procédurale

Figure 1 Structure d'un programme en C (langage procédural)

Les limites d’un programme en programmation procédurale :

  • Il n’y a pas de méthode ou de cadre pour bien organiser les fonctions.

  • Les modifications d’une fonction entraînent d’autres modifications dans d’autres fonctions, etc.

  • La portée d’une modification est trop grande et difficile à gérer.

  • Difficulté de faire évoluer le code

  • Redondance dans le code (la même chose est codé plusieurs fois)

  • Propagation des erreurs – déboggage difficile

4 Chiheb-Eddine Ben N’Cir

Programmation orientée objet

3. Passage de la programmation procédurale à la programmation objets

La programmation structurée traditionnelle consiste à concevoir un ensemble de fonctions (ou algorithmes ) permettant de résoudre un problème. Après avoir déterminé ces fonctions, l’étape suivante consistait traditionnellement à trouver la manière appropriée de stocker des données. C’est la raison pour laquelle le concepteur du langage Pascal, Niklaus Wirth, a intitulé son fameux ouvrage de programmation « Algorithmes + Structures de données = Programmes » . Remarquez que le terme algorithmes est placé en tête dans ce titre, devant l’expression structures de données. Cela montre bien la manière dont les programmeurs travaillaient à cette époque. D’abord, vous décidiez de la manière dont vous alliez manipuler les données ; ensuite seulement, vous choisissiez le genre de structures que vous imposeriez aux données afin de faciliter cette manipulation.

La POO inverse cet ordre et place les données au premier plan avant de déterminer l’algorithme qui sera employé pour opérer sur ces données. En POO, la clé de la productivité consiste à rendre chaque objet responsable de l’accomplissement de quelques tâches associées. Si un objet dépend d’une tâche qui n’est pas de sa responsabilité, il doit avoir accès à un autre objet capable d’accomplir cette tâche. Le premier objet demande alors au second d’exécuter la tâche en question. Cela s’effectue grâce à une version plus généralisée des appels de fonctions auxquels vous êtes habitués en programmation traditionnelle.

Il faut remarquer qu’un objet ne doit jamais manipuler directement les données internes d’un autre objet, pas plus qu’il ne doit rendre accessibles directement les données aux autres objets. Toute communication se fait par l’intermédiaire d’appels de méthodes. Par l’encapsulation des données d’un objet, vous facilitez leur réutilisation, vous réduisez la dépendance aux données et vous minimisez le temps de débogage.

Bien entendu, comme c’est le cas pour les modules d’un langage procédural, il ne faut pas qu’un objet accomplisse trop de choses. La conception et le débogage sont simplifiés lorsque l’on construit de petits objets spécialisés au lieu d’énormes objets contenant des données complexes et possédant des centaines de fonctions pour les manipuler.

La figure ci-dessus montre la différence entre un programme procédurale et un programme orienté objet :

Figure 2 Structure d'un programme procédural et un programme objet

5 Chiheb-Eddine Ben N’Cir

Publicité

Programmation orientée objet

La construction des logiciels avec des langages orientés objet consiste donc à décomposer le programme en plusieurs objets qui contiennent :

-Des données internes

-Des traitements manipulant des données internes ou d’autres données

Les données d’un objet sont appelées ses attributs et ses traitements sont appelés méthodes (opérations)

Une approche orientée-objet permet de répondre à la question : « De quoi doit être composé mon programme ? »

4. Les principes de la programmation orientée objet

  • Encapsulation : Tous les données sont soient liées a un objet soient liées à une classe. Chaque objet peut manipuler ces données mais, ne peut accéder aux données d’un autre objet qu’à travers l’échange de message avec l’objet en question

  • Séparation et spécialisation : Les classes définies (résultat de découplage) doivent être clairement séparables et ne partagent pas des propriétés similaires

  • Abstraction et généralisation : Détail de l’implémentation seront cachés et les propriétés partagées doivent être modélisées dans une même entité (classe).

  • Héritage : possibilité d’héritage entre les classes qui partagent des propriétés communes de telle façon qu’une classe est une extension d’une autre classe.

Exemple d’application :

Ecrire un programme qui permet de gérer le calcul des moyennes d’une institution (contenant 10 élèves) sachant que le calcul des moyennes pour :

Etudiant 1 ere et 2 eme: (note1 + note 2 ) /2

Etudiant 3 eme : ((note1 *2) + note pfe) /3

Etudiant 1 ere et 2 eme : nom, prenom, adresse, num-cin, note1 et note 2

Etudiant 3 eme : nom, prenom, adresse, num-cin, note1, note PFE

6 Chiheb-Eddine Ben N’Cir

Programmation orientée objet

Le programme demande à l’utilisateur de saisir les informations des étudiants (de 1 à 10), ensuite affiche les informations et la moyenne de chaque étudiant. Développer le programme en utilisant l’approche procédurale et ensuite en utilisant l’approche Objet.

Question : Comment peut-on relier les différentes données relatives à un étudiant ?

Réponse : Tableaux à indices correspondant aux ronds respectifs des étudiants.

Question : comment peut-on découper (procédure) le programme pour le simplifier.

Réponse : Fonction cal moyenne 1 ere et 2 eme ; Fonction calcul moyenne 3 eme

Résoudre l’exercice en utilisant les notions de la programmation orientée objets

  • Classe Etudiant Attributs: Méthodes(traitements ou bien opérations)

  • Classe Etudiant 3 eme Attributs Méthodes

  • Classe Etudiant 1 et 2 eme Attributs Méthodes

Les objectifs donc de la programmation orientée objet sont :

7 Chiheb-Eddine Ben N’Cir