Vous êtes sur la page 1sur 5

Description de la formation Conception et Programmation Objet

Cette formation Programmation Objet vous permet de comprendre l'intérêt


et toutes les possibilités offertes par le développement objet par rapport à
l'approche structurée classique.

Les limites de cette dernière sont présentées de façon progressive afin que
vous vous rendiez compte par vous-même, grâce à de nombreux ateliers
pratiques, qu'il existe une « autre façon » de penser le développement.

Mais au-delà de la rupture disruptive par rapport à l’approche structurée


classique il s'agit tout simplement de savoir concevoir un modèle de classes
pertinent pour ses applications en respectant les bonnes pratiques et en
disposant d’une architecture conforme aux standards professionnels.

Vous apprendrez le vocabulaire objet (classe, instance, objet, méthode,


propriétés, héritage, etc.) et comment utiliser des classes existantes ou en
concevoir de nouvelles pour vos applications

La modélisation (UML) ainsi qu’une présentation que les outils généralement


utilisés en entreprise. La conception fera également allusion aux Design
Patterns afin de vous orienter vers les bonnes pratiques dans vos futurs
programmes objets en sachant utiliser des modèles existants.

Afin de ne pas rester uniquement conceptuel, nous vous montrerons des


exemples d’implémentation des concepts objets dans les principaux langages
objets du moment (Python, Java, C++) ainsi que les apports des
environnements de développement (IDE) pour l’utilisation des objets en
programmation (Visual Studio, Eclipse).

Objectifs

Objectif opérationnel :

Savoir concevoir un modèle de classes et comprendre les différences entre


l'approche objet et la programmation structurée.

Objectifs pédagogiques :
À l'issue de cette formation Conception et Programmation objet, vous
aurez acquis les connaissances et compétences nécessaires pour :

 Comprendre les apports de la programmation objet par rapport à la


programmation structurée
 Comprendre les principes et les spécificités de la conception Objet
 Passer d'une approche fonctionnelle à une approche Objet
 Savoir concevoir un modèle de classes pour ses applications
 Savoir modéliser ce modèle à l’aide d’UML (introduction)
 Comprendre l’apport des Frameworks dans une approche Objet
 Savoir utiliser les Design Patterns (introduction)
 Mettre en œuvre les concepts objets à travers un programme simple

À qui s'adresse cette formation ?

Public :

Ce cours de Conception et Programmation Objet s’adresse aux développeurs


ou aux chefs de projet pratiquant la programmation structurée traditionnelle.
Le public visé cherche à comprendre l’approche objet et comment mettre en
œuvre ses modalités concrètes lors de futurs développements.

Cette formation intéressera également tout développeur (objet ou non)


désirant être plus à l’aise dans l’utilisation et/ou la conception des classes
dans ses développements.

Prérequis :

Les participants à cette formation Programmation Objet possèdent une


première expérience en programmation structurée (non objet).
Quel que soit le langage utilisé (C, Cobol, Fortran, Pascal, Shell...), il est
important d’avoir déjà développé et livré une application, même de taille
modeste, seul ou en équipe.

Contenu du cours Conception et Programmation Objet

Première journée

Travaux Pratiques d'introduction programmation et conception objet

Un TP évolutif, de la conception du modèle objet à la mise en œuvre


(assistée), en passant par la maintenance, permettra de progressivement
prendre la mesure de l'intérêt de l'approche objet. Nous nous appuyons sur un
système de gestion (simplifiée) des demandes de formation au sein d'un
département de ressources humaines.

De la programmation structurée (fonctionnelle) vers la programmation


objet

Bien comprendre les limites de la programmation structurée


Les objectifs du monde Objet
En quoi l'approche objet facilite-t-elle les ateliers de développement logiciels ?
Que reste-t-il de la programmation structurée dans la programmation objet ?

Travaux Pratiques

Sur la base d'un programme simple, l'intervenant commente les grandes


lignes du logiciel, les structures de données et les traitements utilisés
(volontairement limités). Les participants sont amenés à répondre à certaines
questions concernant la lisibilité des traitements, des variables, et sur
l’évolution du logiciel. Les limites de la programmation classique sont
volontairement amplifiées afin d'être clairement identifiées.

Apprendre à concevoir des classes d'objet

Définir un comportement commun au sein d'une classe


Comment « reconnaître » une classe ?
Savoir faire un effort d'abstraction et rester conceptuel
Liens entre classe et objets (instance)
Exemples de « mauvaises » classes
Savoir définir un dictionnaire de données
Et en extraire les attributs d'une classe
Savoir recenser les états d'un objet
L'origine et la fin d'un objet (constructeurs, destructeurs)
Définir les traitements dans des méthodes
Que deviennent les fonctions traditionnelles ?
Les risques de « retomber » dans le modèle données/fonctions

Travaux Pratiques

« Reconception » objet de l'application précédente.


Élaboration du dictionnaire de données, des traitements, et des flux.
Conception des classes

Deuxième journée

Visibilité entre les objets


Qu'entend-on par « encapsuler » les données ?
Pourquoi utiliser des accesseurs ?
Voir les objets comme « responsables » de leur comportement
Visibilité des attributs entre les objets (publique, protégé, privé)
Visibilité des méthodes

Travaux Pratiques

Exemples de non encapsulation de données et d’expositions de méthodes


amenant à une lisibilité et une maintenance complexe. Reconception « propre
»

Liens entre les classes

La puissance de l'héritage
Réflexions sur l'héritage multiple
Ne pas confondre composition et héritage
Intérêt du polymorphisme
La surcharge des opérateurs
Appels de méthode d'une autre classe (message)

Travaux Pratiques

Évolution de la conception vers un modèle de hiérarchie des classes


Conception de l'encapsulation des traitements

Compléments sur la conception objet

Qu'est-ce qu'une méthode virtuelle ?


Et une classe abstraite ?
Intérêt des classes abstraites sans implémentation (interface)
S'appuyer sur une manière de faire éprouver (design patterns)
Exemples de design patterns

Travaux Pratiques

Amélioration du modèle précédent avec l'utilisation de classes abstraites

Troisième journée

Introduction à la modélisation objet avec UML

UML (Unified Modeling Language) ne représente pas une démarche mais un


formalisme
Les deux types de vues (statiques, dynamiques)
Tour d'horizon des différents diagrammes UML
Modélisation d'une classe
La visibilité des attributs (publique, protégé, privé)
Les diagrammes d'objet (attributs, méthodes, identité)
Synthèse sur les diagrammes liés aux vues dynamiques

Travaux Pratiques

Formalisation avec UML du diagramme de classes de notre application.

Présentation des Design Patterns

Principes des solutions de conception cataloguées


Méthodologie : définition des besoins techniques, des classes "types" du
pattern, des collaborations entre classes
Présentation des patrons de conception : origine, les 3 familles (création,
structuration et comportement), autres patrons
Présentation des principaux patrons de conception de chaque catégorie
Documentation d’un patron de conception et présentation des différents
diagrammes UML utilisés

Travaux Pratiques

Quizz : On présente une problématique et il faut choisir le bon patron (Pattern)

Mise en œuvre des concepts objets (Java ou C#)

Définir une classe et ses méthodes


Mettre en œuvre l’’encapsulation des données
Mise en œuvre de l'héritage
Présentation rapide des IDE Visual Studio et Eclipse
L’aide apportée aux développeurs pour manipuler les classes/objets
Les apports des frameworks pour le développeur objet
Les différentes familles (web, data, communication, etc.)

Travaux Pratiques

Nous implémentons les classes de notre application précédente en Java sous


Eclipse ou en C# sous Visual Studio selon l’environnement préféré par les
participants. Il s’agit d’une simple prise en main et le code est volontairement
très simple car on ne prévoit pas de détailler la syntaxe de ces langages.
On commente un exemple de code accédant à une base de données
(connexion, chargement de données) pour comprendre comment les classes
d’un framework « cohabitent » avec les classes métiers que nous avons
créés.

Vous aimerez peut-être aussi