Ce cours conerne l'apprentissage des concepts liés à la Programmation Orientée Objet (POO) (ou OOP en anglais pour Object Oriented Programming), notamment au travers du langage Java.
Java est un langage objet créé par Sun Microsystems et utilisé à partir de 1995. Sun fut rachetée en 2009 par Oracle et le langage Java appartient désormais à cette société américaine.
Le grand intérêt de Java est qu'il est portable grâce au fait que le code source est traduit en code exécutable dans un langage particulier (bytecode). On peut donc exécuter le bytecode Java sur toute machine qui dispose d'une JVM (Java Virtual Machine) qui est un programme capable d'exécuter ce code.
Le langage Java est également doté de nombreuses bibliothèques et permet de faire du développement Web (J2E), du réseau, du parallélisme, accéder aux bases de données (JDBC) ou créer des interfaces graphiques (Swing, JavaFX).
Il ne faut pas confondre Java et JavaScript qui sont deux langages ayant des syntaxes proches mais qui sont différents.
Exercice 1.1
Voir :
Exercice 1.2
Existe t-il une différence entre les deux codes suivants qui permettent tous deux d'accéder de manière synchrone à deux compteurs.
Pour rappel, on peut synchroniser :
Dans le premier cas, les méthodes étant synchronized
, on ne peut être que dans une seule
méthode à la fois
Par contre dans le second cas, on synchronise sur des objets, on peut donc avoir deux threads différents qui exécutent chacun l'une des méthodes en même temps.
volatile
en JavaLe mot clé volatile
indique qu'une variable sera modifiée par plusieurs Threads.
La variable sera stockée dans la mémoire partagée entre les Threads ce qui la rend synchronisée de manière implicite.
La différence avec synchronized
et que volatile peut s'appliquer à des types simples (i.e. basique, scalaire comme int
) alors que synchronized s'applique sur des objets.
Exercice 1.3
Implantez une liste doublement chaînée circulaire.
On implantera notamment les méthodes suivantes en plus du constructeur :
public int getSize( E value )
qui donne la taille de la listepublic void putLast( E value )
qui ajoute un nouvel élément à la fin de la listepublic String toString()
qui donne le contenu de la liste sous forme de chaîne de caractèrespublic static LinkedList iota( int n, int m )
qui retourne une liste d'entiers de n
à m
Exercice 1.4
Créer un programme de Test qui permet de
iota
Exercice 1.5
Ecrire une fonction sort
qui permet de trier la liste.