La notion de classe est un enrichissement de la notion usuelle de structure en C (struct) en C. Une classe permet de d�finir un type d�objet, �ventuellement compliqu�, associant des donn�es et des proc�dures qui acc�dent � ces donn�es. Les donn�es se pr�sentent sous forme de champ d�sign�s par identificateurs et dot�s d�un type. A une donn�e, on associe un mot cl� qui d�signe l�accessibilit� de cette donn�e.
Les proc�dures, �galement appel�es m�thodes,
d�finissent les op�rations possibles sur ces composants. A une m�thode, on associe un mot cl� d�signant l�accessibilit� de cette m�thode.
d�finissent les op�rations possibles sur ces composants. A une m�thode, on associe un mot cl� d�signant l�accessibilit� de cette m�thode.
Exemple
class Point {
private int _x;
private int _y;
public Point()
{
_x = 0 ; _y = 0 ;
}
public Point(int x, int y)
{
_x = x ; _y = y ;
}
public void avancer(int dx, int dy)
{
_x = _x + dx ; _y = _y + dy ;
}
}
La classe Point poss�de deux attribut : _x, _y et trois m�thodes Point(), Point(int, int), avancer(int, int).
Le mot cl� private indique que l�attribut est priv� il ne sera accessible que par les m�thodes appartenant � la classe. Un attribut public est accessible par une m�thode appartenant � une autre classe .
Remarque
Le corps (contenu) des m�thodes d�une classe sera d�fini dans la classe elle-m�me.
Initialisation des objets : constructeur
Une classe peut d�finir une ou plusieurs proc�dures d�initialisation appel�es constructeurs. Un constructeur est une m�thode avec aucune valeur de retour et qui porte le m�me nom que la classe. S�il existe plusieurs m�thodes dans une classe, elles se distinguent par le type ou le nombre de param�tres :
Point( ) et Point(int, int)
Le constructeur permet de cr�er une instance de la classe. Une instance de classe est dite objet.
Pour cr�er un Point on va :
1. D�clarer un handlesur un Point.
Point p ; (p est un handle sur un point).
Remarque
Un handle est un num�ro. Par exemple, quand une application alloue de la m�moire, le compilateur ne rend pas un pointeur mais un num�ro. Ce num�ro est associ� � une zone m�moire.
2. La d�claration seule ne cr�e pas d�objet. Elle associe l�identificateur � une r�f�rence appel�e null qui ne fait r�f�rence � rien.
p==Null
Pour cr�er une instance de la classe point (on dit objet de la classe Point), il faut ex�cuter new en citant un constructeur de la classe Point, avec ses param�tres. La primitive new rend en r�sultat la r�f�rence sur l�objet cr�e, qu�il suffit alors d�affecter � la variable d�clar�e :
new Point(2,0)
Point p = new Point(2,0) ;
destruction des objets: destructeur
Avec Java, plus besoin d'�crire une fonction destructeur. En effet, il existe un programme appel� 'garbage collector' (ramasseur d'ordures) qui est ex�cut� automatiquement d�s que la m�moire disponible devient inf�rieure � un certain seuil.
2 - Compilation et ex�cution d�un programme en java
Pour compiler un programme en Java, il faut utiliser l�instruction javac suivi du nom du fichier.
Exemple
Pour compiler la classe Point, on �crit javac Point.java
A la fin de la compilation si aucune erreur n�a �t� d�tect�e, le code de base est transform� en byte code et un fichier Point.class est g�n�r�. C�est ce fichier qui sera ex�cut�.
Pour ex�cuter un programme en Java, on utilise l�instruction java suivi du nom de la classe.
Exemple
Pour ex�cuter la classe Point, on �crit java Point
Remarque
Quand on �crit un programme en Java il faut �viter de donner au fichier .java un nom diff�rent de la classe. Par exemple, si pour on sauvegarder la classe Point nous choisissons le nom Toto.java � la fin de la compilation le fichier Toto.class sera cr�er. Il y aura ensuite des erreurs au niveau de l�ex�cution (en effet, la classe Toto n�existe pas).
3- Notion de primitives
Souvent on dit que le langage Java est un langage tout objet (tout est instance d'une classe). En fait, ce n'est pas tout a fait vrai. Supposons qu'on aune boucle permettant d'incr�menter u entier 1000 fois, il ne serait pas judicieux de cr�er 1000 un objet pour l'utiliser comme incr�ment (il existe en Java la classe Integer qui pourrait �tre utilis�e mais qui ralentirai �norm�ment le programme avec une cr�ation de 1000 objets Integer). Les concepteurs de Java ont donc dot� ce langage d'une s�rie d'�l�ments particuliers appel�s primitives qui ne sont pas g�r�s de la m�me mani�re en m�moire (voir chapitre 1 du polycopie pour les diff�rentes primitives existantes).
Diff�rence entre les objets et les primitives
Les primitives peuvent �tre "envelopp�es" dans un objet provenant d'une classe pr�vue � cet effet et appel�e Wrapper (mot anglais signifiant enveloppeur). Les enveloppeurs sont donc des objets pouvant contenir une primitive et auxquels sont associ�s des m�thodes permettant de les manipuler.
4 - Affichage sur sortie standard (�cran)
Pour afficher un commentaire sur �cran, on utilise la m�thode println.
Pour affiche � toto � sur �cran on �crit System.out.println("toto") (La m�thode println appartient � la classe System.out)
Exemple
public class Primitive
{
public static void main(String[] arg)
{
System.out.println("Primitives:");
int intA = 12;
System.out.println(intA);
int intB = intA;
System.out.println(intB);
intA = 48;
System.out.println(intA);
System.out.println(intB);
System.out.println("Objets");
Entier entierA = new Entier(12);
System.out.println(entierA);
Entier entierB = entierA;
System.out.println(entierB);
EntierA.valeur = 48;
System.out.println(entierA);
System.out.println(entierB);
}
}
class Entier
{
int valeur;
Entier(int v) {valeur=v;}
}
Affichage
Primitives 12 12 48 12
Objets 12 12 48 48
5 - Notions de variables, classe et m�thodes final
5.1 - Variable final
Une variable d�clar�e finalne peut plus voir sa valeur modifi�e (final int x=1 ;).
5.2 M�thodes final
Les m�thodes final ne peuvent pas �tre red�finies dans les classes d�riv�es.
5.3 Classes final
Une classe final ne peut �tre �tendue pour cr�er des sous-classes.
6 -Notions d�attributs et m�thodes static
6.1 Attribut static
Un attribut statique (d�clar� avec le mot cl� static : static int x=3) est un attribut partag� par tout les objets de la classe (tout les objet ont la m�me valeur pour cet attribut).
6.2 M�thode static
Une m�thode statique (d�clar�e avec le mot cl� static : public static void f( ) ) est une m�thode qui n�a acc�s qu�aux membres static de la classe.
7-Le mot cl� this
this d�signe une r�f�rence sur l�objet courant.
Exemple
Point(int _x, int _y)
{
this._x = _x ;
this._y = _y ;
}
Pour distinguer le param�tre du constructeur � l�attribut, on utilise le mot cl� this
8- Mon premier programme en Java
Pour pouvoir ex�cuter un programme en Java, il faut d�finir une fonction particuli�re appel�e : main. Cette m�thode doit �tre contenue dans une classe (le tout objet), elle poss�de un en-t�te obligatoire fix� :
public static void main(String[] arg)
static : signifie qu�elle ne pourra faire appel qu�aux champs statiques de la classe
String[] arg : tableau d�arguments du programme
Exemple
class Exemple
{
public static void main(String[] arg)
{
System.out.println("Bonjour" ) ;
}
}
9 -Notion de Paquetage
Un paquetage ou package est un regroupement de classes. On regroupe dans un m�me paquetage des classes ayant une th�matique et des fonctionnalit�s communes. Un paquetage contient des classes et des sous-paquetages.
Les classes de l�API appartiennent � plusieurs packages (Exemple : java.util, java.awt�). Pour utiliser une classe qui appartient � un package de l�API, on utilise l�instruction import suivi du nom du package.
Exemple
- Pour utiliser la classe Vector du package java.util on �crit : import java.util.Vector ; au tout d�but du programme.
- Pour utiliser toutes les classes du package java.util on �crit : import java.util.* ;
9.1 Cr�ation de paquetage
Si vous souhaitez qu�une classe que vous avez cr�e appartienne � un package particulier, vous devez le sp�cifier explicitement au moyen de l�instruction package. Il faudra aussi cr�er un r�pertoire au nom du package et sauvegarder les classes appartenant au package dans ce r�pertoire.
Exemple
package MonPackage
public class Employe
{
�
}
La classe Employedoit �tre sauvegarder dans un r�pertoire appel� MonPackage.
9.2 Package et accessibilit�
9.2.1 Port�e d�une classe
La port�e d�une classe est d�finie comme la zone dans laquelle elle est visible. Seules les classes publiques sont accessibles depuis l�ext�rieur du package.
Modificateur de port�e | Port�e |
aucun | Le paquetage |
public | Partout |
9.2.2 Port�e des membres d�une classe
*protected : Les membres d�une classe peuvent �tre d�clar�s protected. Dans ce cas, l�acc�s en est r�serv� aux m�thodes des classes d�riv�es, des classes appartenant au m�me package ainsi qu�aux classes appartenant au m�me package que les classes d�riv�es.
*private : Acc�s au niveau de la classe
*public : acc�s partout
Remarque
Un attribut sans modificateur (modificateur par d�faut) n�est pas accessible depuis l�ext�rieur du paquet de la classe.
10 Les tableaux
10.1 D�claration
Exemple:
int[] x o� int x[];
x est un handle (r�f�rence) correspondant � un tableau qui contient des entiers.
10.2 Initialisation
int[] x;
x = new int[dimension];
x est un r�f�rence sur un tableau de taille �gale � dimension
Remarques
* Les tableaux de litt�raux peuvent contenir des variables.
Exemple: int a =1, b= 2;
int [ ] y = {a,b};
� Si on ne fait pas d'initialisation, une initialisation automatique est alors faite (pour les tableaux de primitives � 0, pour les tableaux de handles � null)
10.3 Taille des tableaux
La taille d'un tableau est fixe. N�anmoins, il n'est pas n�cessaire qu'elle soit connue au moment de la compilation.
Exemple
Import java.util.*;
class Test2
{
public static void main(String[] arg)
{
int x = Math.abs((new Random())%10;
int[] y;
y = new int[x] ;
System.out.println(x);
}
}
Dans ce cas, on peut conna�tre la taille d'un tableau avec le champs length (System.out.println(y.length)).
10.4 Les tableaux multi-dimensionnels
Syntaxe
int[][] x;
x = new int[2][4];
Initialisation
int[][] x = {{1,2,3,4}, {5,6,7,8}};
11 Les cha�nes de caract�res
En Java, les cha�nes de caract�res sont des objets. Ce sont des instances de la classe String. Java utilise une approche particuli�re, en effet, les contenus des cha�nes de caract�res ne peut plus �tre modifi� une fois initialis� ( Les cha�nes de caract�res se comportent comme des primitives).
Exemple
public class chaines
{
public static void main(String[] arg)
{
String chaineA = new String ("chaine1");
System.out.println(chaineA);
String chaineB = chaineA;
System.out.println(chaineB);
ChaineA = "chaine2";
System.out.println(chaineA);
System.out.println(chaineB);}}
R�sultat
cha�ne1 cha�ne1 chaine2 chaine1
Bien que les cha�nes sont des objets, ils se comportent ici comme des primitives. Cela est d� au fait que les cha�nes ne peuvent �tre modifi�es.
Remarque
Java dispose d'une autre classe, appel�e StringBuffer, qui permet de g�rer des cha�nes dynamiques.
11.1 La classe "StringBuffer"
La classe StringBuffer permet de modifier des cha�nes de caract�res notamment gr�ce � la m�thode append( ).
Exemple
StringBuffer chaine;
chaine = new StringBuffer ("Bon");
chaine.append("jour");
System.out.println(chaine);
Affichage
Bonjour
11.2 Quelques m�thodes relatives � la classe "String"
Concat�nation
Les cha�nes de caract�res peuvent �tre concat�n�es
Exemple
String chaine1 = "Bonjour";
String chaine2 = "tout le monde";
chaine 1 = chaine1 + chaine2; // cr�ation d'une cha�ne constante "bonjour tout le monde et affectation � la variable chaine1
La m�thode length( )
length( ) retourne le nombre de caract�res de la chaine.
La m�thode equals( )
equals( ) permet de tester l'�galit� de deux cha�nes de carat�res
Remarque
L'emploi de l'op�rateur = = pour tester l'�galit� de 2 cha�nes n'est pas correct ( = = teste l'�galit� des r�f�rences des variables et non celles de leurs contenus).
La m�thode substring( )
La m�thode substring ( ) extrait une sous-cha�ne d'une cha�ne donn�e. La sous-cha�ne commence � l'indice donn� en premier argument et se termine � l'indice donn� en second argument.
Exemple
String chaine;
String chaine1;
chaine1.substring(2,6);
No comments:
Post a Comment