Programmation Java - bases

Documents pareils
Programmer en JAVA. par Tama

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Java Licence Professionnelle CISII,

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

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

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

as Architecture des Systèmes d Information

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Chapitre 10. Les interfaces Comparable et Comparator 1

PROGRAMMATION PAR OBJETS

INF 321 : mémento de la syntaxe de Java

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

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

Programmation Par Objets

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

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

INITIATION AU LANGAGE JAVA

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

Corrigé des exercices sur les références

Premiers Pas en Programmation Objet : les Classes et les Objets

TD/TP PAC - Programmation n 3

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

Langage Java. Classe de première SI

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

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 )

Une introduction à Java

Programme Compte bancaire (code)

Projet de programmation (IK3) : TP n 1 Correction

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

Auto-évaluation Programmation en Java

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

Un ordonnanceur stupide

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

Introduction au langage Java

Synchro et Threads Java TM

Package Java.util Classe générique

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

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

Java DataBaseConnectivity

Threads. Threads. USTL routier 1

TP1 : Initiation à Java et Eclipse

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

RMI le langage Java XII-1 JMF

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

Introduction au langage C

Cours 1: Java et les objets

ACTIVITÉ DE PROGRAMMATION

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

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

Utilisation d objets : String et ArrayList

LOG4430 : Architecture logicielle et conception avancée

Programmation Objet Java Correction

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

Programmation par les Objets en Java

TD/TP PAC - Programmation n 3

Support de cours et TD Programmation Orientée Objet

Design patterns. Design patterns - définition. Design patterns - avantages

Introduction : les processus. Introduction : les threads. Plan

Java Licence Professionnelle CISII,

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

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

Développement Logiciel

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Chapitre VI- La validation de la composition.

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

Claude Delannoy. 3 e édition C++

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Programmation en Java IUT GEII (MC-II1) 1


Exercices sur les interfaces

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Applet pour visualiser les variables «automate» notifiées

OpenPaaS Le réseau social d'entreprise

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation (RMI)

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

Remote Method Invocation en Java (RMI)

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

Flux de données Lecture/Ecriture Fichiers

TD2 Programmation concurrentielle

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

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Programmation avec des objets : Cours 7. Menu du jour

Solutions du chapitre 4

Création d une application JEE

Arbres binaires de recherche

1. Langage de programmation Java

UE C avancé cours 1: introduction et révisions

Java 1.5 : principales nouveautés

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

F. Barthélemy. 17 mai 2005

Informatique / Programmation

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

Notion de thread (1/2)

Transcription:

Programmation Java - bases Programmation objet avec Java (2) Christelle Urtado & Sylvain Vauttier Janvier 2013 Surdéfinition et Dans un constructeur, pour appeler un autre constructeur de la même classe, utilise this. public class MaClasse public MaClasse(int a, int b)... public MaClasse (int c) this(c,0); public MaClasse () this(10); 1

Héritage et Lors de la construction d un objet, les se déclenchent tout au long de la «branche» d héritage (de la racine Object vers la classe qui type l objet construit). Par défaut, chaque constructeur appelle, avant de s exécuter, le constructeur sans paramètre de sa superclasse directe. super(...); comme première ligne peut permettre d'appeler un autre constructeur de la superclasse directe en lui transmettant des paramètres. public class Employe extends Personne private float salaire; public Employe (String unnom, float unsalaire) super(unnom); salaire = unsalaire; appel du constructeur à un paramètre de type String de la classe Personne Attributs Il peut s'avérer nécessaire de définir un attribut dont la valeur soit partagée par toutes les instances d'une classe. On parle de variable de classe. Ces variables sont alors stockées une seule fois, au niveau de la classe, et sont accessibles aux instances de la classe. Mot réservé : static. Accès : depuis une méthode de la classe comme pour tout autre attribut, depuis une instance de la classe, depuis la classe directement (utilisation du nom de la classe) 2

Attributs : Exemple public class UneClasse public static int compteur = 0; public UneClasse () compteur++; public class AutreClasse public void unemethode() int i = UneClasse.compteur; Méthodes Il peut être nécessaire de disposer d'une méthode qui puisse être appelée sans instance d une classe. Il est possible de définir à cet effet une méthode, c est-à-dire une méthode associée à la classe et non à ses instance. On utilise là aussi le mot réservé static. Une méthode s applique à la classe et non à ses instances. Ainsi, une méthode ne peut manipuler que les attributs de la classe (en dehors des variables locales et des paramètres de la méthode). 3

Méthodes : Exemples Un classique : la méthode main public class UneClasse public int unattribut; public static void main(string args[]) unattribut = 5; // Erreur de compilation Java utilise souvent les méthodes pour définir des fonctionnalités utilitaires périphériques à une classe d objets. Exemples de méthodes de conversion : int entier = Integer.parseInt ("108"); String chaine = String.valueOf (10); des variables et programmation objet Comme dans les autres langages de programmation structurés (C, C++,...), une variable associée à une structure de code n est accessible qu au sein de cette structure. Une variable locale à un bloc de code n existe qu au sein de ce bloc de code (et de ses sous blocs). Elle est détruite à la fin de l exécution du bloc. Une variable locale à une méthodem (définie dans son bloc principal), n est accessible qu au sein de cette méthode. Elle est détruite à la fin de l exécution de la méthode. - Les paramètres de la méthode sont une catégorie particulière de variables locales de la méthode dont la valeur initiale peut être fixée par l appelant de la méthode. 4

des variables et programmation objet Un attribut d un d objet constitue une variable globale du point de vue de ses méthodes. l attribut est accessible depuis toutes les méthodes de l objet il existe pour toute la durée de vie de l objet. Un attribut constitue une variable globale du point de vue des méthodes de la classe ou des méthodes des instances de cette classe. l attribut est accessible depuis toutes les méthodes de la classe (méthodes ou pas) il existe tant que la classe existe. Objets, tableaux, types de base et références (1) Lorsqu'une variable est d'un type objet ou tableau, ce n'est pas l'objet ou le tableau lui-même qui est stocké dans la variable mais une référence vers cet objet ou ce tableau (adresse mémoire). Pour chaque type de tableau créé, Java crée effectivement une classe gérant le tableau Lorsqu'une variable est d'un type de base, la variable contient la valeur. Une référence est un pointeur (adresse mémoire où est stocké l objet) pour lequel le langage assure une manipulation transparente (dé-référencement implicite). Bien que la variable ne contienne pas directement l objet (mais sa référence), son utilisation permet une manipulation directe de l objet. 5

Objets, tableaux, types de base et références (2) Les types de base (int, float, double, char, boolean, etc.) produisent des valeurs qui n ont pas d existence propre. Une valeur n a pas d identité : elle est directement stockée dans une variable. Modifier une valeur consiste à remplacer cette valeur par une autre (ce qui détruit la première). Copier une valeur crée effectivement une copie de la valeur. Un objet est une entité dont l existence est indépendante de sa valeur. Il possède une identité définie par sa référence. Les objets sont manipulés par leur identité, par référence. On peut modifier la valeur d un objet (son contenu) sans détruire l objet. Copier la valeur d une variable de type objet ne copie pas l objet mais uniquement sa référence. Ainsi, plusieurs variables peuvent référencer au même moment un même objet. Objets, tableaux, types de base et références (3) int x = 5; int y = x; String s1 = "Bonjour"; String s2 = s1; String s3 = "C'est moi!"; x y s1 s2 s3 5 5 "Bonjour" "C'est moi!" 6

Objets, tableaux, types de base et références (4) Une référence n étant pas l objet lui-même, c'est au programmeur de prévoir l'allocation mémoire nécessaire pour stocker effectivement l'objet référencé (utilisation du new). création d un tableau de 10 références, initialement nulles, sur des objets personnes Personne[] tab = new Personne[10]; for (int i = 0; i < 10; i++) tab[i] = new Personne(); création effective des dix objets de type Personne mise à jour des références du tableau Mode de passage des paramètres (1) Java n'implémente qu'un seul mode de passage des paramètres à une méthode : le passage par valeur. La valeur de la variable passée en argument d une méthode est recopiée dans le paramètre correspondant Conséquences : l'argument passé à une méthode ne peut être modifié, si l'argument est un objet, c'est sa référence qui est recopiée. Ainsi, le contenu de l'objet peut être modifié, mais pas la référence elle-même. 7

Mode de passage des paramètres (2) public class Test private int unentier = 0; public static void echange (int autreentier, Test objettest) int temp = objettest.unentier; objettest.unentier = autreentier; autreentier = temp; public static void main (String[] args) Test t = new Test(); int u = 2; echange(u,t); System.out.println(t.unEntier); System.out.println(u); t passage s unautreentier 2 u unobjettest 2 Test@1 0 Autoréférence this Le mot réservé this, utilisé dans une méthode, désigne la référence de l'instance sur laquelle a été déclenchée la méthode. Il est utilisé principalement lorsqu un objet «se» passe en paramètre d une méthode. public class Dessin private Vector listefigures; public void ajoute (ElementGraphique unelement) listefigures.addelement(unelement); public class ElementGraphique Dessin ledessin; public ElementGraphique (Dessin undessin) ledessin = undessin; ledessin.ajoute (this); 8

Identité / Egalité public class ProgPpal public static void main (String [] args) String chaine1 = new String ("Bonjour"); String chaine2 = new String("Bonjour"); boolean resultat1 = chaine1 == chaine2; boolean resultat2 = chaine1.equals(chaine2); false == teste l identité des deux objets true equals () teste l égalité des contenus La méthode equals () peut être redéfinie pour tester l «égalité profonde». Copie d objets (1) Une simple affectation entre deux variables de type objet copie la référence de l objet et non l objet. On obtient deux variables qui référencent un même objet. Une véritable copie d un objet s obtient en invoquant la méthode «clone()» pourvu que la classe implémente l interface Cloneable. public class Personne implements Cloneable public String name = ""; public Object clone() Object clone = null; try clone = super.clone(); catch (CloneNotSupportedException e) return (clone); La méthode clone() peut aussi être redéfinie pour réaliser une «copie profonde». 9

Copie d objets (2) public class Test public static void main(string[] args) Personne quidam = new Personne (); quidam.nom = "Jean"; Personne quidam2 = (Personne) quidam.clone (); quidam2.nom = "Pierre"; System.out.println (quidam.nom); Personne[] tab = new Personne[2]; tab[0] = quidam; tab[1] = quidam2; Jean Personne[] tab2 = (Personne[]) tab.clone (); tab2[1].nom = "Joe"; System.out.println (quidam2.nom); Joe Les 50 mots réservés du langage abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while 10

Les 50 mots réservés du langage abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while Réservés mais pas utilisés Les 50 mots réservés du langage abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected Types primitifs public return short static strictfp super switch synchronized this throw throws transient try void volatile while 11

Types primitifs types primitifs nombres réels nombres entiers byte double short float int char boolean long En Java, tout ce qui n est pas d un type primitif est une référence vers un objet. Les 50 mots réservés du langage abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected Contrôle d accès public return short static strictfp super switch synchronized this throw throws transient try void volatile while 12

Les 50 mots réservés du langage abstract assert boolean break byte case catch char class const continue default do double else enum extends Orientation objet final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while Les 50 mots réservés du langage abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package et exceptions private protected Structures de contrôle public return short static strictfp super switch synchronized this throw throws transient try void volatile while 13

Structures de contrôle - alternatives if(boolean_expression) //Executes when the expression is true else //Executes when the expression is false switch(expression) case value : //Statements break; case value : //Statements break; default : //Statements Structures de contrôle - répétitions while(boolean_expression) //Statements do //Statements while(boolean_expression); for(initialization; Boolean_expression; update) //Statements typiquement : for(int i=0; i<10; i++) 14

Structures de contrôle - répétitions Boucle for «améliorée» for(declaration : expression) //Statements exemple 1 (parcours d un tableau) int [] numbers = 10, 20, 30, 40, 50; for(int x : numbers ) exemple 2 (parcours d une collection) List<String> maliste = new ArrayList<String>(); maliste.add ( "un" ); maliste.add ( "deux" ); for(string elem : maliste ) 15