Résumé syntaxique élémentaire #
Utilisation d’objets/classes existantes #
Création d’une date (rappel: cette classe est obsolète) #
Date d = new Date(1981, 5, 1);
- Se traduit par:
d
est une référence de typeDate
qui pointe sur un objet de typeDate
. Date(...)
est un constructeur d’objetnew
indique que l’objet est instancié ; un espace mémoire lui est réservé ; plus ou moins équivalent à un malloc en C.
Création à l’aide de fabriques (méthodes statiques) #
|
|
Méthodes #
Méthodes statiques #
Les méthodes statiques sont des méthodes rattachée à une classe. Permet la programmation “sans objets”.
|
|
Méthodes d’instance #
Rattachée à un objet instancié
|
|
Exceptions (notion de base) #
Retourner une exception:
|
|
Traitement possible #
|
|
Si le traitement est obligatoire, mais qu’il n’est pas possible de résoudre le problème, il est possible d’ajouter une clause throws
dans la signature de la ou des méthodes.
|
|
Classes mutables vs classes immutables #
Classe mutable #
modifie l’état interne de l’objet
|
|
dans le cas général:
class MyObject {
void action(...) { ... }
}
Classe immutable #
L’état de l’objet ne varie jamais. Une action retourne un nouvel état si nécessaire.
|
|
dans le cas général:
class MyObject {
MyObject action(...) { ... }
}
Super-classe Object #
Toute classe dérive implicitement de Object
.
Possibilité de redéfinir : toString
, equals
et hashCode
.
Règles:
- idéalement, toujours redéfinir
toString
pour nos classes - retourner un résultat concis et informatif
- si
equals
est redéfini,hashCode
doit être également redéfini
Redéfinition #
Action de redéfinir une méthode d’une classe/interface parente.
Redéfinitioin du equals
#
N’utilisez jamais instanceof
(pour préserver la symétrique de l’égalité) sauf si votre classe est final
.
|
|
Redéfinitioin du hashCode
#
Redéfinissez toujours hashCode
si la méthode equals
est redéfinie.
|
|
Polymorphisme de sous-typage #
Le polymorphisme de sous-typage permet de substituer un type par un sous-type.
|
|
Polymorphisme ad-hoc : La surcharge #
La surcharge ne doit pas être confondu avec la redéfinition.
- redéfinition:
- la méthode redéfinie a le même nom et les mêmes arguments
- action de redéfinir une méthode d’une classe/interface parente.
- s’applique donc dans le contexte de l’héritage
- le type de retour peut appartenir à un sous-type de la classe
- surcharge:
- la méthode surchargée a le même nom, mais les arguments sont différents
- le type de retour différents ne permet pas d’appliquer la surcharge. Un type de retour peut donc appartenir à un sous-type
Surcharge de la méthode test
:
|
|