2014_2015:s3:concprogobjet:td:td3
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
2014_2015:s3:concprogobjet:td:td3 [2014/09/19 16:14] – [Tuyaux] blay | 2014_2015:s3:concprogobjet:td:td3 [2015/02/16 07:45] (current) – [Responsabilités] blay | ||
---|---|---|---|
Line 41: | Line 41: | ||
{{ : | {{ : | ||
+ | <note tip>Pour vous aider vous pouvez dans un premier temps, ne pas tenir compte de la boîte de messages par défaut et n'en tenir compte qu'à la fin du TD en identifiant bien les impacts sur le modèle et sur le code, en particulier avec les responsabilités qui en résultent.</ | ||
- Quels modèles utilisez-vous pour analyser le problème ? | - Quels modèles utilisez-vous pour analyser le problème ? | ||
Line 68: | Line 68: | ||
- Et si maintenant, on veut afficher les messages en fonction de l' | - Et si maintenant, on veut afficher les messages en fonction de l' | ||
- | <box round rgb(150, | + | <box round rgb(150, |
- | * Dans votre répertoire de projet, sous TD3, se trouvent: | + | * Mettez un mail à votre encadreur avec soit l' |
+ | * Le rendu consiste en : | ||
- Un document contenant | - Un document contenant | ||
* votre modèle final (Tout le monde n' | * votre modèle final (Tout le monde n' | ||
* des explications sur les raisons de ce modèle, les choix que vous avez faits et les leçons apprises. | * des explications sur les raisons de ce modèle, les choix que vous avez faits et les leçons apprises. | ||
- | | + | |
+ | - Il est préférable que les codes soient commentés en respectant les consignes d'une javadoc ((utilisez simplement eclipse pour générer la stucture des commentaires par exemple)) | ||
Dans cet exercice nous évaluons votre capacité à concevoir les bons modèles et la " | Dans cet exercice nous évaluons votre capacité à concevoir les bons modèles et la " | ||
Line 112: | Line 115: | ||
===== Responsabilités et Couplages ===== | ===== Responsabilités et Couplages ===== | ||
- | On distingue deux formes de consommation pour un même modèle de voiture : | + | Déplacé |
- | * la consommation moyenne sur route ou urbaine [[http:// | + | |
- | * la consommation en fonction de la vitesse | + | |
- | < | + | |
- | Si une voiture roule à '' | + | |
- | < | + | |
- | Avec un coefficient de '' | + | |
- | + | ||
- | <note warning> | + | |
- | + | ||
- | - Pour certains modèles de voitures, nous disposons de ces informations. Quelle modélisation proposez-vous pour répondre à des questions comme : | + | |
- | * quelle est la consommation moyenne du modèle Clio sur Route (rep. 6,3)? urbaine(rep. 8,1)? | + | |
- | * quelle est la consommation moyenne d'une Clio à 150km/h? (mettons 3,85*10^-4 et donc une réponse de quasi 10, ... ce qui n'est pas du tout la réalité!!! ). | + | |
- | - Réfléchissez à l' | + | |
- | - On intègre à présent la consommation " | + | |
- | - On vient d' | + | |
- | - Comment est-il possible de créer un modèle de voiture? Quel est le diagramme de séquence associé (sur papier a minima)? Quel est le code? | + | |
- | - En fait, pour certains modèles de voiture (par exemple, les Renaults), les consommations moyennes sont obtenues par des requêtes à un service externe qui, en fonction des informations sur le modèle (on se limite au nom et à l' | + | |
- | - Que retenez-vous? | + | |
- | + | ||
- | + | ||
- | + | ||
- | <box round rgb(150, | + | |
- | * Dans votre répertoire de projet, sous TD2, se trouvent: | + | |
- | - Un document contenant | + | |
- | * votre modèle final (Tout le monde n' | + | |
- | * des explications sur les raisons de ce modèle (dont vous êtes très fiers) et les leçons apprises. | + | |
- | - Les codes et les tests. Pensez bien que le service externe ne doit pas être implémenté. Une fonction qui pour l' | + | |
- | </ | + | |
- | + | ||
- | < | + | |
- | <!-- | + | |
- | + | ||
- | AJOUTER la gestion de l' | + | |
- | + | ||
- | ===== Refactoring et Duplication ===== | + | |
- | + | ||
- | Le bus est maintenant composée de boîtes à messages. | + | |
- | Plusieurs producteurs peuvent émettre des messages vers une même boîte, plusieurs consommateurs peuvent lire les messages dans une boite. | + | |
- | + | ||
- | //Exemples de scénario :// | + | |
- | - La voiture A a choisi d' | + | |
- | - La voiture B demande combien il y a de messages dans la boite "Etat Des Routes" | + | |
- | - La voiture B demande les messages qui se trouvent dans la boite "Etat des Routes" | + | |
- | - La voiture A efface le message qui se trouve dans la boite "Etat Des Routes" | + | |
- | - L' | + | |
- | + | ||
- | + | ||
- | **A FAIRE :** | + | |
- | - Proposer un modèle de classes en conception | + | |
- | - Vérifier que tous les scénarios sont " | + | |
- | - Vérifier les propriétés vues en cours : orthogonalité? | + | |
- | - Implémenter et tester votre code sur les scénarios donnés. | + | |
- | + | ||
- | - On sait que l'on a très souvent besoin de connaître le nombre de messages dans une boîte que proposez-vous? | + | |
- | ===== Donnez-nous des exemples ===== | + | |
- | + | ||
- | Prenez le cours et vos codes passés un peu " | + | |
- | Rendu noté sur la pertinence des réponses. | + | |
- | + | ||
- | + | ||
- | ===== Polymorphisme ===== | + | |
- | + | ||
- | Le bus supporte à présent différents types de messages : Rémanent, Ephemere, Fondamental, | + | |
- | + | ||
- | Chacun de ces types de messages répond aux exigences suivantes concernant leur cycle de vie. | + | |
- | + | ||
- | ^ ^ Création ^ Lecture ^ MiseAJour ^ Destruction^ | + | |
- | ^ Rémanent| Il connait son créateur | --- | Peut être mis à jour par son créateur| Ne peut être détruit que pas son créateur| | + | |
- | ^ Ephemere| --- | Est automatiquement retiré de sa boîte dès qu'il est lu| Ne peut pas être mis à jour| Ne peut être détruit que s'il n'est plus dans une boite| | + | |
- | ^Temporel|Il connait la date où il a été créé et sa durée |Il ne peut être lu que s'il n'est pas périmé. S'il est périmé, il est détruit lorsque l'on demande à le lire|Peut être mis à jour| Est automatiquement détruit quand il est périmé| | + | |
- | ^ Intelligent|Il connait son créateur|N' | + | |
- | ^ Re-armable | --- | --- | Il peut être réactivé | Il disparait en lecture au bout d'un temps donné, il doit alors être réactivé et s'il n'est pas re-armé, au bout d'un certain temps il est détruit| | + | |
- | + | ||
- | **A FAIRE** | + | |
- | - Proposer un modèle de classes en conception | + | |
- | - Vérifier que tous les scénarios sont " | + | |
- | - Vérifier les propriétés vues en cours | + | |
- | - Implémenter et tester votre code sur les scénarios donnés. | + | |
- | - Vérifier que tous vos scénarios précédents sont toujours fonctionnels, | + | |
- | - Quel impact sur le calcul du nombre de messages dans une boîte ? | + | |
- | + | ||
- | Proposer un modele d'IHM de reception des messages pour les aider à comprendre... ou les laisser faire? | + | |
- | ou la leur donner et les laisser la connecter? | + | |
- | + | ||
- | + | ||
- | + | ||
- | ===== Responsabilités ===== | + | |
- | + | ||
- | En fonction des mots clefs qui constituent le contenu des messages, ils sont automatiquement associés à une boîte de message. Si aucune correspondance n'est détectée une boîte " | + | |
- | + | ||
- | Exemples : | + | |
- | - " | + | |
- | - " | + | |
- | - "photo " conduit à poster le message dans la boite " | + | |
- | + | ||
- | **A FAIRE** | + | |
- | - Qui crée les messages? | + | |
- | - Qui est responsable de filtrer les mots clefs? | + | |
- | - Quel est la complexité du filtrage? | + | |
- | - Déterminer le couplage de vos classes | + | |
- | + | ||
- | + | ||
- | ===== Abstraction ===== | + | |
- | + | ||
- | Si maintenant, on veut créer une nouvelle boîte qui reçoit les messages contenant contenant " | + | |
- | + | ||
- | Si maintenant on veut que tout message dans la boite SNAPCHAT soit ephemere ? | + | |
- | + | ||
- | + | ||
- | ===== Estimation de performance ===== | + | |
- | + | ||
- | + | ||
- | Une route est définie par des Tronçons. Un tronçon est défini par deux Positions et une longueur. Une Position est définie par un nom. | + | |
- | + | ||
- | Calculer le plus cours chemin entre deux positions. | + | |
- | Déterminer la complexité de votre algorithme. | + | |
- | + | ||
- | + | ||
- | => Outils de recherche de code dupliqué? | + | |
- | + | ||
- | + | ||
- | ===== Suites prévues pour ce projet ===== | + | |
- | + | ||
- | * // | + | |
- | Le bus gère des " | + | |
- | Dans le scénario de base, la voiture A a choisi d' | + | |
- | * //Objectifs : Apprentissage d'une famille courante de patterns (fabrique, builder) mais uniquement par l' | + | |
- | * //Objectifs : Prise en compte des IHMs et mise en place du pattern MVC à tous les niveaux// : Définir les interfaces graphiques qui nous permettraient d' | + | |
- | * //Objectifs : Prise en considération des responsabilités uniques// : Routage en fonction des messages : La voiture A emet un message et le bus décide de la ou des boîtes à messages concernées. | + | |
- | * //Objectifs : mise en oeuvre du pattern DAO + différents modèles de persistance + intégration par les interfaces + travail en équipe// : Les messages seront rendus persistants. Pour certaines boîtes les messages sont persistants, | + | |
- | * Il est assez surprenant d' | + | |
- | - Il sera possible de définir différentes formes de souscription. | + | |
- | + | ||
- | Nous n' | + | |
- | + | ||
- | --!> | + | |
- | </ | + |
2014_2015/s3/concprogobjet/td/td3.1411143273.txt.gz · Last modified: 2014/09/19 16:14 by blay