Programmation Orientée Objet – Java Les programmes

Programmation Orientée Objet – Java
Bertrand Estellon
Département Informatique et Interactions
Aix-Marseille Université
21 septembre 2016
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 1 / 171
Java Introduction
Les programmes informatiques
Les étapes du traitement des données :
Un ordinateur reçoit des données de diérents périphériques d’entrée
(Carte réseau, souris, capteurs).
Ces données sont codées sous la forme d’une suite de 0/1.
Ces données sont transformées an de produire une nouvelle
suite de 0/1.
Ces nouvelles données sont envoyées sur un périphérique de sortie
(Carte réseau, écran, carte son) ou de stockage.
Ces données sont transportées, stockées, transformées en ondes
sonores, etc.
Un programme informatique spécie une suite d’instructions à eectuer
sur des données an de produire de nouvelles données en sortie.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 2 / 171
Java Introduction
Les langages de programmation
Les langages de programmation ont été dénis par les humains an de
permettre à un humain de spécier à un ordinateur une suite
d’instructions.
Il existe de nombreux langages de programmation :
Langages impératifs et procéduraux (C, Pascal, Fortran...)
Langages logiques (Prolog...)
Langages fonctionnels (OCaml, Haskell, Erlang...)
Langages à pile (PostScript...)
Langages à objets (Java, C++, C#...)
L’exécution se fait soit par :
Interprétation (Python, PHP, JavaScript, Ruby...)
Compilation et exécution (C++, C, Pascal...)
Semi-compilation et exécution sur machine virtuelle (Java...)
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 3 / 171
Java Introduction
La programmation orientée objet (POO)
Les objectifs :
Faciliter le développement et l’évolution des applications ;
Permettre le travail en équipe ;
Augmenter la qualité des logiciels (moins de bugs).
Solutions proposées :
Découpler (séparer) les parties des projets ;
Limiter (et localiser) les modications lors des évolutions ;
Réutiliser facilement du code.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 4 / 171
Java Introduction
Le langage Java (utilisé dans ce cours)
Le langage Java :
est un langage de programmation orienté objet
créé par James Gosling et Patrick Naughton (Sun)
présenté ociellement le 23 mai 1995.
Les objectifs de Java :
simple, orienté objet et familier ;
robuste et sûr ;
indépendant de la machine employée pour l’exécution ;
très performant ;
multi-tâches.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 5 / 171
Java Introduction
Autres langages orienté objet
C++ : très utilisé
C# : langage de Microsoft (appartient à .NET)
Objective C : langage utilisé par Apple
PHP : langage très utilisé sur le Web
Python
Ruby
Eiel
Ada
Smalltalk
...
La syntaxe change mais les concepts sont les mêmes !
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 6 / 171
Java Introduction
Mon premier programme Java
Le programme HelloWorld.java :
class HelloWorld {
public static void main(String arg[]) {
System.out.println("Hello world !");
}
}
Compilation et exécution :
$ javac HelloWorld.java
$ ls
HelloWorld.java HelloWorld.class
$ java HelloWorld
Hello world !
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 7 / 171
Java Introduction
Commentaires
Les commentaires permettent de rajouter du texte dans votre programme
sans que le compilateur ne le considère comme du code :
class HelloWorld {
public static void main(String arg[]) {
/* Commentaire
sur plusieurs lignes.
*/
// sur une seule ligne.
System.out.println("Hello world !");
}
}
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 8 / 171
Java Introduction
Instructions, variables et expressions
Les données sont manipulées à l’aide de variables et d’expressions :
class Exemple {
public static void main(String arg[]) {
int a= 5; // Déclaration d'une variable
int b= 9; // Déclaration d'une deuxième variable
b=b+a;// L'expression "b+a" est évaluée
// et le résultat est affecté à "b"
a= 2*b- 3; // 25 est affecté à "a"
System.out.println(a); // Affichage du contenu de "a"
System.out.println(b); // Affichage du contenu de "b"
}
}
Notez que les instructions sont séparées par des points-virgules.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 9 / 171
Java Introduction
Les variables
Une variable possède un nom, un type et une valeur.
int a= 3; // Déclaration d'une variable
// de nom "a", de type "int" (entier)
// avec une valeur initiale égale à 3.
Il est ensuite possible de changer la valeur de la variable :
int a= 3;
a= 12; // Affectation d'une nouvelle valeur
En Java, le symbole =désigne l’aectation et n’a pas la même signication
qu’en mathématiques.
Lors de la compilation, Java vérie que chaque expression située à droite
de l’aectation est compatible avec le type de la variable.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 10 / 171
Java Introduction
Les types primitifs
byte entier 8 bits -128 à 127 0
short entier 16 bits -32768 à 32767 0
int entier 32 bits 231 à231 10
long entier 64 bits 263 à263 10
oat otant 32 bits 0.0
double otant 64 bits 0.0
char caractère 16 bits caractères Unicode \u0000
boolean boolean 1 bit false ou true false
Les constantes :
int a= 12;
double b= 13.5;
char c='t';
boolean b=true;
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 11 / 171
Java Introduction
Opérateurs de calcul
Négation -a Opposé de a
Addition a + b Somme de aet b
Soustraction a - b Diérence de aet b
Multiplication a * b Produit de aet b
Division a / b Quotient de aet b
Modulo a % b Reste de adivisé par b
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 12 / 171
Java Introduction
Opérateurs logiques et comparaisons
non !a true si aest égal à false
et a && b true si aet bsont égaux true
ou a || b true si aou best égal true
égal a == b true si aest égal à b
diérent a != b true si aest diérent de b
plus petit a < b true si aest strictement plus petit que b
plus grand a > b true si aest strictement plus grand que b
inférieur ou égal a <= b true si aest plus petit ou égal à b
supérieur ou égal a >= b true si aest plus grand ou égal à b
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 13 / 171
Java Introduction
Les expressions
Il est possible de fabriquer des expressions complexes à partir des variables,
constantes et opérateurs :
int a= 3;
int b= 7;
int c= 2*a+ 7*b- (a+9)%(b-4);
boolean d=a<=4 && b+2<=10;
boolean e= !(a>=4 && b+2<=10);
L’ordre du calcul respecte les priorités des opérateurs.
Le type de chaque partie est déterminé à la compilation.
Le compilateur associe les instructions “machine” qui correspondent
aux opérateurs et aux types des opérandes.
Le compilateur connaît le type de l’expression et vérie s’il est
compatible avec le type de la variable (dans le cas d’une aectation).
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 14 / 171
Java Introduction
Incrémentation, décrémentation et aectations
Pre-incrémente ++a Incrémente ade 1, puis retourne a
Post-incrémente a++ Retourne a, puis incrémente ade 1
Pré-décrémente --a Décrémente ade 1, puis retourne a
Post-décrémente a-- Retourne a, puis décrémente ade 1
Exemple :
int a= 10;
int b,c;
a++;
b=a++; // Déconseillé b = a; a++;
c= --b;// Déconseillé b--; c = b;
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 15 / 171
Java Introduction
Les aectations
Aectation a=b Aecte bàa
Addition a+=b Ajoute bàa
Soustraction a-=b Soustrait bàa
Multiplication a*=b Multiplie apar b
Division a/=b Divise apar b
Exemple :
int a= 10;
a+=22;
int c= 12;
a+=2*c;
c*=4;
Il existe des opérateurs de ce type associés aux opérations logiques.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 16 / 171
Java Introduction
Les aectations sont des opérateurs
La valeur retournée par l’évaluation d’une aectation est égale à la valeur
retournée par l’évaluation de sa partie droite.
Exemple :
int a,b;
a= (b= 10);
/* ou */
a=b= 10;
Étapes de l’évaluation de l’instruction :
La valeur 10 est aectée à b;
(b = 10) vaut 10 ;
la valeur 10 est aectée à a;
a = (b = 10) vaut 10 ;
cette valeur est ignorée.
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 17 / 171
Java Introduction
Les tableaux
Déclaration d’une variable de type “référence vers un tableau” :
int[] arrayOfInt;
double[] arrayOfDouble;
Allocation d’un tableau :
arrayOfInt =new int[10];
arrayOfDouble =new double[3];
Utilisation d’un tableau :
arrayOfInt[0] = 5;
arrayOfInt[9] = 10;
arrayOfInt[2] = arrayOfInt[0] + 3*arrayOfInt[9];
arrayOfDouble[2] = arrayOfInt[2] + 3.5;
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 18 / 171
Java Introduction
Les tableaux
L’expression new int[10] retourne une “référence vers un tableau” :
int[] array =new int[10]; // Allocation d'un tableau
int[] array2 =array;// Copie de la référence
Seule la référence est copiée, il n’y a qu’un seul tableau :
array[4] = 2; // Affectation d'une valeur à la 5ème case
System.out.println(array2[4]); // "5"
Taille du tableau :
int[] array =new int[10]; // Allocation d'un tableau
int length =array.length;// Récupération de la taille
System.out.println(length);
/* ou directement */ System.out.println(array.length);
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 19 / 171
Java Introduction
Références et Garbage Collector
Une variable de type “référence” peut valoir null :
int[] array =null;
// La variable "array" contient la référence "null".
// Elle pointe vers aucune instance.
Important : Une référence contient soit null soit la référence d’un
tableau ou d’un objet compatible avec le type de la variable.
Le Garbage collector peut supprimer les éléments devenus innaccessibles :
int[] array =new int[10];
array[3] = 6;
...
array =null;
// La mémoire utilisée pour le tableau peut être libérée
Bertrand Estellon (DII – AMU) Programmation Orientée Objet – Java 21 septembre 2016 20 / 171
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !