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 l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!