Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

49
Approche Approche Objet Objet & Java & Java Mémoire de fin d’études présenté par Amine Brikci-Nigassa

Transcript of Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Page 1: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Approche Approche ObjetObjet& Java& Java

Mémoire de fin d’étudesprésenté par

Amine Brikci-Nigassa

Page 2: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Objectifs

• Acquisition des notions fondamentales de la « pensée objet »

• Déterminer le « degré de couverture » de chacune de ces notions par Java

Page 3: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

L’approche objet

Page 4: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

« Tout est objet »

• Approche fonctionnelle « Que veut-on faire ? »

• Approche objet « De quoi parle-t-on? »

• Chaque objet a une vie

Page 5: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Qu’est-ce qu’un objet ?

• Entité « modélisable », ayant une existence propre, concrète ou abstraite.

• Exemples :

une voiture un client un compte

€ ‘bancaire

un bouton une chaîne de caractères

" Bravo ! "

Page 6: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Caractéristiques d’un objet

• son Identité• son État• son Comportement

Page 7: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Caractéristiques d’un objet

• son Identité :– Implicite– Le différencie des autres objets

• son État• son Comportement

Page 8: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Caractéristiques d’un objet

• son Identité• son État :

– Varie dans le temps– État = valeur des attributs à un instant

tattributs = champs = données :

propriétés de l’objet (c’est la mémoire de l’objet)

• son Comportement

Page 9: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Caractéristiques d’un objet

• son Identité• son État• son Comportement :

– ensemble des opérations ou méthodes réalisables par l’objet• Les méthodes sont déclenchées par des

messages envoyés par d’autres objets.• Méthode (P.O.O.) Fonction

(P.Structurée)

Page 10: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

• Deux méthodes particulières :– Constructeur

et– Destructeur

Page 11: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

• Deux méthodes particulières :– Constructeur :

• déclenché automatiquement à la création de l’objet

• construit l’objet• initialise ses attributs

et– Destructeur

Page 12: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

• Deux méthodes particulières :– Constructeur

et– Destructeur :

• détruit l’objet (libère sa place)• déclenche les actions à effectuer à la mort de

l’objet• non utilisé dans certains langages de POO

(Smalltalk, Java) : les objets sont détruits automatiquement par le « ramasse-miettes » (garbage collector)

Page 13: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Les Classes, moules à objets

• Regroupent les objets semblables• Classe = Type d’un objet• Fabrication de nouveaux objets

(instances de la classe) = instanciation

• une classe spécifie :– les attributs et leur type– les méthodes

Page 14: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Principes fondamentaux de l’approche objet

3 principes simples mais puissants :• Encapsulation• Héritage• Polymorphisme

Page 15: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

EncapsulationDeux significations :

– Regroupement des données et des opérations en une seule entité

– Masquage des données aux autres objets :• les données sont privées,• accès restreint seulement aux méthodes

publiques,• l’ensemble des méthodes publiques =

interface de l’objetRarement respecté strictement : les langages de

P.O.O. admettent l’accès aux données (le programmeur décide)

Page 16: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Héritage• Réutilisation (extension) d’une classe pour en

définir une plus spécialisée.• La sous-classe étend la super-classe :

– hérite de ses attributs et méthodes– en définit de nouveaux

• Une super-classe peut être étendue par plusieurs sous-classes arborescence

• Deux sens possibles :– Spécialisation : super-classe sous-classe (vers

k bas)– Généralisation : sous-classe super-classe (vers

k haut)

Page 17: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Relation d’Héritage

Œuvre

titre auteur

Livre Film Disque

Western Thriller Dessin-animé

géné

ralis

atio

n spécialisation

Page 18: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Héritage multiple

• Une classe peut hériter de plusieurs super-classes : c’est l’héritage multiple.

• Problème : une classe peut hériter 2 méthodes de même nom (provenant de 2 super-classes différentes) laquelle choisir ?Conséquences : risque d’erreurs, confusions.

Page 19: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa19/11/2001 Approche objet & Java

Polymorphisme

• Faculté, pour une méthode, de prendre plusieurs formes différentes selon :– l’objet concerné : liaison dynamique– les types et nombre des paramètres :

surcharge

• En réalité, ce sont des méthodes différentes avec le même nom

Page 20: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Autres concepts de l’approche objet

• Classes abstraites• Interfaces• Persistance• Paquetages

Page 21: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Autres concepts de l’approche objet• Classes abstraites :

– Classes non instanciables, créées pour être étendues

– Souvent le résultat d’une généralisation visant à regrouper des classes différentes (« extension vers le haut »)

– Permettent des méthodes abstraites, sans corps, à redéfinir chez les sous-classes

• Interfaces• Persistance• Paquetages

Page 22: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Autres concepts de l’approche objet

• Classes abstraites• Interfaces :

– Classes sans méthodes « concrètes »– Simples spécifications à implémenter

par leurs sous-classes– Implémentation de plusieurs interfaces =

alternative à l’héritage multiple

• Persistance• Paquetages

Page 23: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Autres concepts de l’approche objet• Classes abstraites• Interfaces• Persistance :

– Aptitude d’un objet à exister au-delà du processus qui l’a créé

sauvegarde des données sur un support physique

– Fait défaut dans les langages de P.O.O.– Solution d’avenir : S.G.B.D.O.

• Paquetages

Page 24: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Autres concepts de l’approche objet

• Classes abstraites• Interfaces• Persistance• Paquetages :

– Regroupements des classes en unités organisationnelles

– Regroupent : classes, interfaces, sous-paquetages hiérarchisation

Page 25: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Applications de l’approche objet

• Propagation « ascendante » dans le cycle de vie :

Analyse

Evolution des méthodes

ConceptionProgrammation

Page 26: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Applications de l’approche objet• Atteint tous les domaines de l’informatique :

– Méthodes : OMT, OOD, OOSE, OOM,… et le nouveau standard : UML

– Langages de P.O.O. : Simula (1967), Smalltalk (1976), C++, Java (1995), Python, C#, …

– Bases de données objet : encore hésitantes, implémentent la persistance, mais difficile de s’imposer dans le règne des SGBD relationnelles

– Architectures distribuées : communication d’objets sur un réseau. Émergence de 2 standards :

• DCOM de Microsoft (Windows)• CORBA de l’OMG (UNIX)

– etc.

Page 27: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Le langage

Page 28: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Caractéristiques de Java

• Orienté objet• Portable, Multi-plate-formes• Sécurisé• Simplifié• Multithread• Distribué• Performant

Page 29: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Deux types de programmes

Après compilation d’un programme Java, on obtient au choix :

• une Applet : programme intégré à une page Web, exécuté par le navigateur

• une Application : logiciel « classique » exécutable indépendamment, sur une machine virtuelle Java (JVM)

Page 30: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Le JDK

• C’est l’environnement de développement fourni gratuitement par Sun

• Comprend essentiellement :– un Compilateur (javac) : compile les

sources .java en byte-code (fichiers .class)

– un Interpréteur (java) : exécute le byte-code

Page 31: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Classes en Java

class Rectangle {

double largeur ;

double hauteur ;

double surface() ;

void afficher(double x, double y) ;

}

surface()

afficher()

largeur

hauteur

Rectangle

Page 32: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Types des variables• Classes : ce sont les types des

variables objet• Types élémentaires : types du genre

« programmation classique » : entier, réel, booléen, caractère…– Simplifient la programmation,– MAIS leur utilisation est contraire à la

pensée « tout objet »– ont leur équivalent objet : classes

enveloppes, peu utilisées

Page 33: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Constructeurs et Destructeurs

• Constructeur :– déclaré comme les autres méthodes, mais

:• a obligatoirement le même nom que la classe• pas de type de retour (pas de void)

– utilisé pour initialiser les attributs, l’allocation de mémoire est automatique (implicite)

– pas obligatoire : son omission constructeur vide implicite

Page 34: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Constructeurs et Destructeurs

• Destructeur :– Pas de destructeur en Java– La destruction (libération de la mémoire)

est l’affaire du « ramasse-miettes » (garbage collector) qui s’en occupe « quand il veut »

– La méthode finalize() est une alternative peu utilisée. Elle est exécutée au moment (imprévisible) de la destruction.

Page 35: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Les objets : Instanciation

• L’opérateur new crée un objet et appelle son constructeur. Ex.: new Rectangle(10,25)

• L’objet doit être rattaché à une variable objet à déclarer préalablement:Rectangle r ;

r = new Rectangle() ;

Ou :Rectangle r = new Rectangle() ;

Page 36: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Identité d’un objet• La variable (r) déclarée n’est pas un véritable

objet mais une référence (un « pointeur »)• L’affectation (r=new Rectangle();) relie la

référence à l’objet créé.• La référence est l’implémentation de

l’identité d’un objet.• Deux objets au même contenu n’ont pas

forcément la même identité : deux variables objets référençant des objets semblables ne sont pas égales (égalité profonde Vs. égalité superficielle)

Page 37: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Encapsulation

• Le masquage des données (et de méthodes) est contrôlé par le programmeur : mots-clés private, protected et public placés devant.

• Les données peuvent être publiques : Contradiction avec le paradigme objet !

Page 38: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Héritage

class Western extends Film {

• extends indique l’héritage• Seul l’héritage simple est autorisé• L’héritage multiple, source de

problèmes est remplacé par l’utilisation des interfaces

Page 39: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Polymorphisme

• Liaison dynamique• Surcharge des méthodes

Page 40: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Polymorphisme

• Liaison dynamique :– Un message est relié à la bonne

méthode (celle du bon objet) à l’exécution

• Surcharge des méthodes

Page 41: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Polymorphisme

• Liaison dynamique• Surcharge des méthodes :

– Différenciation des méthodes homonymes à la compilation par leur signature

– Signature = nom + liste ordonnée des paramètres

– Nécessaire pour déclarer plusieurs constructeurs (leur nom est imposé)

Page 42: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Classes abstraites

• Méthode abstraite : précédée du mot clé abstract. Pas de corps.

• Une classe abstraite (mot-clé abstract) ne peut être instanciée.

• Servent à la hiérarchisation des classes (exemple : la classe Object du JDK généralise toutes les classes)

Page 43: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Interfaces• « Classe » dont toutes les méthodes sont

abstraites.• Déclarée par « interface » au lieu de

« class »• Utilisée avec « implements » au lieu de

« extends »• Héritage multiple est remplacé au choix par :

– L’implémentation de plusieurs interfaces,– L’extension d’une super-classe et

l’implémentation d’une interface

Page 44: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Paquetages

• Classes et interfaces standard du JDK : organisées en paquetages.

• Implémentation : structure de répertoires

• Mot-clé package au début : définit le paquetage

• Mot-clé import : permet l’accès à un paquetage

Page 45: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Persistance

Java n’a pas de support direct de la persistance, mais propose 2 solutions :

• La Sérialisation• Le JDBC

Page 46: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Persistance

Java n’a pas de support direct de la persistance, mais propose 2 solutions :

• La Sérialisation :– Lecture et écriture des données d’un objet

dans un flux (série d’octets)– Utilise l’interface standard Serializable– Satisfaisante pour de petites quantités de

données– Souvent insuffisante (applications de gestion)

• Le JDBC

Page 47: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

PersistanceJava n’a pas de support direct de la

persistance, mais propose 2 solutions :• La Sérialisation• Le JDBC : (Java DataBase Connectivity)

– Module de bases de données du JDK.– Relie les SGBDR à Java. Utilise le langage SQL

pour manipuler les tables.– Problème de conversion objet-relationnel– Solution : Bibliothèque de persistance =

couche logicielle pour faire abstraction de l’aspect relationnel

Page 48: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

ConclusionConclusion

Page 49: Approche Objet & Java Mémoire de fin détudes présenté par Amine Brikci-Nigassa.

Amine Brikci-Nigassa

Conclusion• Java est bien un langage de P.O.O., il

implémente la plupart des concepts objet.• Quelques exceptions :

– Types élémentaires non objet,– Permet les champs de données publics,– Empêche l’héritage multiple,– Préfère les SGBDR aux SGBDO.

• Un Java plus « orthodoxe » perdrait peut-être de sa simplicité ? Il est possible de « faire plus objet » que Java. Exemple : Python (il est même plus simple !)