Arnaud Labourel
8 septembre 2021
Un programme propre :
public class Rectangle {
int width, height;
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
private boolean isSquare(){ return width == height; }
static int countSquares(List<Rectangle> rectangles){
int nbSquares = 0;
for(Rectangle rectangle : rectangles)
if(rectangle.isSquare())
nbSquares++;
return nbSquares;
}
}
Penser objet : décomposer le programme en objets
Quels sont les objets nécessaires à la résolution du problème ?
⇒ décomposition du problème en objets
À quels modèles des objets correspondent-il ?
⇒ Quelles sont les classes ?
Quels sont les fonctionnalités/opérations dont on doit/veut pouvoir disposer sur ces objets ?
⇒ Quelles sont les méthodes des classes ?
Quelle est la structure des données de l’objet ?
⇒ Quelles sont les attributs des classes ?
un catalogue regroupe des articles, il permet de trouver un article à partir de sa référence.
un article est caractérisé par un prix et une référence que l’on peut obtenir. On veux aussi pouvoir déterminer si un article est plus cher qu’un autre
une commande est créée pour un client et un catalogue donnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des articles et le montant des frais de port de la commande.
un client peut créer une commande pour un catalogue et commander dans cette commande des articles à partir de leur références.
un catalogue regroupe des articles, il permet de trouver un article à partir de sa référence.
un article est caractérisé par un prix et une référence que l’on peut obtenir. On veux aussi pouvoir déterminer si un article est plus cher qu’un autre
une commande est créée pour un client et un catalogue donnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des articles et le montant des frais de port de la commande.
un client peut créer une commande pour un catalogue et commander dans cette commande des articles à partir de leur références.
un catalogue regroupe des articles, il permet de trouver un article à partir de sa référence.
un article est caractérisé par un prix et une référence que l’on peut obtenir. On veux aussi pouvoir déterminer si un article est plus cher qu’un autre
une commande est créée pour un client et un catalogue donnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des articles et le montant des frais de port de la commande.
un client peut créer une commande pour un catalogue et commander dans cette commande des articles à partir de leur références.
Catalog
un catalogue regroupe des articles, il permet de trouver un article à partir de sa référence.
Item getItem(String reference)
Item
un article est caractérisé par un prix et une référence que l’on peut obtenir. On veux aussi pouvoir déterminer si un article est plus cher qu’un autre
double getPrice()
String getReference()
boolean isMoreExpensiveThan(Item other)
Order
une commande est créée pour un client et un catalogue donnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des articles et le montant des frais de port de la commande.
Order(Client client, Catalog catalog)
(constructeur)void addItem(Item item)
List<Item> allItems()
double getTotalPriceOfItems()
double getShippingCost()
Client getClient()
Catalog getCatalog()
Client
un client peut créer une commande pour un catalogue et commander dans cette commande des articles à partir de leur références.
Order createOrder(Catalog catalog)
void orderItem(Order order, String reference)
Un objet :
null
(adresse pointant vers rien)null
Si vous n’avez pas construit l’objet, tout accès à :
générera une NullPointerException
(davantage de détails sur les exceptions dans un cours ultérieur).
null
dans son code.Une classe (d’objet) définit des :
private int count = 0;
private final Color backColor = new Color(0.5,0.2,0);
private final String name = "John Doe";
⇒ objets créés avec des valeurs de bases pour les attributs.
private
: accessible que dans la classepublic
: accessible partoutfinal
: une seule affectation avant fin constructionLe corps d’une méthode ou d’une classe est composé :
Une variable est un espace mémoire nommé pour stocker une valeur momentanément.
Portée : une variable (qui n’est pas un attribut) existe :
chaque variable possède :
0
, null
, …)L’affectation est l’opération consistant à mettre une valeur dans un espace mémoire définit par une variable (l-value) :
L’affectation est soumise aux contraintes de types: la valeur stockée doit être d’un type correspondant à celui déclaré.
La création d’un nouvel objet se fait avec le mot-clé new
, qui déclenche :
return
Une méthode peut retourner une valeur lorsqu’elle a terminé son travail, en utilisant le mot-clé return
.
Lors de l’évaluation de l’instruction return
, l’expression après le return
(le résultat) est d’abord évaluée (si elle existe), ensuite l’exécution de la méthode est interrompue.
Le résultat est retourné au niveau de l’instruction ayant fait l’appel de méthode.
return
Les valeurs sont définies par des expressions :
0.01
, -42
, "toto"
, …+
, *
, /
, -
void
) ou de constructeursLes expressions apparaissent :
return
Une classe (d’objet) définit des :