Introduction aux méthodes Orientées Objets Première partie

Documents pareils
Cycle de vie du logiciel. Unified Modeling Language UML. UML: définition. Développement Logiciel. Salima Hassas. Unified Modeling Language

IFT2255 : Génie logiciel

Éléments de programmation et introduction à Java

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Évaluation et implémentation des langages

CC30 Certificat de compétence Conception, développement et animation de sites Web

TP1 : Initiation à Java et Eclipse

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

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

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

Analyse,, Conception des Systèmes Informatiques

UML (Paquetage) Unified Modeling Language

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

UML 2.0. (IUT, département informatique, 1 re année) Laurent AUDIBERT

IRL : Simulation distribuée pour les systèmes embarqués

RTDS G3. Emmanuel Gaudin

Rational Unified Process

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

Cours en ligne Développement Java pour le web

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

Mise en œuvre des serveurs d application

Cours d Algorithmique et de Langage C v 3.0

Chapitre I : le langage UML et le processus unifié

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Ingénierie des Modèles. Méta-modélisation

TP1 : Initiation à Java et Eclipse

Visual Paradigm Contraintes inter-associations

3. UML - Unified Modeling Language Diagrammes statiques

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

Programmation en Java IUT GEII (MC-II1) 1

Comparaison de trois techniques de modélisation de processus: ADONIS, OSSAD et UML


Le langage C. Séance n 4

Génie Logiciel avec Ada. 4 février 2013

M Études et développement informatique

Initiation à JAVA et à la programmation objet.

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Cours 1 : La compilation

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Extensions à la formation. Laurent Pérochon, avril 2008, RMT Modelia, modélisation conceptuelle, formation UML, INRA Castanet Tolosan

Description de la formation

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Premiers Pas en Programmation Objet : les Classes et les Objets

Générer du code à partir d une description de haut niveau

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Patrons de Conception (Design Patterns)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Université de Bangui. Modélisons en UML

Génie Logiciel Orienté Objet UML

INTRODUCTION À LA PROGRAMMATION PRATIQUE DU LANGAGE C. M. Le Gonidec

Programmation Objet Java Correction

Développement d un interpréteur OCL pour une machine virtuelle UML.

Conception, architecture et urbanisation des systèmes d information

Automatisation de l administration système

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Information utiles. webpage : Google+ : digiusto/

UML (Diagramme de classes) Unified Modeling Language

Refonte front-office / back-office - Architecture & Conception -

Les formations. ENI Ecole Informatique

Problèmes liés à la concurrence

Master MIDO 2ème année. Spécification et Conception en UML Maude Manouvrier

Introduction au génie logiciel

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

UE Programmation Impérative Licence 2ème Année

RMI le langage Java XII-1 JMF

Introduction au langage C

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Nom de l application

ACTIVITÉ DE PROGRAMMATION

Management des processus opérationnels

Corrigé des exercices sur les références

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Besoins utilisateurs. Quelle démarche pour passer des besoins au code? Code. chapitre1 UNIFIED MODELING LANGUAGE. package LogiqueMetier.

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Conception des systèmes répartis

OCL - Object Constraint Language

Bases Java - Eclipse / Netbeans

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

ANALYSE D UN SYSTEME D INFORMATION ET EXTENSION DE

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Vérifica(on et Valida(on de Business Process. Ang Chen et Levi Lúcio

Stage Ingénieur en développement logiciel/modélisation 3D

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

LICENCE : INFORMATIQUE GENERALE

Enseignant: Lamouchi Bassem Cours : Système à large échelle et Cloud Computing

UML est-il soluble dans les méthodes agiles?

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

2 Chapitre 1 Introduction

Programmation par composants (1/3) Programmation par composants (2/3)

Transcription:

Introduction aux méthodes Orientées Objets Première partie Modélisation avec UML 2.0 Programmation orientée objet en C++ Pré-requis: maitrise des bases algorithmiques (cf. 1 ier cycle), maitrise du C (variables, fonctions, pointeurs, structures) Thomas Grenier Insa-GE IF3

Bibliographie Le langage C++, Grand Livre, Micro Application, 1998 Le langage C++ 3 ième édition, Bjarne Stroustrup, CampusPress, 1999 Introduction à UML 2.0, Miles & Hamilton, O Reilly, 2006 UML 2.0 en concentré, Pilone & Pitman, O Reilly, 2006 Wikipedia http://fr.wikipedia.org/wiki/programmation_orientée_objet http://fr.wikipedia.org/wiki/unified_modeling_language http://fr.wikipedia.org/wiki/chronologie_des_langages_de_programmation Web divers http://www.langpop.com/ (language popularity) http://www.tiobe.com/ (language index) http://www.nawouak.net/?cat=informatics+lang=fr (informatique et C++) Logiciels: StarUML: http://staruml.sourceforge.net/ C++ : QtCreator, Microsoft Visual C++ Express, Code::Blocks, Eclipse, 2

Introduction Illustration du concept objet sur un exemple issu des mathématiques Brève histoire de la POO Origine du C++ Modélisation Orienté Objet Présentation de UML Socrative 846835 3

Structures du C Méthode Orientée objet Introduction, concept d objet Les nombres complexes soit Par exemple : z1, z 2 C z1 1 j z 2 4 j 2 z i mathématique a i jb 2 données regroupées i implémentation z 1 et z 2 sont indépendants l un de l autre z 1 et z 2 appartiennent au même ensemble (complexe) L intérêt des complexes : c est un corps commutatif (+,x) z3 z1 z2 3 3 j z z z 6 2 j 4 1 2 Association d opérations propres aux données en OO: - z 1, z 2, z 3 et z 4 sont des objets - est une classe C 4

Introduction POO La Programmation Orientée Objet (POO): origine de la démarche «Orienté Objet» (OO) Date du premier programme (langage) informatique? (OO) \ ~ / Ada Lovelace 1815-1852 5

Introduction, POO Langages informatiques et OO: 52 ~1843 1945 59 64 72 83 54 67 75 85 95 01 2009 1 programme (Ada Lovelace) Plankalkül (Zuse) A-0 (Grace Hopper) Fortran Cobol Simula67 BASIC (Kemeny & Kurtz) SmallTalk C Dennis Ritchie Altair BASIC (B. Gates & P. Allen) Java Sun Microsystems C++ Bjarne Stroustrup C# Microsoft 6

Introduction, POO Langages informatiques et OO: 52 ~1843 1945 59 64 72 83 54 67 75 85 95 2005 Effervescence POO Age d or POO 1 programme (Ada Lovelace) Plankalkül (Zuse) A-0 (Grace Hopper) Fortran Cobol Simula67 BASIC (Kemeny & Kurtz) Premiers langages objets SmallTalk C Dennis Ritchie Altair BASIC (B. Gates & P. Allen) java Sun Microsystems C++ Bjarne Stroustrup C# Microsoft 7

POO, origine de l effervescence OO L OO en informatique aujourd hui? Quasi-totalité des applications programmées en OO (POO) Quasi tous les langages intègrent la notion d objet (même fortran et cobol!) > L OO permet de répondre aux exigences actuelles des applications informatiques (type PC): Applications conviviales et graphiques (mode «fenêtre») Applications complexes Quantités des exigences client développements, effectifs, temps Réutilisation du code Investissement sur le développement Maintenance du code Nombreux aller-retour entre validation et conception 8

Introduction Méthodes orientées objet : Analyse (AOO) Modélisation (MOO) UML Conception (COO) Bases de données (SGBDOO) Programmation (POO) Méthodologie Orientée Objet Model Driven Architecture (MDA), Exemple typique: génération automatique de code à partir d'une modélisation UML 9

Introduction, UML UML : Unified Modeling Language Langage de modélisation Permet de représenter un système de manière abstraite Langage formel Concis, précis et simple Langage graphique Basé sur des diagrammes (13 pour UML 2.0) Standard industriel Object Management Group, 1997 Initié par Grady Booch, James Rumbaugh et Ivar Jacobson 10

Introduction, UML UML, outils d excellence pour Concevoir des logiciels informatiques Communiquer sur des processus logiciels ou d entreprise Présenter, documenter un système à différents niveaux de détails UML, généralisation aux domaines Secteur de la banque et de l investissement Santé Défense Informatique distribuée Systèmes embarqués Secteur de la vente et de l approvisionnement 11

Introduction, UML «Niveaux» de détails d UML UML comme une esquisse (Re)-présenter les points clés, faire l analyse, mettre en place les premières grandes idées UML comme un plan Spécifier en détail un système (diagrammes) Souvent associé à des systèmes logiciels et implique une retro-ingénierie pour que le modèle reste synchronisé avec le code Langage de programmation Passer directement modèle UML code exécutable Tous les aspects du système sont modélisés UML 2.0 est exécutable 12

Introduction, UML Modèle de vue organisation de l analyse OO et des 13 diagrammes UML Vue logique Vue de processus Vue physique Vue de cas d utilisation Vue de développement Modèle de vue 4+1 de P. Kruchten 13

Introduction, UML Modèle de vue: Vue logique Vue logique Vue physique Vue de cas d utilisation Vue de processus Vue de développement Donne les descriptions abstraites des parties d un système Sert à modéliser les composants d un système et leurs interactions Diagrammes associés: - de classes, - d objets, - de machines d état - d interactions 14

Introduction, UML Modèle de vue: Vue de processus Vue logique Vue physique Vue de cas d utilisation Vue de processus Vue de développement Décrit les processus du système Utile pour la visualisation de l activité du système Diagrammes associés: diagrammes d activité 15

Introduction, UML Modèle de vue: Vue de développement Vue logique Vue physique Vue de cas d utilisation Vue de processus Vue de développement Décrit l organisation en modules et composants des parties du système Utile pour gérer les différentes couches de l architecture du système Diagrammes associés: - paquetages - composants GBF Filtre Oscillo Adaptation impédance Adaptation impédance 16

Introduction, UML Modèle de vue: Vue physique Vue logique Vue physique Vue de cas d utilisation Vue de processus Vue de développement Décrit comment la conception du système (les 3 autres vue) est mise en œuvre par un ensemble d entités réelles Diagramme associé: diagramme de déploiement 17

Introduction, UML Modèle de vue: Vue de cas d utilisation Vue logique Vue physique Vue de cas d utilisation Vue de processus Vue de développement Diagrammes associés: - cas d utilisation - des descriptions - interactions globales Décrit la fonctionnalité du système en cours de modélisation, point de vue du monde extérieur Nécessaire pour décrire ce que le système est supposé faire Toutes les autres vues s appuient sur celle-ci Étudiants dans un amphi 18

Introduction, résumé Illustration du concept objet avec les maths Encapsuler données et fonctions spécifiques aux données Langage de POO utilisé dans le cours: C++ Basé sur le C et Simula67 (et Algol68), écrit par Bjarne Stroustrup (1980 «C with Class»; puis 1983: C++ ) Modélisation Orienté Objet : UML Diagramme de classes 19

Plan I. Premier exemple II. Définitions de l Orienté Objet III. Encapsulation, concept de classe IV. Héritage (généralisation) V. Polymorphisme VI. Généricité (modèles de classe) 20

Plan I. Premier exemple Des fonctions aux classes et UML II. Définitions de l Orienté Objet III. Encapsulation, concept de classe IV. Héritage (généralisation) V. Polymorphisme VI. Généricité (modèles de classe) 21

Nombres complexes Premier exemple En C, écrire une procédure permettant de faire la somme de 2 nombres complexes void Somme(double a1, double b1, double a2, double b2, double *a, double *b) *a = a1 + a2; *b = b1 + b2; int main(void) 1 j double re,im; Somme( 1, 1, 2, -4, &re, &im); 2 printf(«%lf +j %lf», re, im); return 0; z1 z 4 j 2 22

Nombres complexes Premier exemple En C++, écrire une procédure permettant de faire la somme de 2 nombres complexes void Somme(double a1, double b1, double a2, double b2, double *a, double *b) *a = a1 + a2; *b = b1 + b2; int main(void) double re,im; 1 j Somme( 1, 1, 2, -4, &re, &im); 2 cout<< re << "+j" << im << endl; return 0; z1 z 4 j 2 23

Premier exemple Nombres complexes, avec structure (du C) Ecrire une procédure permettant de faire la somme de 2 nombres complexes typedef struc double Reel; double Imag; Complexe; void Somme(Complexe z1, Complexe z2, Complexe *z3) z3->reel = z1.reel + z2.reel; z3->imag = z1.imag + z2.imag; Complexe est maintenant un nouveau type void main() Complexe z1, z2, z3; z1.reel = 1; z1.imag = 1; z2.reel = 2; z2.imag = -4; Somme( z1, z2, &z3); 24

Premier exemple Nombres complexes, fonction avec structure Ecrire une fonction permettant de faire la somme de 2 nombres complexes typedef struc double Reel; double Imag; Complexe; Complexe Somme(Complexe z1, Complexe z2) Complexe s; s.reel = z1.reel + z2.reel; s.imag = z1.imag + z2.imag; return s; Complexe est maintenant un nouveau type void main() Complexe z1, z2, z3; z1.reel = 1; z1.imag = 1; z2.reel = 2; z2.imag = -4; z3 = Somme( z1, z2); 25

Premier exemple Nombres complexes, du C au C++ Données Fonctions Langage C typedef struc double Reel; double Imag; Complexe; Complexe Somme(Complexe z1, Complexe z2) Complexe s; s.reel = z1.reel + z2.reel; s.imag = z1.imag + z2.imag; return s; constructeur Langage C++ class Complexe public: double Reel; Champs double Imag; Complexe() Reel=0;Imag=0; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; Méthodes ; NB: Il s agit d un premier exemple qui n est pas un modèle de programmation à bien des égards 26

Premier exemple Nombres complexes, C++ class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; #include <iostream> Objets int main(void) Complexe z1,z2,z3; z1.reel = 1; z1.imag = 1; z2.reel = 2; z2.imag = -4; z3 = z1.plus(z2); cout << z3.reel<< endl; cout << z3.imag << "j \n"; return 0; NB: Il s agit d un premier exemple qui n est pas un modèle de programmation à bien des égards 27

Explications de la fonction main C++ int main(void) Complexe z1,z2,z3; z1.reel = 1; z1.imag = 1; z2.reel = 2; z2.imag = -4; z3 = z1.plus(z2); cout << z3.reel<< endl; cout << z3.imag << "j \n"; return 0; Premier exemple class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0;; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; 1) 3 objets Complexe (z1, z2, z3) sont créés un constructeur de la classe est exécuté En mémoire : z1 Reel = 0 Imag = 0 z2 Reel = 0 Imag = 0 z3 Reel = 0 Imag = 0 28

Explications de la fonction main C++ int main(void) Complexe z1,z2,z3; z1.reel = 1; z1.imag = 1; z2.reel = 2; z2.imag = -4; z3 = z1.plus(z2); cout << z3.reel<< endl; cout << z3.imag << "j \n"; return 0; Premier exemple class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0;; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; 1) 3 objets Complexe (z1, z2, z3) sont créés un constructeur de la classe est exécuté 2) On modifie les champs de z1 et z2 Accès direct aux valeurs (public ) En mémoire : z1 Reel = 1 Imag = 1 z2 Reel = 2 Imag = -4 z3 Reel = 0 Imag = 0 29

Explications de la fonction main C++ int main(void) Complexe z1,z2,z3; z1.reel = 1; z1.imag = 1; z2.reel = 2; z2.imag = -4; z3 = z1.plus(z2); cout << z3.reel<< endl; cout << z3.imag << "j \n"; return 0; Premier exemple class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0;; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; 1) 3 objets Complexe (z1, z2, z3) sont créés Un constructeur de la classe est exécuté 2) On modifie les champs de z1 et z2 Accès direct aux valeurs (public ) 3) La fonction Plus de z1 est exécutée avec z2 comme paramètre, le résultat est copié dans z3 En mémoire : z1 Reel = 1 Imag = 1 z2 Reel = 2 Imag = -4 z3 Reel = 3 Imag = -3 30

Explications de la fonction main C++ 3) La fonction Plus de z1 est exécutée avec z2 comme paramètre, le résultat est copié dans z3 class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0; Complexe Plus(Complexe z) ; Premier exemple z3 = z1.plus(z2); Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; - En mémoire, à l appel de la fonction Plus z1 Reel = 1 Imag = 1 - En mémoire, dans la fonction Plus z3 = z1.plus(z2); z2 Reel = 2 Imag = -4 z Reel = 2 Imag = -4 z3 Reel = 0 Imag = 0 s Reel = 0 Imag = 0 31

Explications de la fonction main C++ 3) La fonction Plus de z1 est exécutée avec z2 comme paramètre, le résultat est copié dans z3 class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; Premier exemple - En mémoire, à l appel de la fonction Plus z3 = z1.plus(z2); z1 Reel = 1 Imag = 1 - En mémoire, dans la fonction Plus z2 Reel = 2 Imag = -4 z Reel = 2 Imag = -4 z3 Reel = 0 Imag = 0 s Reel = 3 Imag = -3 32

Explications de la fonction main C++ 3) La fonction Plus de z1 est exécutée avec z2 comme paramètre, le résultat est copié dans z3 class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; Premier exemple - En mémoire, à l appel de la fonction Plus z1 Reel = 1 Imag = 1 - En mémoire, dans la fonction Plus z3 = z1.plus(z2); z2 Reel = 2 Imag = -4 z Reel = 2 Imag = -4 z3 Reel = 3 Imag = -3 s Reel = 3 Imag = -3 33

Explications de la fonction main C++ int main(void) Complexe z1,z2,z3; z1.reel = 1; z1.imag = 1; z2.reel = 2; z2.imag = -4; z3 = z1.plus(z2); cout << z3.reel<< endl; cout << z3.imag << "j \n"; return 0; Premier exemple class Complexe public: double Reel ; double Imag ; Complexe() Reel =0; Imag =0;; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel ; s.imag = Imag + z.imag ; return s; ; 1) 3 objets Complexe (z1, z2, z3) sont créés Un constructeur de la classe est exécuté 2) On modifie les champs de z1 et z2 Accès direct aux valeurs (public ) 3) La fonction Plus de z1 est exécutée avec z2 comme paramètre, le résultat est copié dans z3 4) Affichage du résultat: 3-3j En mémoire : z1 Reel = 1 Imag = 1 z2 Reel = 2 Imag = -4 z3 Reel = 3 Imag = -3 34

Premier exemple Nombres complexes, C++ et UML class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; Implémentation Complexe +Reel: double +Image: double <<create>>+complexe() +Plus(z: Complexe): Complexe Champs, attributs, données membres Modélisation Nom de la classe Méthodes, opérations, fonctions membres 35

Premier exemple Nombres complexes, C++ et UML class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; Implémentation Nom Complexe +Reel: double +Image: double <<create>>+complexe() +Plus(z: Complexe): Complexe Argument(s), paramètre(s) Modélisation Type Type de retour 36

Premier exemple Nombres complexes, C++ et UML class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; Implémentation Visibilité, accessibilité Complexe +Reel: double +Image: double <<create>>+complexe() +Plus(z: Complexe): Complexe Modélisation 37

Premier exemple Nombres complexes, C++ et UML class Complexe public: double Reel; double Imag; Complexe()Reel=0;Imag=0; Complexe Plus(Complexe z) Complexe s; s.reel = Reel + z.reel; s.imag = Imag + z.imag; return s; ; Implémentation Constructeur Complexe +Reel: double +Image: double <<create>>+complexe() +Plus(z: Complexe): Complexe Modélisation 38

Premier exemple, exo 1 Etendre la classe Complexe aux fonctionnalités: Conjuguer() : retourner le complexe conjugué Moins( ): soustraction de deux complexes MultiplierPar( ) : produit de deux complexes DiviserPar( ): division de deux complexes Retourner le module du complexe Retourner l argument du complexe (en radians) 39

Premier exemple, exo 2 Modéliser et concevoir un PorteMonnaie permettant de gérer une somme d argent définie au départ. On pourra: Ajouter de l argent Enlever de l argent, à condition qu il en reste suffisamment (signaler ce problème à l utilisateur) Afficher la somme restant dans le porte monnaie Il faudra interdire l accès direct à l attribut gérant la somme d argent (être obliger de passer par les opérations Ajouter et Enlever pour le modifier) 40

Premier exemple, exo 4 Modéliser une basse (guitare). (pas plus d informations ) La modélisation dépend des besoins du système! Il n y a donc pas de modélisation unique d un même concept abstrait 42

Plan I. Premier exemple II. Définitions de l Orienté Objet III. IV. Encapsulation, concept de classe Héritage (généralisation) V. Polymorphisme VI. Généricité (modèles de classe) Deuxième partie 43