Final Exam EEE321B Object-oriented techniques 18 April 2009 Examen final GEF321B Techniques de logiciel orienté objets 18 avril 2009 Examiner: Dr. G. Scott Knight Examinateur: Capitaine S.C. Cayouette Instructions: Instructions: Do not turn this page until instructed to do so. Ne tournez pas cette page avant l’instruction de l’examinateur. This test is closed book, out of a total of 100 marks. Cet examen est livre fermé, sur un total de 100 notes. Questions have the values indicated in the centre column. Les questions ont les valeurs indiquées à la colonne centrale. You have three hours to complete the test. Vous avez trois heures pour compléter l’examen. Answer all questions in the test booklet. Répondez à toutes les questions dans le livret. If a question seems unclear, make a reasonable assumption, document it, and answer the question as though the assumption were correct. The examiner will not clarify the meaning of questions during the exam. Si une question ne vous semble pas claire, faites une supposition raisonnable, documentez-la, et répondez à la question prenant compte de la supposition. L’examinateur ne clarifiera pas le sens des questions pendant l’examen. Good luck! Bonne chance! 1/9 1. Short answer [total of 15] 1. Réponses courtes [total de 15] a. What is used as the primary basis for decomposition in OO (i.e. how do we decide what makes a good module/class)? [3] a. Quelle est la base primaire pour la décomposition en conception orientée objets? (C’est-à-dire, comment est-ce qu’on détermine ce qui fait une bonne classe?) b. Consider the method call in the following line of Java code: [3] b. Considérez l’appel à la méthode dans la ligne de code Java suivante : variable.method(param1, param2); variable.methode(param1, param2); What are the necessary conditions in Java for this method call to be an example of parametric polymorphism? Be precise. Quelles sont les conditions nécessaires en Java pour que l’appel soit un exemple de polymorphisme paramétrique? Soyez précis. c. Describe the goals, products, and process of the Elaboration Phase of the RUP Macro Process. [3] c. Donnez une description des buts, des produits et du processus de la phase d’Élaboration du macro processus de RUP. d. What are the advantages of dividing a large system into packages, both from a modeling perspective and from a programming perspective? [3] d. Quels sont les avantages de la division d’un grand système en paquets, du point de vue de la modélisation et aussi de la programmation? e. Briefly explain the roles of use cases and collaboration diagrams in the UML modelling process. What is the relationship between use cases and collaboration diagrams? [3] e. Expliquez de façon brève les rôles des cas d’utilisation et des diagrammes de collaboration dans le processus de modélisation avec UML. Quelle est la relation entre les cas d’utilisation et les diagrammes de collaboration? 2/9 2. Design and Implementation [total of 25] 2. Représentations de conception [total de 25] For this question, refer to the following Java code segments provided at the end of this exam: Pour cette question, référez-vous aux segments de code Java fournis à la fin de cet examen : SimulationScheduler.java SimClock.java SimulationObject.java Ship.java a. Using the Java code segments provided (four classes) for a Naval Warfare Simulator System draw the class diagram that corresponds to the code. Provide as much information as you can, including but not limited to classes (including those referred to in the code segments, but which may not have been provided in the exam), attributes, methods, class relationships and dependencies, type-information, access control information. b. Note that the SimulationScheduler is an Observable (i.e. Concrete Subject in the Observer Pattern). Provide extensions to your class diagram that allow two views of the simulation state (a simulation map, and a ship position indicator). Provide a description of how these added views will be updated with current information in your design. Include the registration of observers. [7] [5] (Javadoc for the class Observable is provided at the end of the exam). c. Provide a package diagram for the system. d. Provide a collaboration diagram for a typical run of the simulator. You can assume that there is a client object that is controlling the simulator. This client will set the simulation time multiplier and set the simulation running, giving each simulation object a chance to take a turn. SimulationScheduler.java SimClock.java SimulationObject.java Ship.java a. En utilisant les segments de code Java fournis (quatre classes) pour un système simulation de guerre navale, dessinez un diagramme de classe correspondant au code. Fournissez le plus d’information possible, incluant mais ne se limitant pas aux classes (incluant celles référencées dans le segment de code qui ne sont pas fournies dans l’examen), attributs, méthodes, relations entre les classes, dépendances, types et modificateurs de contrôle d’accès. b. Notez que le SimulationScheduler est le sujet concret du motif Observable. Fournissez une extension au diagramme de classe qui permet deux vues de l’état de simulation (une carte de la simulation, et un indicateur de la position du navire) Décrivez comment ces vues ajoutées seront mises à jour avec l’information courante selon votre conception, incluant l’enregistrement des observateurs. (l’information Javadoc pour la classe Observable est fournie à la fin de l’examen). [3] [5] 3/9 c. Fournissez un diagramme de paquets pour le système. d. Fournissez un diagramme de collaboration pour une exécution typique du simulateur. Vous pouvez assumer qu’il y a un objet client qui contrôle le simulateur. Ce client ajustera le multiplicateur du temps de simulation (simulation time multiplier) et démarrera la simulation, en donnant la chance à chaque objet de la simulation son tour de jouer. e. Provide Java code showing the implementation of the run() method in SimulationScheduler assuming the collaboration in part d, but also including any other functionality described in the description of the method supplied in the code for the class. Javadoc documentation for List and Iterator provided as an attachment to the exam. [5] 4/9 e. Fournissez le code Java montrant l’implémentation de la méthode run() du SimulationScheduler , incluant la collaboration en d. et les autres fonctionnalités donnés dans la description de la méthode fournie dans le code pour cette classe. La documentation pour les classes List et Iterator est fournie à la fin de l’examen. 3. Design Patterns, Detailed Design, and Implementation [total of 20] 3. Motifs de Conception, conception détaillé, et implémentation [total de 20] An automatic climate control system is described here: Un système de climatisation automatique est décrit ci-dessous. Climate Control System The climate control system has a master switch that may be in any one of four positions: standby, heating, cooling, or automatic. The position of the switch may be changed from any position to any other position at any time. When the switch is changed to a new position, it generates an event indicating the new position. Climatiseur automatique Le climatiseur à un sélecteur principal qui peut être dans une de quatre positions : attente, chauffage, refroidissement ou automatique. La position du sélecteur peut être modifiée d’une position à n’importe quelle autre position à n’importe quel instant. Lorsque le sélecteur est placé dans une nouvelle position, il génère un événement indiquant la nouvelle position. It also has two controls that are used to set desired minimum and maximum temperatures. Le climatiseur à aussi deux contrôles pour sélectionner la température maximale et la température minimale désirée. A temperature sensor generates an event when the temperature changes. This event contains the value of the current temperature. Un senseur de température génère un évènement lorsque la température change. Cet événement renferme la valeur de la température courante. When the master switch is in the “standby” position the system does nothing. Quand le sélecteur principal est dans la position « attente », le système ne fait rien. When the master switch is in the “heating” position and the measured temperature falls below the minimum desired temperature, the system turns on the furnace and leaves it on until the maximum desired temperature has been reached. Quand le sélecteur principal est dans la position de « chauffage » et la température mesurée devient moins que la température minimale désirée, le système allume la fournaise et la laisse allumée jusqu’à ce que la température maximale désirée soit atteinte. When the master switch is in the “cooling” position and the measured temperature rises above the maximum desired temperature, the system turns on the chilling unit and leaves it on until the minimum desired temperature has been reached. Quand le sélecteur principal est dans la position de « refroidissement » et la température mesurée devient plus que la température maximale désirée, le système allume le compresseur frigorifique et le laisse allumé jusqu’à ce que la température minimale désirée soit atteinte. When the master switch is in the “automatic” position, heating AND cooling operations are performed according to the descriptions for those two modes of operation. It is supposed that the minimum temperature is set lower than the maximum temperature. Quand le sélecteur principal est dans la position « automatique », le chauffage ET le refroidissement se déroulent tels que décrit dans ces deux modes d’opération. On suppose ici que la température minimale réglée est inférieure à la température maximale. (See next page.) (Voir la page suivante.) 5/9 a. Create a UML state transition diagram for the climate control system. Label all states and transitions appropriately such that the operation of your system is clear. [6] a. Créez un diagramme de transition d’état UML pour le système de climatisation automatique. Donnez des étiquettes aux états et aux transitions pour que l’opération de votre système soit évidente. b. Use the “State” Design Pattern to model the climate control system, according to your state diagram created in a. by providing a complete class diagram for this problem. [7] b. Utilisez le motif de conception « État » pour modéliser le contrôleur du climatiseur automatique, selon votre diagramme de transition créé en a. en donnant un diagramme de class complet pour ce problème. The following figure shows the generic State pattern class diagram (incomplete) for reference. c. Provide a typical and pertinent use case for your system, and validate your conception by providing a collaboration diagram that corresponds to this use case. La figure qui suit montre le diagramme de classe (incomplet) du motif État générique en guise de référence. [7] 6/9 c. Donnez un cas d’utilisation typique et pertinent pour votre système, et validez votre conception en donnant un diagramme de collaboration correspondant à ce cas d’utilisation. 4. Software Engineering Design Process [total of 40] 4. Processus de conception du génie logiciel [total de 40] For this question use the domain analysis for the FTP system that was handed out with the study guide. A copy is included with this exam. Pour cette question, faites référence à l’analyse de domaine pour le système FTP qui vous a été envoyé avec le guide d’études. Il y a une copie inclue avec l’examen. You are part of a software engineering team doing the analysis for a distributed network services package. The product will allow remote login, file transfer, electronic mail, remote printing, etc. Vous faites parti d’une équipe responsable de l'analyse d'un système de service pour réseau dans un environnement distribué. Le produit inclut la connexion à distance (remote login), transfert de fichier, courrier électronique, serveur d'impression, etc. One of the core capabilities of the system is file transfer. Another development team has begun the analysis of this requirement and has captured the specification for basic network communication and file transfer using UML notation. The specification describes the file system directory hierarchy, the ability of a user to move through the hierarchy by changing the current working directory (on the local or remote system), the ability to add files to the local working directory, and to copy a file from the local working directory to the remote working directory. Une des capacités principale du système est le transfert de fichier. Une autre équipe à commencé l’analyse des besoins et ont élaborés les spécifications pour la communication sur le réseau et le transfert de fichier en utilisant la notation UML. Les spécifications décrivent la hiérarchie du système de fichier, la capacité pour un utilisateur de changer le répertoire courant (du système local ou distant), l’habilité d’ajouter des fichiers au répertoire courant local, et de copier un fichier au répertoire courant distant. The current analysis provides very nicely for the transfer of single files to or from the remote file system. The current design does not obviously provide for the transfer of a grouping of file system objects (say a directory and its contents). You are to provide this extension. Note that there are subtle issues when transferring a directory. The requirement is to copy a directory and all of its contained files and/or directories (multiple objects). The contents (state) of the files must be copied. However, the contents (state) of the directory include a set of references to its contained objects (i.e. objects that reside on the original system). These references will not make sense on the new system; the new directory must make reference to the “new” objects on the new system that are copies of original objects. In this way the new directory will properly refer to the copied files and/or directories. L’analyse qui est fournie permet le transfert de fichiers individuels entre le système de fichiers local et distant, dans les deux sens. La conception ne permet pas cependant le transfert d’un groupe de fichiers ou répertoires (tel un répertoire et son contenu). Vous devrez fournir cette extension. Notez qu’il existe des subtilités lorsqu’on transfert un répertoire. On doit copier un répertoire et tout son contenu (répertoires et fichiers). Le contenu des fichiers (état) doit aussi être copié. Le contenu des dossiers (état) inclue un ensemble de références aux objets qu’il contient (sur le système de fichier original). Ces références perdront leur signification sur le nouveau système de fichiers; le nouveau répertoire devra donc référencer aux nouveaux objets sur le système cible, qui sont des copies des originaux sur le système original. De cette manière, le nouveau répertoire va référer proprement aux fichiers et répertoires copiés. (See next page.) (Voir la page suivante.) 7/9 You are to provide the domain analysis for the following use case (in the box): [40] Vous devez fournir l'analyse de domaine pour le cas d'utilisation suivant (dans la boîte) : User can transfer a directory sub-tree (remoteto-local) L’utilisateur peut transférer un sous-répertoire (système distant vers le système local) A user may specify a directory in the remote current working directory for file transfer. In this case the directory and all its contents are transferred from the remote file system to the local file system. The transferred directory subtree is rooted at the local current working directory. If the transferred directory contains child directories, these are also transferred (recursively). Un utilisateur peut spécifier un répertoire dans le répertoire de travail sur le système distant pour effectuer un transfert. Dans ce cas, le répertoire et tout son contenu sont transférés du système distant au système local. Le répertoire transféré sera placé dans le répertoire de travail local. Si le répertoire transféré contient des répertoires, ils seront aussi transférés (récursivement). Your specification must build upon the work already done. You should re-use as much of the specification as you can and try to alter the existing classes as little as possible. Ideally you will not have to change the existing classes. The network transport mechanism as it is described is already quite generic and can be easily reused. Vos spécifications doivent êtres construites à partir du travail déjà fait. Vous devez réutiliser les spécifications existantes le plus possible, et les modifier le moins possible. Idéalement, vous ne devriez pas modifier les classes existantes. Le mécanisme de transport du réseau décrit est assez général pour lui permettre d'être facilement réutilisé. Provide an updated class diagram, new collaboration diagrams for the use cases (including a description of the scenarios), modifications to existing specifications (if needed), and specifications for any new classes or operations. Donnez un diagramme de classe mis à jour, de nouveaux diagrammes de collaboration pour les cas d’utilisation (incluant une description des scénarios), les modifications nécessaires aux spécifications existantes (si nécessaire) et les spécifications de chaque nouvelle classe et opération. (See next page.) (Voir la page suivante.) 8/9 Class specifications should include (where applicable): Les spécifications de classes devront contenir l'information suivante (si applicable): Class name: Documentation: Export Control: Cardinality: Hierarchy: Private Interface: Has A Relationships & Attributes: Operations: Protected Interface: Has A Relationships & Attributes: Operations: Public Interface: Has A Relationships & Attributes: Operations: Nom de la classe: Documentation: Contrôle d'exportation: Cardinalité: Hiérarchie: Interface Privée: Relations «a un» et attributs Opérations: Interface Protégée: Relations «a un» et attributs: Opérations: Interface Publique: Relations «a un» et attributs: Opérations: Operation specifications should include (where applicable): Les spécifications de d'opérations devront contenir l'information suivante (si applicable): Operation name: Public member of: Return Class: Arguments: Documentation Nom de l'Opération: Membre publie de: Classe de Retour: Arguments: Documentation END OF EXAM FIN DE L’EXAMEN 9/9