Devoir POO
Ce devoir est à envoyer à l’adresse: abidm7475@gmail.com en précisant vos noms et prénoms
au plus tard le 04/10/2020 à 23h59
Attention : Tout copié-collé sera sanctionné
Remarques : Des exemples personnels et originaux sont demandés dans ce devoir en dehors de ceux
déjà vus en cours et en TP.
Partie théorique : (10 points)
1. La programmation orientée objet s’appuie sur des concepts fondamentaux (4pts)
- Lister ces concepts
- Donner des exemples personnalisés pour illustrer chacun de ces concepts
(1) Classe et objet
Exemple :
Une classe « Pays » qui possède plusieurs attributs et méthodes.
L’objet « Algérie » qui est une instance de la classe pays.
(2) Encapsulation
Exemple :
Dans la classe « Pays » les attributs tels que « le nom », « la superficie » ou encore « la monnaie » ne
sont accessibles qu’à partir de certaines méthodes (constructeurs, accesseur ou mutateurs) par exemple
getNom ou setNom, getSuperficie ou setSuperficie… grâce au principe de visibilité : « privé » pour
les attribut et « public » pour les méthodes.
(3) Héritage (ou généralisation/spécialisation)
Exemple :
Classe « Principauté » qui hérite de la classe « Pays » et qui possède un prince comme attribut en plus
(4) Polymorphisme
Exemple :
Dans la classe « Habitant » il y a donc une méthode « vivre » très générale.
Cette méthode va s’adapter selon la catégorie d’habitants.
Si on considère par exemple que la classe Citadin hérite de la classe Habitant alors la méthode vivre
pour un Citadin c’est de vivre en ville. Par contre si une autre classe Campagnard hérite de la classe
Habitant alors la méthode vivre pour un Campagnard c’est de vivre à la campagne.
Habitant
vivre()
Citadin Campagnard
vivre(){ vivre(){
// vivre en ville //vivre à la campagne
}
}
2. Un programme écrit en Java peut s’exécuter sur n’importe quelle plateforme (1pt)
- Sous quelle(s) condition(s) cette phrase est vraie ?
- Lister 3 différentes plateformes que vous connaissez
Cette condition est vraie à condition qu’une machine virtuelle Java (ou JVM) soit installée et cela
quelle que soit la plateforme : Windows, Linux, Unix, MacOS, Solaris, Android,…
3. Expliquer avec vos propres mots (ou schémas) pourquoi l’instruction « for… each » pour le
parcours d’un tableau ne permet pas de modifier le contenu de ce tableau. (2pts)
La boucle for…each ne permet pas la modification des éléments d’un tableau car elle agit uniquement
sur une copie des éléments de ce tableau.
4. Soit la classe suivante : (1pts)
public class C {
int att ;
void meth1 (int p) {
att+=p;
}
class Espace {
double superficie
int capacité
void augmenter_espace(int capacité){
this.capacité += capacité
}
void diminuer_espace(int capacité){
this.capacité -= capacité
}
}
class Cour hérite d’Espace {
String jeux
…
}
class Sieste hérite d’Espace {
int nombre_lit
…
}
class Réfectoire hérite d’Espace {
int nombre_plateau
}
class AtelierCréatif {
String type
int nb_instrument
…
}
class salleEtude {
étudier()
…
}
class Enfant hérite Personne
class Personne {
String nom
String Prénom
…