Vous êtes sur la page 1sur 32

Programmation Orientée

Objet-Java
Pr. Fatima MOURCHID

Année universitaire 2023-2024


Concepts de la Programmation
Orientée Objet

2
Classe

 Classe
 Ensemble de données et de fonctions regroupées dans une même entité
 Description abstraite d'un objet
 Instancier une classe consiste à créer un objet sur son modèle

3
Classe

 Déclaration d'une classe


Modificateur class nom_de_classe {
// ...
}
 Exemple
public class Personne
// déclaration des attributs ;
// Prototype des méthodes (Traitements);
}

4
Classe

Modificateur Rôle
public La classe est accessible partout
private La classe n'est accessible qu'à partir du fichier où elle est définie
final • La classe ne peut pas être modifiée, sa redéfinition grâce à l'héritage
est interdite
• Les classes déclarées final ne peuvent donc pas avoir de classes filles
abstract • la classe contient une ou des méthodes abstraites, qui n'ont pas de
définition explicite
• Une classe déclarée abstract ne peut pas être instanciée: il faut définir
une classe qui hérite de cette classe et qui implémente les méthodes
nécessaires pour ne plus être abstraite

5
Attributs

 Déclaration des attributs

Public class Personne


{ // déclaration des attributs
(modificateur) string nom;
(modificateur) string prenom;
(modificateur) int age;
// Prototype des méthodes (Traitements)
}

6
Attributs

Modificateur Rôle
public Une variable déclarée public est visible par tous les autres objets
private C'est le niveau de protection le plus fort, les composants ne sont
visibles qu'à l'intérieur de la classe
static Définir une variable de classe qui est partagée entre toutes les
instances d'une même classe
protected Si une variable est déclarée protected , seules les méthodes
présentes dans le même package que cette classe ou ses sous
classes pourront y accéder
final Rendre entité non modifiable une fois qu'elle est déclarée pour
une méthode ou une classe et initialisée pour une variable (constant)

7
Attributs

 Types de variables
 Variables d'instances : ce sont elles qui définiront les caractéristiques de l’objet
(attributs). Elles sont déclarées private
 Variables de classes : sont communes à toutes les instances de la classe. Elles sont
déclarées static
 Variables locales : ce sont des variables utilisées pour manipuler l’objet

8
Méthodes

 Méthodes
 Fonctions qui implémentent les traitements de la classe
 Déclaration
modificateurs type_retourné nom_méthode ( arg1, ... ) { ...}

 Type retourné peut être élémentaire ou correspondre à un objet


 Si la méthode ne retourne rien, alors on utilise void

9
Méthodes

Modificateur Rôle
public La méthode est accessible aux méthodes des autres classes
private L'usage de la méthode est réservé aux autres méthodes de la même classe
protected La méthode ne peut être invoquée que par des méthodes de la classe ou
de ses sous classes
final La méthode ne peut être modifiée (redéfinition lors de l'héritage est
interdite)
abstract La méthode doit être redéfinie par des méthodes complètes dans les sous
classes
static La méthode appartient simultanément à tous les objets de la classe

10
Méthodes

public int add(int a, int b) {


return a + b;
}

public void add(int a, int b) {


System.out.println(a+b);
}

11
Méthodes

 Surcharge de méthodes
 Permet de définir plusieurs fois une même méthode avec des arguments différents
 Méthode est surchargée lorsqu'elle exécute des actions différentes selon le type
et le nombre de paramètres transmis
 Redéfinition de méthodes
 Permet de fournir une implémentation spécifique de la méthode qui est déjà
fournie par sa super classe, tout en gardant la même signature avec la possibilité
de changer le modificateur

12
Méthodes

class afficher{
public void afficherValeur (int i )
System.out.println(" nombre entier = " + i);
}
public void afficherValeur (float f )
System.out.println(" nombre flottant = " + f);
}
}

13
Méthodes

class A {

void afficher()
Résultat:
{ System.out.println("La méthode afficher() de la classe mère A."); }

} La méthode afficher() de la classe mère A.


class B extends A { La méthode afficher() de la classe fille B.
@Override

void afficher()

{ System.out.println("La méthode afficher() de la classe fille B."); }

public class Main {

public static void main(String[] args)

{ A a = new A();

a.afficher();

A b = new B();

b.afficher(); }

14
Instanciation de la classe

 Instanciation de la classe
 Classe est la description d'un objet
 Objet est une instance d'une classe
 Pour chaque instance d'une classe, le code est le même, seules les données sont
différentes à chaque objet
 Opérateur new se charge de créer une instance de la classe et de l'associer à la
variable
 Objet This permet de référencer dans une méthode, l'instance de l'objet en cours
d'utilisation

15
Instanciation de la classe

Public class Main{


Public static void main(String[] args
{
Personne p = new Personne (); // constructeur par défaut

}
}

16
Constructeurs

 Caractéristiques d’un constructeur


 Méthode qui n'a aucun type de retour (ni void, ni double...)
 Porte le même nom que la classe
 Toujours public
 Types des constructeurs
 Par défaut
 D’initialisation ou paramétrique
 De recopie

17
Constructeurs

 Constructeur par défaut


 Permet de donner des valeurs par défaut aux attributs
Public class Personne
{
// déclarer les attributs
// Constructeur par défaut
public Personne(){}
//les méthodes
}

18
Constructeurs

 Constructeur paramétrique
Public class Personne{
// déclarer les attributs
String nom ; String prenom ; int age ; String ville;
// Constructeur paramétrique
public Personne(String nom){
This.nom = nom ;
}
public Personne(String nom, String prenom , int age , String ville){
This.nom = nom ; this.prenom = prenom ; this.age = age ; this.ville = ville;
}
}

19
Constructeurs

 Constructeur de recopie
Public class Personne
String nom;
String prenom ;
Int age ;
String ville ;
public Personne( Personne p) {// Constructeur de recopie
This.nom = p.nom ;
This.prenom = p.prenom ;
This.age = p.age ;
This.ville = p.ville ;
}
}

20
Encapsulation

 Encapsulation
 Regroupement dans une même entité appelée objet des données et des
traitements On ne peut atteindre les attributs d’un objet que par l’intermédiaire
de ses traitements appelés aussi méthodes ou services
 Accesseurs et mutateurs: un accesseur est une méthode qui va permettre
d'accéder aux variables des objets en lecture et un mutateur, en écriture
 On parle de Getters et de Setters
 Getters sont du même type que la variable qu'ils doivent retourner
 Setters sont, par contre, de type void ces méthodes ne retournent aucune valeur,
elles se contentent de les mettre à jour

21
Encapsulation

public String getNom() {


return nom;
}
public String getPrenom() {
return prenom;
}
public int getAge() {
return age;
}
public String getVille() {
return ville;
}

22
Encapsulation

public void setNom (String nom)


this.nom = nom;
}
public void setPrenom (String prenom )
this.prenom = prenom
}
public void setAge (int age )
this.age =age
}
public void setVille (String ville)
this.ville =ville;
}

23
Packages

 Afin d’accéder à une classe d’un package donné, il faut préalablement


importer cette classe ou son package
 Par exemple, la classe Date appartenant au package java.util qui implémente
un ensemble de méthodes de traitement sur une date peut être importée de
deux manières :
 Seule classe du package est importée : import java.util.Date
 Toutes les classes du package sont importées (même les classes non utilisées) :
import java.util.*

24
Packages

 Packages de base
 Classes fournies par Java SE, implémentent des données et traitements génériques
utilisables par un grand nombre d’applications
 Ces classes forment l’API (Application Programmer Interface) du langage Java
 Documentation de l’API java
 http://docs.oracle.com/javase/8/docs/api/

25
Packages

Package Description
java.awt Classes graphiques et de gestion d’interfaces
javax.swing Autres classes graphiques
java.net Classes de gestion réseau
java.io Gestion des entrées/sorties
java.lang Classes de base (importé par défaut)
java.util Classes utilitaires

26
Packages

 Il est possible de créer des packages en précisant, avant la déclaration d’une


classe, le package auquel elle appartient
 Environnement de développement Eclipse permet de créer des packages
 Exemple
package ma.ac.esi;
import java.util.Date ;
public class MaClasse {
...
}

27
Cycle de vie d’un objet

 Cycle de vie d'un objet passe par


 Déclaration de l'objet et l'instanciation grâce à l'opérateur new
 Utilisation de l'objet en appelant ces méthodes pour accéder aux attributs et faire
des opérations
 Suppression de l'objet : (Garbage collector) automatique grâce à la machine
virtuelle Java

28
Exercices

 Exercice 1:
 Ecrire une classe Livre avec les attributs suivants: titre, auteur, prix, annee
 La classe Livre doit disposer des constructeurs suivants : Livre(), Livre(titre), Livre(titre,
auteur), Livre(titre, auteur, prix), Livre(titre, auteur,prix, annee), Livre(Livre)
 La classe Livre doit contenir des accesseurs et mutateurs pour les différents attributs
 La classe livre doit aussi contenir une méthode afficher() pour afficher les attributs des
livres
 Méthode typeLivre() qui va prendre les valeurs
 1 :si prix <100
 2: si le 100<=prix< =500
 3: si 500<prix

 Ecrire aussi une classe de testLivre afin de tester la classe Livre

29
Exercices

 Exercice 2:
 Définir une classe Salarié avec ses données membres et deux méthodes
 matricule, nom, prénom, salaire, département
 Une méthode membre qui renvoie le calcul du salaire annuel (salaire *12) :
CalculSalaire()
 Une méthode d’affichage des informations: Affichage()
 Définir une classe TestSalarie pour tester la classe Salaire
 Créer un objet S de Type Salarié avec un salaire=10000
 Changer le salaire de S en 12000
 Afficher le nom du salarié de référence S

30
Exercices

 Exercice 3:
 Définir une classe Ville avec les attributs : nom, nombre d'habitants et pays
 Une méthode afficher() pour afficher les informations sur une ville donnée
 Une méthode catégorie() qui renvoie un char:
 ‘A’: si le nombre d’habitants < 10000
 ‘B’: si le nombre d’habitants entre 10000 et 1000000
 ‘C’: si le nombre d’habitants > 1000000
 Classe TestVille pour tester la classe ville, changer le nombre d’habitants
d’une ville V, Afficher le pays de la Ville V

31
 Documentation JDK 19:
https://docs.oracle.com/en/java/javase/19/index
Bibliographie .html

32

Vous aimerez peut-être aussi