Vous êtes sur la page 1sur 50

Programmation Orientée Objet

Licence d’informatique
Ba Moussa Demba
bah.demba@gmail.com
Constats

 Il y a beaucoup de manières à écrire un

programme qui effectue une tâche spécifiée.


 La manière de programmation dépende du

langage utilisé.
 Le langage utilisé dépende de la manière de

programmation.
Paradigmes de programmation
 Le concept de la programmation fonctionnelle/procédurale est
construit autour de la notion de fonction. Tout programme est
un ensemble de fonctions s’appelant entre elles.
(Pascal, C, etc.)
 Programmation orientée objet : on identifie les objets
manipulés par le système, avec leurs états et leurs
comportements. (C++, Java, Delphi, C#)
Un programme en C
Limitations
 Il n’y a pas de méthode ou de cadre pour
bien organiser les fonctions.
 Les modifications d’une fonction
entraînent d’autres modifications dans
autre fonctions, etc. – la portée d’une
modification est trop grand et difficile à
gérer.
 Redondance dans le code (la même chose
est codé plusieurs fois)
 Propagation des erreurs – déboggage
difficile
Est-ce qu’il faut oublier le C?

NON!
Vous allez avoir le
choix parmi
plusieurs
méthodes de
programmation!
Paradigme orienté objet
Comment peut on y arriver?
 Introduction des nouvelles notions
– objet
– classe
– instanciation
– hiérarchie des classes
– héritage
– événement
 On va utiliser ces notions pour introduire le
paradigme de POO.
Exemple d’Objet: fenêtre
 propriétés d’une fenêtre
– ouverte/fermée
– cassée/intacte
– taille
– sens d’ouverture
– type de verre
– coefficient de réflexion de chaleur
 Pour une fenêtre concrète, ces propriétés
ont des valeurs.
Exemple d’Objet: fenêtre

 opérations avec une fenêtre donnée


– ouvrir
– fermer
– casser
– réparer
– changer la verre

L’avantage majeur de la POO sur la Programmation fonctionnelle est de


réunir les données avec leurs traitements.
Exemple d’Objet: livre

 propriétés d’un livre dans une bibliothèque


– état (emprunté / disponible / perdu)
– date de la fin de l’emprunt
– titre
– auteur
– nombre de pages
 Pour un livre donné, ces propriétés ont des
valeurs!
Exemple d’Objet: livre

 opérations sur un livre d’une bibliothèque


– emprunter
– rendre
– perdre
– voler
Classe versus Objet

• Objets : Omar, Moussa, Fatma; université


d’Orléans, université Paris 7, université Lyon 1.
• Classe : regroupement d ’objets de même type.
– Personne
– Université
• L’objet est une instance de sa classe.
Objet: définition

 Un objet est un ensemble des propriétés


ayant des valeurs et des actions (opérations
ou méthodes) agissant sur les valeurs de ces
propriétés.
Exemple: l’Objet voiture

 Propriétés intéressantes?
 Actions intéressantes?
(pour une compétition, pour une entreprise
qui loue des voitures, etc…)
Classes: definition
Un moule pour creer des objets.

Classe

Objet 1 Objet 2
Classes: definition

Class name

attributes

methods

Fatma Ahmed Aycha Ali


R10 R20 R30 R40
Classes: definition
Classe
• Une classe est un ensemble des propriétés
et des méthodes.
Dans le programme
variables
propriétés

méthodes procédures (code)


Classe des objets
• Les objets ayant des mêmes propriétés et
les mêmes méthodes peuvent être mis dans
une classe.

 Une classe sera définie par les propriétés


et les méthodes sur ses éléments.
Classe des livres

• propriétés  méthodes
– état (emprunté / – emprunter
disponible / – rendre
perdu) – perdre
– date de la fin de – voler
l’emprunt
– titre
– auteur
– nombre de pages
Classe des fenêtres
• propriétés  méthodes
– état d’ouverture – ouvrir
(ouverte/fermée) – fermer
– état (cassée/intacte) – casser
– taille – réparer
– sens d’ouverture – changer la verre
– type de verre
– coef de réflexion de
chaleur
Une instance de la classe livre

propriétés méthodes
– état = emprunté – emprunter
– date de la fin de l’emprunt – rendre
= 2003/03/20 – perdre
– titre = Concepts of object- – voler
oriented programming
– auteur = David N. Smith
– nombre de pages = 189
Classe, Objet, Methode, Attribute

Game
Start()

Stop()

SaveScore()

Une methode est une collection de champs (attributes) et de methodes.


Les champs decrivent la classe: price, color,….
Les methodes definissent les actions que les objets de la classe peuvent
accomplir: stop, start,….
23
Exemple
Start()

class VideoGame{ Stop()


String color;
int price;
SaveScore()
void Start() {

}

void Stop() {

}

void saveScore(String playername, int score) {


….
}
}

24
Classe et objet en Java

Du modèle à … … la classe Java et ... des instances


de la classe à ... de cette classe

Personne
class Personne
nom : String { Personne ahmed, fatma;
age : Integer String nom; ahmed= new Personne ();
salaire : Double
int age; fatma= new Personne ();
float salaire;
}

L’opérateur d’instanciation en Java est new :


MaClasse monObjet = new MaClasse();
En fait, new va réserver l’espace mémoire nécessaire pour créer
l’objet « monObjet » de la classe « MaClasse »
Le new ressemble beaucoup au malloc du C

25
Exemple dans un langage de programmation
(JAVA)

public class Cercle;


{
double Rayon;
public double calculerAire()
{
return Rayon * Rayon * 3.1415;
}
}
Instanciation d’une Classe

• Instance
– représentant physique d'une classe
– obtenu par moulage du dictionnaire des variables et détenant les
valeurs de ces variables.
– Son comportement est défini par les méthodes de sa classe
– Par abus de langage « instance » = « objet »
• Exemple :
– si nous avons une classe voiture, alors votre voiture est une
instance particulière de la classe voiture.
– Classe = concept, description
– Objet = représentant concret d’une classe

27
String
Une instance de la classe livre

propriétés méthodes
– état = emprunté – emprunter
– date de la fin de l’emprunt – rendre
= 2003/03/20 – perdre
– titre = Concepts of object- – voler
oriented programming – livre
– auteur = Moussa Ba
– nombre de pages = 189 méthode
constructeur
Instanciation d’une Classe
Instanciation : concrétisation d’une classe en un objet « concret ».

Objet 1

Objet 2
Comment créer un objet?

• Dans chaque classe, il y a une méthode


spéciale:
La méthode constructeur
 Cette méthode permet de créer un
nouveau objet de la classe en définissant
les valeurs des propriétés et en donnant
accès aux méthodes sur cette objet.
Exemple
public class Animal {
int age; float weight; float tall; String color; Age
Tall
public void sleep() { Weight
color
System.out.println(“Bonne nuit");
Eat()
} Sleep()
Speak()
public void eat() {
System.out.println( “Donne moi un biscuit!");
}
public String speak(String aWord) {
String responseAnimal = "OK !! OK !! " + aWord;
return responseAnimal;
}
}
32
Exemple
public class MasterAnimal {

public static void main(String[] args) {

String aword;

Animal myAnimal = new Animal ();

myAnimal.eat();
aword= nyAnimal.speak("Cui !! Cui !!");
System.out.println(aword);
myAnimal.sleep(); output
Donne moi un biscuit!
} OK !! OK !! Cui !! Cui !!
} Bonne nuit

33
Les Modificateurs

• Access Modifier
– determine les droits d’accés a la classe et ses
membres
– Définie la ou` la classe et ses membres peuvent
etre utilisés
 public
 protected
 private
 static
 final
Public, Protected, Private
• public signie que n’importe qu’elle classe peut
accéder aux données/méthodes
• private signifie que seule la classe peut
accéder données/méthodes
• protected signifie que seules la classe ou ses
sous-classes peuvent accéder aux
données/méthodes
Modificateurs d’acces

Access Modifier Class or member can be


referenced by…
public methods of the same class, and
methods of other classes
private methods of the same class only

protected methods of the same class, methods


of subclasses, and methods of
classes in the same package
No access modifier methods in the same package only
(package access)
public vs. private
• Classes are usually declared to be public
• Instance variables are usually declared to be
private, so only the methods of the class will be
able to set or change their values.
• Methods that will be called by the client of the
class are usually declared to be public
• Methods that will be called only by other
methods of the class are usually declared to be
private
Les constructeurs
Personne.java
Redéfinition d’un
public class Personne Constructeur sans paramètres
{
public String nom;
public String prenom;
public int age;
public void Personne()
{ On définit plusieurs constructeurs
nom=null; prenom=null; qui se différencient uniquement
age = 0; par leurs paramètres (on parle
} de leur signature)
public String Personne(String unNom,
String unPrenom, int unAge)
{
nom=unNom;
prenom=unPrenom; age = unAge;
} }

38
Les constructeurs
• L'appel de new pour créer un nouvel objet déclenche,
dans l'ordre :
– L'allocation mémoire nécessaire au stockage de ce nouvel objet et
l'initialisation par défaut de ces attributs,
– L'initialisation explicite des attributs, s'il y a lieu,
– L'exécution d'un constructeur.
• Un constructeur est une méthode d'initialisation.

public class Application


{ Le constructeur est ici celui
public static void main(String args[]) par défaut (pas de
{ constructeur défini dans
Personne ahmed= new Personne() la classe Personne)
ahmed.setAge(25) ;
} }

39
Les constructeurs

• Lorsque l'initialisation explicite n'est pas possible (par


exemple lorsque la valeur initiale d'un attribut est
demandée dynamiquement à l'utilisateur), il est possible
de réaliser l'initialisation au travers d'un constructeur.
• Le constructeur est une méthode :
– de même nom que la classe,
– sans type de retour.
• Toute classe possède au moins un constructeur. Si le
programmeur ne l'écrit pas, il en existe un par défaut, sans
paramètres, de code vide.

40
Les constructeurs
Personne.java Définition d’un
Constructeur. Le
public class Personne
constructeur par défaut
{
(Personne() )n’existe plus.
public String nom;
Le code précédent occasionnera
public String prenom;
une erreur
public int age;
public Personne(String unNom,
String unPrenom,
int unAge)
{ public class Application
nom=unNom; {
prenom=unPrenom; public static void main(String args[])
age = unAge; {
} Personne ahmed= new Personne()
} ahmed.setAge(25) ;
} }

Va donner une erreur à la compilation 41


Les constructeurs

• Pour une même classe, il peut y avoir plusieurs


constructeurs, de signatures différentes (surcharge).
• L'appel de ces constructeurs est réalisé avec le new auquel
on fait passer les paramètres.
– p1 = new Personne(« ahmed", « ali", 25);
• Déclenchement du "bon" constructeur
– Il se fait en fonction des paramètres passés lors de l'appel
(nombre et types).
• Attention
– Si le programmeur crée un constructeur (même si c'est un
constructeur avec paramètres), le constructeur par défaut n'est
plus disponible. Attention aux erreurs de compilation !
42
Objet comme valeur d’une propriété

Un objet peut être la valeur d’une


propriété
Exemple dans un langage de programmation

public class Cercle;


{
public class Dessin double Rayon;
{ public double calculerAire()
Cercle Composant1; {
double surfaceDessin; return Rayon * Rayon * 3.1415;
}
}
Cercle(double r) // constructeur
{
Rayon = r;
}
}
Attribut d‘Instance
Dans ce modèle, un véhicule est représenté par une chaîne de caractères (sa
marque) et trois entiers : la puissance fiscale, la vitesse maximale et la vitesse
courante. Toutes ces données sont représentatives d'un véhicule particulier,
autrement dit, chaque objet véhicule aura sa propre copie de ses données : on parle
alors d'attribut d'instance. L'opération d'instanciation
qui permet de créer un objet à partir d'une classe
consiste précisément à fournir des valeurs
particulières pour chacun des attributs d'instance.

Le schéma précédent nous permet de présenter


UML (Unified Modelling Language), langage de
représentation des systèmes objet quasi
universellement adopté de nos jours.
Attribut de Classe
considérons l'attribut Nombre de véhicules chargé de compter le nombre de
véhicules présents à un moment donné dans la classe. Il est incrémenté par
l'opération
Créer un véhicule et décrémenté par l'opération Détruire un véhicule. C'est
un exemple typique d'attribut partagé par l'ensemble des objets d'une
même classe.
Il est donc inutile et même
dangereux (penser aux opérations de mise à jour)
que chaque objet possède sa copie propre de
cet attribut, il vaut mieux qu'ils partagent une
copie unique située au niveau de la classe.
On parle donc d'attribut de classe.
Méthode d’Instance v. Méthode de Classe

Le même raisonnement s'applique directement aux méthodes. En effet, de la


même manière que nous avions établi une distinction entre attributs d'instance
et attributs de classe, nous allons différencier méthodes d'instances et
méthodes de classe.

Prenons par exemple la méthode Démarrer. Il est clair qu'elle peut s'appliquer
individuellement à chaque véhicule pris comme entité séparée. En outre,
cette méthode va clairement utiliser les attributs d'instance de l'objet auquel
elle va s'appliquer c'est donc une méthode d'instance.

Considérons désormais le cas de la méthode Créer un véhicule. Son but est de


créer un nouveau véhicule, lequel aura, dans un second temps, le loisir de
positionner des valeurs initiales dans chacun de ces attributs d'instance.

la création d'un objet est donc une méthode de classe.


La classe : représentation graphique

Homme
Age : Integer
Taille : Double
Poids : Double
Nom : String

parle()
mange()
boit()
dort()

Une classe représentée avec la notation


UML (Unified Modeling Language)

Vous aimerez peut-être aussi