Principe de la programmation en Java : l’orienté objet

Cours et polycopie sur le langage java, tutoriel & guide de travaux pratiques programmation en Java en pdf.

Principe de la programmation en Java : l’orienté objet

Un programme structuré (Pascal, C…) est composé de fonctions indépendantes constituées d’instructions simples et structurés. Ainsi, les données et les fonctions qui opèrent sur elles sont séparées. Les données apparaissent généralement en tête du programme et sont donc visibles de toutes les fonctions qui suivent. Cette organisation pose le grave problème des effets de bord. En entrant dans une fonction, on est jamais assuré de trouver les données dans l’état attendu, car n’importe quelle autre fonction, même si ce n’est pas son rôle, peut les modifier. De plus, à cause de cette séparation entre données et fonctions, de profonds bouleversements du programme sont nécessaires quand les structures de données sont modifiées. La solution à ces problèmes est la programmation objet. Elle est basée sur trois principes fondamentaux : l’encapsulation, l’héritage, et le polymorphisme.

L’encapsulation

L’encapsulation des données est le premier et le plus important des concepts de la programmation objet. Il stipule que les données et les fonctions qui opèrent sur elles sont encapsulées dans des objets. Les seules fonctions a être autorisées à modifier les données d’un objet sont les fonctions appartenant à cet objet. Depuis l’extérieur d’un objet, on ne peut le modifier que par des fonctions faisant office d’interface. Ainsi, il n’est plus à craindre que des fonctions modifient indûment des données.

L’héritage

Les objets, comme les données, possèdent un type que l’on appelle classe. Les classes peuvent être organisées en hiérarchies, chaque classe héritant de sa classe mère ou super-classe. L’héritage est ainsi source d’économie de code, une classe peut être définie comme la descendante d’une classe (ou sous-classe).

 Le polymorphisme

Le troisième principe de base de la programmation objet est le polymorphisme. Il passe plus inaperçu que les précédents. Des fonctions différentes dans les classes différentes peuvent prendre le même nom. Ainsi, dans une hiérarchie de classes d’éléments graphiques la fonction dessiner( ) aura le même nom pour un polygone ou un cercle, cependant les techniques utilisées pour dessiner ces éléments sont différentes. Le polymorphisme est beaucoup plus puissant qu’il n’y paraît à première vue. Il fait économiser des identificateurs de fonctions et rend les notations plus lisibles.

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 (voir aussi paragraphe 9).
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.

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).

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.

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
Une variable déclarée final ne peut plus voir sa valeur modifiée (final int x=1 ;).

Méthodes final

Les méthodes final ne peuvent pas être redéfinies dans les classes dérivées.
Classes final
Une classe final ne peut être étendue pour créer des sous-classes.

Notions d’attributs et méthodes static
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).
 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.

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

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 » ) ;
}
}

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.* ;
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.
Package et accessibilité
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.

CHAPITRE 2: DECOUVERTE DU LANGAGE
public class Primitive
Les méthodes final ne peuvent pas être redéfinies dans les classes dérivées.
Un attribut sans modificateur (modificateur par défaut) n’est pas accessible depuis l’extérieur du paquet de la classe.
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
public class chaines
Bonjour
Les chaînes de caractères peuvent être concaténées
String chaine1 = « Bonjour »;
Exemple
Class Canari extends Animal
2 Constructeur de sous-classe
Remarque
Exemple
5 Les interfaces
Exemple
CHAPITRE 5 : LES ENTREES / SORTIES
1 Généralités sur les flots de données
Flots d’octets
Flots de caractères
Exemple
2 Saisir des données envoyées par le clavier
Remarques!!
Exemple complet
3 Lire ou écrire des caractères dans un fichier
Exemple
Remarque
4 Ecrire et lire dans un fichier texte
Exemple
Remarque
Exemple
CHAPITRE VI: INTERFACES GRAPHIQUES
1 Introduction
Remarque
La classe URL
Lecture et Ecriture dans une URL en utilisant URLConnection
Exemple

……….

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *