Vous êtes sur la page 1sur 13

Cours programmation java

Responsable: Pr. Othmane EL MESLOUHI

Email: profensas22@gmail.com (mailto:profensas22@gmail.com)

Chapitre 3 : POO en java

I. Paradigmes de programmation
1. Programmation procédurale:

Fondé sur l’exécution d’instructions modifiant l’état de la mémoire


Concept clef : la fonction (procédure, routine, ...) -> découpage du problème en fonctions... découpées en
sous-fonctions ...
Données séparées des traitements ;
Analyse du problème de manière descendante
Langage typique C, Pascal, Fortran

2. Programmation orienté objet:

Un programme est vu comme une communauté de composants autonomes (objets) disposant de ses
ressources et de ses moyens d’interaction
Utilise des classes pour décrire les structures et leur comportement
Usage intensif de l’échange de messages
Langage typique Smalltalk, C++, Java,

3. Avantages du style objet:

La conception par classe conduit à des composants réutilisables


Un composant offre des services et en utilise d ’autres
Elle « expose » ses services à travers une interface
Elle cache les détails d ’implémentations (encapsulation ou data-hiding)
Tout ceci le rend réutilisable

II. Les classes en java


1. Déclaration d'une classe

public class nom_classe {

attributs // l’ensemble des attributs de la Classe

méthodes // l’ensemble des méthodes de la Classe

}
2. Déclaration des attributs

type nom_attribut_1;

type nom_attribut_N;

Remarque:

Les attributs sont des variables dont la portée est toutes les méthodes de la classe.
Il est fortement recommandé que les attributs ne doivent pas être accessibles à l’extérieur de la classe qui
les définit.

3. Déclaration des méthodes

public type_retour nom_methode1(type1 nom1, type2 nom2, …){

code_methode1
}

public type_retour nom_methodeM(type1 nom1, type2 nom2, …){

code_methodeM

Exemple 1
In [ ]:

1 public class Voiture{


2
3 private int puissance;
4 private boolean estDemarree;
5 private double vitesse;
6
7 public int deQuellePuissance(){
8 return puissance;
9 }
10
11 public void demarre(){
12 estDemaree = true;
13 }
14
15 public void accelere(double v){
16
17 if(estDemarree){
18 vitesse = vitesse+v;
19 }
20 }
21 }

III. Les objets


Chaque objet qui est une instance de la classe Voiture possède ses propres valeurs d’attributs
Toutes les instances d’une classe donnée ont les mêmes méthodes, mais ces méthodes peuvent se
comporter différemment selon la valeur des variables d’instance(attributs).

IV. Constructeurs
Un constructeur est une méthode qui :
a pour nom le nom de la classe
n’a pas de type de retour dans sa déclaration
Syntaxe:
public nom_classe(type1 nom1, type2 nom2, …) {

code_constructeur

Remarque :
On peut définir plusieurs constructeurs avec des signatures différentes.
Le rôle du constructeur est de permettre d’initialiser les attributs d’un objet au moment de sa création.
Le constructeur dont la signature ne comporte pas d’argument est appelé le constructeur par défaut.
Si on ne définit aucun constructeur dans le code de la classe, le constructeur par défaut existe mais il
ne contient aucune instruction (donc il ne fait rien).
Le constructeur est appelé automatiquement par l’opérateur new quand on crée un objet. Les
arguments d’appel du constructeur sont indiqués dans les parenthèses après le nom du type :

… = new nom_du_type(arg1, …, argN);

Exemple :

Chien monChien = new Chien() ;

Il contient le code qui s’exécute lorsque vous dites new


Quand on écrit pas de manière explicite un constructeur, le compilateur se charge de le faire à notre place

In [ ]:

1 public class Chien{


2 public Chien() {
3
4 }
5
6 }

Le meilleur endroit où placer l’initialisation est le constructeur. Il suffit de créer un constructeur avec
arguments :

In [ ]:

1 public class Chien{


2 int taille ;
3 public Chien( int tailleChien ) {
4 System.out.println("Construction de l’objet Chien") ;
5 taille = tailleChien ;
6 System.out.println("Le Chien mesure "+taille) ;
7
8 }
9 }
10
11 public class UtiliserChien {
12
13 public static void main(String[] args) {
14 Chien c = new Chien(42);
15 }
16 }
Deux constructeurs, un pour la taille par défaut et un autre avec taille comme argument

In [ ]:

1 public class Chien


2 int taille ;
3 public Chien( ) {
4 taille = 27 ;
5 }
6 public Chien( int tailleChien ) {
7 taille = tailleChien ;
8 }
9 }
10
11 public class UtiliserChien {
12 public static void main(String[] args) {
13 Chien c1 = new Chien(42);
14 Chien c2 = new Chien(); //on crée un Chien dont on ne connai
15 }
16 }

V. Destructeur
La durée de vie d'un objet passe par trois étapes :

a. La déclaration de l'objet et l'instanciation grâce à l'opérat


eur **new**

b. L'utilisation de l'objet en appelant ses méthodes

c. La suppression de l'objet

Dans d’autres langages de programmation (c++ par exemple) la suppression (libération de la mémoire) est
faite par une méthode appelée destructeur.
En java, cette fonction est prise en charge automatiquement par les garbages collectors.

VI. Références
Il n’existe pas de variables objet
Il n’existe que des références à des objets
Chien monChien = new Chien() ;
In [ ]:

1 Chien b = new Chien() ;


2 Chien c = new Chien() ;
3 Chien d = c ;
4 c = b ;
5 d = c;
6 d = null;

In [ ]:

1 Chien b = new Chien() ;


2 Chien c = new Chien() ;

In [ ]:

1 Chien d = c ;
In [ ]:

1 c = b;
In [ ]:

1 d = c;

In [ ]:

1 d = null;
VII. Les concepts fondamentaux de la POO
a) L'encapsulation est l'un des trois grands principes de la POO :

- Un objet rassemble en lui même ses données et ses traitements.

- Abstraction de données : la structure d'un objet n'est pas visible de


l'extérieur. L'objet protège les données et ne les rendant acce
ssibles qu'au travers des interfaces. L'interface précise quelles
sont les services ( action ) offerts par l'objet.

- Abstraction de traitements : Du point de vue de l'extérieur, l'invoc


ation d'un service est atomique.

b) Les Message:

L'objet est une boite noire. Le message est le moyen de formuler une requête à un objet (une demande de
service).
Le message doit contenir:
Handle de l'objet : une référence ou un pointeur vers l'objet.
Sélecteur de méthode (nom de la méthode).
Liste des paramètres.
c) Vis à vis des messages, un objet peut se comporter comme :

Acteur : objet actif, à l’origine de l’envoi de messages ;


Serveur : objet passif destinataire des messages, jamais à l’origine d’un échange ;
Agent : objet à la fois Acteur et Serveur, peut interagir avec les autres objets, de sa propre initiative ou
suite à un message.

d) Interface:

La liste des messages auxquels est capable de répondre un objet constitue son interface. C'est la partie
publique d'un objet.
En pratique, dans C++ ou Java, l'interface représente la liste des méthodes accessibles (publiques) au
client de l'objet.
1. visibilité des propriétés et des méthodes
public : visible de partout (à partir des autres classes des autres packages également)
protected : (protégé) visible uniquement à partir des classes du même package et des sous classes
« rien » : visible uniquement à partie des classes du même package.
private : (privé) visible uniquement dans la classe

propriété : une propriété est dite visible par une classe si les méthodes de cette classe peuvent avoir
accès à sa valeur et peuvent la modifier.
méthode: une méthode est dite visible par une classe si les méthodes de cette classe peuvent l’appeler.

2. Comment rendre accessible une propriété privée?


Même si une propriété est privée, on peut y accéder à l’aide des méthodes publiques ou protégées.
Ces méthodes peuvent être accessible par une autre classe.
Ces méthodes servent comme une interface entre les propriétés privées et des classes extérieures.
Ces méthodes peuvent réaliser le contrôle d’accès et la validité des valeurs, donc la protection
3. Les modificateurs en java

Exercices
Exercice 1:
Définissez une classe Point permettant de manipuler un point du plan. Cette classe contiendra :

- un constructeur,

- les méthodes d'accès et de modification des coordonnées,

- une méthode deplacer qui effectue une translation définie par les argumen
ts

- une méthode afficher qui affiche les coordonnées d'un point

On donnera un exemple d'utilisation avec une méthode main.


Exercice 2:
Définissez une classe Individu composée d'un nom, d'une adresse, et d'un numéro de telephone. Vous écrirez
aussi les méthodes constructeur, modification et consultation des champs et affichage.

Exercice 3:

Ecrivez la classe Complexe représentant des nombres complexes. Un nombre complexe comporte une partie
réelle et une partie imaginaire (partieRéelle+partieImaginaire*i avec i=racine(-1)).

La classe a les attributs suivants:

- partieReelle : La partie réelle du nombre.

- partieImaginaire : La partie imaginaire du nombre.

La classe Complexe doit disposer des constructeurs suivants:


- Complexe(): constructeur par défaut,

- Complexe(partieReelle,partieImaginaire),

- Complexe(Complexe),

- ajouter(Complexe),

- soustraire(Complexe),

- toString() donnnant une représentation d'un nombre complexe (a+b*i)

Ecrivez aussi une classe testComplexe afin de tester la classe Complexe

In [ ]:

Vous aimerez peut-être aussi