Vous implanterez les propriétés suivantes introduites progressivement à chaque question par des interfaces, des classes abstraites ou des classes concrètes dont vous justifierez le choix. A chaque fois, sauf indication contraire, le code java complet est demandé.
La toute première propriété est
1- Un salarié a un salaire (opération retournant un double). Définir en Java la notion de Salarié.
Sans spécialement donner la suite du devoir, si je m'arrêtais sur cette première question.
Quels sont les critères qui me permettent de déterminer si je dois faire de Salarié une classe abstraite, un interface ou bien une classe concrète ?
Parce que dans le fond, j'imagine que ce sont ces fameux critères qui vont servir de justification.
Deux problèmes dans mon choix: Déjà, je suis incapable de faire une différence entre une classe abstraite et un interface.
Et puis, le vocabulaire employé également.
Pour moi, un salarié a un salaire, il est clair qu'il s'agit d'une classe avec un attribut salaire.
sauf qu'après on précise pour salaire: opération retournant un double.
==> Comment faut il comprendre cela ? salaire serait une sorte de méthode retournant un double ? Auquel cas salarié serait plutôt une classe abstraite ?
EDIT: Après avoir fait quelques recherches, la grosse différence entre classe abstraite et interface se trouve sur la notion d'héritage multiple.
On ne peut hériter que d'une classe en java (et donc hériter seulement d'une classe abstraite)
En revanche on peut implémenter plusieurs interfaces, ce qui permet de contourner le problème de l'héritage multiple si je puis dire.
Mais dans ce cas là...pourquoi ne pas utiliser toujours des interfaces plutôt que des classes abstraites ? Parce que dans le fond ça fonctionne de la même façon...à moins que l'on ait des différence de performances ...
