Mise à niveau en Java



Documents pareils
Programmer en JAVA. par Tama

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

as Architecture des Systèmes d Information

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

Java Licence Professionnelle CISII,

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Une introduction à Java

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

TP1 : Initiation à Java et Eclipse

INITIATION AU LANGAGE JAVA

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

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

Cours 1: Java et les objets

Langage Java. Classe de première SI

Java Licence Professionnelle CISII,

Programmation en Java IUT GEII (MC-II1) 1

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

PROGRAMMATION PAR OBJETS

Algorithmique et Programmation, IMA

INF 321 : mémento de la syntaxe de Java

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

Initiation à JAVA et à la programmation objet.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Introduction au langage C

Tp 1 correction. Structures de données (IF2)

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Java c est quoi? Java pourquoi?

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

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

Notions fondamentales du langage C# Version 1.0


Chapitre 2. Classes et objets

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

Cours d initiation à la programmation en C++ Johann Cuenin

Utilisation d objets : String et ArrayList

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

Chapitre 10. Les interfaces Comparable et Comparator 1

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Cours d Algorithmique et de Langage C v 3.0

Programmation par les Objets en Java

Cours 1 : La compilation

STAGE IREM 0- Premiers pas en Python

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

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

TP1. Outils Java Eléments de correction

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

TP 1. Prise en main du langage Python

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

ACTIVITÉ DE PROGRAMMATION

SUPPORT DE COURS. Langage C

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

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Programmation Orientée Objets Le Langage JAVA

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

Claude Delannoy. 3 e édition C++

TP, première séquence d exercices.

Apprendre Java en 154 minutes

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

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

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Chapitre VI- La validation de la composition.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Programmation Orientée Objet Java

UE Programmation Impérative Licence 2ème Année

Projet de programmation (IK3) : TP n 1 Correction

Programmation C. Apprendre à développer des programmes simples dans le langage C

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

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

Chapitre I Notions de base et outils de travail

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Présentation du langage et premières fonctions

Les bases de l informatique et de la programmation. École polytechnique

Programmation Classique en langage C

Corrigés des premiers exercices sur les classes

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

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

La technologie Java Card TM

Bases Java - Eclipse / Netbeans

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Introduction à l algorithmique et à la programmation M1102 CM n 3

Algorithmique et programmation : les bases (VBA) Corrigé

2. Comprendre les définitions de classes

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

OCL - Object Constraint Language

Initiation à la programmation en Python

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

4. Groupement d objets

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. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Transcription:

Mise à niveau en Java Cours 1 Stéphane Airiau Université Paris-Dauphine Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 1

Aujourd hui Eléments de base Variables, opérateurs, type d une expression Tests, boucles Tableaux méthodes Programmation Orientée Objet objets et classes attributs et méthodes constructeurs un mot sur la compilation et l exécution en Java une première classe Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 2

Instructions et commentaires 1 // la suite est un commentaire 1 /* ceci est un commentaire 2 sur plusieurs 3 lignes */ Une instruction est une phrase qui respecte la grammaire de Java. Une instruction se termine toujours par un point virgule ; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 3

Types élémentaires type élémentaire nombre de bits interval de valeurs boolean 1 deux valeurs true et false byte 8 un entier entre -128 et 127 short 16 un entier entre -2 15 = 32768 et 2 15 1=32767 int 32 un entier entre -2 31 2.1 10 9 et 2 31 1 2.1 10 9 long 64 un entier entre -2 63 9.2 10 18 et 2 63 1 9.2 10 18 char 16 caractère unicode, il y a 65536 codes float 32 nombre flottant norme IEEE double 64 nombre flottant norme IEEE Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 4

Variables : déclaration et initialisation déclaration simple : <type> <nom>; déclaration avec affectation : <type> <nom> = <valeur dans le type> <variable> <expression> ; déclaration multiple : <type> <nom 1 >, <nom 2 >,..., <nom k >; déclaration multiple avec affection partielle : <type> <nom 1 >, <nom 2 >= <valeur dans le type>,..., <nom k >; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 5

Exemples 1 short population ; 2 population = 30000; 1 short population = 1.000.000 ; 1 long nbparticules = 10.000.000.000 ; 1 long nbparticules = 10.000.000.000L ; 1 char lettre = c ; 1 boolean test = true; 2 test = false; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 6

Exemples 1 short population ; 2 population = 30000; 1 short population = 1.000.000 ; 1 long nbparticules = 10.000.000.000 ; 1 long nbparticules = 10.000.000.000L ; 1 char lettre = c ; 1 boolean test = true; 2 test = false; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 7

Exemples 1 short population ; 2 population = 30000; 1 short population = 1.000.000 ; 1 long nbparticules = 10.000.000.000 ; 1 long nbparticules = 10.000.000.000L ; 1 char lettre = c ; 1 boolean test = true; 2 test = false; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 8

Exemples 1 short population ; 2 population = 30000; 1 short population = 1.000.000 ; 1 long nbparticules = 10.000.000.000 ; 1 long nbparticules = 10.000.000.000L ; 1 char lettre = c ; 1 boolean test = true; 2 test = false; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 9

Exemples 1 short population ; 2 population = 30000; 1 short population = 1.000.000 ; 1 long nbparticules = 10.000.000.000 ; 1 long nbparticules = 10.000.000.000L ; 1 char lettre = c ; 1 boolean test = true; 2 test = false; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 10

Exemples 1 short population ; 2 population = 30000; 1 short population = 1.000.000 ; 1 long nbparticules = 10.000.000.000 ; 1 long nbparticules = 10.000.000.000L ; 1 char lettre = c ; 1 boolean test = true; 2 test = false; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 11

Transtypage ou cast On a la situation suivante : 1 <type 1 > <nom 1 > = <valeur 1 >; 2 <type 2 > <nom 2 > = <nom 1 >; La conversion ou cast peut rester implicite si le <type 1 > est «moins fort»que le <type 2 > 1 int i = 10; 2 double x = i; La conversion doit devenir explicite si le <type 1 > est «strictement plus fort»que le <type 2 > : il faut indiquer au compilateur d effectuer la conversion. 1 double x= 3.1416; 2 int i = (int)x; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 12

Opérateurs unaires Opérateur priorité action exemples + 1 signe positif +a; +7-1 signe négatif -a; -(a-b); -7! 1 négation logique!(a<b); ++ affectation et incrément de 1 n++;++n; affectation et incrément de 1 n++; i; Opérateurs unaires Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 13

Opérateurs binaires Opérateur priorité action exemples * 2 multiplication a * i / 2 division n/10 % 3 reste de la division entière k%n + 3 addition 1+2-3 soustraction x-5 < 5 strictement inférieur i<n <= 5 inférieur ou égal i <= n > 5 strictement supérieur i < n >= 5 supérieur ou égal i >= n == 6 égalité i==j!= 6 différent i!=j & 7 conjonction (et logique) (i<j) & (i<n) 9 disjonction (ou logique) (i<j) (i<n) && 10 conjonction optimisée (i<j) && (i<n) 11 disjonction optimisée (i<j) (i<n) = affectation x = 10; x=n; +=, -= affectation et incrément i += 2; j-=4 Opérateurs binaires Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 14

Exemple 1 int i=2, j = i++ ; 2 i=2 ; 3 j= ++i ; Attention à ne pas utiliser = pour faire un test d égalité! Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 15

Opérateur conditionnel ternaire 1 result = unecondition? value1 : value2; Si le test (une expression booléenne) unecondition est vérifié, alors la variable result prend la valeur value1, sinon elle prend la valeur value2. 1 double x,y, r=1.0; 2... 3 boolean interieur = x*x + y*y < r? true : false Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 16

Type d une expression Le code suivant est-il correct? 1 int i = 5,j; 2 double x = 5.0; 3 j=i/2; 4 j=x/2; 1 double x=2.75; 2 int y = (int) x * 2; 3 int z = (int) (x *2); Quelles sont les valeurs de y et z? Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 17

Type d une expression Le code suivant est-il correct? 1 int i = 5,j; 2 double x = 5.0; 3 j=i/2; 4 j=x/2; 1 double x=2.75; 2 int y = (int) x * 2; 3 int z = (int) (x *2); Quelles sont les valeurs de y et z? Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 18

Les Tableaux Déclaration 1 <type> [] ligne; 2 <type> [][] rectangle; 3 <type> [][][] cube; Création d un tableau : il faut connaître la taille du tableau. 1 <type> [] ligne = new <type>[<taille 1 >]; 2 <type> [][] rectangle = 3 new <type>[<taille 2 >][<taille 3 >]; La taille du tableau : cube.length Attention! le premier élément d un tableau a pour index 0, et donc le dernier élément a pour index length-1. Accès aux éléments du tableau avec [] : rectangle[3][4] + cube[1][2][5]; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 19

Exemples 1 int[][][] cube = new int[3][4][5]; 2 int[][] rectangle = cube[2]; 3 int n1 = cube.length; 4 int n2 = cube[0].length; 5 int n3 = cube[0][0].length; Initialisation possible avec une syntaxe de type «liste» : premiers : 2 3 5 7 11 13 17 19 triangle : 1 int[] premiers = {2, 3, 5, 7, 11, 13, 17, 19 }; 2 int[][] triangle = {{1,1,1,1}, { 0,1,1,1}, 3 { 0, 0, 1, 1}, {0, 0, 0, 1} } ; 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 20

Blocs Un bloc rassemble des instructions. Les variables déclarées dans un bloc interne ne sont pas connues dans un bloc plus externe. 1 int a,b=10; 2 { 3 int d=2*b; 4 { 5 int e=b+d; 5 a=e*d; 6 { 5 int g= b+ d*e; 6 } 6 } 7 } a et b sont connus partout. d est connu seulement dans la partie rouge e est connu seulement dans la partie blue g est connu seulement dans la partie verte Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 21

La structure if... then... else 1 if ( <expression booléenne> ) 2 <bloc d instructions à exécuter 3 si la condition est satisfaite> 4 else 5 <bloc d instructions à exécuter 6 si la condition n est pas satisfaite> 1 int gains,payment,encaissement,invest; 2 // opérations qui modifient la variable gains 3... 4 if (gains<0) 5 payment = gains; 6 else if (gains > 10) { 7 encaissement = 10; 8 invest = gains-10; 9 } 10 else 11 encaissement = gains; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 22

Choix multiples 1 int choix; 2... 3 // l utilisateur modifie la valeur de choix 4... 5 switch(choix) { 6 case 1: 7 //instructions pour le choix 1 8... 9 break; 10 case 2: 11 //instructions pour le choix 2 12... 13 break; 14 default 15 // instructions dans le reste des cas 16... 17 } Le switch peut s effectuer sur deux types de variables : int et char. Depuis la version 7, on peut aussi utiliser une chaîne de caractères Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 23

Boucle for 1 for (<initialisation> 2 <condition de fin> ; 3 <mise à jour des valeurs>) 4 <bloc d instructions> que se passe-t-il? 1 for ( ; ; ){ 2 // instructions 3 } un exemple classique : 0 int n=10; 1 for (int i=0; i< n; i++ ){ 2 // instructions 3 } Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 24

autre exemple 0 int n=10; 1 for (int i=0, j=n; j< i; i++; j ){ 2 // instructions 3 } Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 25

Boucle while 1 while(<condition>) 2 <bloc d instructions> Le bloc d instructions est exécuté tant que la condition est satisfaite. un exemple qui va essayer de déterminer si la suite définie par u : n r n converge : 1 double epsilon = 0.0000001; 2 double r = 0.75, u=1; 3 while(-epsilon >= u-u*r u - u* r >= epsilon) 4 u = u * r ; Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 26

Boucle do... while 1 do 2 <bloc d instructions> 3 while(<condition>); Attention : ne pas oublier le ; à la fin du while! 1 double epsilon = 0.0000001; 2 double r = 0.75, u=1; 3 do 4 u = u * r ; 5 while ( -epsilon >= u-u*r u - u* r >= epsilon); Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 27

choix du type de de la boucle généralement, si on connait le nombre d itérations, on utilise une boucle for. qu est-ce qui est plus élégant? qu est-ce qui sera le plus facile à lire pour un autre lecteur? ex : chercher un élément dans un tableau? chercher l élément le plus grand d un tableau? déterminer si un nombre est premier? Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 28

Méthodes But : rassembler une suite d instructions que l on répète dans le code. en utilisant des méthodes, le code devient plus lisible moins long si on veut modifier le code, il n y a plus qu un seul endroit à changer. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 29

Méthode 1 public static <type de retour> <nom> 2 ( <liste de paramètres>) { 3 corps de la méthode : suite d instructions 4 } Le sens de public et static seront vus plus tard dans le cours l ordre des arguments est important! si la méthode ne retourne rien, son type de retour est void. sinon, on retourne la valeur en utilisant le mot-clé return. choisir un nom de méthodes parlant Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 30

Exemple 1 public static int max( int[] tableau) { 2 int m= tableau[0]; 3 for (int i=1;i<tableau.length; i++){ 4 if (tableau[i] > m) 5 m = tableau[i]; 6 } 7 return m; 8 } Appel de la méthode 1 int tab = {7, 12, 15, 9, 11, 17, 13}; 2 int m = max(tab); Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 31

Surcharge nom de méthode + liste d arguments = signature La signature est unique. On peut utiliser le même nom mais avoir une liste d arguments différente on appelle cette possibilité la surcharge de la méthode. 1 public static double max( double[] tableau) { 2 double m= tableau[0]; 3 for (int i=1;i<tableau.length; i++){ 4 if (tableau[i] > m) 5 m = tableau[i]; 6 } 7 return m; 8 } Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 32

Passage des arguments de types primitifs 1 public int f(int n){ 2 n = 3 * n * n -2 *n + 1 3 if (n > 0) 4 return n; 5 else 6 return 0; 7 } 1 int i=13; 2 int j= f(i); Quelle est la valeur de i? Le passage des arguments se fait par valeur (i.e. on copie la valeur de la variable passée en arguments). Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 33

Programmation orientée Objet en Java Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 34

Objets et Classes Un objet se définit par ses états (on peut aussi parler de ses caractéristiques) et son comportement. exemple d un objet voiture Etats marque modèle cylindrée quantité d essence niveau d huile pression des pneus nombre de tours Comportements accélerer passer rapport supérieur passer rapport inférieur tourner volant ouvrir porte fermer porte freiner Une classe est un plan ou un moule pour fabriquer des objets. les états d un objet vont être représentés par des variables les comportements d un objet seront representés par des méthodes. Un objet est une instance d une classe. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 35

Autrement dit Une classe est un type abstrait caractérisé par des propriétés (attributs et méthodes) communes à un ensemble d objets et permettant de créer des objets ayant ces propriétés. Un objet ou une instance de classe possède un comportement et un état qui ne peut être modifié que par les actions du comportement. On peut créer une classe Personnage car tous les personnages partagent les mêmes caractéristiques. Lorsqu on veut créer un personnage, on instantie la classe Personnage N.B. par convention, le nom d une classe commence toujours par une majuscule. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 36

Des classes déjà existentes Java possède une large librairie de classes. La librairie se compose de différents packages et sous-packages. http://docs.oracle.com/javase/7/docs/api/ overview-summary.html Par exemple, le package java.lang contient des classes de bases du langage Java. On y trouve aussi une classe pour manipuler les chaînes de caractères appelée String. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 37

Attributs et variables de classe variables d instance ou attributs : ces variables définissent les caractéristiques de l objet. initialisation optionnelle. accès : <nom objet>.<nom attribut> variables de classe : ces variables sont communes à toutes les instances de la classe, déclaration avec le mot clé static initialisation obligatoire accès : <nom de classe>.<nom variable de classe> exemple : classe Float pour encapsuler un nombre flottant float. variables de classes : MAX_VALUE, MAX_EXPONENT, NaN, etc. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 38

méthodes d instance et méthodes de classe méthode d instance : ces méthodes permettent de modifier ou d accéder à l état de l objet. méthode de classe : ces méthodes ne modifient pas l état interne d un objet. exemple : la classe Float méthode d instance String tostring() retourne une représentation en chaîne de caractères de l objet courant méthode de classe static String tostring(float f) retourne une représentation en chaîne de caractères du float passé en paramètre 1 Float f; 2 System.out.println(f.toString()); 3 System.out.println(Float.toString(3.1419)); Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 39

Encapsulation Les comportements et les états d un objets peuvent être connus de tous public toute classe peut exécuter la méthode publique modifier ou accéder à un attribut publique cachés private la méthode ou l attribut ne peut être accédée que depuis l intérieur de la classe cacher un méchanisme interne (on pourra changer une implémentation sans que cela ait un impact sur la partie publique). protection Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 40

Constructeurs Une classe est un plan ou un moule pour fabriquer un objet, ce qu on appelle instancier un objet. Les méthodes pour instancier un objet sont appelées des constructeurs. Un constructeur porte le nom de la classe n a pas de type de retour. On appelle constructeur par défaut le constructeur sans arguments : 1 public class <nom classe> { 2 // déclaration des variable d instances et 3 // variables de classe.... 5 // constructeur par défaut 6 public <nom classe>(){ 7 // corps de la méthode 8 } 9 } Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 41

Exemple La surcharge permet d avoir des constructeurs avec des signatures différentes. Pour une classe Personnage, on peut donc écrire : 1 public class Personnage { 2 public String nom; 3 4 // constructeur par défaut 5 public Personnage(){ 6 nom = Inconnu"; 7 } 8 9 public Personnage(String name){ 10 nom = name; 11 } 12 } Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 42

Création d un objet Déclaration : comme pour les types primitifs : <Nom de la classe> <nom objet>; Création/initialisation à l aide du mot clé new et appel du constructeur : new <Nom de classe>(<liste d arguments>);. comme pour les types primitifs, on peut déclarer et initialiser plusieurs objets du même type en même temps. 1 Personnage asterix = new Personnage("Astérix"); 2 Personnage obelix = new Personnage("Obelix"), 3 Personnage idefix = new Personnage( Idéfix ), 4 Personnage romain = new Personnage(); Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 43

Egalité 1 Personnage asterix = new Personnage("Astérix"); 2 Personnage asterixbis = asterix; 3 Personnage asterixter = new Personnage("Astérix"); 4 if (asterix == asterixbis) 5 System.out.println("Bleu"); 6 else 7 System.out.println("Rouge"); 8 if (asterix == asterixter) 9 System.out.println("Bleu"); 10 else 11 System.out.println("Rouge"); Qu est-ce qui est affiché sur la console? la variable est une référence vers l objet et non l objet lui même == désigne l égalité de la référence : deux variables peuvent pointer vers le même objet pour tester l égalité entre les propriétés de l objet, on utilise la méthode boolean equals(object o). Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 44

Egalité 1 Personnage asterix = new Personnage("Astérix"); 2 Personnage asterixbis = asterix; 3 Personnage asterixter = new Personnage("Astérix"); 4 if (asterix == asterixbis) 5 System.out.println("Bleu"); 6 else 7 System.out.println("Rouge"); 8 if (asterix == asterixter) 9 System.out.println("Bleu"); 10 else 11 System.out.println("Rouge"); Qu est-ce qui est affiché sur la console? la variable est une référence vers l objet et non l objet lui même == désigne l égalité de la référence : deux variables peuvent pointer vers le même objet pour tester l égalité entre les propriétés de l objet, on utilise la méthode boolean equals(object o). Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 45

Destruction d un objet La destruction des objets est prise en charge par Java à l aide d un garbage collector (GC). Le GC détruit les objets (i.e. efface la mémoire) qui ne sont référencés par aucun autre objet. Les destructions sont asynchrones et il n y a pas de garanties que les objets soient détruits. Une méthode optionnelle nommée finalize est appelée lorsque l objet est détruit. Elle peut par exemple s assurer que des fichiers ou des connexions sont bien fermées avant la destruction de l objet. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 46

Compilation, exécution, machine virtuelle Java n est pas seulement la description d un langage et une bibliothèque de classes. Java dispose d outils pour générer et exécuter du code. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 47

Compilation Chaque classe <MaClasse> est enregistrée dans un fichier <MaClasse>.java : il porte le même nom que la classe et possède l extension.java. Le développeur doit compiler l ensemble de classes à l aide d un programme appelé javac. Le compilateur traduit le code écrit par le développeur en un langage plus simple qui pourra être exécuté. Pour Java, le compilateur produit un code dans le langage bytecode. Le résultat de la compilation est un fichie nommé <MaClasse>.class Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 48

Compilation Pour simplifier, il y a deux étapes lors de la compilation : analyse syntaxique : le code est lu, on forme un arbre de syntaxique. on vérifie la syntaxe du code (i.e. on vérifie la grammaire du code). analyse sémantique : l arbre syntaxique est analysé et traduit en bytecode. les références à des classes extérieures sont vérifiées (on cherche si la classe existe bien, si elle a besoin d être compilée, etc). Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 49

Exécution On exécute une méthode spéciale appelée main. Cette méthode se trouvera dans une classe de votre choix. Si la méthode main se trouve dans une classe MaClasse, on lancera l exécution en lançant l application Java : java MaClass (on peut taper cette commande sous linux ou mac os) La méthode main a une signature fixée par convention 1 public static void main(string[] args) public : pour être appelée de l extérieur de la classe static : pour être appelée sans avoir instancié un objet void : la méthode ne retourne rien String[] args : lors du lancement de l exécution, on peut ajouter du texte et chaque mot sera inséré dans un tableau de String qui peut servir à paramétrer l exécution. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 50

Machine virtuelle Java fournit une machine virtuelle : c est un programme qui lit du code en bytecode et interprète ce code dans le langage de la machine pour l exécuter : Lors de l exécution java MaClass on lance un programme appelée java se programme interprète le code lancé à partir de la méthode main de la classe MaClasse Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 51

Machine Virtuelles avantages : le code est portable : On peut écrire, compiler et exécuter sur des machines d architectures différentes. (ordinateur windows, apple, linux, téléphone mobile, caisse enregistreuse, etc). la machine virtuelle permet de partager d une manière sécurisée une machine le code est généralement plus compact (pas besoin d inclure les bibliothèques comme en C ou C++). la machine virtuelle donne l impression que l on dispose d une machine entière (la machine réelle donner du temps processeur à la machine virtuelle). inconvenients : coût en ressources de la machine virtuelle. Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 52

sous mac OS Code Source.java sous windows sous linux Compilation javac Bytecode.java machine virtuelle Exécution java machine windows machine linux machine apple portable android Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 53

Travaux Pratiques Coder une classe pour manipuler des nombres complexes. retourner une représentation en chaîne de caractères. opérations de base : addition, soustraction, multiplication, division obtenir la partie réelle, la partie imaginaire, l angle et le module opération de rotation et d homothetie Ecrire une méthode main ou vous testerez chaque opération PS : Pour imprimer sur la console utilisez cette méthode : System.out.println(<une chaine de caractères>) PPS : l opérateur + concatène les chaînes de caractères, par exemple par toutatis + asterix.nom Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 54