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

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Spécialisation/généralisation Héritage Polymorphisme
Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Introduction à Java - les paquetages -
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
PHP5 poo.
Programmation Orientée Objet (POO)
TP 3-4 BD21.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
La programmation Orienté Objet
Programmation orientée objet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Langage Oriente Objet Cours 4.
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
C++ : classes Introduction aux Langages Orientés Objets
L’orienté objet: hier, aujourd’hui et demain
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
POO : Objets et classes (Rappels)
Langage Oriente Objet Cours 2.
Modélisation orientée objet UML
Rappels sur la Programmation java
Structures de données IFT-2000
Structures de données IFT-10541
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction au paradigme orienté-objet (suite)
Formation JAVA. Par: SILMI.S
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Types de données abstrait et mécanismes d'encapsulation
Langages orientés objets
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Patrons de conceptions de créations
Héritage Licence Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier.
Travaux Pratiques Représentation des connaissances
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
Les objets Les classes Pour structurer les variables élémentaires, on peut : juxtaposer des variables de même type, en déclarant un tableau juxtaposer.
Algorithmique et programmation (1)‏
Programmation objet La base.
Tutorat en bio-informatique
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
2 Processus de conception de BD
Les classes Introduction aux Langages Orientés Objets
La programmation par objets Principes et concepts Etude de Smalltalk.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Chapitre 2 Rappels objet et Présentation des diagrammes UML
Classes abstraites, interface Classe interne Classes enveloppes
Introduction à la Programmation Orientée Objet
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Transcription de la présentation:

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

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

L’approche objet 3

« 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

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

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

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

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

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

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

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

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

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

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

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

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

Relation d’Héritage

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.

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

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

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

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

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

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

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

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.

Le langage

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

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)

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

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

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

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

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.

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

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)

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 !

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

Polymorphisme Liaison dynamique Surcharge des méthodes

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

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

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)

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

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

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

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

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

Conclusion

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