CM1 Java
CM1 Java
en JAVA
Hamid LADJAL
[email protected]
Master CCI
https://perso.univ-lyon1.fr/hamid.ladjal/M2CCI_JAVA/
Plan
- Bases et les concepts de JAVA
- Concepts de l’orienté objet; classes, méthodes…..
- Héritage et Polymorphisme
- Classes Abstract, Interfaces, classes génériques
- Enumération haines de caractères
- Gestions des erreurs avec des exceptions
- Interfaces Graphiques
- Applets, entrées/sorties….
Présentation de JAVA
Bases de Java
Historique
1991, chez SUN est créé le langage OAK (pour
interface entre appareil ménagers et ordinateurs)
1994, Oak se tourne vers Internet et devient Java
1995, Java est intégré à Netscape
1998, Version 2 de Java
2000, Version 1.3 de Java
……. Version 1.4 de Java ….
2010 java JDK 7
….
2021 java 17
https://www.oracle.com/java/technologies/downloads/#jdk17-windows
Présentation
Java est un langage récent qui s'est répandu de façon
étonnamment rapide
ByteCode
javac
Êþº¾ -
()V (Ljava/lang/String;)V ([Ljava/lang/String;)V
<init> Code Hello Hello !!!
Hello.java LineNumberTable Ljava/io/PrintStream;
SourceFile java/io/PrintStream java/lang/Object
java/lang/System main out println !
*· ± % ²
¶ ±
java
Hello !!!
Ramasse Miettes
En JAVA, tout est objet. Il faut donc créer
explicitement chaque objet manipulé.
Object
switch (expression)
{
case valeur_1 : actions; break;
case valeur_2 : actions; break;
case valeur_3 : actions; break;
default : actions si valeur inconnue;
}
Boucle "Tant que"
while (test) do
{ {
actions; actions;
} }
while (test);
Boucle "Pour"
int i;
for(i=0; i<5; i++) // ou for(int i=0; i<5; i++)
{
actions;
}
Sorties de boucles
L'instruction break permet de sortir d'une boucle
avant sa fin "normale".
class Nomdelaclasse {
// déclaration des attributs
Type nom ;
//méthodes
Type retour Nom (type arg1, type arg2) {
}... ;
//fonction main
S'il n'y a pas de type retour (par exemple si on fait un
affichage ou si on travaille sur les attributs ) on met void.
Notion de Classe
Concept
Une classe est un support d’encapsulation : c'est un
ensemble de données et de fonctions regroupées dans une
même entité.
Les fonctions qui opèrent sur les données sont appelées des
méthodes.
Notion de Classe
Instancier une classe consiste à créer un objet sur son
modèle. Entre classe et objet il y a, en quelque sorte, le
même rapport qu'entre type et variable.
Par convention:
- Les noms de classe commencent par une Majuscule.
- Les noms d'instances ou de variables commencent par une
minuscule
Notion de Classe
Une classe comporte sa déclaration, des variables
et la définition de ses méthodes
abstract : La classe contient une ou des méthodes abstraites, qui n'ont pas
de définition explicite.
Une classe déclarée abstract ne peut pas être instanciée : il faut définir une classe
qui hérite de cette classe et qui implémente les méthodes nécessaires pour ne
plus être abstraite.
Autres mots-clés : final
final définit :
un attribut invariable,
une méthode qui ne peut être surchargée,
une classe qui ne peut être héritée.
Autres mots-clés : static
static définit un membre commun à toutes les
instances de la classe
Syntaxe générale:
[< modificateur de visibilité>] <type> <nom_attribut> [=<expression>] ;
Exemple
class Rectangle{
private int longueur ;
private int largeur ;
public Point Centre ;
}
Attributs et Méthodes
Les variables d'instances
Une variable d'instance nécessite simplement une déclaration de la
variable dans le corps de la classe.
Exemple :
public class MaClasse {
public int valeur1 ;
int valeur2 ;
protected int valeur3 ;
private int valeur4 ;
}
Chaque instance de la classe a accès à sa propre occurrence de la
variable.
Attributs et Méthodes
Les variables de classes (static)
Les variables de classes sont définies avec le mot clé static
Exemple :
Exemple :
public class MaClasse {
final double pi=3.14 ;
}
Attributs et Méthodes
Les méthodes
Les méthodes sont des fonctions qui implémentent les traitements de
la classe.
La syntaxe de la déclaration
La syntaxe de la déclaration d'une méthode est :
- Les méthodes qui ne renvoient rien, utilisent « void » comme type de retour.
- Sans modificateur, la méthode peut être appelée par toutes autres méthodes
des classes du package auquel appartient la classe.
Dès qu'un objet n'est plus utilisé (sortie de boucle, ...), il est
détruit.
le mot-clé this
Quand le programme est dans une méthode d’instance, le programmeur
peut manipuler La référence de l’instance courante avec le mot-clef ‘this’.
salaire = comptable.calculeSalaire(this);
Comptable, calcule le
salaire de moi
Interdit de modifier this
En Java, le type des éléments se trouvant dans le tableau est fixé lors de la
création. Il est unique.
Par exemple : si on crée un tableau d'entiers, on ne peut y mettre que des entiers.
On ne peut pas y mettre un caractère, un double……
………….
Lors de la création :
Alloué la mémoire nécessaire au tableau.
Initialise le contenu du tableau.
par exemple pour des int on aura des zéro et pour une classe un null.
On peut définir directement un tableau à l’aide de son contenu.
Dans ce cas, la déclaration et la création son
dans la même instruction.
Les tableaux.
int t[] = {3,9,11} ;
Création.
Déclaration
3 9 11
Point tab[] = {new Point (), new Point (), new Point () }
Exemple :
t[0] ; t[1] ; t[2]
3 9 11
Remarques :
- length est un attribut et non une méthode.
- length est un attribut non modifiable.
- length prend sa valeur après la création du tableau
Les tableaux.
Exercice:
On va créer une classe exemple dont l’attribut est un tableau
d’entiers.
Les cases sont initialisées avec des 0 car int est un type primitif
for (int i=0; i<t.length ; i++) {
t[ i ] = ( int )( Math.random( ) * 10 );
}
}
// Méthode random de la classe Math (classe de java. Cette méthode
retourne un nombre aléatoire appartenant à [ 0 , 1 ])
// (int) : partie entière
// les cases de t vont donc contenir un entier compris entre 0 et 9.
Exercice: Suite
// Le deuxieme constructeur prend la taille du tableau en parametre
ExempleTab (int n) {
t = new int [n];
for (int i=0; i<t.length ; i++) {
t[ i ] = ( int )( Math.random( ) * 100 )
}
}
// méthode qui affiche le contenu du tableau
// on doit se positionner sur chaque case du tableau
// pour cela on utilise un indice i qui va de 0 a taille -1
// la méthode ne retourne rien car c'est un affichage a l'ecran
// le type retour est donc void
void afficher( ) {
for (int i=0; i<t.length ; i++) {
System.out.println ( t[ i ]);
}
}
}
Exercice: suite
La classe ExempleTab peut être compilée mais elle n'est pas exécutable car elle
n'a pas de fonction main. On va écrire une classe contenant un main testant les
méthodes de la classe,
Class Principale {
public static void main (String args [ ]) {
// on cree un objet de type ExempleTab , cet objet s'appelle e
// on utilise le premier constructeur qui n'a pas de paramètre
// il ne faut pas pour autant oublier les parenthèses
// e est un objet
// son attribut e.t est un tableau de taille 10
// remplit aléatoirement
// pour voir le résultat de ce que l'on a programmé a l'écran il faut afficher
// le contenu du tableau t.
Exercice: suite
temp = new int[t.length+1]; // creation de temp qui a besoin d'un case de plus
for(int i=0; i<temp.length-1;i++){
temp[i] = t[i]; // on recopie les cases qui nous intéresse
}
temp[temp.length-1]=v; // on rajoute le contenu de la dernière case
}}
Exemple 2
On va écrire :
// constructeur même nom que la classe, pas de paramètre car il a deux cases et
on connait précisément le contenu.
Exemple1(){
a= new String[2]; // création
a[0]= ’’droite’’; // une fois crée on peut le remplir
a[1]= ‘’gauche’’; }
//méthode qui affiche le tableau a , ne renvoie rien le type retour est un void
// ne prend pas de paramètre
void affichage(){
for(int i=0; i<a.length;i++)
System.out.println(a[i]);
}
// méthode qui permute le contenu des deux cases
// il faut une variable temporaire pour faire un cycle et ne pas perdre de données
// la méthode ne renvoie rien et ne prend pas de paramètres extérieurs
Un fois que le type et la taille sont fixées on ne peut pas les changer.
1°) DÉCLARATION
type des éléments Nom de la matrice [ ] [ ] ;
2°) CRÉATION
On se sert du mot clé new et on indique la taille.
On peut aussi faire des tableaux contenant des objets crées a partir de classes
que nous avons programmé.