La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Mémoire de fin d’études présenté par Amine Brikci-Nigassa

Présentations similaires


Présentation au sujet: "Mémoire de fin d’études présenté par Amine Brikci-Nigassa"— Transcription de la présentation:

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

2 Objectifs Acquisition des notions fondamentales de la « pensée objet »
Déterminer le « degré de couverture » de chacune de ces notions par Java 19/11/2001 Approche objet & Java 2

3 L’approche objet 3

4 « Tout est objet » Approche fonctionnelle à « Que veut-on faire ? »
Approche objet à « De quoi parle-t-on? » Chaque objet a une vie 19/11/2001 Approche objet & Java 4

5 € ‘ 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 " Bravo ! " un bouton une chaîne de caractères 19/11/2001 Approche objet & Java 5

6 Caractéristiques d’un objet
son Identité son État son Comportement 19/11/2001 Approche objet & Java 6

7 Caractéristiques d’un objet
son Identité : Implicite Le différencie des autres objets son État son Comportement 19/11/2001 Approche objet & Java 7

8 Caractéristiques d’un objet
son Identité son État : Varie dans le temps État = valeur des attributs à un instant t attributs = champs = données : propriétés de l’objet (c’est la mémoire de l’objet) son Comportement 19/11/2001 Approche objet & Java 8

9 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) 19/11/2001 Approche objet & Java 9

10 Deux méthodes particulières :
Constructeur et Destructeur 19/11/2001 Approche objet & Java 10

11 Deux méthodes particulières :
Constructeur : déclenché automatiquement à la création de l’objet construit l’objet initialise ses attributs et Destructeur 19/11/2001 Approche objet & Java 11

12 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) 19/11/2001 Approche objet & Java 12

13 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 19/11/2001 Approche objet & Java 13

14 Principes fondamentaux de l’approche objet
3 principes simples mais puissants : Encapsulation Héritage Polymorphisme 19/11/2001 Approche objet & Java 14

15 Encapsulation Deux 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’objet Rarement respecté strictement : les langages de P.O.O. admettent l’accès aux données (le programmeur décide) 19/11/2001 Approche objet & Java 15

16 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) 19/11/2001 Approche objet & Java 16

17 Relation d’Héritage

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

19 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 19/11/2001 Approche objet & Java 17

20 Autres concepts de l’approche objet
Classes abstraites Interfaces Persistance Paquetages

21 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

22 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

23 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

24 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

25 Applications de l’approche objet
Propagation « ascendante » dans le cycle de vie :

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

27 Le langage

28 Caractéristiques de Java
Orienté objet Portable, Multi-plate-formes Sécurisé Simplifié Multithread Distribué Performant

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

30 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

31 Classes en Java Rectangle largeur hauteur surface() afficher()
class Rectangle { double largeur ; double hauteur ; double surface() ; void afficher(double x, double y) ; }

32 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

33 Constructeurs et Destructeurs
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

34 Constructeurs et Destructeurs
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.

35 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() ;

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

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

38 Héritage Seul l’héritage simple est autorisé
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

39 Polymorphisme Liaison dynamique Surcharge des méthodes

40 Polymorphisme Liaison dynamique : Surcharge des méthodes
Un message est relié à la bonne méthode (celle du bon objet) à l’exécution Surcharge des méthodes

41 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é)

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

43 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

44 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

45 Persistance Java n’a pas de support direct de la persistance, mais propose 2 solutions : La Sérialisation Le JDBC

46 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

47 Persistance Java 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

48 Conclusion

49 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 !)


Télécharger ppt "Mémoire de fin d’études présenté par Amine Brikci-Nigassa"

Présentations similaires


Annonces Google