Penser en Java guide de formation complet avec exemples
...
Historique Les principaux évènements de la vie de Java sont les suivants :
o mai: Java EE 5
o décembre: Java SE 6.0 Applic tion Vs Applet Il existe 2 types de programmes avec la version standard de Java :
o Les applets
o Les applications.
o autonome (stand alone program) est une application qui s'exécute sous le contrôle direct du système d'exploitation.
o une application qui est chargée par un navigateur et qui est exécutée sous le contrôle d'un plug in de ce dernier.
Principales différences entre une applet et une application
o Les applets n'ont pas de méthode main()
o Les applets ne peuvent pas être testées avec l'interpréteur mais doivent être intégrées à une page HTML, elle même visualisée avec un navigateur disposant d'un plug in sachant gérer les applets Java, ou testées avec l'applet viewer.
La syntaxe et les éléments de bases de Java Les règles de base
Exemple:
char code = 'D';
Les identificateurs
Les commentaires
o Exemple: int N=1; // déclaration du compteur
o Exemple :
/* commentaires ligne 1 commentaires ligne 2 */
o Exemple
/**
* commentaire de la methode
* @param val la valeur a traiter
* @since 1.0
* @return Rien
* @deprecated Utiliser la nouvelle méthode XXX *~
Déclaration de variables
o un nom,
o un type
o et une valeur.
o un nom
o et le type de données qu'elle peut contenir.
o soit un type élémentaire dit aussi type primitif déclaré sous la forme type~élémentaire variable;
o soit une classe déclarée sous la forme classe variable;
Exemple:
o long nombre;
o int compteur;
o String chaine;
o Exemple: int i=3 , j= 4 ;
...
n Remarque
Les types élémentaires commencent tous par une minuscule. Initialisation des variables
Exemple:
int nombre; // déclaration nombre = 100; //initialisation
OU
int nombre = 100; //déclaration et initialisation
L'affectation
si✻ne d❀ectation
expression de la forme
variable = expression
o il renvoie la valeur affectée ce qui permet d'écrire :
Opérateur Exe ple Signification
= a=10 a=10
+= a+=10 a=a+10
-= a-=10 a=a-10
*= a*=10 a=a*10
/= a/=10 a=a/10
%= a%=10 a=a%10
^= a^=10 a=a^10
Attention
Exemple
aprè incrémentation s'il est préfixé.
Exemple
/* test sur les incrémentations prefixées et postfixées */
class test {
public static void main (String args[]) {
int n1=0;
int n2=0;
System.out.println("n1= " + n1 + " n2 = " + n2);
n1=n2++;
System.out.println("n1= " + n1 + " n2 = " + n2);
n1=++n2;
System.out.println("n1= " + n1 + " n2 = " + n2);
n1=n1++; //attention
System.out.println("n1= " + n1 + " n2 = " + n2);
} }
int n1=0;
int n2=0; // n1=0 n2=0
n1=n2++; // n1=0 n2=1
n1=++n2; // n1=2 n2=2
n1=n1++; // attention : n1 ne change pas de valeur
Les structures de contrôle
Les boucles
1.
While ( condition )
{... // code a eécuter dans la boucle }
do
{...}
while ( condition )
3.
for ( initialisation; condition; modification)
{...}
Exemples:
Exemple :
boolean trouve = false;
for (int i = 0 ; !trouve ; i++ ) {
if ( tableau[i] == l )
trouve = true;
... //gestion de la fin du parcours du tableau
}
Les branchements conditionnels
1.
...
}
2.
switch (epression) {
case constantel :
instrll;
instrl2;
break;
case constante2 :
...
default :... }
( condition ) ? valeur-vrai : valeur-faux
Exemple 1 :
if (niveau == 5) total = 10;
else total = 5 ;
// équivalent à total = (niveau ==5) ? 10 : 5;
Exemple 2 :
System.out.println((genre == " H ") ? " Mr " : " Mme ");
Les tableaux
Ø La déclaration des tableaux
Exemple :
int tableau[ ] = new int[50]; // déclaration et allocation
O int[ ] tableau = new int[50]; O int tab[]; // déclaration
tab = new int[50]; //allocation
Remarque
pour chaque occurrence.
Exemple:
int dim1[ ][ ] = new int[3][ ];
dim1[0] = new int[4];
dim1[1] = new int[9];
dim1[2] = new int[2];
o '\0' pour les caractères,
o false pour les booléens
o et nil pour les chaines de caractères et les autres objets.
Ø L'initialisation explicite d'un tableau
o Exemples :
int tableau[5] = {10,20,30,40,50}; int tableau[3][2] = {{5,1},{6,2},{7,3}};
o Exemple
int tableau[] = {10,20,30,40,50};
int[][] tabEntiers = {{1,2,3,4,5,6},{1,2,3,4},{1,2,3,4,5,6,7,8,9}}; Les conversions de types
int entier = 5;
float flottant = (float) entier;
La conversion d'un entier int en chaîne de caractère String
Exemple :
int i = 10;
String montexte = new String();
montexte =montexte.valueOf(i);
La conversion d'une chaîne de caractères String en entier int
Exemple :
String montexte = new String(" 10 ");
Integer monnombre=new Integer(montexte);
int i = monnombre.intValue() //conversion d'Integer en int La mani ulation des chaînes de caractères
String texte = " Java Java Java " texte = texte.replace('a','o')
Les caact•es spéciaux dans es cha♣nes
...
C1lapitre II
Proé;rammation Orientée Objet
Appliquée au lané;aé;e JAVA
POO Vs Progra ation structurée
n Proierammation structurée (procédurale)
n Objectifs de la POO
La notion d'objet
objet✈.
o Les attributs: les données caractérisant l'objet.
n Des variables stockant des informations d'état de l'objet
o Les méthodes (appelées parfois fonctions me mbes)
n caractérisent son comportement,
n l'ensemble des actions (appelées opéations) que l'objet est à même de réaliser.
n Ces opérations permettent de faire réagir l'objet aux sollicitations extérieures (ou d'agir sur les autres objets).
n les opérations sont étroitement liées aux attributs,
n leurs actions peuvent dépendre des valeurs des attributs, ou bien les modifier
o L'identité:
n Permet de le distinguer un objet des autres objets, indépendamment de son état.
n Exemple un produit pourra être repéré par un code,
n une voiture par un numéro de série,
n etc.
o P⑧ixTtc : Méthode permettant de calculer le prix TTC d'un article
o SortieArticle : Méthode permettant de diminuer la quantité en stock
Remarque
On ne peut exécuter une méthode sans préciser l'objet sur lequel elle s'applique.
Notion de classe
o c'est une classe
o Ayant même structure (même ensemble d'attributs)
o Ayant même comportement (même méthodes)
o Ayant une sémantique commune
o Une classe permet d'instancier (créer) plusieurs objets
o Chaque objet est instance d'une et une seule classe
£ Exemple : classe "Voiture"
Programmation Orientée Objet
£ Un programme OO est constitué de classes qui permettent de créer des objets qui senvoient des messages
£ L'ensemble des interactions entre les objets défini un algorithme
£ Les relations entre les classes reflètent la décomposition du programme
POO avec Java
£ Un programme en Java se présente comme un ensemble de classes ~
o une classe par fichier.
o le fichier doit porter le même nom que la classe
n (sans l'extension Java) £ Faire attention aux majuscules,
o La première lettre de l'identificateur de la classe est en mjuscule,
o La première lettre des méthodes est en minuscule.
Conventions de noms £ CeciEstUneClasse
£ celaEstUneMethode(...)
£ jeSuisUneVariable £
JE—SUIS—UNE—CONSTANTE
Affectation et comparaison £ Affecter un objet
o "a = b" signifie a devient identique à b
o Les deux objets a et b sont identiques et toute modification de a entraîne celle de b £ Comparer deux objets
o "a == b " retourne « true » si les deux objets sont identiques
o C'est-à-dire si les références sont les mêmes,
o cela ne compare pas les attributs
o Les deux objets a et b sont distincts
o Toute modification de a n'entraîne pas celle de b
o « equals(Object o) »
Cycle de vie d'un objet
Création
o Usage d'un Constructeur
o L'objet est créé en mémoire et les attributs de l'objet sont initialisés Utilisation
o Usage des Méthodes et des Attributs Les attributs de l'objet peuvent être modifiés
o Les attributs (ou leurs dérivés) peuvent être consultés
Remarque :L'utilisation d'un objet non construit provoque une NullPointerExcecution exception de type
Notion de constructeur
o si aucun autre constructeur avec paramètre n'existe
class Point
{
//Attributs
double X;
double Y;
//Constructeur sans paramètres
public Point ()
{
X=0;
Y=0;
}
//Constructeur avec un seul paramètre
public Point (double a)
{
x=a;
y=0;
}
//Constructeur avec deux paramètres
public Point(double a, double b)
{
x=a;
y=b;
}
//Méthode affiche : pour afficher les coordonnées
d'un point
void affic he()
{
System.out.println("p=("+x+", "+y+")");
}
}
class TestPoint
{
//Méthode main: point d'entrée du programme
public static void main(String []args)
{
//Déclaration puis création
Point p1;//déclaration
pl=new Point();/*création et allocation mémoire en utilisant le premier constructeur*/
//Déclaration et création en une seule ligne Point p2=new Point(3.5);
Point p3 = new Point(4.6, 8D);
/*Appel de la méthode affiche
pour afficher les coordonnées des points*/ pl.affic he(); p2.affic he(); p3.affic he(); }
}
On obtient sur l'écran: p=(0.0,0.0) p=(3.5,0.0) p=(4.6,8.0)
Constructeur : définition
o Le nom du constructeur doit correspondre exactement au nom de la classe.
o Aucun type de retour déclaré par le constructeur.
o La liste des arguments qui détermine quel constructeur doit être utilisé lors de l'appel de l'un des constructeurs.
o Si aucun constructeur n'a été écrit dans la classe un constructeur par défaut est fourni sans arguments et son corps est vide.
o Si une classe comporte au moins un constructeur elle perd son constructeur par défaut. Accès au attri uts
Exemple nom_objet.nom_attribut;
class Point
{
double x;
double y;
void affiche()
{
System.out.println("p=("+x+", "+y+")");
//on appelle les attributs directement par leurs noms
}
public static void main(String [ ]args)
Point p = new Point();
System.out.println("abscisse de p="+p.x);
//accès à l'attribut après création de l'objet p.affic he();
}
On obtient sur l'écran:
abscisse de p= 0.0
P=(0.0,0.0)
Acc s à une méthode
nom_méthode(liste_paramètres);
o Une classe fournit un certain nombre de services et les utilisateurs de cette classe n'ont pas à connaître la façon dont ces services sont rendus.
o La partie publique, accessible par les autres classes,
o La partie privée, accessible uniquement par les méthodes de la classe.
o Certaines classes (comme la classe principale main) doivent obligatoirement être déclarées publiques (pour pouvoir exécuter l'application...)
£ Ces éléments ne peuvent être manipulés qu'à l'aide de méthodes spécifiques appelés accesseur et mutateur
La notion d'accesseur
r~cu➋~rer
£ Un accesseur est une méthode permettant de le contenu d'une donnée membre protégée.
£ Un accesseur, pour accomplir sa fonction :
o doit avoir comme type de retour le type de la variable à renvoyer
o ne doit pas nécessairement posséder d'arguments
£ Une convention de nommer veut que l'on fasse commencer de façon préférentielle le nom de l'accesseur par le préfixe get.
Exemple
public double getX()
{
return x;
}
La notion de mutateur
modiifier
£ Un mutateur (modificateur) est une méthode permettant de le contenu d'une donnée membre protégée. £ Un mutateur, pour accomplir sa fonction :
o doit avoir comme paramètre la valeur à assigner à la donnée membre. Le paramètre doit donc être du type de la donnée membre
o ne doit pas nécessairement renvoyer de valeur (il possède dans sa plus simple expression le type void)
£ Une convention de nommer veut que l'on fasse commencer de façon préférentielle le nom du mutateur par le préfixe set.
Exemple
class Point {
private double x; private double y;
public void setX(double a) { x=a; }
Notion de destructeur
£ La destruction des objets se fait de manière implicite
...
Chapitre V Le cla e a rai e e leinerlace
Introduction
o Les sous-classes sont plus concrètes et spécifiques que les classes dont elles dérivent qui sont plus générales et abstraites.
o Par exemple, une classe Vehicule ne servirait que comme dénominateur commun entre les classes Voiture et Velo.
Les classes abstraites en JAVA
o Elles servent donc de modèle à des sous classes.
Ø C'est une obligation : une sous-classe d'une classe abstraite doit redéfinir toutes les méthodes abstraites de la classe de base.
Dé inition d'une classe abstraite
o Elles devront être définies dans une classe héritant de cette classe abstraite. Utilité es classes abstraites
o On peut choisir de faire une nouvelle chaîne de montage pour le modèle à pare-choc métallisé, une pour le modèle à pare-choc en plastique, etc.
o Ou on peut décider de faire une chaîne de montage générique, de laquelle sortiront des véhicules non finis, que l'on terminera sur d'autres petites chaînes.
Règles d'utilisation des classes abstraites
ü Rèale 1 : Une classe est automatiquement abstraite si une de ses méthodes est abstraite.
ü Rèale 2 : On déclare qu'une classe est abstraite par le mot clef abstract.
abstract NomClasse {Attributs et Méthodes}
ü Rèale 3 : Une classe abstraite n'est pas instanciable
o On ne peut pas utiliser les constructeurs d'une classe abstraite et donc on ne peut pas créer d'objet de cette classe.
ü Rèale 4 : Une classe qui hérite d'une classe abstraite ne devient concrète que si elle implémente toutes les méthodes abstraites de la cla sse dont elle hérite.
ü Rèale 5 : Une méthode abstraite ne contient pas de corps, mais doit être implémentée dans les sous-classes non abstraites:
abstract nomDeMéthode (arguments);
ü Rèale 6 : Une classe abstraite peut contenir des méthodes non abstraites et des déclarations de variables ordinaires.
ü Rèale 7 : Une classe abstraite peut être dérivée en une sous-classe :
o Abstraite si une ou plusieurs méthodes ne sont pas implémentées par la classe fille,
o Non abstraite si toutes les méthodes abstraites sont implémentées dans la classe fille. Activité
o float perimetre() et float surface()
o "Cette forme peut contenir un carré de surface surf "
o "Cette forme peut contenir un carré de surface surf"
o longueur et largeur
Application
Les interfaces
o Constantes
public abstract
A quoi sert une interface ?
o Chacune doit pouvoir connaître les méthodes qui seront implémentées par les autres et leur spécification pour pouvoir inclure les appels dans leurs propres méthodes.
Ø Les interfaces sont des groupes de méthodes que l'on peut réutiliser où bon nous semble.
o On ne peut pas instancier une interface;
o On implémente une interfaceO
o Elle n'est pas "classe abstraite"
o C'est l'héritage multiple de Java. Syntaxe Déclaration
interface Nominterface
{
attributs (par défaut public, static, final) méthodes (par défaut abstract, public)
}
Utilisation
class LaClasse implements Nominterfacel, ... {
Définition de toutes les méthodes abstraites
}
Activité