-
Cours :
- cours 1 transparents : pdf
- cours 2 transparents : pdf
- cours 3 transparents : pdf
- cours 4 transparents : pdf
- cours 5 transparents : pdf
- cours 6 transparents : pdf
- cours 7 transparents : pdf
- cours 8 transparents : pdf
- cours 9 transparents : pdf
- cours 10 transparents : pdf
- cours 11 transparents : pdf
- cours 12 transparents : pdf
- Documents :
- TD :
- TP :
- TP 8 (pdf)
- TP 9 (pdf)
- TP 10 (pdf), Corrigé TP 10 (pdf)
- Projet astéroïdes (pdf)
TD4 : compte en banque et flacons
BankAccount
Dans cette exercice, on va travailler sur la classe BankAccount
ci-dessous qui permet de gérer un compte en banque avec retrait et dépôt.
public class BankAccount {
private double balance;
public BankAccount(double initialBalance)
{this.balance = initialBalance;
}
public void deposit(double depositAmount)
{this.balance += depositAmount;
}
public void withdraw(double withdrawAmount)
{this.balance -= withdrawAmount;
}
public double getBalance()
{return this.balance;
}
}
Question 1 : À quoi correspond l’attribut
balance
? Pourquoi a-t-on utilisé le mot cléprivate
afin de le rendre inaccessible à l’extérieur de la classe ?
Question 2 : Quel est le rôle du mot-clé
this
. Est-ce que son utilisation est indispensable ?
Question 3 : Quel est le rôle de chaque méthode ?
Un programmeur a écrit le code suivant qui utilise la classe BankAccount
:
public class MyBank{
public static void main(String[] args){
new BankAccount(700);
BankAccount account = withdraw(-500);
account.
System.out.println("BankAccount has a balance of " + account.getBalance());
} }
Question 4 : Est-ce que cela vous paraît être une utilisation normale de la classe
BankAccount
?
Question 5 : On souhaiterait rajouter une méthode
String toString()
à la classe afin de convertir le compte en une chaîne de caractère au format suivant :"Compte crédit : 123$"
(exemple d’un compte ayant le numéro 12 et un crédit de 123). Que faut-t-il changer à la classeBankAccount
?
Question 6 : On souhaiterait empêcher les retraits (
withdraw
) entraînant un crédit négatif. Un retrait entraînant un solde négatif ne serait tout simplement pas exécuté. Comment peut-on changer la classeBankAccount
pour réaliser cela ? Faut-il changer la signature de la méthodewithdraw
?
Question 7 : On souhaiterait rajouter un attribut à la classe permettant de lier une personne à un compte en banque. Comment peut-on changer la classe
BankAccount
pour réaliser cela ?
Flacons (bonus)
Vous travaillez chez Bobard & Co., fabriquant exclusif du sirop Mirifik, un élixir issu de la recherche spatiale qui rend jeune, beau et intelligent et qui empêche la chute des cheveux et les tâches de transpiration. Dilué à différentes concentrations, le sirop Mirifik est commercialisé dans diverses sortes de flacons.
Nous nous intéressons à la classe Bottle
dont les instances représentent les flacons de sirop Mirifik en stock. Cette classe comporte :
des attributs :
- une capacité en mL,
- un volume de liquide en mL,
- une concentration (le rapport volume de sirop / volume de sirop et d’eau),
- un étiquette (un texte quelconque),
des méthodes :
public void pourWater(double volume)
permettant d’ajouter de l’eau,public void pourSyrup(double volume)
permettant d’ajouter du sirop,public void transvase(Bottle pouringBottle, double volume)
permettant de verser du contenu provenant d’une autre bouteille.public void drink(double volume)
permettant d’extraire une quantité de liquide égale àvolume
(toute la bouteille sivolume
est supérieure ou égale à la quantité de liquide présent dans la bouteille).public String toString()
produisant une chaîne de caractères indiquant l’étiquette, le volume et la concentration de la bouteille.
Si une bouteille est pleine, tout ce qu’on tente d’y ajoute s’écoule à côté de la bouteille et est perdu.
Question 8 : Quels qualificateurs,
public
,final
ouprivate
, doit-on donner aux attributs ?
Question 9 : Est-il raisonnable d’ajouter des méthodes pour accéder aux attributs privées ?
Question 10 : Implémenter la classe
Bottle
.