Evolution MM

Formations à l'informatique
Découvrez la différence ENI

Lien accueil

Téléchargez le Calendrier des formations

Nantes, Rennes, Niort, Nice, Paris

Janvier à Juillet 2017

Rechercher
Rechercher une formation
 

La conception orientée objet (action collective FAFIEC "Evoluer vers le développement objet" réf. 26851)

ENI Service a été retenue par le FAFIEC dans le cadre de l'action collective de formation "Evoluer vers le développement objet .NET et Java". Si vous êtes salarié d'une entreprise cotisant au FAFIEC, vous pouvez bénéficier d'une prise en charge à 100% du coût de cette formation.

Dans cette formation, vous apprendrez les concepts, le vocabulaire associé et les avantages de la conception orientée objet. Vous apprendrez également à modéliser à l'aide du langage UML et vous commencerez à traduire la modélisation en code source Java ou C#.

Public :

  • Développeurs, analystes programmeurs, chefs de projets.

Objectifs :

  • Comprendre les différents principes liés à la programmation orientée objet et savoir les appliquer ;
  • Modéliser un projet logiciel en UML ;
  • Comprendre l'impact de la modélisation sur la génération de code ;

Pré-requis :

  • Avoir une expérience de programmation, quel que soit le langage d'origine ;
  • Avoir développé et livré une application en autonomie ou en équipe.

Contenu pédagogique

Partie 1 : Les fondamentaux de l'approche objet

Les évolutions du modèle de développement logiciel

  • Historique des langages
  • Limite des langages non objet
  • Quels sont les objectifs d'un modèle de programmation ?

Le modèle objet, oui mais pourquoi ?

  • Quels sont les apports du modèle objet ?
  • Une analyse plus simple et proche du réel
  • Les concepts associés : abstraction, encapsulation, héritage, polymorphisme, …
  • Vers une plus grande flexibilité, évolutivité et réutilisation
  • Modélisation associée : UML
    • Les objectifs d'UML
    • Pour commencer : le diagramme de classe, le diagramme de séquence

Les caractéristiques des objets

  • Objets et messages
  • Relation entre classe et objet
  • Encapsulation et réutilisation
  • Héritage et polymorphisme
  • Classes, classes abstraites et interfaces

Présentation des concepts objet par la pratique (langage C# ou Java)

  • Démonstration des concepts
  • Découverte du code
  • Commentaires et échanges

Travaux pratiques

  • Conception de classes
  • Les membres d'instance et les membres de classes
  • Création d'objets
  • Appel de méthodes et de propriétés d'un objet
  • Mise en œuvre de l'encapsulation avec les modificateurs d'accès
  • Bénéfices de l'encapsulation
  • Mise en œuvre de l'héritage
  • Surcharges et redéfinitions de méthodes
  • Mise en œuvre des classes abstraites et des interfaces
  • Mise en œuvre du polymorphisme

Partie 2 : Concevoir efficacement en objet

Processus de développement en mode projet - Introduction au Processus Unifié

  • Comment les besoins guident la démarche ?
  • Les notions fondamentales du Processus Unifiée
    • Construction incrémentale et itérative
    • Amélioration continue
    • Les différentes activités et phases
  • Adéquation avec la méthode de gestion de projet Agile Scrum

Evolution des techniques de conception de logiciels

  • Mise en place d'une architecture de développement
    • Les objectifs recherchés
    • La démarche
    • Les solutions : composants, patterns, frameworks

Les composants

  • Architectures distribuées à base de composants
  • Conception et réutilisation des composants : les bonnes pratiques

Les Design Patterns

  • Que sont les Designs Patterns ?
  • Nécessité des patterns
  • L'approche UML
  • Architecture des Design Patterns et répartition des responsabilités
  • Les 3 familles de patterns GoF : construction, structuration, comportement
  • Travaux pratiques : Mise en œuvre en langage C# ou Java de quelques patterns GoF : fabrique simple, fabrique abstraite, singleton, façade, adaptateur, objet composite, itérateur, état…

Les Frameworks

  • Les objectifs recherchés dans la conception d'un framework
  • Les avantages pour le développement logiciel

Travaux Pratiques

  • Identifier les besoins définis par un cahier des charges et savoir les classer par priorité
  • Identifier le périmètre des différentes itérations pour un projet donné
  • Définir les éléments d'une architecture logicielle et faire des choix de technologies par rapport à des contraintes techniques données
  • Identifier des contraintes et problématiques pouvant être solutionnées par application de patterns, et savoir choisir le pattern approprié.

Partie 3 : La modélisation UML

Présentation d'UML

  • Les axes et les vues de modélisation UML
  • Présentation générales des différents diagrammes
  • Quelle démarche adopter avec UML ?
    • Présentation de différentes démarches de modélisation
  • Les outils pour UML
    • Les fonctionnalités attendues d'un AGL (Atelier de Génie Logiciel)
    • Présentation et comparatif de plusieurs outils de modélisation actuels
    • La génération de code

La modélisation des besoins : l'axe fonctionnel

  • Comment commencer ?
  • Introduction aux méthodes permettant de recueillir les besoins d'un système
  • L'analyse fonctionnelle à partir du cahier des charges
    • Analyser et identifier pour réaliser la description des cas d'utilisation
    • Identification des différents scénarii
  • Des cas d'utilisation au diagramme de cas d'utilisation
    • Les éléments de notation du diagramme de cas d'utilisation
  • Finaliser le diagramme de cas d'utilisation
    • Les relations entre les cas d'utilisation, les différents types d'acteurs, les sous-systèmes, ….
    • Préparer l'axe de modélisation suivant

La modélisation des comportements du système et des objets : l'axe dynamique

  • Les notions relatives à la modélisation de la dynamique
    • Les messages, les événements et les états
  • Les diagrammes d'interaction
    • Le diagramme de séquence
    • Le diagramme de communication
  • Les diagrammes complémentaires
    • Le diagramme de timing
    • Le diagramme de vue d'ensemble des interactions
  • Formalisation des scénarii en diagrammes d'interactions
  • Modélisation des activités : le diagramme d'activité
  • Modélisation du cycle de vie des objets : le diagramme d'états-transitions

La modélisation de la structure des objets : l'axe statique

  • Identification des classes à partir des objets identifiés dans les axes de modélisation précédents
  • Le formalisme du diagramme de classe
    • Représentation des classes concrètes et classes abstraites
    • La notion de stéréotypes
  • Première représentation des classes d'objets sur le diagramme de classe
    • Les attributs et opérations membres
    • Les types de données
    • La visibilité des membres
  • Les associations entre classes
    • Liens d'associations, rôles, cardinalité, navigation…
  • Les différents types d'associations
    • L'agrégation et la composition
    • La généralisation et la spécialisation : modélisation de l'héritage
    • Définir des contraintes sur les associations
  • Utilisation des interfaces
    • Les spécificités des interfaces
    • La relation de réalisation
  • Identifier et représenter des objets spécifiques
    • Le diagramme d'objets
    • Le diagramme de structure composite

La modélisation de l'architecture du système

  • L'architecture logicielle et matérielle
  • Organiser l'architecture logicielle du système avec ses objets
    • Identification des paquetages (packages) fonctionnelles
    • Identification des couches logicielles
    • La modélisation des paquetages et de leurs relations : le diagramme de paquetage
  • Des objets aux composants
    • Identification des composants logiciels par assemblage d'objets
    • Le diagramme de composants
  • L'architecture matérielle
    • Décrire le système dans son environnement de fonctionnement.
    • Le diagramme de déploiement

Travaux Pratiques

  • Analyse d'un cahier des charges
  • A partir d'une pré-analyse et de l'identification des besoins réalisés dans la partie précédente, identifier les priorités de modélisation
  • Réalisation de diagrammes de cas d'utilisation
  • Réalisation de diagrammes de séquences
  • Réalisation de diagrammes de classes
  • Réalisation de diagrammes d'états-transitions