Correspondance entre le UML et le C++

Documents pareils
Programme Compte bancaire (code)

GOL502 Industries de services

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Claude Delannoy. 3 e édition C++

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Création d objet imbriqué sous PowerShell.

Introduction à l héritage en C++

Généralités sur le Langage Java et éléments syntaxiques.

Programmation en Java IUT GEII (MC-II1) 1

Devenez un véritable développeur web en 3 mois!

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

et Programmation Objet

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Cours 1: Java et les objets

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Chapitre VI- La validation de la composition.

1.6- Génération de nombres aléatoires

Programmation système I Les entrées/sorties

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Cours d initiation à la programmation en C++ Johann Cuenin

Programmation en C/C++

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Plan du cours. Historique du langage Nouveautés de Java 7

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Tp 1 correction. Structures de données (IF2)

Package Java.util Classe générique

3. UML - Unified Modeling Language Diagrammes statiques

Diagramme de classes

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Une introduction à Java

Les bases de données

UML et les Bases de Données

OpenPaaS Le réseau social d'entreprise

Le langage C++ (partie I)

Cours d Algorithmique et de Langage C v 3.0

Programmer en JAVA. par Tama

CREATION WEB DYNAMIQUE

Langage SQL : créer et interroger une base

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Formation : WEbMaster

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Projet de programmation (IK3) : TP n 1 Correction

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

Corrigés des premiers exercices sur les classes

Programmation stochastique

Objets et Programmation. origine des langages orientés-objet

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

ÉVALUATION DE LA MAINTENABILITÉ DE S3MDSS AVEC L OUTIL SONAR

Web Tier : déploiement de servlets

Java c est quoi? Java pourquoi?

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Alfstore workflow framework Spécification technique

INFO-F-105 Language de programmation I Séance VI

Utilisation d objets : String et ArrayList

Programmation MacOSX / ios

Notions fondamentales du langage C# Version 1.0

4. Groupement d objets

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Analyse de sécurité de logiciels système par typage statique

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2014

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

COMPARAISONDESLANGAGESC, C++, JAVA ET

Composants Logiciels. Le modèle de composant de CORBA. Plan

Cours: Administration d'une Base de Données

TD/TP PAC - Programmation n 3

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Plan Pédagogique du cours

Le langage SQL (première partie) c Olivier Caron

F. Barthélemy. 17 mai 2005

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Remote Method Invocation en Java (RMI)

Planifier les rapports d

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Bases de programmation. Cours 5. Structurer les données

OCL - Object Constraint Language

Exercices sur les interfaces

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Programmation C++ (débutant)/instructions for, while et do...while

TD3: tableaux avancées, première classe et chaînes

Java Licence Professionnelle CISII,

Gestion d identités PSL Exploitation IdP Authentic


Premiers Pas en Programmation Objet : les Classes et les Objets

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Construire des plug-ins pour SAS Management Console SAS 9.1

Transcription:

Section Correspondance entre le UML et le C++ Exemples de codage Introduction Classes simples Ce document présente quelques exemples de codage qui traduisent la correspondance entre le modèle exprimé en UML et les instructions en langage C++. Ces exemples sont donnés sous forme tabulaire afin de faciliter leur compréhension. Les classes représentées sont dotées de deux constructeurs (un constructeur par défaut et un constructeur de copie), d un destructeur et de trois opérateurs. Il s agit là d une pratique courante et recommandée par les praticiens du domaine. Évidemment, l implantation concrète de ces fonctions membres dépendra de l application réelle des classes. Le rôle des opérateurs d assignation (=), d égalité (==) et de l inégalité (!=) est de simplifier l insertion des objets dans des classes collections. Cette manipulation et d autres seront nécessaires lorsque la multiplicité des objets dans une relation est supérieure à. Il existe plusieurs façons de réaliser les relations UML. Le codage présenté dans ce document ne montre que le principe de base de l implantation des relations. insi, une association, une agrégation et une composition sont toutes réalisées à l aide de pointeurs d objet. Certaines de ces relations auraient pu être réalisées par des variables membres ordinaires. L importance dans ces cas est le respect de la nature des relations et la durée de vie des objets. À noter également que certains exemples codage supposent que les classes sont déclarées dans un seul fichier d en-tête tandis que d autres exemples supposent que les classes sont déclarées dans des fichiers.h séparés. Un commentaire C++ vous donnera l indication lorsque les classes sont déclarées dans des fichiers séparés. Classe Simple class { constructeur (); (const & droit); Destructeur ~(); Opérateur d assignation

const & operator = (const & droit); utres opérations bool operator == (const & droit) const; bool operator!= (const & droit) const; Classe avec attributs et opérations : string 2 : string op() op2() Classe paramétrisée Type class { constructeur (); (const & droit); Destructeur ~(); Opérateur d assignation const & operator = (const & droit); utres opérations bool operator == (const & droit) const; bool operator!= (const & droit) const; Opérations spécifiques à la classe const string get_() const; void set_(const string valeur); const string get_2() const; void set_2(const string valeur); string ; string 2; Quelques implantations const string ::get_() const { return ; } void ::set_(const string valeur) { = valeur; } const string ::get_2() const { return 2; } void ::set_2(const string valeur) { 2 = valeur; } template <class Type> class { (); (const <Type>& droit); ~(); const <Type>& operator = (const <Type>& droit); bool operator == (const <Type>& right) const; bool operator!= (const <Type>& right) const; Classe utilitaire op() op2() «utility» class { static void op(); static void op2(); 3

Relations d association ssociation à Role Role Déclaration anticipée de la classe class ; Classe class { (); (const & droit); ~(); const & operator = (const & droit); bool operator == (const & right) const; bool operator!= (const & right) const; Pour la relation d association const * get_role() const; void Set_Role(* const value); * Rb; const * ::get_role() const { return Rb; } void ::set_role(* const value) { Rb = value; } Classe class { (); (const & droit); ~(); const & operator = (const & droit); bool operator == (const & right) const; bool operator!= (const & right) const; Pour la relation d association const * get_role() const; void Set_Role(* const value); * Ra; const * ::get_role() const { return Ra; } void ::set_role(* const value) { Ra = value; } ssociation N à Classe identique à celle d une association à #include <set> using namespace std; Classe class { 4

0..* Role Role (); (const & droit); ~(); const & operator = (const & droit); bool operator == (const & right) const; bool operator!= (const & right) const; Pour la relation d association de multiplicité 0..* const set<*> get_role() const; void Set_Role(const set<*> value); set<*> Ra; const set<*> ::get_role() const { return Ra; } void ::set_role(const set<*> value) { Ra = value; } ssociation N à avec contrainte 0..* {ordered} Role Role Classe identique à celle d une association à #include <list> using namespace std; Classe class { (); (const & droit); ~(); const & operator = (const & droit); bool operator == (const & right) const; bool operator!= (const & right) const; Pour la relation d association de multiplicité 0..* avec contrainte d ordre const list<*> get_role() const; void Set_Role(const list<*> value); list<*> Ra; const list<*> ::get_role() const { return Ra; } void ::set_role(const list<*> value) { Ra = value; } 5

Classe d association C Fichier C.h Déclaration anticipée class ; class ; class C { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d association const * get_() const; void set_(* const value); const * get_() const; void set_(* const value); * _; * _; Fichier.h #include C.h class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d association const C* get_c() const; void set_c(c* const value); C* _C; Fichier.h #include C.h class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d association const C* get_c() const; void set_c(c* const value); C* _C; 6

Classe d association N à N 0..* 0..* C Fichier C.h Déclaration anticipée class ; class ; class C { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d association const * get_() const; void set_(* const value); const * get_() const; void set_(* const value); * _; * _; Fichier.h #include <set> #include C.h using namespace std; class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d association N à N const set<c*> get_c() const; void set_c(const set<c*> value); set<c*> _C; 7

Fichier.h #include <set> #include C.h using namespace std; class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d association N à N const set<c*> get_c() const; void set_c(const set<c*> value); set<c*> _C; Relations d agrégation grégation à Déclaration anticipée class ; Role class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d agrégation const * get_() const; void set_(* const value); *_; class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d agrégation const * get_role() const; void set_role(* const value); *Role; 8

grégation avec navigation Classe ne peut pas atteindre classe Role class { constructeurs, destructeur et opérateurs idem aux classes précédentes aucun objet de type (pointeur ou autre) dans Fichier.h #include.h class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation d agrégation avec navigation const * get_role() const; void set_role(* const value); *Role; Relations de composition Composition Déclaration anticipée class ; Role class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation de composition const * get_() const; void set_(* const value); *_; class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation de composition 9

const get_role() const; void set_role(const value); Role; Une réalisation alternative de la composition Déclaration anticipée class ; class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation de composition const * get_() const; void set_(* const value); *_; class { () { effectuer les tâches utiles ici créer l objet Role Role = new ; } (const & droit) { effectuer les tâches utiles ici } créer l objet Role Role = new ; Destructeur ~() { effectuer les tâches utiles ici } détruire l objet Role delete Role; utres opérateurs idem aux classes précédentes relation de composition const * get_role() const; void set_role(* const value); *Role; 0

Composition à N Classe identique à celle d une composition à #include <set> using namespace std; 0..* Role class { constructeurs, destructeur et opérateurs idem aux classes précédentes relation de composition à N const set<> get_role() const; void set_role(const set<> value); set<> Role; Héritage Héritage simple #include.h class : public { declaration de la classe Héritage multiple #include.h #include.h class C : public, public { declaration de la classe C C