Tuesday, March 6, 2012

Cours en programmation :Notion de base en langage java


1-  D�finition d�une classe et d�un objet en Java

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. 


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