Vous êtes sur la page 1sur 54

Plan du cours

1. Introduction
2. Classes et objets
3. Héritage
4. Polymorphisme
5. Abstract/Static/Final
6. Les collections
1- Introduction
1- Introduction

1. Présentation du cours
2. Définition de l'orienté
3. Avantages de l'orienté objet

4
1.1- Présentation du cours
Durée et fréquence Niveau requis et
Objectifs du cours Matériel nécessaire
des séances pré-requis

Dans ce cours, nous allons explorer les bases de la programmation orientée objet
(POO) et découvrir comment utiliser les concepts clés de la POO pour construire des
programmes plus robustes et plus faciles à maintenir. À la fin de ce cours, vous devriez
être capable de:
•Comprendre les principes fondamentaux de la POO
•Créer des classes et des objets en utilisant la POO
•Utiliser les concepts de héritage, polymorphisme et encapsulation
•Écrire du code plus facilement compréhensible et maintenable

5
1.1- Présentation du cours
Durée et fréquence Niveau requis et
Objectifs du cours Matériel nécessaire
des séances pré-requis

Le cours se déroulera sur 10 semaines, avec une séance hebdomadaire d'une durée de 3 heures.

6
1.1- Présentation du cours
Durée et fréquence Niveau requis et
Objectifs du cours Matériel nécessaire
des séances pré-requis

Ce cours est destiné aux débutants en programmation et n'exige aucun pré-requis


particulier. Cependant, une connaissance de base de la programmation serait un atout.

7
1.1- Présentation du cours
Durée et fréquence Niveau requis et
Objectifs du cours Matériel nécessaire
des séances pré-requis

Pour suivre ce cours, vous aurez besoin d'un ordinateur avec un IDE pour java

8
1.2- Définition de l'orienté objet
Définition de l'orienté Historique de l'orienté Comparaison avec
objet objet d'autres paradigmes

L'orienté objet est un paradigme de programmation qui consiste à modéliser les


objets du monde réel en utilisant des classes et des objets en programmation. Les
principes fondamentaux de la programmation orientée objet sont:

9
1.2- Définition de l'orienté objet
Définition de l'orienté Historique de l'orienté Comparaison avec
objet objet d'autres paradigmes

Les principes fondamentaux de la programmation orientée objet sont:


 Classes: une classe définit les caractéristiques et les comportements d'un objet en
programmation.
 Objets: un objet est une instance d'une classe qui peut avoir ses propres états et
comportements.
 Héritage: l'héritage permet à une classe de dériver d'une autre classe, héritant ainsi
ses caractéristiques et comportements.

10
1.2- Définition de l'orienté objet
Définition de l'orienté Historique de l'orienté Comparaison avec
objet objet d'autres paradigmes

 Polymorphisme: le polymorphisme permet à une classe de prendre plusieurs


formes en fonction du contexte.
 Encapsulation: l'encapsulation permet de cacher les détails d'implémentation
d'une classe pour ne montrer que les informations nécessaires à l'utilisateur.

11
1.2- Définition de l'orienté objet
Définition de l'orienté Historique de l'orienté Comparaison avec
objet objet d'autres paradigmes

La programmation orientée objet a été introduite pour la première fois dans les
années 1960, mais c'est seulement dans les années 1980 et 1990 qu'elle a
commencé à être largement utilisée. Au fil des ans, la programmation orientée objet
a évolué pour inclure des fonctionnalités telles que les génériques et les signatures
de méthodes.

12
1.2- Définition de l'orienté objet
Définition de l'orienté Historique de l'orienté Comparaison avec
objet objet d'autres paradigmes

La programmation orientée objet peut être comparée à d'autres paradigmes de


programmation tels que la programmation procédurale et la programmation
fonctionnelle. La programmation orientée objet se distingue des autres paradigmes
en offrant un modèle de programmation plus abstrait et en permettant une
meilleure organisation du code. Cela peut rendre le code plus facile à maintenir et à
évoluer au fil du temps.

13
1.3- Avantages de l'orienté objet

 Meilleure réutilisation et organisation du code


 Facilité de maintenance et d'évolution du code
 Meilleure compréhension et documentation du code
 Amélioration de la qualité et fiabilité du code

14
2- Classes et objets:
2- Classes et objets

1. Introduction
2. Classes
1. Définition de la classe
2. Propriétés et méthodes des classes
3. Objets
1. Définition de l'objet
2. Utilisation des objets
4. Résumé

16
2- Classes et objets
Introduction Classes Objets Résumé
La programmation orientée objet est un paradigme de programmation qui s'appuie sur
l'utilisation des objets pour représenter les concepts du monde réel dans un programme
informatique. Les objets sont créés à partir de classes, qui définissent les propriétés et les
méthodes que les objets créés à partir de ces classes peuvent posséder. Les autres
concepts clés de la programmation orientée objet comprennent l'héritage, le
polymorphisme et l'encapsulation.

17
2- Classes et objets
Introduction Objets Résumé
Classes
2.1. Définition de la classe
Une classe est un modèle pour créer des objets. Une classe définit les propriétés et les
méthodes que les objets créés à partir de cette classe peuvent posséder. Par exemple, si
nous voulons représenter des voitures dans notre programme, nous pouvons créer une
classe appelée "Voiture" qui définit les propriétés telles que la marque, le modèle et la
couleur, ainsi que les méthodes telles que démarrer et arrêter le moteur.

18
2- Classes et objets
Introduction Classes Objets Résumé
2.1. Exemple d’une classe
public class Voiture {
// Propriétés de la classe Voiture
private String marque;
private String modèle;
private String
couleur;
// Méthodes de la classe Voiture
public void démarrer() {
System.out.println("Le moteur
a démarré.");

}
public void arrêter() {
System.out.println("Le moteur
s'est arrêté.");

}
}} } 19
2- Classes et objets
Introduction Classes Objets Résumé
2.2. Propriétés et méthodes des classes

Les propriétés d'une classe sont utilisées pour stocker les états d'un objet. Les méthodes
sont utilisées pour décrire les comportements d'un objet. Dans notre exemple de classe
"Voiture", les propriétés sont la marque, le modèle et la couleur, tandis que les méthodes
sont démarrer et arrêter.

20
2- Classes et objets
Introduction Objets Résumé
Classes
2.1. Définition de l’objet
Un objet est une instance concrète d'une classe. Nous pouvons créer autant d'objets que
nous le souhaitons à partir d'une seule classe. Chaque objet peut avoir des valeurs
différentes pour ses propriétés, ce qui les rend uniques.

21
2- Classes et objets
Introduction Classes Résumé
Objets

2.1. Exemple de création d’un objet


Voiture maVoiture = new Voiture();

22
2- Classes et objets
Introduction Objets Résumé
Classes
2.2.
NousUtilisation des objets
pouvons utiliser les objets pour accéder à leurs propriétés et méthodes. Pour accéder à une propriété
d'un objet, nous pouvons utiliser l'opérateur point (.). Pour appeler une méthode d'un objet, nous pouvons
utiliser l'opérateur point suivi du nom de la méthode et des parenthèses.

• maVoiture.marque = "Toyota";

• maVoiture.modèle = "Camry";

• maVoiture.couleur = "Rouge";

• maVoiture.démarrer();

• maVoiture.arrêter();

23
2- Classes et objets
Introduction Classes Objets Résumé

Les classes et les objets sont deux concepts clés de la programmation orientée objet. Les
classes sont utilisées pour définir les propriétés et les méthodes que les objets créés à
partir de ces classes peuvent posséder. Les objets sont des instances concrètes de classes,
qui peuvent avoir des valeurs uniques pour leurs propriétés. Nous pouvons utiliser les
objets pour accéder à leurs propriétés et méthodes.

24
3- Héritage:
3- Héritage

• Définition de l'héritage
• Utilisation de l'héritage pour réutiliser du code
• Overriding

26
3- Héritage
Exemple Notions
Définition avantages
importantes
2.1. Définition de l’héritage

L'héritage est un concept important en programmation orientée objet qui permet à une
classe de hériter les propriétés et les méthodes d'une autre classe. La classe qui hérite est
appelée classe fille ou sous-classe, tandis que la classe dont elle hérite est appelée classe
mère ou super-classe.

L'héritage permet de réutiliser le code existant et d'éviter la duplication de code. Il aide


également à maintenir la cohérence et la cohésion du code en réduisant la complexité et
en permettant une meilleure organisation.

27
3- Héritage
Exemple Notions
Définition avantages
importantes
2.1. Exemple de l’héritage

Supposons que nous avons une classe Animal qui définit les propriétés et les méthodes génériques pour
tous les animaux, telles que la race, le poids et la méthode manger().

28
3- Héritage
Exemple Notions
Définition avantages
importantes
2.1. Exemple de l’héritage

Nous pouvons maintenant définir des sous-classes pour des animaux spécifiques, tels que Chien et Chat, en
héritant de la classe Animal.

29
3- Héritage
Exemple Notions
Définition avantages
importantes
2.1. Exemple de l’héritage

Dans cet exemple, la classe Chien et la classe Chat héritent toutes les deux des propriétés
et des méthodes de la classe Animal. De plus, chacune peut définir ses propres propriétés
et méthodes spécifiques. Cela permet de modéliser différents types d'animaux en utilisant
l'héritage et de réutiliser le code existant sans duplication.

30
3- Héritage
Notions
Définition Exemple avantages importantes

Les avantages de l'héritage incluent :


1. Réutilisation du code : La classe enfant peut réutiliser le code déjà défini dans la classe
parent, sans duplication de code.
2. Organisation du code : L'héritage permet de structurer le code en groupant les
propriétés et les méthodes communes à différents objets dans une classe parent, ce
qui améliore la lisibilité et la maintenance du code.
3. Polymorphisme : L'héritage permet de définir des méthodes dans la classe parent qui
peuvent être redéfinies ou étendues dans les classes enfants, ce qui permet de traiter
différents objets de manière similaire, sans connaître leur type spécifique.

31
3- Héritage
Exemple Notions
Définition avantages
importantes

Il est également important de noter que l'héritage peut entraîner des problèmes tels que
la complexité accrue, la réduction de la flexibilité et la dépendance de la classe parent. Il
est donc important de choisir judicieusement l'utilisation de l'héritage dans votre code.

32
3- Héritage
Exemple Notions
Définition avantages
importantes

La méthode equals() en Java est une méthode héritée de la classe Object qui est utilisée
pour comparer l'égalité de deux objets. Elle renvoie true si les deux objets sont égaux,
c'est-à-dire s'ils ont la même valeur. Pour déterminer l'égalité, la méthode compare les
valeurs de tous les champs de l'objet. Si tous les champs ont la même valeur, la méthode
renvoie true, sinon elle renvoie false.

33
4- Polymorphisme :
Polymorphisme

Le polymorphisme est un mécanisme important dans la


programmation objet. Il permet de modifier le comportement
d’une classe fille par rapport à sa classe mère. Le
polymorphisme permet d’utiliser l’héritage comme un
mécanisme d’extension en adaptant le comportement des
objets

35
Polymorphisme

L'overloading est le fait de définir plusieurs méthodes dans une


classe avec le même nom mais des paramètres différents. Cela
permet d'avoir des méthodes qui effectuent des tâches similaires
mais sur des types de données différents.

36
Polymorphisme
Exemple d'overloading :

37
Polymorphisme

L'overriding est le fait de redéfinir une méthode héritée d'une


classe parente dans une classe enfant avec une nouvelle
implémentation. Cela permet de personnaliser le comportement de
la méthode pour répondre aux besoins spécifiques de la classe
enfant.

38
Polymorphisme
Exemple d'overriding :

39
5- Abstract/Static/Final
Abstract

Une classe abstraite en programmation orientée objet est une classe qui ne
peut pas être instanciée directement, mais qui sert de modèle pour d'autres
classes qui en héritent. Elle peut contenir des méthodes abstraites, c'est-à-
dire des méthodes qui n'ont pas de corps et doivent être implémentées dans
les classes qui en héritent. Les classes abstraites peuvent également contenir
des méthodes et des attributs concrets qui seront hérités par les classes filles.
Les classes abstraites sont souvent utilisées pour regrouper des
fonctionnalités communes et définir un comportement de base qui doit être
implémenté dans les classes filles.
41
Abstract

Une méthode abstraite est une méthode qui ne possède pas de corps de
méthode (ou d'implémentation) dans la classe abstraite dans laquelle elle est
déclarée. Elle ne contient que sa signature (nom de méthode et liste de
paramètres) et elle est marquée avec le mot clé abstract. Les classes
abstraites ne peuvent pas être instanciées directement, mais elles peuvent
être héritées par des classes concrètes qui implémentent les méthodes
abstraites. Les sous-classes doivent alors fournir une implémentation de
toutes les méthodes abstraites héritées.

42
Abstract

43
Static

▶ Le mot clé static s'applique aux variables et aux méthodes.

Les variables d'instance sont des variables propres à un objet. Il est


possible de définir une variable de classe qui est partagée entre
toutes les instances d'une même classe : elle n'existe donc qu'une
seule fois en mémoire. Une telle variable permet de stocker une
constante ou une valeur modifiée tour à tour par les instances de la
classe. Elle se définit avec le mot clé static.

44
Static

Une méthode static est une méthode qui n'agit pas sur des
variables d'instance mais uniquement sur des variables de
classe. Ces méthodes peuvent être utilisées sans instancier un
objet de la classe. Les méthodes ainsi définies peuvent être
appelées avec la notation classe.methode() au lieu de
objet.methode() : la première forme est fortement
recommandée pour éviter toute confusion.
45
Static
propriétés :

▶ Le mot clé static est utilisé pour désigner une propriété dont la
valeur est identique pour tous les objets de la classe.

▶ Le mot clé static est aussi utilisé pour désigner une méthode qui
n’accède à aucune propriété non static.

▶ Une méthode qui accède à une propriété static doit être déclarée
static.

46
Static
propriétés :

▶ Les propriétés et méthodes static sont accessibles à partir du nom de la


classe.

▶ Les propriétés et méthodes static sont appelées respectivement


propriétés de classe et méthodes de classe.

▶ Les propriétés et méthodes non static sont appelées respectivement


propriétés d’instance et méthodes d’instance.

47
Static
Exemple : Variables statiques

1 class A
2 {
3 public static
int i = 100;
4
5 public static void main(String[] args) {
6 System.out.println(i); 7

}
8 }
9
10

class B 11

{
12 publ
ic 48

stati
c
Static
Exemple : Méthodes statiques
class A
{
public static void f()
{ System.out.println("Inside static
method");
}

public static void main(String[] args) {


f();
}
}

class B
{
public static void main(String[] args) {
A.f(); 49
}
Final
En Java, le mot clé "final" est utilisé pour indiquer :

 Pour les variables : si une variable est déclarée comme finale, elle ne peut
être affectée qu'une seule fois, soit lors de l'initialisation, soit lors de la
déclaration. Toute tentative de modification ultérieure de la valeur de la
variable entraînera une erreur de compilation.

 Pour les méthodes : si une méthode est déclarée comme finale, elle ne peut
pas être redéfinie (ou "overridden") par des sous-classes.
 Pour les classes : si une classe est déclarée comme finale, elle ne peut pas
être étendue par des sous-classes.
50
Final

Exemple variables :

51
Final

Exemple methodes :

52
Final

Exemple classe :

53
Exercice
▶ Créer une classe Note avec les attributs nomModule, coefficient et
noteModule.
▶ Créer une classe Etudiant qui contient les attributs nom, prenom, note de
type tableau de classe.
▶ Créer une méthode pour calculer la moyenne pondérée des notes de
l'étudiant en utilisant les coefficients des modules.
▶ Ajouter un attribut et une méthode statique pour compter le nombre
d'étudiants.
▶ Tester la classe en créant plusieurs étudiants avec plusieurs notes pour
chaque étudiant, en ajoutant et en calculant la moyenne pondérée de leurs
notes, et en affichant le nombre d'étudiants créés.

54

Vous aimerez peut-être aussi