Examen + correction 1ere session 2018 2019 - design patterns

Examen 1ère session 2018-2019 – NSY 102 : Intranet et Design Patterns

Première Partie – Sans Document

1. QCM (35 points)

Ce sujet est un QCM dont les questions sont de trois natures :

  • Les questions à 2 propositions : une seule réponse est correcte.
  • Les questions à 3 propositions dont une seule est bonne : +1 point pour la bonne réponse, –½ point par mauvaise réponse.
  • Les questions à 3 propositions dont une seule est fausse : +½ point par bonne réponse, –1 point pour la mauvaise réponse.

Pour répondre, cochez les propositions appropriées dans les cases prévues. Si vous cochez toutes les propositions d’une question, cela équivaut à ne rien cocher (score nul). Ratuez correctement en cas d’erreur pour éviter toute ambiguïté.

Indiquez votre nom et prénom en en-tête du QCM. Vous disposez de 4 points négatifs sans pénalité.

Questions du QCM

Soit un objet, instance de la classe A. Pour transformer cet objet en un objet distant, il suffit que :

  • A hérite de la classe UnicastRemoteObject et implémente une interface publique (I) qui hérite de Remote.
  • A soit un proxy de la classe UnicastRemoteObject.
  • A soit une agrégation d’une classe B qui hérite de UnicastRemoteObject et implémente une interface publique (I) qui hérite de Remote.

Soit un objet quelconque Obj (instance de la classe A qui n’hérite pas d’une autre classe). En Java RMI, il est très facile de transformer cet objet en un objet distant. Pour cela, il suffit de :

  • faire que la classe A implémente l’interface Remote.
  • faire que la classe A implémente l’interface Serializable, puis écrire cet objet dans un annuaire RMI.
  • créer un proxy de A. Ce proxy hérite de UnicastRemoteObject et implémente l’interface de A qui hérite de Remote.

IhmXXX (interface client), IhmXXXRmiImp (implémentation RMI) et AppXXX (applicatif) sont liés comme suit :

  • InterfaceClient (ex. : IhmXXX)
  • IhmXXXRmiImp (DP Proxy Client de AppXXX)
  • AppXXXInt (interface distante)
  • AppXXXODInt (interface distante étendue)
  • AppXXXOD (objet distant)

La méthode getDate() et setPref ixe(String) (corrigé : setPref ixe(String)) sont implémentées dans ces classes.

La question suivante porte sur le diagramme de classe :

  • Q 3 : IhmXXXRmiImp est-il un DP Proxy Client de AppXXX ?
  • 1. OUI
  • 2. NON

Q 4 : Dans un système utilisant plusieurs serveurs de sockets avec des classes UnicastRemoteObject, les affirmations suivantes sont-elles correctes ?

  • On peut créer un nouvel OD (Objet Distant) dans la JVM1 qui s’exécute sur le port 9102.
  • Sur la machine A, on peut créer une nouvelle JVM3 dans laquelle on crée un nouvel OD qui s’exécute sur le port 9103.
  • Dans la JVM2, on peut créer un nouvel OD sur le port 9102.

Un Design Pattern (DP) est une implémentation spécifique d’un principe général de conception décrit sous forme de diagramme de classe.

  • Q 5 : Le DP Singleton permet-il de rendre transparent pour le programmeur la création unique d’un objet ?
  • 1. OUI
  • 2. NON

Voici un exemple de code implémentant un singleton :


public class SingletonXXX {
    static private SingletonXXX sg = new SingletonXXX();
    private SingletonXXX() {}
    static public SingletonXXX getSingletonXXX() {
        return sg;
    }
}
  • Q 6 : Ce code est-il correct ?
  • 1. OUI
  • 2. NON
  • Q 7 : Dans un système réparti, le DP Singleton permet-il de créer un objet distant unique sur le réseau ?
  • 1. OUI
  • 2. NON
  • Q 8 : Le DP Factory est-il aussi un DP Singleton ?
  • 1. OUI
  • 2. NON
  • Q 9 : Un DP Singleton est-il un Factory qui crée un produit unique ?
  • 1. OUI
  • 2. NON
  • Q 10 : Le DP Factory a-t-il pour fonction la création d’objets dont les classes héritent d’une même classe abstraite ou implémentent la même interface ?
  • 1. OUI
  • 2. NON

Dans le DP Factory, si ProduiConcret est une classe abstraite dont héritent les classes ProduitA et ProduitB, alors le rôle de la méthode getProduit du Factory est :

  • 1. de demander à la classe ProduitConcret de créer (new) des objets de type Produit.
  • 2. de créer des produits en faisant l’instanciation des classes ProduitA ou ProduitB.
  • Q 11 : Le DP Builder peut-il être utilisé dans le DP Factory pour faciliter la production d’un objet complexe ?
  • 1. OUI
  • 2. NON
  • Q 12 : Si le rôle d’un Factory est de créer des objets distants, alors l’interface de tous ces produits est-elle une interface qui hérite de Remote ?
  • 1. OUI
  • 2. NON

Ce schéma représente le DP Décorateur. Est-il correct ?

  • 1. OUI
  • 2. NON
  • Q 13 : L’injection de dépendance utilise-t-elle le principe de l’inversion de contrôle (IoC) appliqué au contrôle de la dépendance entre deux classes ?
  • 1. OUI
  • 2. NON
  • Q 14 : Dans le DP Observateur, la communication entre l’Observer (consommateur d’événement) et l’Observable (producteur d’événement) est-elle nécessairement asynchrone ?
  • 1. OUI
  • 2. NON

Le DP Observateur/Observable est-il utilisé dans :

  • 1. le DP Factory
  • 2. le DP MVC (Model-Vue-Controleur)
  • 3. le DP IoC (Inversion de contrôle)
  • Q 15 : Le DP Observateur/Observable peut-il être utilisé pour réaliser un connecteur Producteur/Consommateur ?
  • 1. OUI
  • 2. NON

Dans le DP Observateur suivant, la classe ObserverXXX implémente la méthode update de l’interface Observer, appelée par ObservableXXX.

  • Q 16 : Comme dans l’Injection de Dépendance, le DP Stratégie permet-il d’injecter dynamiquement un traitement générique dans un utilisateur ?
  • 1. OUI
  • 2. NON

Ce schéma est-il le diagramme du DP Stratégie ?

  • 1. OUI
  • 2. NON
  • Q 17 : Dans le DP Adaptateur, l’adaptateur et l’adapté implémentent-ils la même interface ?
  • 1. OUI
  • 2. NON

Ce diagramme de classe représente-t-il un DP Adaptateur ? La classe XXX ne pouvant pas implémenter l’interface Interface, une classe AdaptateurXXX est créée pour le faire.

  • 1. OUI
  • 2. NON

Dans le DP MVC, le Modèle utilise-t-il le DP Observateur/Observable pour :

  • 1. recevoir les actions du contrôleur de mise à jour du Modèle
  • 2. envoyer aux vues les notifications de changement des états du Modèle
  • Q 18 : Le DP Proxy peut-il être utilisé pour rendre distant une classe quelconque ou une classe qui implémente l’interface du Proxy ?
  • 1. une classe quelconque
  • 2. une classe qui implémente l’interface du Proxy

En RMI, le « stub » est-il un Proxy sur l’interface qui hérite de Remote ?

  • 1. OUI
  • 2. NON
  • Q 19 : Dans la communication synchrone via un « canal d’événement » entre un producteur et des consommateurs, le producteur utilise-t-il un proxy de consommateur pour leur pousser un événement ?
  • 1. OUI
  • 2. NON

Laquelle des descriptions suivantes est un principe de communication synchrone ?

  • 1. Le producteur dépose à son rythme ses événements dans une file. Le ou les consommateurs peuvent alors récupérer ces événements.
  • 2. Le producteur pousse (« push ») chaque événement vers chacun des consommateurs via une méthode distante qui retourne un état de consommation.

Ce schéma représente le DP Dynamic Proxy. Le rôle de la classe MyServiceHandler est-il :

  • 1. de créer une instance d’une classe qui implémente l’interface AppInt, dont le rôle est de servir de proxy à l’appel des méthodes de App.
  • 2. d’implémenter toutes les méthodes de l’interface AppInt.
  • 3. d’appeler les méthodes de App décrites dans l’interface AppInt.

Le Dynamic Proxy est-il utilisé dans la technologie RMI de Java pour :

  • 1. créer dynamiquement le skeleton permettant de traiter les requêtes des clients reçues par l’objet distant
  • 2. créer dynamiquement le stub permettant d’envoyer les requêtes des clients à l’objet distant

En Java, dans un Dynamic Proxy, le chargement de classe permet-il de réaliser de l’injection de dépendance entre la classe utilisatrice et la classe de service utilisé ?

  • 1. OUI
  • 2. NON

Dans le DP Observateur/Observable de base (de Java), le mode de communication entre les Observers et l’Observable est-il :

  • 1. synchrone
  • 2. asynchrone

Ce DP est-il une des formes de conception d’un Objet Distant ? Il est composé de :

  • 1. 1 Adaptateur
  • 2. 2 Adaptateurs
  • 3. 1 Proxy et 1 Adaptateur

Ce diagramme représente-t-il :

  • 1. une injection de dépendance par l’utilisation d’un setteur
  • 2. une injection de dépendance par l’utilisation d’un constructeur
  • 3. une injection de dépendance par l’utilisation d’un proxy

2. Questions libres (15 points)

Chaque question vaut 5 points. Répondez sur une copie double vierge en indiquant le numéro de la question et votre nom et prénom.

QUESTION N°1 : Diagramme de classe du Design Pattern Builder

Décrivez le diagramme de classe du DP Builder et expliquez son comportement.

QUESTION N°2 : Rôle du Design Pattern Injection de Dépendance

Expliquez le rôle du DP « Injection de dépendance ». Citez deux exemples précis d’utilisation.

QUESTION N°3 : Différence entre les modes de communication « push » et « pull »

Expliquez, en termes de Design Pattern, la différence entre les modes de communication « push » et « pull » entre un Producteur et ses Consommateurs.

FAQ

Qu’est-ce qu’un Design Pattern ?

Un Design Pattern est une solution réutilisable à un problème courant en conception logicielle, souvent représentée sous forme de diagrammes de classe pour clarifier son implémentation.

Comment fonctionne le DP Singleton ?

Le DP Singleton garantit qu’une classe ne peut avoir qu’une seule instance et fournit un point d’accès global à cette instance, souvent via une méthode statique.

Quelle est la différence entre Factory et Builder ?

Le DP Factory crée des objets de types différents mais liés, tandis que le DP Builder construit des objets complexes étape par étape en utilisant une classe dédiée.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne