Introduction - UNCHK-P10 STNC2
Introduction - UNCHK-P10 STNC2
Introduction - UNCHK-P10 STNC2
Introduction
1. INTRODUCTION
La crise du logiciel
« Alors que le matériel informatique a fait, et continue de faire, des progrès très rapides, le logiciel, l'autre ingrédient de l'informatique, traverse une véritable
crise. Etant donné que cette crise a été décelée en 1969 déjà et qu'elle dure toujours, il serait plus approprié de parler d'une maladie chronique.».
Le coût de développement d'un logiciel est presque impossible à prévoir et le délai de livraison n'est que rarement respecté. On cite ainsi des dépassements
moyens du coût budgété et du délai prévu respectivement de 70% et 50%.
La qualité du logiciel livré est souvent déficiente. Le produit ne satisfait pas les besoins de l'utilisateur, il consomme plus de ressources que prévu et il est à
l'origine de pannes.
La maintenance du logiciel est difficile, coûteuse et souvent à l'origine de nouvelles erreurs. Mais en pratique, il est indispensable d'adapter les logiciels
car leurs environnements d'utilisation changent et les besoins des utilisateurs évoluent.
Il est rare qu'on puisse réutiliser un logiciel existant ou un de ses composants pour confectionner un nouveau système, même si celui-ci comporte des
fonctions similaires. Tout amortissement sur plusieurs projets est ainsi rendu impossible.
cette augmentation des coûts d’un Système Informatique (SI) est surtout due aux frais de maintenance, situés actuellement entre 40% et 75% du coût total
d'un système informatique (matériel et logiciel). Or ces frais de maintenance résultent avant tout de la qualité déficiente du logiciel, au moment de sa
La raison de fond
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 1/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
Le fait étant qu'il est beaucoup plus difficile de créer des logiciels que le suggère notre intuition. Comme les solutions informatiques sont essentiellement
constituées de composants immatériels, tels des programmes, des données à traiter, des procédures et de la documentation, on sous-estime facilement
leur complexité.
La complexité
La réalité
La solution
Pour maîtriser la complexité des systèmes logiciels, il convient de procéder selon une démarche bien définie, de se baser sur des principes et méthodes, et
d'utiliser des outils performants. On arrive ainsi à gérer des projets complexes et à élaborer scientifiquement des solutions.
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 2/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
o La technologie évolue
o Demandez à un programmeur…
o Une spécification complète doit être aussi détaillée que le code luimême
notre intuition.
En conséquence…
• Ceci n’est pas un cours sur un processus de développement logiciel! Toutefois, il est difficile d’explorer les notions d’analyse et de conception sans
évoquer la façon dont leurs différentes étapes s’articulent entre elles.
• Un processus de développement logiciel sont les étapes de l’organisation et de la gestion du développement logiciel.
Cycle de développement
Ainsi il est possible de schématiser le cycle de développement d’un logiciel type selon la structure de cycle de développement suivante:
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 3/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
Afin d'être en mesure d'avoir une méthodologie commune entre le client et la société de service réalisant le développement, des modèles de cycles de vie
ont été mis au point définissant les étapes du développement ainsi que les documents à produire (livrables)
permettant de valider chacune des étapes avant de passer à la suivante. A la fin de chaque phase, des revues sont organisées.
L’Orientée Objet - OO
L’ Orientée Objet cherche ainsi donc à établir et à utiliser des principes sains d'ingénierie dans le but de développer économiquement du logiciel qui est
fiable et qui fonctionne efficacement sur des machines réelles.
«L’ingénieur comme l’artiste doit avoir une connaissance approfondie des matériaux de sa discipline. Quand on utilise des méthodes orientées objets pour
analyser ou concevoir un système logiciel complexe, les éléments de construction fondamentaux sont les classes et les objets.»
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 4/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
L’approche orientée objet
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 5/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
• Analyse orientée-objet
• Conception orientée-objet
• Programmation orientée-objet
• Historiquement, la programmation orientée-objet est apparue en premier (Simula : 1968, Smalltalk : 1970,etc.). Puis les concepts objets ont remonté les
niveaux d’abstraction, d'abord vers la conception, puis l’analyse au début des années 90.
• Dans le cadre de ce cours nous mettrons un focus sur l’Analyse Orientée Objet (AOO) et la Conception Orientée Objet (COO) en partant des besoins du
client.
1. Objet
2. Abstraction
4. Classe
5. Classification et héritage
6. Encapsulation
7. Polymorphisme
An object has state, exhibits some well-defined behavior, and has a unique identity.
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 6/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
1. Objet
• Objet = entité aux frontières bien définies, possédant une identité, encapsulant un état et un comportement.
. Objet - Etat
Il est défini à l’aide d’attributs (appelés aussi données membres ou propriétés). Ce sont des variables associées à l’objet et qui stockent des valeurs (des
informations sur l'état de l'objet).
. Objet - Comportement
• il est caractérisée par des méthodes (appelées parfois fonctions membres ou opérations) qui permettent de modifier l’état de l’objet.
• Une méthode rattachée à l’objet permet de déclencher un des comportements associés à l’objet.
• Il n’est pas possible d’agir directement sur les données d’un objet pour modifier son état; il est nécessaire de passer par ses méthodes. On dit qu'on «
envoie un message » (faire une requête) à un objet.
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 7/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
. Objet - Identité
L'objet possède une identité, qui permet de le distinguer des autres objets, indépendamment de son état.
Exemple:
Numéro de châssis
Plaque d’immatriculation
. Objet - Résumé
• Un objet est une variable améliorée: il stocke les données, mais on peut effectuer des requêtes sur cet objet (on demande à l’objet de faire des opérations
sur lui-même), en envoyant un message à cet objet. Ceci est équivalent à un appel de fonction.
• Méthode =
• L’exécution d’un système objet repose sur les objets et les liens entre objets.
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 8/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
Abstraction focuses upon the essential characteristics of some object, relative to the perspective of the viewer.
2. Abstraction
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 9/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
o informatique - une liste chaînée
Composer ou créer un objet à partir d’autres objets est le cœur de la programmation orientée objet. Cela permet:
o Par exemple: Un programme de dessin; il se composera d’objets tels que des fenêtres, des menus, un cadre de dessin, une palette d’outils, une palette de
couleur, etc…L’application de dessin est construite en ressemblant et en créant ses classes de composants et en les regroupant en un ensemble intégré.
o Par exemple on peut utiliser la bibliothèque de base de java (Java JDK) pour assembler rapidement et simplement les pièces d’un programme.
o Par exemple: on peut utiliser les classes de l’application de dessin pour une application de publication.
o Si l’agrégat composite est détruit, alors toutes ses parties le sont aussi
A class represents a set of objects that share a common structure and a common behavior.
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 10/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
4. Classe
• Une classe (ou type d’objets) représente une famille d’objets qui partagent des propriétés communes:
o Les objets qui ont les mêmes états et les mêmes comportements.
• Un programme OO est constitué de classes qui permettent de créer des objets qui s’envoient des messages.
L’ensemble des champs définissent l’état d’un objet (chaque objet a ses données propres).
• Méthodes (appelés aussi fonctions membres ou comportement). Les méthodes définissent un ensemble d’opérations applicables à l’objet (On manipule
les objets par des appels de ses méthodes).
o Une interface définit toutes les opérations qu’on peut appliquer à l’objet (définit tous ce qu’il est possible de "faire" avec un objet).
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 11/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
4. Arbre de classification
• fournit une abstraction claire de quelque chose tiré du vocabulaire du domaine du problème ou de celui de la solution;
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 12/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
• fournit une séparation nette entre les spécifications de l’abstraction et son implémentation;
5. Classification et héritage
• La réutilisation des objets ne se limite pas à leur composition. Elle exploite aussi une capacité puissante de la
programmation orientée objet connue sous le nom d’héritage. L’héritage permet non seulement aux objets d’être utilisés en
tant que tels, mais il autorise aussi la création de nouveaux objets obtenus par extension et façonnage d’objets existants.
• La classification est une méthode générale d’organisation du savoir et elle est utilisé ailleurs que dans la programmation
orientée objet.
• L’héritage est le mécanisme de transmission des caractéristiques d’une sur-classe vers ses sous-classes.
• Quand une classe en étend une autre, elle hérite de ses données et de ses méthodes. On parle d’héritage simple. Si elle
• Une classe hérite des attributs, des méthodes et des associations de toutes ses sur-classes.
o Généralisation : regroupement des caractéristiques communes à un ensemble de classes au sein d’une surclasse plus générale.
o Spécialisation : ajout de caractéristiques spécifiques dans une sous-classe, ou adaptation des caractéristiques transmises.
o Une instance d’une sous-classe est également instance de toutes ses sur-classes.
6. Encapsulation
• L’encapsulation est le faite qu’un objet renferme ses propres attributs et ses méthodes. Les détails de l’implémentation d’un objet sont masqués aux
autres objets du système à objets. On dit qu’il y a encapsulation de données et du comportement des objets.
o Le mode public avec lequel les attributs seront accessibles directement par l’objet luimême ou par d’autres objets. Il s’agit du niveau le plus bas de
protection.
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 13/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
o Le mode private avec lequel les attributs de l’objet seront inaccessibles à partir d’autres objets : seules les méthodes de l’objet pourront y accéder. Il s’agit
du niveau le plus fort de protection.
o Le mode protected : cette technique de protection est étroitement associée à la notion d’héritage. Elle se comporte comme private avec moins de
restriction. Une classe dérivée à un accès aux membres protected mais pas aux membres private.
With polymorphism, large case statements are unnecessary, because each object implicitly knows its own type.
7. Polymorphisme
• Une entité est polymorphe si à l’exécution elle peut se référer à des instances de classe différentes.
• Le Polymorphisme veut dire que le même service peut avoir un comportement différent suivant la classe dans laquelle il est utilisé. C’est un concept
fondamental de la programmation objet, indispensable pour une utilisation efficace de l’héritage.
• Le polymorphisme permet d’éviter les codes qui comportent de nombreux embranchements et tests. En d’autres termes, le polymorphisme est un
mécanisme qui permet à une sous classe de redéfinir une méthode dont elle a hérité tout en gardant la même signature de la méthode.
The task of the software development team is to engineer the illusion of simplicity.
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 14/15
21/09/2024 06:52 Introduction | UNCHK-P10 STNC2
L’excellence
«L'excellence est un art que l'on n'atteint que par l'exercice constant. Nous sommes ce que nous faisons de manière répétée. L'excellence n'est donc pas une
action mais une habitude.»
https://u42f52ze5ds7-1.unchk.sn/mod/book/tool/print/index.php?id=6039&chapterid=2446 15/15