Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Modules et masquage dinformation.

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

Module Systèmes d’exploitation
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Architecture du logiciel I.
GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
GEF 243B Programmation informatique appliquée
Chapitre annexe. Récursivité
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Patterns & Anti Patterns
GEF 243B Programmation informatique appliquée Boucles §
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Considération de temps.
GEF 243B Programmation Informatique Appliquée
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Tests.
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Structures §12.3.
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Architecture du logiciel II.
GEF 243B Programmation informatique appliquée
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Modélisation II.
GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
GEF 243B Programmation informatique appliquée Listes chaînées II §15.1 – 15.2.
GEF 243B Programmation informatique appliquée Pointeurs et adresses §9.1.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel et Vérification et validation.
GEF 243B Programmation informatique appliquée Décisions de design avec structures de données §15.1 – 15.2.
GEF 243B Programmation informatique appliquée Flot de contrôle et énoncés de sélection §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes.
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Résolution structurée des problèmes.
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Fonctions.
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Tableaux et pointeurs §10.1.
LOG4430 : Architecture logicielle et conception avancée
A abstraction b assembleur c nombre binaire d bit e cache f UC g puce h compilateur i famille dordinateurs j contrôle k chemin de données l défaut m dé
C.
Introduction à la POO: Les classes vs les objets
Récursivité.
Principes de la technologie orientée objets
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Algorithmique et Programmation
1 Les pointeurs et quelques rappels sur certains éléments du langage C.
La voyage de Jean Pierre
IFT1025, Programmation 2 Jian-Yun Nie
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Programmation concurrente
Procédures et fonctions
Patrons de conceptions de créations
Programmer en langage c
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
et quelques rappels sur certains éléments du langage C
Supports de formation au SQ Unifié
Les modules. Modules Un module est un ensemble de définitions de constantes, de variables et de fonctions réutilisables de projet en projet. Le langage.
Programmation Système et Réseau
Chapitre VII Techniques plus avancées à travers le concept de classe.
Le diagramme de composants
Informatique 1A Langage C 6 ème séance 1. Objectifs de la séance 6  Allocation dynamique de mémoire  Application à la création de tableaux 2.
Algorithmique Langage C
Transcription de la présentation:

Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Modules et masquage dinformation

2 Hiver 2010JGA Beaulieu Revue Quelles sont les trois concepts utilisés par les humains pour résoudre les problèmes complexes? Quelle est lerreur avec ce qui suit? 1.float Add (int* anInt, float* aFloat); 2.void main (void) 3.{ 4.int a; 5.float b; 6.myFunction (a, b); 7.} //main 8.void Add(int* param1, float* param2) 9.{ 10.return ((float)*param1 + *param2); 11.}//Add

3 Hiver 2010JGA Beaulieu Synopsis Décomposition modulaire - (un niveau plus haut) Masquage dinformation Encapsulation Quoi cacher Séparation des préoccupations Le module C Le module C – prototypes de fonction Un petit exemple Construction avec des composantes

4 Hiver 2010JGA Beaulieu Décomposition modulaire Jusquà présent nous avons vue que nous pouvons décomposer une grosse fonction monolithique (main) en de plus petites fonctions cohésives Toutes nos fonctions que nous avons définies dans le cours ont étés misent à lintérieur dun seul fichier: une unité de compilation Nous avons aussi appris comment déclarer un prototype de fonction dans nos programmes.

5 Hiver 2010JGA Beaulieu Décomposition modulaire Les programmes dordinateur qui sont très larges napparaissent pas par magie Le logiciel bien conçu, comme tout autre produit dingénierie doit être conçu avec une philosophie de planification et dimplémentation prudente Tout comme un édifice, un programme logiciel doit avoir une structure bien dessinée; une architecture

6 Hiver 2010JGA Beaulieu Décomposition modulaire Pour les gros programmes, il ne suffit pas seulement de décomposer un programme en fonctions Larchitecture dun gros programme doit être exprimée en unités de compilation séparées En C, ces unités de compilation sont des modules Vous avez déjà utilisés des bibliothèques de modules tel que stdio, conio, dsound,… Vous avez aussi utilisé un module développé localement, le squelette 243_lib

7 Hiver 2010JGA Beaulieu Masquage dinformation Information hiding Le concept de masquage dinformation provient dun article séminale de David Parnas (1972) Masquage dinformation: « Chaque module a un secret quil cache des autres modules. »

8 Hiver 2010JGA Beaulieu Masquage dinformation - Encapsulation Le concept de masquage dinformation est clef pour les concepts de décomposition et dabstraction On cache linformation qui peut changer et on expose une interface stable qui ne changera PAS Ceci est connue comme lencapsulation Linformation est obtenue ou changée SEULEMENT en utilisant linterface – Linformation est cachée

9 Hiver 2010JGA Beaulieu Masquage dinformation - Encapsulation Pourquoi est-ce que le masquage dinformation est important? Si nous encapsulons linformation qui peut changer dans limplémentation du module et que nous offrons le service du module au travers dune interface stable, lutilisateur du module na pas besoin de connaître ce quil y a dans limplémentation Je peux changer limplémentation pour améliorer la performance, due au changements de matériel, changement de plateforme … Donc je réduis le couplage entre les modules. Le programme est plus facile à entretenir

10 Hiver 2010JGA Beaulieu Masquage dinformation – Quoi cacher Quel est ce secret que je veux cacher? Il y a trois types de module pour le masquage dinformation: Masquage de comportement: Cache les choses comme les formats décran, impression, les menus, la communication, le changement détats etc… Ex: conio.h – Cache le formats décran et clavier Masquage des décisions de design: Cache les structures de données et les algorithmes Ex: tm.h – Cache les algorithmes et structures pour la gestion des tâches Masquage de la machine: Cache les interfaces machine Ex: 243_lib.h – Cache certaines fonctions de brickOS et types Ex: dsound.h – Cache la façon de jouer les sons sur le matériel

11 Hiver 2010JGA Beaulieu Masquage dinformation – Quoi cacher Quand nous appliquons le concept de masquage dinformation, nous pouvons séparer nos préoccupations et décomposer nos problèmes en unités de compilation cohésives Tout les concepts de génie logiciel que nous avons vue jusquà ce point sont des concepts de design La limite où nous pouvons implémenter ces concepts dans le code dépend du support fournit par le langage de programmation

12 Hiver 2010JGA Beaulieu Le module C C nous fournit deux types de fichiers pour que nous puissions définir nos modules Le fichier.h – ou entête de module: Contient la déclaration des fonctions et les attributs que nous voulons que les autre modules voient. Aussi connue comme interface du module Le fichier.c – ou corps du module: Contient la définition des fonctions qui sont déclarées dans lentête du module et autres fonctions internes ou de soutient. Connue comme implémentation du module

13 Hiver 2010JGA Beaulieu Le module C Quand vous faite linclusion de lentête dun module dans votre programme, seulement les fonctions qui sont déclaré dans lentête sont disponibles Ce nest JAMAIS une bonne idée de donner un accès directe à vos variables dans vos modules

14 Hiver 2010JGA Beaulieu Le module C - Prototypes Un module doit avoir deux fichiers du même nom un avec lextension.c et lautre avec.h (243_lib.c, 243_lib.h) Vous devez déclarer un prototype de fonction dans le fichier entête pour chaque fonction que vous voulez que les autres modules utilisent Vous pouvez aussi inclure des types dérivés dans lentête. Nous allons en voir la semaine prochaine.

15 Hiver 2010JGA Beaulieu Exemple – grandpetit.c #include #include "compare.h" int main(void) { int firstInt = 5; int secondInt = 10; int* pIntG = NULL; int* pIntS = NULL; pIntG = Greater(&firstInt,&secondInt); pIntS = Smaller(&firstInt,&secondInt); printf("Greater: %d Smaller: %d\n", *pIntG, *pIntS); system("PAUSE"); exit(0); } //main

16 Hiver 2010JGA Beaulieu Exemple – compare.h //compare.h interface de compare blablabla //retourne un pointeur de type int qui pointe //au plus grand de deux ints int* Greater(int* px, int* py); //retourne un pointeur de type int qui pointe //au plus petit de deux ints int *Smaller(int* px, int* py);

17 Hiver 2010JGA Beaulieu Exemple – compare.c //compare.c le corps du module compare blablabla //retourne un pointeur de type int qui pointe //au plus grand de deux ints int* Greater(int* px, int* py) { return (*px > *py ? px : py); }//Greater //retourne un pointeur de type int qui pointe //au plus grand de deux ints int *Smaller(int* px, int* py) { return (*px < *py ? px : py); }//Smaller

18 Hiver 2010JGA Beaulieu Construction avec composantes Avec le développement de modules partout dans le monde, les bibliothèques de fonctions et les composantes émergent à tout les jours Ces composantes peuvent être des solutions entières ou des pièces qui peuvent être assemblées en systèmes Le masquage dinformation et le concept dabstraction rendent possible la construction de systèmes à partir de composantes dont on ne connaît pas limplémentation La suite de MS-Office TM est dessiné avec ce concept

19 Hiver 2010JGA Beaulieu Quiz Time Quest-ce que le masquage dinformation? Pourquoi ce concept est important? Que veut-on dire par encapsulation? Un fichier entête pour un module est aussi appelé _____________ du module Le fichier corps est aussi connue comme _____________ du module

20 Hiver 2010JGA Beaulieu Références S. Ambler, The Object Primer, 2 nd Ed. H. van Vliet, Software Engineering, 3rd Ed. *Vous navez pas ces références, cest pour vous donner linformation