Le Langage Java et le Monde des Objets



Documents pareils
Programmer en JAVA. par Tama

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

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

TP1 : Initiation à Java et Eclipse

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

PROGRAMMATION PAR OBJETS

Langage Java. Classe de première SI

Auto-évaluation Programmation en Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Flux de données Lecture/Ecriture Fichiers

as Architecture des Systèmes d Information

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

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

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

INITIATION AU LANGAGE JAVA

Une introduction à Java

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

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

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

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

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

Cours 1: Java et les objets

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

Chapitre VI- La validation de la composition.

Développement Logiciel

Support de cours et TD Programmation Orientée Objet

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

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

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation Par Objets

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

Initiation à JAVA et à la programmation objet.

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Apprendre Java en 154 minutes

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Java c est quoi? Java pourquoi?

Cours 14 Les fichiers

Programmation en Java IUT GEII (MC-II1) 1

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

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

Java Licence Professionnelle CISII,

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

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

Java Licence Professionnelle CISII,

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

Programmation Objet Java Correction

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

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

TD/TP PAC - Programmation n 3

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

Programmation Orientée Objet Java

INF 321 : mémento de la syntaxe de Java

Chapitre 10. Les interfaces Comparable et Comparator 1

Gestion distribuée (par sockets) de banque en Java

Package Java.util Classe générique

Programmation Orientée Objets Le Langage JAVA

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Java 1.5 : principales nouveautés

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation (RMI)

Synchro et Threads Java TM

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

Programmation Internet en Java

Bases Java - Eclipse / Netbeans

Introduction au langage Java

TD3: tableaux avancées, première classe et chaînes

Utilisation d objets : String et ArrayList

Traduction des Langages : Le Compilateur Micro Java

Programmation avec des objets : Cours 7. Menu du jour

TD/TP PAC - Programmation n 3

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

ACTIVITÉ DE PROGRAMMATION

Dis papa, c est quoi un bus logiciel réparti?

Corrigé des exercices sur les références

Programmation par les Objets en Java

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 )

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

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

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Langage à objets : JAVA (1)

RMI le langage Java XII-1 JMF

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les

Certificat Big Data - Master MAthématiques

Classe Interne, Anonyme & Enumération

GOL502 Industries de services

Projet de programmation (IK3) : TP n 1 Correction

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

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

COMPARAISONDESLANGAGESC, C++, JAVA ET

1 Définition d une classe en Java

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

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

Transcription:

. p.1 Le Langage Java et le Monde des Objets Les principes de la modélisation Orientée Objet. Qu est-ce qu une classe?. Les types de base. Utiliser les classes. Les tentacules de Java.

. p.2 Bibliographie Les livres : in Java - Bruce Eckel : http://www.mindview.net Java in a nutshell - David Flanagan O Reilly Les sites internet : http://java.sun.com/j2se/ http://www.developpez.com/java/cours http://www.sogid.com/javalist/index.html

. p.3 JAVA - un langage Un histoire de café... Caractéristiques : Une machine virtuelle. Ecriture de byte code. Outils : Un environnement de développement Java 2 Platform Standard Edition 5.0 (j2se) contenant un JDK. Un environnement d exécution : JRE. Des compilateurs : javac rmic.

. p.4 La programmation Orientée Objet Toute chose est un objet : données + fonctionnalités (mieux qu une variable) Un programme est un ensemble d objets communiquant par envoi de messages. Chaque objet est d un type précis (instance d une classe). Tous les objets d un type particulier peuvent recevoir le même message. Une classe décrit un ensemble d objets partageant des caractéristiques communes (données) et des comportements (fonctionnalités).

. p.5 Caractéristiques d un modèle orienté objet Modularité : Scinder un programme en composants individuels afin d en réduire la complexité. Partition du programme qui crée des frontières bien définies (et documentées) à l intérieur du programme dans l objectif d en réduire la complexité (Meyers). Le choix d un bon ensemble de modules pour un problème donné, est presque aussi difficile que le choix d un bon ensemble d abstractions.

. p.6 Les concepts de base - 1 Objets : Unités de base organisées en classes et partageant des traits communs (attributs ou procédures). Peuvent être des entités du monde réel, des concepts de l application ou du domaine traité. Classes : Les types d objets peuvent être assimilés aux types de données abstraites en programmation.

. p.7 Les concepts de base - 2 Abstraction et Encapsulation : Les structures de données et les détails de l implémentation sont cachés aux autres objets du système. La seule façon d accéder à l état d un objet est de lui envoyer un message qui déclenche l exécution de l une de ses méthodes. Abstraction et encapsulation sont complémentaires, l encapsulation dessant des barrières entre les différentes abstractions.

. p.8 Les concepts de base - 3 Héritage : L héritage est un des moyens d organiser le monde c.-à-d. de décrire les liens qui unissent les différents objets. Chaque instance d une classe d objet hérite des caractéristiques (attributs et méthodes) de sa classe mais aussi d une éventuelle super-classe.

. p.9 Les concepts de base - 3 Héritage : Pour qu une sous-classe hérite des champs et des méthodes d une autre classe on utilise le mot clé : extends. Pour faire partager un ensemble de fonctionnalités à un groupe de classes, on peut créer des méthodes de type abstract dont le corps n est pas défini.

. p.10 Les concepts de base - 4 Généricité : Les comportements (méthodes) des objets sont accessibles sans avoir à connaître le type (la classe) de l objet utilisé. Un objet peut réagir à l envoi d un message sans connaître le type de l objet éméteur du message (le client).

. p.11 Les concepts de base - 5 Surcharge des méthodes : le polymorphisme : On nomme polymorphisme le fait de pouvoir appeler du même nom des méthodes différentes. A l intérieur d une même classe, il est possible de créer des méthodes ayant le même nom mais ayant des signatures différentes. void veillir(){ age++; void veillir(int nb){ age+=nb;

. p.12 Concept de base : la classe Une classe est définie par l ensemble de ses caractéristiques et de ses comportements : les attributs et les méthodes class Animal{ String ident; int age; void affiche() { System.out.println( identifiant +ident); System.out.println( age = +age);

. p.13 Les types primitifs Types boolean char byte short int long float double Caractéristiques true ou false caractère 16 bits Unicode entier 8 bits signés entier 16 bits signés entier 32 bits signés entier 64 bits signés nombre à virgule flottante 32-bits nombre à virgule flottante 64-bits

. p.14 Les opérateurs Arithmétiques : +,,, /, %, + =, =, =, / =, ++,, Booléens : ==,! =, =<,=>,, &&,? :. Les structures de contrôle : if, for, while, switch,

. p.15 La classe String Créer un String : String mot = "abc"; char data[] = { a, b, c ; String motnouveau = new String(data); Tester l égalité : mot.equals( bcd ); Attention au piège avec ==. Récupérer un String à partir d un int, d un double String nom=string.valueof(num) Obtenir des informations : length(), charat()...

. p.16 Les classes wrapper Les types primitifs peuvent être encapsulés dans des classes : Integer, Byte, Long, Double, Float, Character, Void. Exemple : int num=integer.parseint(mot); double taille=double.parserdouble(mot2);

. p.17 Un petit programme! class Hello{ static public void main(string []args){ System.out.println( Hello World );

. p.18 Définir une classe Déclaration des attributs : public class Animal{ private String nom; private int age; private boolean vivant;

. p.19 Définir une classe Définir le constructeur : public class Animal{ String nom; int age; boolean vivant; public Animal(){ nom= Absent ; age=0; vivant=true;

. p.20 Définir une classe Surcharge du constructeur : public Animal(String chaine){ nom=chaine; age=0; vivant=true;

. p.21 Définir une classe Surcharge du constructeur : public Animal(String chaine,int valeur){ nom=chaine; age=valeur; vivant=true;

. p.22 Définir une classe Utilisation de this : public Animal(String nom,int age){ this.nom=nom; this.age=age; vivant=true;

. p.23 Utiliser une classe Créer une variable de type Animal public void main (String []arg){ Animal item; item=new Animal(); Animal item2=new Animal( medor ); Animal item3=new Animal( medor,2);

. p.24 Définir les méthodes Utilisation des variables d instances : public String getnom(){ return (nom); public int getage(){ return(age); public void setage(int val){ age=val;

. p.25 Appel de méthodes Appel de méthode liée à une instance : Animal item2=new Animal( medor ); item2.setage(2); String nom=item2.getnom(); System.out.println( cet animal s appe System.out.println( il a +item2.get

. p.26 Créer un tableau d Animal Le type tableau : [] Déclarer un tableau : int []tableauint; Déclaration et allocation mémoire : int []tableau=new int [10]; Animal []tableau = new Animal[MAX]; Accès aux cases du tableau : int num=tableau[2]; Taille du tableau : int taille =tableau.length

. p.27 Saisir une chaine de caractères au clavier public static String saisie_chaine () { try { BufferedReader buff = new BufferedRead (new InputStreamReader(System.in)) String chaine=buff.readline(); return chaine; catch(ioexception e) { System.out.println(" impossible de travailler" return null;

. p.28 Saisir un entier au clavier public static int saisie_entier () { try{ BufferedReader buff = new BufferedRea (new InputStreamReader(System.in)) String chaine=buff.readline(); int num = Integer.parseInt(chaine); return num; catch(ioexception e){return 0;

. p.29 L utilisation de static Définition de variable de classe et non d instance. L accès à cette variable se fait par le nom de la classe. Exemple : System.out

. p.30 L utilisation de static class Animal{ boolean vivant; private int age; private int matricule; static int nombre=0; public Animal(){ age =0; vivant=true; nombre++; matricule=nombre;

. p.31 L utilisation de static Une méthode peut également être qualifiée de static. Exemple : main Conséquence : toutes les méthodes appelées par une méthode static doivent aussi être static. Une méthode static ne peut jamais adresser une variable d instance.

. p.32 L utilisation de final L attribut final permet de spécifier qu une variable ne pourra pas subir de modification - c.à.d une constante. La valeur initiale de la variable devra être donnée lors de la déclaration. Une méthode peut être qualifiée de final, dans ce cas elle ne pourra pas être redéfinie dans une sous-classe. Une classe peut être qualifiée de final, dans ce cas elle ne pourra pas être héritée. Permet de sécuriser une application.

. p.33 Héritage et réutilisabilité La conception orientée objet permet de dégager des concepts (ou fonctionnalités) qui sont partagés par plusieurs classes (ou types). Dans ce cas on définit une classe générique et on spécifie les particularités dans des sous-classes qui héritent de cette classe générique. Une sous-classe hérite de toutes les variables et méthodes qui sont soit public soit protected dans la super-classe.

. p.34 Exemple Nous désirons réaliser un programme de gestion d une animalerie qui contient plusieurs types d animaux. Quelque soit ces types on s interesse toujours à leur âge, leur statut (vivant ou non). De même on leur affecte un numéro de séquence qui correspond à leur ordre d arrivée à l animalerie.

. p.35 Déclaration de sous-classe Cette déclaration est réalisée grâce au mot clé extends. public class Chat extends Animal{... NB : toutes les classes héritent d une super classe object Toutes les variables non-privées de classe ou d instance de la super-classe sont accessibles à partir de la sous-classe ou d instances de celle-ci. La redéfinition d une méthode ou surcharge est effective dès qu une sous-classe déclare un méthode ayant la même signature que celle de la super-classe.

. p.36 Utilisation de super Le constructeur d une sous classes peut appeler le constructeur de sa super classe grâce à la méthode super(). Cet appel doit obligatoirement être la première instruction du constructeur. De la même façon on peut toujours appeler la méthode d une super classe (qui aurait était surchargée dans une sous classe) en préfixant le nom de la méthode par super.

. p.37 Classe Abstraite On peut désirer fournir une implémentation partielle d une classe ou interdire son instantiation. Le mécanisme disponible pour permettre ceci est de déclarer cette classe comme abstraite. Le mot clé abstract permet définir une classe ou une méthode abstraite. NB : ce comportement n est utile que si la classe abstraite est une super classe.

. p.38 Exemple Dans notre classe Animal nous allons ajouter une méthode crier qui sera spécifique de chaque type d animaux. On ne désire pas donner de comportement par défaut pour la classe Animal. La méthode crier dans la classe Animal ne sera pas implémenter public abstract void crier();

. p.39 Utilisation de abstract Toute classe ayant une méthode abstraite devient automatiquement abstraite. La déclaration de la classe est donc maintenant : public abstract class Animal {... Conséquence : il est interdit d instancier une variable de type Animal, plus aucun appel a new n est possible.

. p.40 Les Interfaces Il existe un autre type d objets : les interfaces. Le mot clé interface permet de les déclarer. Le rôle d une interface est de déclarer des comportements génériques qui seront partagés par plusieurs classes - sans créer de liens d héritage entre elles. C est une réponse à l impossibilité de l héritage multiple en Java. Une classe peut implementer autant d interface qu elle le désire.

. p.41 Les Interfaces Une interface est de fait une classe abstraite car elle n implémentent aucune des méthodes déclarées. Les méthodes sont donc implicitement publiques et abstraites. Une interface n a pas de champs - uniquement des méthodes.

. p.42 Exemple : Enumeration L interface Enumeration permet de parcourir de manière identique des collections différentes d objets : Vector( et Stack par héritage), StringTokenizer. La méthode elements() de Vector retourne une Enumeration qui peut donc être parcourue au moyen des méthodes de l interface : hasmoreelements() nextelement()

. p.43 Implémentation des Interfaces Toutes méthodes qui désirent utiliser une interface doit le déclarer grâce au mot clé implements class exemple implements Enumeration{... Cette classe doit alors fournir une implémentation des méthodes de l interface. Les sous-classes peuvent hériter de l implémentation comme des autres méthodes.

. p.44 Les Exceptions Java propose un mécanisme de gestion des erreurs, les exceptions. Une Exception est un objet qui est créé lors des situations d erreurs. Lorsque ces situations surviennent, on dit que le programme lève - throw - une exception. Vous pouvez choisir soit de capturer, soit de laisser passer ces exceptions : capture : opérateurs try - catch, délégation du traitement : throws. Si le traitement d une exception est délégué sa prise en compte est reportée sur la méthode appellante.

. p.45 Exemple public static String saisiechaine () { try { BufferedReader buff = new BufferedReader (new InputStreamReader(System.in)); String chaine=buff.readline(); return chaine; catch(ioexception e) { System.out.println(" impossible de travailler" +e); return null;

. p.46 Exemple sans traitement public static String saisiechaine () throws IOException { BufferedReader buff = new BufferedReader (new InputStreamReader(System.in)); String chaine=buff.readline(); return chaine; Dans ce cas, la méthode appellante devra soit encapsuler al partie de code correspondant à l appel dans un try catch, soit déclarer elle-même laisser passer - throws - l exception.

. p.47 Les objets Exception Les exceptions ont réparties en classe comme tous les objets. Il existe donc un mécanisme d héritage entre les différentes classes. La super classe est Exception. Exemple : la capture d une erreur de format sur une saisie clavier.

. p.48 Capture de NumberFormatException public int saisie_entier (){ while (true){ try{ BufferedReader buff = new BufferedReader (new InputStreamReader(System.in)); String chaine=buff.readline(); int num = Integer.valueOf(chaine).intValue(); return num; catch(numberformatexception e) { System.out.println (" erreur de saisie recommencez"); catch(ioexception e) { System.out.println(" impossible de travailler" +e); return 0;

. p.49 Les entrées sorties Pour être utile un programme doit impérativement communiquer avec l extérieur. Les données qui sont soit envoyées au programme soit affichées, stockées depuis le programme vers l éxtérieur sont manipulées au travers de flux. Un certain nombre de classes Java prédéfinissent ces flux et les méthodes qui les caractérisent. java travaille essentiellement sur des flux séquentiels dont l ordre de lecture ne peut être changé.

. p.50 Les flux standards Le clavier et l écran sont deux flux standards d entrée - sortie. Les variables in et out sont respectivement du type InputStream et PrintStream (qui hérite de OutputStream. La sortie erreur est représentée par la variable err qui elle aussi de type PrintStream.

. p.51 Nomenclature des flux Sens du flux : Reader et Writer Type de la source ou de la destination : Source ou destination Tableau de caractères Flux d octets Chaine de caractères Programme Fichier Tableau d octets Objet Préfixe du nom de flux CharArray Input Stream ou OutputStream String Pipe File ByteArray Object

. p.52 Flux séquentiels et traitements de données Traitement tampon concaténation de flux d entréee conversion de données numérotation des lignes lecture avec retour arrière impression sérialisation conversion octets - caractères Préfixe Buffered Sequence Data LineNumber PushBack Print Object InputStream OutputStream

. p.53 Ecriture dans un fichier public static void ecrire (Vector leclub) throws IOException { BufferedWriter buff=new BufferedWriter (new FileWriter("fichier.txt")); for(enumeration e = leclub.elements();e.hasmoreelements();) { Animal courant = (Animal)e.nextElement(); courant.save(buff); buff.flush(); buff.close();

. p.54 Ecriture dans un fichier void save(bufferedwriter buff)throws IOException { buff.write(nom); buff.newline(); buff.write((new Integer(age)).toString()); buff.newline(); if (vivant) buff.write("vivant"); else buff.write("mort"); buff.newline();

. p.55 Lecture dans un fichier public static void lire (Vector leclub)throws IOException { BufferedReader buff=new BufferedReader(new FileReader("fichier.txt") try { Animal courant=null ; for(;;){ String nom = buff.readline(); courant = (Animal) new Animal(nom); int num = Integer.valueOf(buff.readLine()).intValue(); courant.setage(num); String en_vie = buff.readline(); if (en_vie.equals("mort")) courant.mourrir(); leclub.addelement(courant); catch (InstantiationException e){ System.out.println("Fini"); buff.close();