Final Exam - Scott Knight`s Home Page

publicité
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
Téléchargement