Académique Documents
Professionnel Documents
Culture Documents
(CM : 5 TD : 6 TP : 3) 14h
Introduction
• Encapsulation : la structure interne d'un objet est cachée des autres objets.
Cela permet de protéger les données et le comportement de l'objet.
• Héritage : une classe peut hériter des attributs et des méthodes d'une autre
classe. Cela permet de réutiliser le code et de créer des classes plus
complexes à partir de classes plus simples.
• Polymorphisme : une référence d'objet peut faire référence à un objet de
n'importe quelle classe qui hérite de la classe de l'objet. Cela permet d'utiliser
le même code pour traiter des objets de types différents.
Les avantages de la POO
La POO est un paradigme de programmation très répandu. Elle est utilisée dans un
large éventail d'applications, notamment :
• Les applications logicielles : la POO est utilisée pour développer des
applications logicielles de toutes tailles, des petits programmes aux grands
systèmes d'information.
• Les systèmes d'exploitation : les systèmes d'exploitation modernes sont basés
sur la POO.
• Les bases de données : les bases de données relationnelles sont souvent
modélisées à l'aide de la POO.
• Les systèmes embarqués : la POO est utilisée pour développer des systèmes
embarqués, tels que les systèmes de contrôle industriels et les appareils
électroniques grand public.
Conclusion
I. Encapsulation
L'encapsulation est un principe fondamental de la programmation orientée objet
(POO). Il consiste à regrouper les données et les comportements associés au sein
d'une même entité, appelée classe ou objet. L'encapsulation permet de masquer les
détails d'implémentation d'une classe ou d'un objet, et de n'exposer que les
fonctionnalités nécessaires à son utilisation.
Java
public class Personne {
personne.setNom("Jane Doe");
personne.setAge(31);
Comme vous pouvez le voir, l'encapsulation permet d'accéder aux données et aux
comportements d'une classe de manière contrôlée. Cela permet d'améliorer la
sécurité, la modularité et la réutilisabilité du programme.
II. Héritage
En programmation orientée objet (POO), l'héritage est un mécanisme qui permet à
une classe de réutiliser les propriétés et les méthodes d'une autre classe. La classe
qui hérite est appelée classe enfant ou classe dérivée, et la classe dont elle hérite est
appelée classe parent ou classe de base.
Python
class Animal:
def __init__(self, nom):
self.nom = nom
def faire_du_bruit(self):
print("Je fais du bruit !")
class Chien(Animal):
def __init__(self, nom, race):
super().__init__(nom)
self.race = race
def aboyer(self):
print("Wouf !")
L'héritage est un concept puissant qui peut être utilisé pour simplifier et améliorer la
qualité du code.
III. Polymorphisme
En programmation orientée objet (POO), le polymorphisme est un concept qui permet
d'utiliser une même interface pour des objets de types différents. Cela signifie que les
objets peuvent avoir des comportements différents, mais ils peuvent être utilisés de la
même manière.
C#
// Une classe abstraite qui représente une forme
abstract class Forme
{
public abstract double Perimetre();
}
Les objets sont des instances de classes. Ils sont créés à partir d'une classe et
possèdent les propriétés et les comportements définis par la classe.
Propriétés
Les propriétés sont des données qui définissent l'état d'un objet. Elles peuvent être
des variables, des constantes ou des expressions.
Comportements
Les comportements sont des méthodes qui définissent ce qu'un objet peut faire.
Elles sont des fonctions qui peuvent être appelées sur un objet pour effectuer une
action.
Exemple
C#
public class Personne
{
public string Nom { get; set; }
public int Age { get; set; }
Pour créer un objet, on utilise l'opérateur new. Par exemple, pour créer un objet de
type Personne, on peut utiliser le code suivant :
C#
Personne personne = new Personne();
Cet objet aura les propriétés Nom et Age initialisées par défaut.
Attribution de valeurs
On peut ensuite attribuer des valeurs aux propriétés d'un objet. Par exemple, on peut
attribuer la valeur "Jean Dupont" à la propriété Nom de l'objet personne en utilisant le
code suivant :
C#
personne.Nom = "Jean Dupont";
On peut également appeler les méthodes d'un objet. Par exemple, on peut appeler la
méthode SePresenter() de l'objet personne en utilisant le code suivant :
C#
personne.SePresenter();
Les classes et les objets sont des concepts fondamentaux de la POO. Ils permettent
de modéliser le monde réel de manière plus intuitive et efficace.
V. Constructeur
En programmation orientée objet (POO), un constructeur est
une méthode spéciale qui est appelée lorsqu'un objet est créé. Le constructeur est
utilisé pour initialiser les attributs de l'objet.
En POO, un objet est une entité qui possède des données et des méthodes. Les
données d'un objet sont appelées ses attributs. Les méthodes d'un objet sont
utilisées pour manipuler ses données.
Le constructeur est utilisé pour initialiser les attributs d'un objet lorsque celui-ci est
créé. Le constructeur est appelé automatiquement par le système lorsque l'objet est
créé.
Concept en algorithmique
Exemple en POO
C#
public class Personne
{
public string Nom { get; set; }
public int Age { get; set; }
Python
class Personne:
def __init__(self, nom, age):
self.nom = nom
self.age = age
Ce constructeur prend deux paramètres : le nom et l'âge de la personne. Le
constructeur utilise ces paramètres pour initialiser les attributs nom et age de l'objet.
Conclusion
La surcharge permet de définir plusieurs méthodes de même nom dans une même
classe, mais avec des signatures différentes. La signature d'une méthode est définie
par son nom, ses paramètres et son type de retour.
La redéfinition permet de redéfinir une méthode dans une classe fille qui hérite d'une
classe mère. La méthode redéfinie doit avoir la même signature que la méthode
définie dans la classe mère.
Exemple de surcharge
C#
class Point
{
public int X { get; set; }
public int Y { get; set; }
Par exemple, une fonction de calcul de la distance entre deux points peut être
surchargée pour prendre en compte différents types de points. Une fonction de tri
peut être redéfinie pour utiliser un algorithme de tri différent.
Conclusion
Une interface est une classe qui ne contient que des méthodes abstraites. Elle est
utilisée pour définir un ensemble de méthodes que les classes concrètes doivent
implémenter.
En algorithmique, les classes abstraites et les interfaces peuvent être utilisées pour :
• Définir une structure commune : une classe abstraite peut être utilisée pour
définir une structure commune à plusieurs classes concrètes. Cela permet de
faciliter la réutilisation du code et de réduire la duplication de code.
• Assurer la cohérence : une interface peut être utilisée pour garantir que les
classes concrètes implémentent un ensemble de méthodes de manière
cohérente. Cela permet de faciliter la maintenance du code et d'améliorer la
fiabilité des applications.
Exemple de classe abstraite
C#
public abstract class Figure
{
public abstract double Aire();
public abstract double Perimetre();
}
Cette classe abstraite définit deux méthodes abstraites : Aire() et Perimetre(). Ces
méthodes doivent être implémentées par les classes concrètes qui en héritent.
Exemple d'interface
Voici un exemple d'interface en C# :
C#
public interface IDrawable
{
void Dessiner();
}
Cette interface définit une méthode abstraite Dessiner(). Cette méthode doit être
implémentée par les classes concrètes qui implémentent l'interface IDrawable.
Conclusion
Les classes abstraites et les interfaces sont des concepts importants de la POO.
Elles peuvent être utilisées pour améliorer la modularité, la réutilisation et la
cohérence du code.