Université de Mostaganem 2ème année de licence informatique Matière : POO 2019-

Université de Mostaganem 2ème année de licence informatique Matière : POO 2019-2020 Devoir POO Ce devoir est à envoyer à l’adresse: abidm7475@gmail.com en précisant vos noms et prénoms au plus tard le 04/10/2020 à 23h59 Attention : Tout copié-collé sera sanctionné Remarques : Des exemples personnels et originaux sont demandés dans ce devoir en dehors de ceux déjà vus en cours et en TP. Partie théorique : (10 points) 1. La programmation orientée objet s’appuie sur des concepts fondamentaux (4pts) - Lister ces concepts - Donner des exemples personnalisés pour illustrer chacun de ces concepts (1) Classe et objet Exemple : Une classe « Pays » qui possède plusieurs attributs et méthodes. L’objet « Algérie » qui est une instance de la classe pays. (2) Encapsulation Exemple : Dans la classe « Pays » les attributs tels que « le nom », « la superficie » ou encore « la monnaie » ne sont accessibles qu’à partir de certaines méthodes (constructeurs, accesseur ou mutateurs) par exemple getNom ou setNom, getSuperficie ou setSuperficie… grâce au principe de visibilité : « privé » pour les attribut et « public » pour les méthodes. (3) Héritage (ou généralisation/spécialisation) Exemple : Classe « Principauté » qui hérite de la classe « Pays » et qui possède un prince comme attribut en plus (4) Polymorphisme Exemple : Dans la classe « Habitant » il y a donc une méthode « vivre » très générale. Cette méthode va s’adapter selon la catégorie d’habitants. Si on considère par exemple que la classe Citadin hérite de la classe Habitant alors la méthode vivre pour un Citadin c’est de vivre en ville. Par contre si une autre classe Campagnard hérite de la classe Habitant alors la méthode vivre pour un Campagnard c’est de vivre à la campagne. 2. Un programme écrit en Java peut s’exécuter sur n’importe quelle plateforme (1pt) - Sous quelle(s) condition(s) cette phrase est vraie ? - Lister 3 différentes plateformes que vous connaissez Cette condition est vraie à condition qu’une machine virtuelle Java (ou JVM) soit installée et cela quelle que soit la plateforme : Windows, Linux, Unix, MacOS, Solaris, Android,… 3. Expliquer avec vos propres mots (ou schémas) pourquoi l’instruction « for… each » pour le parcours d’un tableau ne permet pas de modifier le contenu de ce tableau. (2pts) La boucle for…each ne permet pas la modification des éléments d’un tableau car elle agit uniquement sur une copie des éléments de ce tableau. 4. Soit la classe suivante : (1pts) public class C { int att ; void meth1 (int p) { att+=p; } void meth2 (int p) { att-=p; } void meth3 (int p, C obj) { this.meth1(p); obj.meth2(p); } } - Expliquer à quoi correspond « this » dans cet exemple. - Selon vous, quelle(s) méthode(s) pourrai(en)t être statique (justifier votre réponse) ? « this » fait référence à l’objet courant à travers lequel on fait l’appel. Par exemple si l’objet courant est « ob0 » alors on fait appel à meth1 de l’objet « ob0 ». Aucune des méthodes n’est statique car elles s’appuient sur des attributs et des méthodes non statiques. Habitant vivre() Citadin vivre(){ // vivre en ville } Campagnard vivre(){ //vivre à la campagne } 5. Soit le texte suivant : (2pts) Une garderie pour enfant est gérée par un directeur ou une directrice. La garderie dispose de différents espaces d’accueil : une cour où les enfants peuvent jouer ainsi que différentes pièces. Une pièce dédiée à la sieste, un réfectoire où les enfants reçoivent leur déjeuner et leur goûter, des ateliers créatifs (pour la peinture, la musique, la lecture,…) ainsi que des salles d'études. Chacun de ces espaces a une certaine superficie ainsi qu’un nombre limité de places (nombre de personnes max.). Il est également possible d’augmenter ou de diminuer la capacité d’un espace. - D’après vous quelles classes peuvent être définies (plusieurs réponses sont possibles) ? - Quelles sont les caractéristiques de chaque classe (attributs et méthodes) ? Classes : class Garderie { Personne directeur Espace Liste_espace [] ouvrirGarderie() fermerGarderie() } class Espace { double superficie int capacité void augmenter_espace(int capacité){ this.capacité += capacité } void diminuer_espace(int capacité){ this.capacité -= capacité } } class Cour hérite d’Espace { String jeux … } class Sieste hérite d’Espace { int nombre_lit … } class Réfectoire hérite d’Espace { int nombre_plateau } class AtelierCréatif { String type int nb_instrument … } class salleEtude { étudier() … } class Enfant hérite Personne class Personne { String nom String Prénom … } Partie pratique : (10 points) Critères de notation - Les exemples de classes choisies sont originaux, personnalisés et logiques. - Le programme compile et s’exécute. (1pts) - La programmation doit être bien faite et modulaire (indentation, commentaires, …) 1. Définir une classe de votre choix qui modélise un phénomène (inspiré de la nature, d’objets qui vous entourent, de relations sociales, …). Cette classe définie doit avoir : - Des attributs - Des méthodes - Un constructeur qui permet d’initialiser ces attributs (3pts) 2. Instancier deux objets de cette classe et afficher les informations de ces objets (1pt) 3. Montrer en le codant comment on fait pour afficher les différents attributs de ces objets tout en respectant le principe d’encapsulation. (0,5 pt) 4. Définir une méthode statique qui s’applique naturellement à votre classe. Expliquer en commentaires pourquoi vous considérez que cette méthode doit être statique. (1,5 pts) 5. Proposer deux classes qui héritent de la première classe. (1pt) 6. Définir des constructeurs pour ces classes ainsi que des attributs et des méthodes. (1pt) 7. Instancier un objet pour chaque classe. (1pt) Remarque : Les classes devront contenir des attributs et des méthodes logiques et cohérentes avec votre modélisation. Une classe nommée « TesterProg » sera également définie avec la méthode main afin de tester le programme. uploads/s3/ corrigedevoir-bareme.pdf

  • 15
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager