Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
cnam:utc503:td2 [2023/09/19 12:09] – jcheron | cnam:utc503:td2 [2024/09/25 23:42] (Version actuelle) – jcheron | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== TD2 ====== | ====== TD2 ====== | ||
- | ===== Programmation orientée objet ===== | ||
+ | ===== Exercice 1 : Gestion de Compte Bancaire ===== | ||
+ | Objectif : Travailler sur l’instanciation, | ||
+ | Créer une classe **CompteBancaire** avec les attributs privés suivants : | ||
+ | |||
+ | * titulaire (chaîne de caractères) | ||
+ | * solde (flottant) | ||
+ | |||
+ | |||
+ | Implémenter les méthodes suivantes : | ||
+ | |||
+ | * Un **constructeur** qui initialise un compte bancaire avec le nom du titulaire et un solde initial de 0. | ||
+ | * Une méthode **deposer** qui permet d' | ||
+ | * Une méthode **retirer** qui permet de retirer un montant du solde du compte (si le solde est suffisant). | ||
+ | * Des méthodes **getSolde** et **getTitulaire** pour accéder aux attributs privés. | ||
+ | |||
+ | ==== Questions : ==== | ||
+ | |||
+ | * Pourquoi l' | ||
+ | * Comment le constructeur est-il utilisé pour initialiser correctement les objets CompteBancaire ? | ||
+ | |||
+ | |||
+ | ===== Exercice 2 : Surcharge de Méthodes pour les Calculs ===== | ||
+ | |||
+ | Objectif : Travailler sur la surcharge de méthodes. | ||
+ | |||
+ | Crée une classe **Calculatrice** avec les méthodes suivantes : | ||
+ | |||
+ | * Une méthode **addition** qui accepte deux ou trois nombres et retourne leur somme. Si un seul nombre est fourni, elle retourne ce nombre. | ||
+ | * Une méthode **soustraction** qui accepte deux ou trois nombres. Si deux nombres sont fournis, elle retourne la différence entre le premier et le deuxième. Si trois nombres sont fournis, elle soustrait les deux derniers au premier. | ||
+ | |||
+ | |||
+ | ==== Exemple : ==== | ||
+ | |||
+ | |||
+ | <sxh java> | ||
+ | calc = Calculatrice(); | ||
+ | System.out.println(calc.addition(10, | ||
+ | System.out.println(calc.addition(10, | ||
+ | System.out.println(calc.soustraction(10, | ||
+ | System.out.println(calc.soustraction(10, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Exercice 3 : Gestion des Produits ===== | ||
+ | |||
+ | Objectif : Travailler sur l' | ||
+ | |||
+ | Créer une classe **Produit** avec les attributs privés suivants : | ||
+ | |||
+ | |||
+ | * nom (chaîne de caractères) | ||
+ | * prix (flottant) | ||
+ | * quantite (entier) | ||
+ | |||
+ | Implémenter les méthodes suivantes : | ||
+ | |||
+ | |||
+ | * Un constructeur qui initialise un produit avec un nom, un prix et une quantité. | ||
+ | * Une méthode **ajusterPrix** qui permet de changer le prix du produit. | ||
+ | * Une méthode **ajusterQuantite** qui permet de changer la quantité disponible du produit. | ||
+ | * Des méthodes **getNom**, **getPrix**, | ||
+ | |||
+ | ==== Questions : ==== | ||
+ | |||
+ | |||
+ | * En quoi l' | ||
+ | * Comment le constructeur facilite-t-il l’instanciation de nouveaux produits ? | ||
+ | |||
+ | ===== Exercice 4 : Classe pour les Vecteurs ===== | ||
+ | |||
+ | Objectif : Travailler sur la surcharge des méthodes et l’instanciation. | ||
+ | |||
+ | Créer une classe **Vecteur** avec les attributs : | ||
+ | |||
+ | * x (flottant) | ||
+ | * y (flottant) | ||
+ | |||
+ | Implémenter les méthodes suivantes : | ||
+ | |||
+ | * Un constructeur qui initialise un vecteur avec deux coordonnées, | ||
+ | * Une méthode **ajouter** qui accepte un autre vecteur ou deux coordonnées séparées et retourne la somme des vecteurs ou de leurs coordonnées. | ||
+ | * Une méthode **soustraire** qui accepte un autre vecteur ou deux coordonnées séparées et retourne la différence des vecteurs ou de leurs coordonnées. | ||
+ | |||
+ | ==== Exemple : ==== | ||
+ | |||
+ | |||
+ | <sxh java> | ||
+ | Vecteur v1 = Vecteur(2, 3); | ||
+ | Vecteur v2 = Vecteur(5, 7); | ||
+ | System.out.println(v1.ajouter(v2)); | ||
+ | System.out.println(v1.ajouter(1, | ||
+ | </ | ||
+ | |||
+ | ==== Questions : ==== | ||
+ | |||
+ | |||
+ | * Comment la surcharge de la méthode ajouter permet-elle de gérer différents types d' | ||
+ | * En quoi le constructeur facilite-t-il l' | ||
+ | |||
+ | |||
+ | ===== Exercice 5 : Héritage et Polymorphisme avec des Animaux ===== | ||
+ | |||
+ | Objectif : Travailler sur l' | ||
+ | |||
+ | * Créer une classe **Animal** avec un attribut nom et une méthode parler qui retourne une chaîne de caractères indiquant que l' | ||
+ | * Créer des classes dérivées **Chien** et **Chat** qui héritent de Animal : | ||
+ | * Chien doit surdéfinir la méthode parler pour retourner " | ||
+ | * Chat doit surdéfinir la méthode parler pour retourner " | ||
+ | * Créer un programme utilisant une liste d' | ||
+ | |||
+ | ==== Questions : ==== | ||
+ | |||
+ | * Comment la surdéfinition (overriding) est-elle utilisée pour implémenter le polymorphisme ? | ||
+ | * Que se passe-t-il si on ajoute un nouvel animal, par exemple un Oiseau, avec sa propre méthode parler ? | ||
+ | |||
+ | |||
+ | ===== Exercice 6 : Bibliothèque de Livres ===== | ||
+ | Objectif : Travailler sur l' | ||
+ | |||
+ | Crée une classe **Livre** avec les attributs privés suivants : | ||
+ | |||
+ | * titre (chaîne de caractères) | ||
+ | * auteur (chaîne de caractères) | ||
+ | * isbn (chaîne de caractères) | ||
+ | * nombrePages (entier) | ||
+ | |||
+ | Implementer les méthodes suivantes : | ||
+ | |||
+ | * Un constructeur qui initialise un livre avec un titre, un auteur, un ISBN et un nombre de pages. | ||
+ | * Des méthodes getTitre, getAuteur, getIsbn et getNombrePages pour accéder aux attributs. | ||
+ | * Des méthodes setTitre, setAuteur, setIsbn, et setNombrePages pour modifier ces attributs. | ||
+ | |||
+ | Créer ensuite une classe **Bibliotheque** avec les attributs suivants : | ||
+ | |||
+ | * nom (chaîne de caractères) | ||
+ | * adresse (chaîne de caractères) | ||
+ | * livres (liste d' | ||
+ | |||
+ | Implementer les méthodes suivantes : | ||
+ | |||
+ | * Un constructeur pour initialiser une bibliothèque avec un nom, une adresse, et une liste vide de livres. | ||
+ | * Une méthode ajouterLivre qui permet d' | ||
+ | * Une méthode afficherLivres qui affiche la liste des livres avec leur titre, auteur et ISBN. | ||
+ | * Une méthode rechercherLivre qui permet de rechercher un livre par son ISBN et le retourne. | ||
+ | |||
+ | ==== Question ==== | ||
+ | * Représenter le diagramme de classes | ||