ECOLE SUPÉRIEURE D’ECONOMIE NUMÉRIQUE, UNIVERSITÉ DE
MANOUBA
EXAMEN : SESSION PRINCIPALE
Module
Enseign
ant
Programmation Orientée
Objet
Chiheb-Eddine Ben N’Cir
et Zeineb ElKhalf
Date
11/01/2016
Durée
2h
: Merci de respecter l’ordre des questions. Laisser du « blanc » si vous n’avez pas de
NB
réponse pour une question.
c) variable d'interface
d) variable locale
4/ Un objet
a) est une variable en mémoire
b) doit avoir obligatoirement un
type
c) est un ensemble de variables
primitives ( int, char, ..) définit
dans la classe « Object »
d) est une instanciation d’une
classe
e) est obligatoirement créé à partir
d’une classe
5/ Une classe abstraite:
a) est une classe qui est
obligatoirement déclarée avec le
mot clef « abstract »
b) doit contenir toujours (au
moins une) des méthodes
abstraites si elle est déclarée
Publicité
avec le mot clef « abstract »
c) peut ne pas contenir des
méthodes abstraites si elle est
déclarée avec le mot clef
« abstract »
d) Peut être instanciée en utilisant
un de ses constructeurs
e) Peut être utilisé comme « type »
d’objets lors de leur déclaration.
Exercice 1
: Donner les réponses justes. (5pts)
1/ Un constructeur:
a) est une méthode qui ne possède
pas de paramètres
b) est une méthode sans type de
retour
c) est exécuté seulement une fois,
au démarrage du programme
d) est exécuté pour déclarer un
objet en mémoire
e) est utilisé pour instancier l'objet
à sa création
2/ Si la classe B est une extension de la
classe A par héritage:
a)
b)
les attributs publics de A sont
accessibles directement dans la
classe B
les attributs privés de A sont
accessibles directement dans la
classe B
les méthodes publiques de A
sont accessibles dans B.
d) on doit obligatoirement
c)
redéfinir les méthodes de B
Publicité
dans A
on ne peut pas redéfinir les
méthodes de B dans A
e)
3/ Un attribut « static » est aussi appelé:
a) variable d'instance
b) variable de classe
1
Exercice 2
: (15pts)
On propose de construire une petite application pour une agence de location immobilière.
L’activité de l’agence consiste à louer des maisons et des appartements aux locataires.
L’immobilier à louer possède un numéro séquentiel, attribué automatiquement lors de l’ajout
d’un nouvel immobilier, le nom de la ville où situé l’immobilier, une personne propriétaire,
une surface en m2 et une description de l’état actuel de l’immobilier (oui=libre, non= loué)
indiquant si l’immobilier est libre ou non. Les immobiliers à louer peuvent être des
appartements ou bien des maisons. Un appartement est caractérisé par le nom de la résidence,
le numéro de l’étage et le numéro de l’appartement alors que la maison est caractérisée par le
nom de la rue et le numéro de la maison.
Soit la conception objet suivante d’une partie de l’application. Répondre aux questions ci-
dessous en utilisant le langage JAVA.
Class : Personne
Nom : String
Contact : String
SaisirDetailPersonne
()
AfficherDetail()
Class :
Appartement
Residence :
String
Etage : int
NumApp : int
SaisirImmo()
AfficherImmo()
Class : Immobilier
Numero : int(auto)
Publicité
Ville : String
Numero : int(auto)
Surface : int
Ville : String
Surface : int
Etat: boolean
Etat: boolean
Proprietaire : Personne
Proprietaire :
Personne
SaisirImmo()
AfficherImmo()
Interface :
OperationImmobilier
SaisirImmo()
AfficherImmo()
Class : Maison
Rue : String
numMaison : int
SaisirImmo()
AfficherImmo()
Classe Personne :
1) Déclaré les attributs (visibilité privé) de la classe Personne.
2) Donner le code source du constructeur Personne (String Nom, String Contact).
3) Est-ce que le constructeur par défaut de la classe personne reste disponible après la
définition du constructeur ci-dessus. (question 2). pourquoi ? Redéfinir alors le
constructeur par défaut de la classe personne.
Il est possible de définir deux constructeurs (ou bien d’une manière générale deux
méthodes) dans la même classe ayant le même nom. Qu’appelle-t-on ce principe en
programmation orientée objet ? quelles sont les conditions nécessaires à satisfaire pour
définir deux méthodes ayant le même nom ?
4)
5) Donner le code source de la méthode AfficherDetail( ) permettant d’afficher les
informations relatives à une personne.
6) Donner le code source de la méthode SaisirDetailPersonne() permettant de donner la
main à l’utilisateur pour saisir le Nom et le Contact d’une personne.
7)
Publicité
Donner le code source des accesseurs (set et get) de chaque attribut déclaré dans la
classe Personne.
8) Est-ce que la définition des accesseurs est obligatoire dans la classe Personne.
Pourquoi ?
Classes : Immobilier, Appartement et Maison
9) Donner le code source de la déclaration des attributs (visibilité privé) de la classe
Immobilier.
10) Donner le code source du constructeur de la classe « Immobilier » qui permet de créer
un nouvel immobilier vide en initialisant le numéro de l’immobilier (numéro
séquentiel) et en initialisant les autres attributs à « 0 » ou bien « null » ou bien
« false » si c’est un type booléen. (vous pouvez ajouter d’autres attributs à la classe
Immobilier si c’est nécessaire).
11) Donner le code source de la méthode « AfficherImmo » dans la classe « Immobilier »
qui permet d’afficher les informations relatives à un immobilier.
12) Sachant que les classes « Appartement » et « Maison » héritent de la classe
« Immobilier », donner le code source de la redéfinition de la méthode
« AfficherImmo » dans chacune des ces classes.
Classe Application
On suppose que nous avons une classe « Application » qui contient une méthode
main(). On suppose aussi que toutes les méthodes dans les classes « Personne »,
« Immobilier », « Maison » et « Appartement » sont déjà définis.
13) En se basant sur le principe du Polymorphisme, donner le code source de la méthode
main () qui permet :
1) Déclarer un tableau « Tab » de 10 Immobiliers.
2) Pour chaque Immobilier dans le tableau « Tab » :
2.1) demander à l’utilisateur s’il veut ajouter une maison ou bien un
appartement.
2.2) selon le choix de l’utilisateur : créer une nouvelle maison ou bien un
nouvel appartement.
2.3) Saisir les informations relatives à l’appartement ou bien à la maison
3) Pour chaque Immobilier dans le tableau « Tab » : afficher les informations
relatives à un immobilier.
Interface OperationImmobilier
14) Donner le code source de l’interface « OperationImmobilier » qui contient les
méthodes SaisirImmo() et AfficherImmo(). Donner aussi l’entête de déclaration de la
classe « Immobilier » qui Implémente cette interface.