Vous êtes sur la page 1sur 6

1

http://www.ent-montecristo.org/paul-antoine2.bisgambiglia
Mise Mise Niveau Niveau
Algorithmique et
Programmation Oriente Objet
L3 Informatique
Paul-Antoine Bisgambiglia
Anne 2009-2010
bisgambiglia@univ bisgambiglia@univ- -corse.fr corse.fr Mise Mise Niveau Niveau
2 bisgambiglia@univ-corse.fr
Objectifs Objectifs
Lobjectif de ce module est de raliser une mise
niveau dans le domaine de lalgorithmique et de la
programmation.
Introduire les notions la base de la POO :
Encapsulation
Hritage
Polymorphisme
Etc.
Ce module est essentiellement (mais pas ncessairement)
ddi aux tudiants issus de BTS et dIUT, qui nont
pas obligatoirement tudi les bases de la
programmation.
3 bisgambiglia@univ-corse.fr
Sommaire Sommaire
1. Rappels : Le Codage de linformation (2h)
2. Algorithmique (13h)
3. Introduction la programmation (6h)
4. Programmation Oriente Objet (6h)
1. Introduction
2. UML
3. Objet
4. Classe
5. Encapsulation
6. Hritage
7. Polymorphisme
8. Constructeur
9. Conclusion
10. Exemples en C#
4 bisgambiglia@univ-corse.fr
POO POO
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
public class Taxi
{
public bool isInitialized;
public Taxi()
{
isInitialized = true;
}
}
class TestTaxi
{
static void Main()
{
Taxi t = new Taxi();
System.Console.WriteLine(t.isInitialized);
}
}
}
Exemple en C#
5 bisgambiglia@univ-corse.fr
POO POO
Les langages orients objets sont une nouvelle mthode
de programmation qui tend se rapprocher de notre
manire naturelle d'apprhender le monde. Les L.O.O.
se sont surtout pos la question "Sur quoi porte le
programme ?". En effet, un programme informatique
comporte toujours des traitements, mais aussi et surtout
des donnes. Si la programmation structure s'intresse
aux traitements puis aux donnes, la conception objet
s'intresse d'abord aux donnes, auxquelles elle associe
ensuite les traitements. L'exprience a montr que les
donnes sont ce qu'il y a de plus stable dans la vie d'un
programme, il est donc intressant d'architecturer le
programme autour de ces donnes
Introduction
6 bisgambiglia@univ-corse.fr
POO POO
Dfinitions :
La notion d'objet : la programmation oriente objet
consiste modliser informatiquement un ensemble
d'lments d'une partie du monde rel (que l'on appelle
domaine) en un ensemble d'entits informatiques. Ces entits
informatiques sont appeles objets. Il s'agit de donnes
informatiques regroupant les principales caractristiques des
lments du monde rel (taille, la couleur, ...).
La difficult de cette modlisation consiste crer une
reprsentation abstraite, sous forme d'objets, d'entits ayant
une existence matrielle (chien, voiture, ampoule, ...) ou bien
virtuelle (scurit sociale, temps, ...).
Technique qui consiste
restituer sous une forme
comprhensible par
l'ordinateur un objet ou
un phnomne
quelconque.
Introduction
modliser
2
7 bisgambiglia@univ-corse.fr
POO POO
Vocabulaire objet :
Encapsulation : cest le fait de runir l'intrieur d'une
mme entit (objet) le code (mthodes) + donnes
(attributs). Deux niveaux dencapsulation sont dfinis :
Priv les champs et les mthodes masqus sont dans la partie prive
de lobjet.
Public les champs et les mthodes visibles sont dans la partie
interface de lobjet.
Une classe est une sorte de container partir duquel sont
engendrs les objets rels qui sappellent des instances de la
classe considre. Elle contient :
Des attributs (ou champs, ou variables dinstances). Les attributs de
la classe dcrivent la structure de ses instances (les objets).
Des mthodes (ou oprations de la classe). Les mthodes dcrivent
les oprations qui sont applicables aux instances de la classe.
Introduction
Membres
8 bisgambiglia@univ-corse.fr
POO POO
Vocabulaire objet :
Hritage : Cest un mcanisme trs puissant qui permet de dcrire des
structures gnriques en transmettant depuis lintrieur dune mme classe
toutes les proprits communes toutes les "sous-classes" de cette classe.
Par construction toutes les sous-classes dune mme classe possdent
toutes les attributs et les mthodes de leur classe parent.
Proprits de l'hritage :
Les attributs et les mthodes peuvent tre modifis au niveau de la sous-
classe qui hrite.
Il peut y avoir des attributs et/ou des mthodes supplmentaires dans une
sous-classe.
Une classe A qui hrite dune classe B dispose implicitement de tous les
attributs et de toutes les mthodes dfinis dans la classe B.
Les attributs et les mthodes dfinis dans A sont prioritaires par rapport aux
attributs et aux mthodes de mme nom dfinis dans
Introduction
9 bisgambiglia@univ-corse.fr
POO POO
UML (en anglais Unified Modeling Language, langage
de modlisation unifi ) est un langage graphique de
modlisation des donnes et des traitements. C'est une
formalisation trs aboutie et non-propritaire de la
modlisation objet utilise en gnie logiciel.
Reprsentation :
UML
EtreHumain
String nom
int taille
int poids
enumsexe
int age
void dormir()
void manger()
a___
Smith
1.82
84
M
28
in
sta
n
c
e
10 bisgambiglia@univ-corse.fr
POO POO
Notion dobjet :
Attributs : Il s'agit des donnes caractrisant l'objet. Ce sont des variables
stockant des informations d'tat de l'objet
Mthodes (appeles parfois fonctions membres): Les mthodes d'un objet
caractrisent son comportement, c'est--dire l'ensemble des actions
(appeles oprations) que l'objet est mme de raliser. Ces oprations
permettent de faire ragir l'objet aux sollicitations extrieures (ou d'agir
sur les autres objets). De plus, les oprations sont troitement lies aux
attributs, car leurs actions peuvent dpendre des valeurs des attributs, ou
bien les modifier
Nom: L'objet possde une identit, qui permet de le distinguer des autres
objets, indpendamment de son tat. On construit gnralement cette
identit grce un identifiant dcoulant naturellement du problme (par
exemple un produit pourra tre repr par un code, une voiture par un
numro de srie, ...)
Objet
11 bisgambiglia@univ-corse.fr
Un objet est un groupe de donnes structures caractris par un
identifiant unique (nom) reprsentant le monde rel.
Exemple : un article en stock est un objet
Un objet est constitu attributs qui caractrisent sa structure
Exemple : un article en stock est un objet caractris par :
rfrence
dsignation
prix unitaire
Quantit
Un objet est manipul par des procdures appeles mthodes qui sont
caractrises par une entte dfinissant leur nom, les paramtres d'appel et de
retour pour chacune d'elle
Exemple : Nous pouvons dfinir comme mthodes de l'objet ARTICLE
PrixTtc : Mthode permettant de calculer le prix TTC d'un article
SortieArticle : Mthode permettant de diminuer la quantit en stock
EntreeArticle : Mthode permettant d'augmenter la quantit en stock
POO POO
Objet
12 bisgambiglia@univ-corse.fr
POO POO
Objet
Exemple dobjet :
Nom:
Voiture
Attributs :
Couleur
Type
Moteur
Immatriculation
Fonction :
Rouler()
Exemple dobjet :
Nom:
Chien
Attributs :
Tatouage
Couleur
Age
Fonction :
Manger()
Sortir()
Dormir
3
13 bisgambiglia@univ-corse.fr
POO POO
Notion de classe :
On appelle classe la structure d'un objet, c'est--dire la
dclaration de l'ensemble des entits qui composeront un
objet. Un objet est donc "issu" d'une classe, c'est le produit
qui sort d'un moule. En ralit on dit qu'un objet est une
instanciation d'une classe, c'est la raison pour laquelle on
pourra parler indiffremment d'objet ou d'instance
(ventuellement d'occurrence).
Une classe est compose de deux parties:
Les attributs (parfois appels donnes membres): il s'agit des
donnes reprsentant l'tat de l'objet
Les mthodes (parfois appeles fonctions membres): il s'agit des
oprations applicables aux objets
Classe
14 bisgambiglia@univ-corse.fr
POO POO
Classe
Exemple dobjet :
Nom:
aaa
Attributs :
Smith
1.82
M
82
28
Fonction :
Dormir()
Manger()
Travailler()
Exemple de classe :
Nom:
EtreHumain
Attributs :
Nom
Taille
Sexe
Poids
Age
Fonction :
Dormir
Manger
Travailler
La dfinition des
caractristiques de
l'objet constitue la
classe de l'objet
la cration d'objet
rpondant la classe
s'appelle
l'instanciation
15 bisgambiglia@univ-corse.fr
Classe en C# :
POO POO
Classe
class EtreHumain {
// Attributs
string nom;
int age;
int taille;
int poids;
enumsexe{homme,femme};
// Fonctions
void dormir(int temps);
void manger();
void travailler();

}
// instanciation :
// type nom = new constructeur()

EtreHumain aaa = new EtreHumain();


EtreHumain aab = new EtreHumain();

Les fonctions ont une Les fonctions ont une


influence sur les attributs, influence sur les attributs,
par exemple la fonction par exemple la fonction
manger manger() peut augmenter () peut augmenter
la valeur de l la valeur de l attributs attributs
poids poids
16 bisgambiglia@univ-corse.fr
POO POO
Dfinitions :
L'encapsulation en gnral est la notion de mettre une chose dans une
autre.
En programmation oriente objet, lencapsulation est l'ide de protger
l'information contenue dans un objet et de ne proposer que des mthodes
de manipulation de cet objet.
La fusion d'un bloc de code et d'un bloc de donnes est un concept
nouveau, celui d'encapsulation.
Principe :
L'encapsulation est base sur la notion de services rendus. Une classe
fournit un certain nombre de services et les utilisateurs de cette classe
n'ont pas connatre la faon dont ces services sont rendus.
Il faut donc distinguer dans la description de la classe deux parties :
La partie publique, accessible par les autres classes,
La partie prive, accessible uniquement par les mthodes de la classe.
Encapsulation
17 bisgambiglia@univ-corse.fr
Classe en C# :
POO POO
Encapsulation
class EtreHumain {
// Attributs
public string nom;
private int age;
private int taille;
private int poids;
public enumsexe{homme,femme};
// Fonctions
public void dormir(int temps);
public void manger();
public void travailler();

}
Il est vivement recommand
de mettre les attributs d'une
classe dans la partie prive,
ainsi protgs, les membres
privs d'une classe ne sont
pas directement modifiables.
Un objet est donc une bote
noire autonome possdant
des liaisons avec le monde
extrieur : ses attributs (si ils
sont publiques) et ses
mthodes.
18 bisgambiglia@univ-corse.fr
LOO LOO
Encapsulation
C# C#
4
19 bisgambiglia@univ-corse.fr
POO POO
Dfinitions :
Lhritage est un principe de la programmation oriente objet,
permettant entre autres la rutilisabilit et l'adaptabilit des
objets. Elle se nomme ainsi car le principe est en quelque
sorte le mme que celui dun arbre gnalogique.
L'hritage est le fait de pouvoir, partir d'une classe donne,
crer une nouvelle classe possdant tout ou seulement
certaines des caractristiques (attributs et fonction) de cet
objet plus des modifications et ajout sur son comportement
(c'est dire sur ses mthodes). On crer ainsi un deuxime
objet qui drive du premier et hrite d'une partie de ces
caractristiques.
Hritage
! ! 20 bisgambiglia@univ-corse.fr
POO POO
Concepts de lhritage :
Lhritage permet de crer de nouvelles classes partir de
classes existantes.
Les classes drives obtenues sont des classes filles ,
classes drives ou sous classes .
Les classes dorigine sont dites des super classes , classes
de base ou classes parentes .
Les sous classes peuvent hriter des attributs de la super
classe dont elles sont issues.
Les sous classes peuvent avoir des attributs et des mthodes
qui leur sont propres.
Certaines mthodes dune super classe peuvent tre redfinies
dans les sous classes issues de celle-ci.
Hritage
21 bisgambiglia@univ-corse.fr
Notation :
ClasseDeBase : CLASSE
Priv:
// membres privs ne sont accessibles que par les membres de la
classe
Public :
// membres publics sont accessibles par tous les membres de
lapplication qui utilisent la classe
Reprsentation :
POO POO
Hritage
EtreHumain
int taille
int poids
enumsexe
int age
void dormir()
void manger()
Enfant
int taille
int poids
enumsexe
int age
string ecole
void dormir()
void manger()
void jouer()
22 bisgambiglia@univ-corse.fr
Classe en C# :
POO POO
Hritage
class EtreHumain {
// Attributs
public string nom;
private int age;
private int taille;
private int poids;
public enum
sexe{homme,femme};
// Fonctions
public void dormir(int
temps);
public void manger();
public void travailler();

}
class Enfant : EtreHumain {
// Attributs
public string ecole
// Fonctions
public void jouer(int temps)

}
La nouvelle classe - la classe
drive - gagne toutes les
donnes non prives et le
comportement de la classe de
base en plus de toutes les autres
donnes ou comportements
qu'elle dfinit pour elle-mme.
23 bisgambiglia@univ-corse.fr
LOO LOO
Hritage
C# C#
24 bisgambiglia@univ-corse.fr
POO POO
Dfinitions :
En informatique, le polymorphisme est l'ide d'autoriser le
mme code tre utilis avec diffrentes classes, ce qui
permet des implmentations plus abstraites et gnrales.
Le polymorphisme est li l'hritage. Il permet aux utilisateurs
d'accder des objets diffrents comme s'ils taient
identiques sans se proccuper du comportement interne qui
lui peut diffrer. Le polymorphisme permet des objets
drivant d'une mme racine d'avoir la mme interface avec le
monde tout en ayant une structure interne diffrente
(attributs et mthodes). C'est aussi un des lments majeur
dans la rutilisation du code.
Polymorphisme
5
25 bisgambiglia@univ-corse.fr
POO POO
Principe :
Plusieurs classes peuvent possder une mthode de mme
nom. Suivant la nature de l'objet auquel elle doit s'appliquer,
on appliquera telle ou telle mthode. Le polymorphisme
consiste appeler la bonne mthode d'aprs le type de l'objet
implment.
Exemple :
Polymorphisme
public class A {
public void affiche() {
Console.WriteLine("type A"); }
}
public class B : A {
public void affiche() {
Console.WriteLine("type B"); }
}
A v1 = new A();
v1.affiche();
B v2 = new B();
v2.affiche();
26 bisgambiglia@univ-corse.fr
POO POO
En programmation oriente objet, le constructeur d'une classe
est une mthode particulire appele lors de l'instanciation.
Lors de la dclaration d'une instance de classe (EtreHumain H =
new EtreHumain()), une mthode est appele automatiquement.
Cette mthode qui permet d'initialiser les objets de la classe dont
elle dpend est appele constructeur. Elle est appele aprs
l'allocation d'espace mmoire destin l'objet.
Inversement, dans la plupart des langages une mthode est
excute automatiquement quand l'instance devient hors de
porte. Cette mthode qui est appele avant la libration de
l'espace mmoire associ l'objet est appele destructeur.
L'instanciation d'une classe correspond la cration d'une
instance de cette classe, c'est--dire d'un objet.
Constructeur et Destructeur
27 bisgambiglia@univ-corse.fr
Classe en C# :
POO POO
class EtreHumain {
// Attributs
public string nom;
private int age;
private int taille;
private int poids;
public enumsexe{homme,femme};
// Constructeur
public EtreHumain(string nom; int age, int taille, int poids, int sexe)
{
nom= nom;
age = age;
taille = taille;
poids = poids;
sexe = sexe;
}
// Fonctions
public void dormir(int temps);

}
Constructeur et Destructeur
EtreHumain a = new EtreHumain(Dus,22,1.78,77,0)
EtreHumain b = new EtreHumain(Smith,42,1.64,52,1)
28 bisgambiglia@univ-corse.fr
Ce qu'il faut retenir :
La diffrence entre classe et objet . Une classe, c'est
un ensemble de variables et fonctions (attributs et mthodes).
Un objet, c'est une copie de la classe pour pouvoir l'utiliser.
Le principe d'encapsulation. Tous vos attributs doivent
tre privs. Pour les mthodes, peu importe leur visibilit.
On dclare une classe avec le mot-cl class suivi du nom de la
classe, et enfin deux accolades ouvrantes et fermantes qui
encercleront la liste des attributs et mthodes.
POO POO
Conclusion
29 bisgambiglia@univ-corse.fr
LOO LOO
C#
30 bisgambiglia@univ-corse.fr
LOO LOO
C#
6
31 bisgambiglia@univ-corse.fr
using System;
using System.Collections.Generic;
using System.Text;
namespace CsAlgorithmique
{
class AppliOperat_Arithme
{
static void Main(string[] args)
{
int x = 4, y = 8, z = 3, t = 7, calcul;
calcul = x * y - z + t;
System.Console.WriteLine(" x * y - z + t = " + calcul);
calcul = x * y - (z + t);
System.Console.WriteLine(" x * y - (z + t) = " + calcul);
calcul = x * y % z + t;
System.Console.WriteLine(" x * y % z + t = " + calcul);
calcul = ((x * y) % z) + t;
System.Console.WriteLine("(( x * y) % z ) + t = " + calcul);
calcul = x * y % (z + t);
System.Console.WriteLine(" x * y % ( z + t ) = " + calcul);
calcul = x * (y % (z + t));
System.Console.WriteLine(" x *( y % ( z + t)) = " + calcul);
}
}
}
Rsultats d'excution de ce programme :
x * y - z + t = 36
x * y - (z + t) = 22
x * y % z + t = 9
(( x * y) % z ) + t = 9
x * y % ( z + t ) = 2
x *( y % ( z + t)) = 32
32 bisgambiglia@univ-corse.fr
namespace CsAlgorithmique
{
class Application1
{
static void Main(string[] args)
{ /* inverse d'une suite de caractre dans un tableau
par permutation des deux extrmes */
char[] Tablecar ={ 'a', 'b', 'c', 'd', 'e', 'f' };
int i, j;
System.Console.WriteLine("tableau avant : "
+ new string(Tablecar));
for (i = 0, j = 5; i < j; i++, j--)
{
char car;
car = Tablecar[i];
Tablecar[i] = Tablecar[j];
Tablecar[j] = car;
}
System.Console.WriteLine("tableau aprs : "
+ new string(Tablecar));
}
}
}
33 bisgambiglia@univ-corse.fr
namespace CsAlgorithmique
{
class Application2
{
static void Main(string[] args)
{ // recherche squentielle dans un tableau
int [ ] table= {12,-5,7,8,-6,6,4,78};
int elt = 4, i;
for ( i = 0 ; i<8 ; i++ )
if (elt==table[i]) break ;
if (i == 8)
System.Console.WriteLine("valeur : "
+elt+" pas trouve.");
else
System.Console.WriteLine ("valeur : "
+elt+" trouve au rang :"+i);
}
}
}
34 bisgambiglia@univ-corse.fr
Sources Sources
1. http://www.plb.fr/ccm/poo/poointro.php
2. rzr.online.fr/docs/net3d/lexique.htm
3. http://pagesperso-
orange.fr/isabelle.thieblemont/poo/pooch2.html
4. http://fr.wikipedia.org/wiki/Constructeur_%28programmatio
n_informatique%29
5. http://msdn.microsoft.com/fr-
fr/library/acy3edy3%28VS.80%29.aspx
6. http://www.siteduzero.com/tutoriel-3-147183-tp-mini-jeu-de-
combat.html
7. http://fr.wikipedia.org/wiki/Unified_Modeling_Language
8. http://www.yevol.com/csharp/classes/introduction1.htm
9. Le langage C# dans .Net http://www.discala.net/
35 bisgambiglia@univ-corse.fr
A Savoir !!! A Savoir !!!
Pointeur (passage par valeur et par rfrence)
Algorithmes de tri
Gestion (criture / lecture) des fichiers
Pile et File (structure de donne)
Les arbres (structure de donne)
Les listes (type de donne)
La complexit des algorithmes
Algorithmes fonctionnels
Programmation fonctionnelle
Makefile
Notions compl Notions compl mentaires mentaires