• Aucun résultat trouvé

Programmation orientée objet

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation orientée objet"

Copied!
18
0
0

Texte intégral

(1)

Programmation orientée objet

Arnaud Labourel

(2)

Le penser objet

(3)

Analyse d’un problème en programmation objet

Penser objet :décomposer le programme en objets

Quels sont les objets nécessaires à la résolution du problème ?

⇒ décomposition du problème en objets À quels modèles des objets correspondent-il ?

⇒ Quelles sont les classes ?

Quels sont les fonctionnalités/opérations dont on doit/veut pouvoir disposer sur ces objets ?

⇒ Quelles sont les méthodes des classes ? Quelle est la structure des données de l’objet ?

⇒ Quelles sont les attributs des classes ?

(4)

Exemple de problème

un catalogue regroupe des articles, il permet de trouver un article à partir de sa référence.

un article est caractérisé par un prix et une référence que l’on peut obtenir. On veux aussi pouvoir déterminer si un article est plus cher qu’un autre

une commande est créée pour un client et un catalogue donnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des articles et le montant des frais de port de la commande.

un client peut créer une commande pour un catalogue et commander dans cette commande des articles à partir de leur référence.

(5)

Classes du problèmes

uncatalogueregroupe des articles, il permet de trouver un article à partir de saréférence.

unarticleest caractérisé par un prix et une référence que l’on peut obtenir. On veux aussi pouvoir déterminer si un article est plus cher qu’un autre

une commandeest créée pour unclientet uncataloguedonnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des articles et le montant des frais de port de la commande.

unclientpeut créer unecommandepour un catalogue et commander dans cette commande desarticles à partir de leur référence.

(6)

Méthodes

un catalogue regroupe des articles, il permet detrouver un article à partir de sa référence.

un article est caractérisé par un prix et une référence que l’on peut obtenir. On veut aussi pouvoirdéterminersi un article est plus cher qu’un autre.

une commande est créée pour un client et un catalogue donnés, on peutajouterdes articles à une commande, accéderà la liste des articles commandés ainsi que le prix total des articles et le montant des frais de port de la commande.

un client peutcréer une commande pour un catalogue etcommander dans cette commande des articles à partir de leur référence.

(7)

Méthodes de la classe Catalog

Description d’un catalogue

un catalogue regroupe des articles, il permet de trouverun article à partir de sa référence.

Méthodes :

get_item(self, reference)

(8)

Méthodes de la classe Item

Description d’un article

un article est caractérisé par un prix et une référence que l’onpeut obtenir.

On veut aussi pouvoir déterminersi un article est plus cher qu’un autre.

Méthodes :

get_price(self) get_reference(self)

is_more_expensive_than(self, other_item)

(9)

Constructeurs et méthodes de la classe Order

Description d’une commande

une commande est crééepour un client et un catalogue donnés, on peut ajouterdes articles à une commande, accéder à la liste des articles commandés ainsi que le prix total des articles et le montant des frais de port de la commande.

Méthodes et constructeurs :

__init__(self, client, catalog) (constructeur) add_item(self, item)

get_all_items(self)

get_total_price_of_items(self) get_shipping_cost(self)

get_client(self) get_catalog(self)

(10)

Constructeurs et méthodes de la classe Client

Description d’un client

un client peut créerune commande pour un catalogue et commander dans cette commande des articles à partir de leur référence.

Méthodes :

create_order(self, catalog)

order_item(self, order, reference)

(11)

Vocabulaire programmation objet

(12)

Objet

Unobjet :

peut êtreconstruit

est structuré: il est constitué d’un ensemble d’attributs(données de l’objet)

possède unétat : la valeur de ses attributs

possède une interface: les opérations applicables sur l’objet appelées méthodes

(13)

Syntaxe des objets

Construire un objet

objet = Classe(arguments);

Accéder à un attribut d’un objet objet.attribut = ...

Appeler une méthode d’un objet objet.méthode(arguments)

(14)

Classe

Une classe(d’objet) définit des :

constructeurs : des façons de construire/instancier les objets (instancesde la classe)

attributs(champs, propriétés ou données membres) : la structure des objets de la classe

méthodes : le comportement des objets de la classe

(15)

Exemple de syntaxe de définition d’une classe

class NameOfTheClass:

# Constructor

def __init__(self, argument1, argument2):

self.attribute1 = argument1 self.attribute2 = argument2

# Method

def get_attribute2(self):

return self.attribute2

(16)

Héritage

Une classe peut hériter d’une autre classe. Dans ce cas, cette classe appelée classe fille(subclass) hérite des méthodes de la classe ditemère (superclass).

Pour créer une classe fille, on utilise l’instruction class, suivie comme d’habitude du nom que l’on veut attribuer à la nouvelle classe, et on place entre parenthèses le nom de la classe mère.

class ClasseFille(ClasseMère):

pass

(17)

Fonction super

La fonction super()permet d’accéder aux méthodes de la classe mère. Par exemple dans le code ci-dessous, cela nous permet d’accéder à la méthode __init__de Pointdans ColoredPoint:

class Point:

def __init__(self, x, y):

self.x = x self.y = y

class ColoredPoint(Point):

def __init__(self, x, y, color):

super().__init__(x, y) self.color = color

(18)

Pièges de l’héritage

Bonnes utilisations de l’héritage

Créer une nouvelle classe avec des fonctionnalités supplémentaires.

Éviter la duplication de code entre deux classes en créant une classe mère contenant le code partagé.

Mauvaises utilisations de l’héritage

Créer une classe fille ne correspondant pas à la classe mère : par exemple, avoir une classe voiture héritant d’une classe moteur (une voiture n’est pas un moteur même si on peut démarrer les deux).

Créer une classe fille ne se comportant pas comme la classe mère : par exemple, avoir une classe carré héritant d’une classe rectangle (une méthode changeant la longueur n’aura pas le même comportement pour un carré et un rectangle).

Références

Documents relatifs

[r]

[r]

[r]

7KHJRDORIWKHZRUNLVWRSUHVHQWVHQVLWLYHDUHDVRISXEOLFSURFXUHPHQW

LES BLAGUES DE

 En application de l’article R.2142-3 du code de la commande publique, le candidat peut s’appuyer sur les capacités d’autres opérateurs économiques, quelle que soit la

Arts (Rôle de la Faculté des) dans l’üniversité catholique Astronomie (L’) et la Vie de

Ce comité regroupant, entre autres, les responsables facultaires en formation continue, serait présidé par le vice-recteur ou vice-recteur adjoint responsable du dossier de