Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr



Documents pareils
TP1 : Initiation à Java et Eclipse

as Architecture des Systèmes d Information

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Programmation Orientée Objet

Programmer en JAVA. par Tama

TP1. Outils Java Eléments de correction

Java c est quoi? Java pourquoi?

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Une introduction à Java

INITIATION AU LANGAGE JAVA

Plan du cours. Historique du langage Nouveautés de Java 7

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Généralités sur le Langage Java et éléments syntaxiques.

Héritage presque multiple en Java (1/2)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java Licence Professionnelle CISII,

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Chapitre 2. Classes et objets

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Programmation Objet Java Correction

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1: Java et les objets

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Annexe : La Programmation Informatique

Java - la plateforme

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java Licence professionnelle CISII,

Introduction à Java. Philippe Genoud.

Langage Java. Classe de première SI

Bases Java - Eclipse / Netbeans

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Programmation par les Objets en Java

Programmeur Java 1.4 et 5.0

Environnements de développement (intégrés)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1 : Initiation à Java et Eclipse

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Systeme d'exploitation

ACTIVITÉ DE PROGRAMMATION

Traitement de données

RMI le langage Java XII-1 JMF

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Environnements de développement (intégrés)

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Chapitre I Notions de base et outils de travail

PROGRAMMATION PAR OBJETS

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Auto-évaluation Programmation en Java

Vulgarisation Java EE Java EE, c est quoi?

Java au cœur de la base de données Oracle

Remote Method Invocation (RMI)

Installation et prise en main

Projet de Veille Technologique

Présentation de Java. Olivier de Pertat IT GROUP

La technologie Java Card TM

Utiliser Java sans BlueJ

1 Définition d une classe en Java

TD/TP PAC - Programmation n 3

La carte à puce. Jean-Philippe Babau

Génie Logiciel avec Ada. 4 février 2013

Eclipse atelier Java

Machines Virtuelles. et bazard autour. Rémi Forax

La JVM. La machine virtuelle Java. La JVM. La JVM

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

DES CONCEPTS OBJET PAR JAVA

Derrière toi Une machine virtuelle!

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Java Avancé. Le langage Java. Rémi Forax

Programmation Orientée Objet application au langage Java Version Novembre 2007

Objets et Programmation. origine des langages orientés-objet

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Chapitre VI- La validation de la composition.

Premiers Pas en Programmation Objet : les Classes et les Objets

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Initiation à la programmation orientée-objet avec le langage Java

java : Langage et Environnement

TD/TP 1 Introduction au SDK d Android

Remote Method Invocation Les classes implémentant Serializable

Éléments de programmation et introduction à Java

Programmation Orientée Objets Le Langage JAVA

Programmation Orientée Objet en C#

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Remise à niveau d un programme JAVA du domaine public

Java 1.5 : principales nouveautés

Tutorial pour une application simple

Serveur d'archivage 2007 Installation et utilisation de la BD exist

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Transcription:

Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr

O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation orientée objet. Etre capable de développer une application en java. Ne pas se noyer!

P l a n Un peu d'histoire. Environnement java. Comment ça marche concrètement Installation de l'environnement de programmation Premier exemple Les outils autour de java Programmation Orientée Objet (POO) Penser objet! Vocabulaires Notions essentielles L'histoire d'une application

U n p e u d ' h i s t o i r e Décembre 1990 : Projet interne de Sun Micro System : Oak Alternative au langage C++ Gestion de la mémoire Portable Machine embarquée Septembre 1992 : Première démo sur un PDA star7 Green OS, Oak langage, librairies, assistant Duke Juin-Juillet 1994 : le projet prend son nom JAVA et se recentre sur le développement web. Just Another Vague Acronym Lien avec le café = java (en argos américain) Les 4 premiers byte du bytecode java commence en base hexadécimale pour le nombre : 0xCAFEBABE

U n p e u d ' h i s t o i r e : l e s J D K d e s u n * JDK 1.0 ( janvier 1996) * JDK 1.1 ( décembre 1997) * J2SE 1.2 (décembre 1998) nom de code : Playground. => java 2 * J2SE 1.3 (mai 2000) nom de code : Kestrel. * J2SE 1.4 (février 2002) nom de code : Merlin. * J2SE 5.0 (septembre 2004) nom de code : Tiger. * Java SE 6 nom de code : Mustang. * Java SE 7 nom de code : Dolphin. Depuis 1998 : Java Community Process (JCP) qui utilise les Java Specification Request (JSR) pour spécifier les évolutions de la plate-forme JAVA ( JVM + librairies standards )

L e s d i f f é r e n t e s p l a t e - f o r m e J2SE : java 2 Standard Edition J2EE : java 2 Entreprise Edition J2ME : java 2 Mobile Edition JVM + librairies standards

Q u e f a u t - i l p o u r f a i r e d u j a v a Un éditeur de texte : vi,emacs... Un kit de développement : SDK : Software Development Kit : javac (compileur) jar (archiveur) javadoc (documentation) jdb (débugueur) java (machine virtuelle) Des outils pour compiler # Sun J2SE Sun's current stable release (1.5.0). # GNU Classpath a free JDK replacement. # IBM JDK IBM's JDK. # Blackdown Free JVM/JDK for Linux. # Apple Java JVM/JDK for Mac OS X ant makefile Des IDE (Integrated Development Environement): Netbeans, Eclipse

L a p l a t e - f o r m e J A V A. Code source Compilateur Code de l'objet Le code de l'objet est vérifié et chargé dans la machine virtuelle Machine virtuelle Interpréteur Système d'exploitation de l'ordinateur

P r e m i e r p r o g r a m m e /** Ma premier essai * Affiche : Hello Toto * @author moi * @date juste_avant */ public class Toto { /** * @param args the command line arguments */ public static void main(string[] args) { System.out.println("Hello Xavier"); } } Compilation : #>javac Toto.java Exécution : #>java Toto Hello Xavier

C o n c r é t e m e n t : c o m p i l e r e x é c u t e r Toto.java javac Toto.java Toto.class Le code de l'objet est vérifié et chargé dans la machine virtuelle java Toto Interpréteur java Hello Xavier Système d'exploitation de l'ordinateur

Q u e f a u t - i l p o u r f a i r e d u j a v a Un éditeur de texte : vi,emacs... Un kit de développement : SDK : Software Development Kit : javac (compileur) jar (archiveur) javadoc (documentation) jdb (débugueur) java (machine virtuelle) Des outils pour compiler # Sun J2SE Sun's current stable release (1.5.0). # GNU Classpath a free JDK replacement. # IBM JDK IBM's JDK. # Blackdown Free JVM/JDK for Linux. # Apple Java JVM/JDK for Mac OS X ant makefile Des IDE (Integrated Development Environement): Netbeans, Eclipse

L a p r o g r a m m a t i o n o b j e t Les notions cléfs de la programmation objet : classes objets / instances attributs méthodes instanciation encapsulation héritage surcharge polymorphisme abstraction

P r o g r a m m a t i o n O r i e n t é e O b j e t Classes, objets, attributs, méthodes : Tout est un objet. Les objets contiennent : Des données : Attributs Des actions : Methodes En Java, on définit la nature et le comportement d'un objet dans une classe.

P r o g r a m m a t i o n O r i e n t é e O b j e t : I n s t a n c i a t i o n Instanciation d'objet : On instancie un objet en appliquant l'opérateur new sur un constructeur de classe. Allocation mémoire : Pour qu'un objet puisse réellement exister au sein de la machine, il faut qu'il puisse stocker son état dans une zone de la mémoire. C'est le rôle de l'opérateur new qui détermine la taille de l'espace mémoire requis en appellant le constructeur. Le constructeur crée l'objet et détermine l'état initial de l'objet. On appele ensuite les méthodes sur cette objet pour le faire vivre. exemple?

E n c a p s u l a t i o n l encapsulation est l'idée de cacher l'information contenue dans un objet et de ne proposer que des méthodes de manipulation de cet objet. public : les attributs dits public sont accessibles à tous. private : les attributs privés sont accessibles seulement par l'objet luiméme.

e x e m p l e : I n s t a n c i a t i o n public class ExempleInstanciation { public class Test { // point d'entee // attribut de classe public static void main(string[] args) private int nb=5; { public static alpha=10 Test t1 = new Test(); //constructeur Test t2 = new Test(3); public Test() { t1.doublenb(); System.out.println("Contructeur 1"); t2.doublenb(); System.out.println("number="+nb); Test.alpha++; } System.out.println(t1.toString()); public Test(int initial_nb) { System.out.println(t2.toString()); System.out.println("Contructeur 2"); } System.out.println("number="+nb); } this.nb=initial_nb; System.out.println("number="+nb); } // methodes public void augmentenb(){nb++;} public void augmentenb(int newnb){nb+=nb;} public void doublenb(){nb<<=1;} public String tostring(){return "number="+nb+", alpha="+alpha;} }

U n p e u d e v o c a b u l a i r e Package Classe Variable de classe Variable d'instance/objet Constructeur/ Destructeur Méthode de classe Méthode d'instance/objet package MonPaquet class MaClasse { // Propriétés de la classe static Property c_prop1 Property i_prop1 // Constructeur(s) MaClasse(){} // destructeur public finalize(){} // Méthodes static void method2(){} void method1(){} }

Q u e l q u e s r è g l e s d e b o n n e c o n d u i t e Un fichier par classe; Le fichier et la classe ont le même nom; les noms de classes et de packetages commence par des majuscules; les variables commence par des minuscules; les classes sont regroupées dans des packages

P r o g r a m m a t i o n O r i e n t é e O b j e t : R a m a s s e - m i e t t e Le destructeur : Il permet de définir les actions à faire lorsque l'objet est détruit. Le ramasse-miette : Garbage Collector Le ramasse-miettes (ou GC [Garbage Collector]) se charge de repérer ces objets inutiles et de libérer cette mémoire inaccessible. Pour les plus curieux, sachez qu'en fait le GC fonctionne en permanence dans un thread de faible priorité.

L e s p a c k a g e s ( p a q u e t a g e ) Regroupement de classes Ce regroupement suit le placement des fichiers sur le système de fichier. un dossier = un package Librairie standard exemples : java.lang.string java/lang/string.java exemple?

L e s L i b r a i r i e s : f i c h i e r s j a r Un fichier JAR (Java ARchive) est un fichier ZIP utilisé pour distribuer un ensemble de classes Java. Les fichiers JAR sont créés et extraits à l'aide de la commande jar inclue dans le JDK. Les fichiers JAR sont destinés à être exécutés comme des programmes indépendants, dont une des classes est la classe principale.(contient le main) exemple? jar -tvf rt.jar java/lang/string.class

P e t i t p o i n t Ce que l'on vient de voir : - création de son premier petit programme java Hello Xavier - Définitions d'une classe et d'un objet - Création d'une classe et instanciation de deux objets. - Du vocabulaire - compiler, exécuter, archiver, documenter son programme.

P r o g r a m m a t i o n O r i e n t é e O b j e t : h é r i t a g e héritage L'idée principale consiste à définir une classe à partir d'une autre. La classe définie à partie d'une autre sera nommée classe fille. Celle qui sert à définir un classe fille sera nommée classe mère. On dit alors que la classe fille hérite (ou dérive) de la classe mère. Une fois que l'héritage est spécifié, la classe fille possède aussi l'ensemble des attributs et des méthodes de sa classe mère. Remarque : une classe fille dérive d'une unique classe mère, l'héritage multiple n'étant pas supporté par le langage Java

P r o g r a m m a t i o n O r i e n t é e O b j e t : h é r i t a g e Rectangle Classe mère Carre Classe fille exemple?

P r o g r a m m a t i o n O r i e n t é e O b j e t : h é r i t a g e package Geometry; public class Rectangle { private static final String type ="Rectangle"; private int largeur,longueur; /** Creates a new instance of Rectangle */ public Rectangle(int largeur,int longueur) { System.out.println("Constructeur "+type); this.largeur=largeur; this.longueur=longueur; } public int perimetre(){return (largeur+longueur)*2;} public int surface(){return largeur*longueur;} } package Geometry; public class Carre extends Rectangle { private static final String type ="Carré"; /** Constructeur */ public Carre(int cote) { super(cote,cote); System.out.println("Constructeur "+type); } }

P r o g r a m m a t i o n o r i e n t é e o b j e t : h é r i t a g e L'intérêt de l'héritage L'héritage supprime, en grande partie, les réécriture du code. Une fois la hiérarchie de classes bien établie, on localise en un point unique les sections de code. On peut rajouter une classe à partir d'une classes parentes. Si vous n'aviez pas encore modélisé un comportement dans une classe donnée, et que vous vouliez maintenant le rajouter, une fois l'opération terminée, ce comportement sera alors directement utilisable dans l'ensemble des sous-classes de celle considérée.

P r o g r a m m a t i o n O r i e n t é e O b j e t : h é r i t a g e Régles de l'héritage : Règle 1 : si vous invoquez super(), cela signifie que le constructeur en cours d'éxécution passe la main au constructeur de la classe parente pour commencer à initialiser les attributs définis dans cette dernière. Ensuite le premier constructeur continuera son exécution. Règle 2 : un appel de constructeur de la classe mère peut uniquement se faire qu'en première instruction d'une définition de constructeur. Une conséquence évidente est qu'on ne peut utiliser qu'un seul appel au constructeur de la classe mère. Règle 3 : si la première instruction d'un constructeur ne commence pas par le mot clé super le constructeur par défaut de la classe mère est appelé. Dit autrement, l'appel à super() est implicite. Dans ce cas, faites bien attention à ce qu'un contructeur à zéro paramètre soit définit au sein de la classe parente. Règle 4 : si vous invoquez this(), le constructeur considéré passe la main à un autre constructeur de la classe considérée. Encore une fois, cela doit être la première instruction du bloc. exemple?

P r o g r a m m a t i o n O r i e n t é e O b j e t : p o l y m o r p h i s m e Polymorphisme Un langage orienté objet est dit polymorphique, s'il offre la possibilité de pouvoir percevoir un objet en tant qu'instance de classes variées, selon les besoins. Le langage Java est polymorphique. exemple?

P r o g r a m m a t i o n O r i e n t é e O b j e t : a b s t r a c t i o n Le mécanisme des classes abstraites permet de définir des comportements (méthodes) qui devront être implémentés dans les classes filles Une classe abstraite ne peut pas être instanciée

A s s e z p a r l é = > A c t i o n Un petit exemple de développement

Q u e l q u e s l i e n s u t i l e s : Quelques pointeurs utiles * Le site de Sun Microsystems : http://java.sun.com * Les tutoriaux de Sun Microsystems (en anglais) : http://java.sun.com/docs/books/tutorial/ * Les spécifications des différentes versions de l'api Java : http://java.sun.com/products/jdk/1.1/docs/api/index.html http://java.sun.com/products/jdk/1.2/docs/api/index.html http://java.sun.com/products/jdk/1.3/docs/api/index.html http://java.sun.com/products/jdk/1.4/docs/api/index.html * Cours en ligne : http://www.infini-fr.com/sciences/informatique/langages/imperatifs/java/java.htm...