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 handle sur 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 final ne 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 Employe doit ê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);
Suivant
« Précédent
Précédent
Suivant »

ConversionConversion EmoticonEmoticon

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.