Master M1 Informatique: Analyse et Conception des Logiciels



Documents pareils
Développement Logiciel

Design patterns. Design patterns - définition. Design patterns - avantages

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Gestion distribuée (par sockets) de banque en Java

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

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Projet de programmation (IK3) : TP n 1 Correction

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

Chapitre VI- La validation de la composition.

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Programmation par les Objets en Java

TD/TP PAC - Programmation n 3

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

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

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

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)

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

Programmation Objet Java Correction

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Package Java.util Classe générique

Programmer en JAVA. par Tama

Auto-évaluation Programmation en Java

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Java 7 Les fondamentaux du langage Java

TP, première séquence d exercices.

Environnements de développement (intégrés)

Programmation Par Objets

TP1 : Initiation à Java et Eclipse

Introduction à la programmation concurrente

Interfaces graphiques avec l API Swing

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Threads. Threads. USTL routier 1

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Héritage presque multiple en Java (1/2)

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Dis papa, c est quoi un bus logiciel réparti?

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Logiciel de gestion de caisse et d ardoises

Construire des plug-ins pour SAS Management Console SAS 9.1

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Premiers Pas en Programmation Objet : les Classes et les Objets

Solutions du chapitre 4

RAPPORT DE CONCEPTION UML :

Traduction des Langages : Le Compilateur Micro Java

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Programmation en Java IUT GEII (MC-II1) 1

Cours 1: Java et les objets

Création d un service web avec NetBeans 5.5 et SJAS 9

Patrons de Conception (Design Patterns)

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

Objectif : Passer de l analyse métier et fonctionnelle à la définition des applications qui

Une introduction à Java

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Corrigés des premiers exercices sur les classes

Applet pour visualiser les variables «automate» notifiées

OpenPaaS Le réseau social d'entreprise

Classe Interne, Anonyme & Enumération

Synchro et Threads Java TM

MapReduce et Hadoop. Alexandre Denis Inria Bordeaux Sud-Ouest France ENSEIRB PG306

Java c est quoi? Java pourquoi?

TD2 Programmation concurrentielle

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

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

Calcul Parallèle. Cours 5 - JAVA RMI

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Remote Method Invocation (RMI)

Vérifier la qualité de vos applications logicielle de manière continue

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

TP1. Outils Java Eléments de correction

Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

Desktop Intégration. Rémi Forax

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

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Cours 1 : La compilation

as Architecture des Systèmes d Information

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Création d une application JEE

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

4. Groupement d objets

7 Développement d une application de MapReduce

Exercices sur les interfaces

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Un ordonnanceur stupide

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

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

Introduction : les processus. Introduction : les threads. Plan

Bases de données et environnements distribués Chapitre I : Architecture logicielle technologies de developpement en environnement

Bases Java - Eclipse / Netbeans

Programmation Orientée Objet

TD/TP PAC - Programmation n 3

Cours STIM P8 TD 1 Génie Logiciel

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

Etude et développement d un moteur de recherche

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Transcription:

Master M1 Informatique: Analyse et Conception des Logiciels Pascal Molli Juin 2008 Les documents de cours sont autorisés 1 Exercice en 5 lignes maximums répondez aux questions suivantes : 1. Qu est ce qu un logiciel? 2. Pourquoi le génie logiciel est important? 3. Quels sont les 4 propriétés d un *bon* logiciel? 4. Comment sont répartis les coûts de développement d un logiciel? 5. UML est elle un méthode de développement? Justifiez votre réponse. 2 Exercice 1. Quelle est la différence entre une relation d agrégation et une relation de composition? Donnez un exemple. 2. Que veut dire MDA? Quelle est la différence entre round-trip engineering et MDA? 3. Pourquoi décomposer un logiciel en composants? 4. Que signifie couplage faible et cohésion? 5. Donnez un exemple de 2 composants ayant un couplage fort. Faites le diagramme de composants associé. 6. Donnez un exemple d un composant ayant des problèmes de cohésion. 3 Exercice Voici un code permettant de gérer une liste des scores d un jeu quelconque. Je veux pouvoir visualiser ce tableau des scores dans une JList. 1. Faites les modifications nécessaires à la classe HS. 2. Faites le diagramme de classe final de l application. Les classes graphiques et différentes interfaces requises doivent apparaître. 3. Faites le diagramme de séquence montrant l instanciation des différentes classes de l application. 1

4. Faites le diagramme de séquence correspondant à l ajout d une entrée dans le tableaux des scores et son ré-affichage dans la JList. 5. Quels sont les patterns utilisés dans cet exemple? 6. Donnez pour chacun des patterns la correspondances entre les classes de votre application et les classes du pattern class Entry { private S t r i n g name ; private int s c o r e ; Entry ( S t r i n g name, int s c o r e ) { this. name=name ; this. s c o r e=s c o r e ; public S t r i n g t o S t r i n g ( ) { return name : +name+, s c o r e : +s c o r e ; import java. u t i l. Vector ; public class HS { private Vector<Entry> e n t r i e s=new Vector<Entry >(); void add ( Entry e ) { e n t r i e s. addelement ( e ) ; public S t r i n g t o S t r i n g ( ) { S t r i n g B u f f e r sb=new S t r i n g B u f f e r ( ) ; for ( Entry e : e n t r i e s ) { sb. append ( e. t o S t r i n g ( ) ) ; return sb. t o S t r i n g ( ) ; public class Main { public static void main ( S t r i n g [ ] args ) { HS hs=new HS ( ) ; hs. add (new Entry ( momo, 1 0 0 ) ) ; System. out. p r i n t l n ( hs ) ; Rappel des classes associées à la classe JList : Class J L i s t J L i s t ( ListModel datamodel ) I n t e r f a c e ListModel void addlistdatalistener ( L i s t D a t a L i s t e n e r l ) Object getelementat ( int index ) int g e t S i z e ( ) void removelistdatalistener ( L i s t D a t a L i s t e n e r l ) 2

I n t e r f a c e L i s t D a t a L i s t e n e r void contentschanged ( ListDataEvent e ) void intervaladded ( ListDataEvent e ) void intervalremoved ( ListDataEvent e ) Class ListDataEvent ListDataEvent ( Object source, int type, int index0, int index1 ) source L o b j e t source de l événement type Un e n t i e r r e p r é s e n t a n t CONTENTS CHANGED, INTERVAL ADDED ou INTERVAL REMOVED index0 début de l i n t e r v a l l e index1 f i n de l i n t e r v a l l e 4 Exercice 1. Écrivez le code java correspondant aux diagrammes ci-dessous. 5 Exercice La journalisation 1 consiste à garder les traces sur un support sûr des évènements survenus dans un système ou dans une application. Un ou plusieurs fichiers de log au format prédéfini sont générés en cours d exécution et conservent des messages informant sur la date et l heure de l événement, la nature de l événement et sa gravité par un code ou une description sémantique, éventuellement d autres informations : utilisateur, classe, etc Les journaux peuvent utilement être réutilisés par : un administrateur afin de produire des statistiques sur l utilisation d un système (par exemple les logs du serveur web Apache) un développeur afin de détecter des défaillances et de corriger les bugs qui en sont responsables, il est plus facile de repérer la source d une défaillance si le journal est dense en informations (fonctions appelées, valeurs des paramètres passés...) un développeur pour éviter de polluer son code avec des println() 1 source http://cyberzoide.developpez.com/java/logging/ 3

un utilisateur peut utiliser un journal afin de revenir sur un crash et refaire les opérations qui n auraient été perdues (transactions) Le code ci-dessous 2 implante un système de journalisation (primitif) à l aide d un pattern (le pattern mystère ;)) import java. i o. PrintStream ; public class DefaultLogger implements Logger { private PrintStream ps ; public DefaultLogger ( PrintStream ps ) { setprintstream ( ps ) ; public void l o g ( java. lang. S t r i n g msg) { getprintstream ( ). p r i n t l n (msg ) ; private void setprintstream ( PrintStream value ) { ps = value ; private PrintStream getprintstream ( ) { i f ( ps==null ) { return System. out ; return ps ; public class LoggerConsole extends L o g g e r F i l t e r { LoggerConsole ( Logger l ) { System. e r r. append (msg ) ; public class L o g g e r F i l t e r implements Logger { private Logger l ; public L o g g e r F i l t e r ( Logger l ) { setlogger ( l ) ; l. l o g (msg ) ; private void setlogger ( Logger l ) { this. l = l ; 2 source http://smeric.developpez.com/java/uml/decorateur/ 4

public class LoggerHorodate extends L o g g e r F i l t e r { public LoggerHorodate ( Logger l ) { System. out. p r i n t ( System. c u r r e n t T i m e M i l l i s ( ) ) ; public interface Logger { void l o g ( S t r i n g msg ) ; import javax. swing. JFrame ; import javax. swing. JTextArea ; public class LoggerSwing extends L o g g e r F i l t e r { private JTextArea j t a = new JTextArea ( ) ; public LoggerSwing ( Logger l ) { JFrame f = new JFrame ( Logger ) ; f. getcontentpane ( ). add ( j t a ) ; f. pack ( ) ; f. s e t V i s i b l e ( true ) ; j t a. append (msg ) ; 1. Faites le diagramme de classe du code ci-dessous. 2. Quel est le pattern implanté? 3. Écrivez pour chaque classe ci-dessous à quelle classe du pattern générique elle correspond. 4. Écrivez un diagramme de séquence montrant le comportement dynamique du pattern. Re-concevez le système de journalisation en utilisant cette fois un pattern fabrication. Refaites le diagramme de classes adéquat. Pour un système de journalisation quelle est la meilleure de 2 conceptions? 5