2019_2020:s3:concprogobjet:td:td3
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
2019_2020:s3:concprogobjet:td:td3 [2019/09/26 15:28] – blay | 2019_2020:s3:concprogobjet:td:td3 [2019/09/27 11:26] (current) – blay | ||
---|---|---|---|
Line 10: | Line 10: | ||
* Modéliser une application un peu plus complexe en utilisant à bon escient vos connaissances sur la modélisation en UML. | * Modéliser une application un peu plus complexe en utilisant à bon escient vos connaissances sur la modélisation en UML. | ||
* Mettre en oeuvre les principes GRASP et SOLID au travers de seulement la conception. | * Mettre en oeuvre les principes GRASP et SOLID au travers de seulement la conception. | ||
- | |||
- | |||
- | **Etude de cas** | ||
- | |||
**Déroulé :** | **Déroulé :** | ||
Line 21: | Line 17: | ||
* Ils s' | * Ils s' | ||
+ | Ce travail fera l' | ||
+ | |||
+ | |||
+ | **Etude de cas** | ||
- Il existe plusieurs types de crises. Certaines sont des accidents, d' | - Il existe plusieurs types de crises. Certaines sont des accidents, d' | ||
- | - A une crise sont associées des missions. Une mission peut correspondre à plusieurs crises dans le cas où plusieurs crises doivent être simultanément gérées (par exemple, un accident et un incendie). Voici des exemples de missions : alerter les secours, alerter la population, évacuer la population, stopper la circulation. | + | - A une crise sont associées des missions. Une mission peut correspondre à plusieurs crises dans le cas où plusieurs crises doivent être simultanément gérées (//par exemple, un accident et un incendie//). //Voici des exemples de missions : alerter les secours, alerter la population, évacuer la population, stopper la circulation.// |
- | - A la création d'une mission sont automatiquement associées les tâches idoines en attente de validation. | + | - A la création d'une mission sont automatiquement associées les tâches idoines en attente de validation. |
- | Les tâches peuvent être dynamiquement allouées ou retirées à une mission. | + | - Aux tâches sont associées des ressources. Une ressource ne peut pas être affectée à plusieurs tâches en même temps. |
- | - Aux tâches sont associées des ressources. Une ressource ne peut pas être affectée à plusieurs tâches en même temps. Par exemple, à une tâche de transport sont associés un véhicule et un chauffeur. | + | - Une tâche |
- | - Une tâche de transport ambulancier débute dès que l' | + | |
- Une ressource affectée à une mission est en permanence localisée. S'il s'agit d'un engin, la localisation est obtenue en utilisant le GPS intégré. S'il s'agit d'un être humain, la localisation est la dernière qu'il a renseigné dans le système. Il peut aussi utiliser son téléphone pour se faire localiser automatiquement. | - Une ressource affectée à une mission est en permanence localisée. S'il s'agit d'un engin, la localisation est obtenue en utilisant le GPS intégré. S'il s'agit d'un être humain, la localisation est la dernière qu'il a renseigné dans le système. Il peut aussi utiliser son téléphone pour se faire localiser automatiquement. | ||
- | - Il est possible connaître les ressources qui sont libres. | + | - Il est possible |
- | - Lorsqu' | + | - Lorsqu' |
- | - Lorsqu' | + | - Lorsqu' |
+ | - Pour les crises, missions et tâches terminées, il est possible de connaitre le nombre de ressources utilisées. | ||
+ | - Une ressource est considérée comme libre dès qu' | ||
+ | - La durée effective d'une tâche correspond au temps passé entre le début et la fin de la tâche. | ||
- A tout moment un expert peut demander au système quelles sont les crises en cours et obtenir pour chacune la durée prévue. En sélectionnant une crise, il peut alors la visualiser. | - A tout moment un expert peut demander au système quelles sont les crises en cours et obtenir pour chacune la durée prévue. En sélectionnant une crise, il peut alors la visualiser. | ||
- | - L' | + | - L' |
- Un système central permet à l' | - Un système central permet à l' | ||
- | - | ||
- | |||
- | |||
- | Questions sous la forme d'une auto-evalutation : | ||
- | Une fois que tous les groupes sont passés je leur donne plein de temps pour vérifier qu'ils ont bien pris en compte certains aspects et les forcer à répondre à des questions notés ci-dessous par Q. | ||
- | |||
- | * Est-ce que la multiplicité des types de crises est bien représentée? | ||
- | * Est-ce que l' | ||
- | * Est-ce que l' | ||
- | * Est-ce que les tâches sont associées aux missions? | ||
- | * Est-ce que les tâches peuvent être validées? | ||
- | * Est-ce que des ressources sont associées aux tâches? | ||
- | * Est-ce que plusieurs types de ressources sont représentées? | ||
- | * Est-ce que les différents états d'une mission sont bien prévus? | ||
- | * Est-ce que la date de début de mission est bien prévue ? (attibut ou opération) | ||
- | * Est-ce que la terminaison d'une mission est bien prévue ? La date de fin de mission ? | ||
- | * Est-ce que les durées effectives et prévisionnelles sont bien prévues? Sur les missions? sur les tâches? | ||
- | * Q - Avez-vous un moyen d' | ||
- | * Est-ce que la notion de liberté d'une ressource est modélisée ? | ||
- | * Avez-vous identifié les différents roles impliqués dans cet extrait ? | ||
- | * Quelle est la relation entre visualiser les crises et visualiser une crise? Est-ce qu'un extends dans les diagrammes de cas d' | ||
- | * Avez-vous modélisé comment il est possible d' | ||
- | * Q - Difficile - Que feriez-vous pour gérer la question suivante : Quel est le taux d' | ||
- | |||
- | |||
- | un diagramme de séquence ... | ||
- | |||
- | responsabilité unique | ||
- | |||
- | Segregation des interfaces | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | https:// | ||
- | |||
- | ====== Cards ====== | ||
- | |||
- | One of the first problems we will tackle in this module is to design an abstraction that can conveniently represent a single playing card. In a standard deck of cards there are 52 distinct cards and any given card can be completely defined by its suit (Hearts, Spades, Diamonds, Clubs) and its rank (Ace, 2, 3,...,10, Jack, Queen, King). | ||
- | |||
- | In a program we can represent a playing card in many different ways. For example, using a single integer between 0 and 51 where the value of the integer somehow represents the card. Or, we could represent a card using a combination of 6 boolean values (insane but technically possible). Here to apply the principle of information hiding, we would organize our program structure so as to hide the decision of how exactly we represent a card in the program. | ||
- | |||
- | |||
- | we started to design this type, we would quickly realize that our program also needs to manipulate two other types of values: suits and ranks. These types of values are a bit different because they are more like labels for domain objects than actual objects. What makes them feel like labels are that there are a finite number of them for a particular type of values (e.g., 4 for suits), and it appears to be useless to have two or more instances representing a given suit (e.g., clubs). In fact values of these types would be used more or less as constants in a program. | ||
- | <code java> | ||
- | public enum Suit | ||
- | { | ||
- | CLUBS, DIAMONDS, SPADES, HEARTS | ||
- | } | ||
- | </ | ||
- | TO DO | ||
- | |||
- | Extend the Suit enumerated type in Card to include a method color() that returns the color of the suit. The return type should be a new enumerated type Color. | ||
- | https:// | ||
- | |||
- | |||
- | Extend version 7 of class Card to support the concept of a " | ||
- | https:// | ||
- | |||
- | |||
- | Add a method getCards() to the Deck class that returns the cards in the deck without breaking encapsulation. | ||
- | |||
- | ===== Class Interactions ===== | ||
- | https:// | ||
- | Consider the following program: | ||
- | <code java> | ||
- | class Game | ||
- | { | ||
- | Deck aDeck; | ||
- | ... | ||
- | |||
- | public final class Deck | ||
- | { | ||
- | | ||
- | ... | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Hand class ===== | ||
- | Design and implement a well-encapsulated abstraction to represent a " | ||
- | |||
- | |||
- | |||
- | http:// | ||
- | |||
- | https:// | ||
2019_2020/s3/concprogobjet/td/td3.1569511691.txt.gz · Last modified: 2019/09/26 15:28 by blay