0% ont trouvé ce document utile (0 vote)
78 vues7 pages

Exercice N°1

Le document présente des exercices sur la programmation orientée objet, incluant la création de classes Personne, Enseignant et Etudiant, ainsi que des questions théoriques sur les interfaces et classes abstraites. Les exercices demandent la mise en œuvre de méthodes d'affichage et de gestion des absences pour les étudiants, ainsi que des réponses à des questions sur les concepts de l'héritage et des constructeurs. Des corrigés détaillés sont fournis pour chaque question, clarifiant les règles de création d'instances et d'héritage en Java.

Transféré par

dinaakaichi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
78 vues7 pages

Exercice N°1

Le document présente des exercices sur la programmation orientée objet, incluant la création de classes Personne, Enseignant et Etudiant, ainsi que des questions théoriques sur les interfaces et classes abstraites. Les exercices demandent la mise en œuvre de méthodes d'affichage et de gestion des absences pour les étudiants, ainsi que des réponses à des questions sur les concepts de l'héritage et des constructeurs. Des corrigés détaillés sont fournis pour chaque question, clarifiant les règles de création d'instances et d'héritage en Java.

Transféré par

dinaakaichi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

TP 4

Exercice n°1

Soit la représentation graphique suivante :

La classe Personne est définie selon le format suivant :

La classe Enseignant hérite de la classe Personne, elle comporte un attribut supplémentaire la


matière qu’elles enseignent, et est définie selon la description suivante :

La classe Etudiant hérite de la classe Personne, elle comporte deux attributs supplémentaires
la branche et le nombre de jours d’absence. Une méthode d’affichage doit être redéfinie pour
permettre l’affichage des deux attributs supplémentaires.
Deux autres méthodes doivent être créées ajouterAbsence() qui permet d’incrémenter
l’absence et une autres supprimerAbsence() qui décrémente d’une absence le nombre de jours
d’absence. Cette classe est définie selon la description suivante :

Travail à faire : Créer les classes Personne, Enseignant et Etudiant, enfin pour tester les trois
classes vous devez créer la classe Test.

Procédez à la création de la classe Test en suivant les instructions suivantes :

▪ Créer une personne et l’afficher ;

▪ Créer un enseignant puis l’afficher en faisant appels aux deux méthodes d’affichages ;

▪ Créez un étudiant, affichez-le, incrémenter deux fois le nombre de jours d’absences, et enfin
réaffichez-le ;

Exercice n°2

Q1) Peut-on créer une instance à partir d’une interface ? une classe abstraite ?

Q2) Peut-on rajouter un constructeur ? un constructeur avec un corps ?

Q3) Peut-on écrire le code suivant : A a = new B() ;

▪ si A est une classe abstraite, dérivée par la classe B ?

▪ si A est une interface, implémentée par une classe B ?

Q4) Une interface/classe abstraite peut-elle contenir des méthodes abstraites ? non-abstraites ?

statique et abstraite ?

Q5) Une interface/classe abstraite peut-elle contenir des attributs ? avec quels modificateurs ?

doivent-il être instanciés ?

Q6) Une interface peut-elle hériter d'une autre interface ? d'une classe abstraite ?
Q7) Une classe abstraite peut-elle hériter d'une autre classe abstraite ? d'une interface ?

Corrigés

Exercice n°1

//[Link]

/**

* @author Triki

*/

public class Personne {

protected String nom;

protected String prenom;

protected int age;

public Personne(String nom, String prenom, int age) {

[Link] = nom;

[Link] = prenom;

[Link] = age;

public void affiche(){

[Link](nom + " " + prenom + " " +age);

//[Link]

/**

* @author Triki

*/

public class Enseignant extends Personne{


private String matiere;

public Prof(String nom, String prenom, int age,String matiere) {

super(nom, prenom, age);

[Link] = matiere;

@Override

public void Affiche(){

//[Link](nom + " " + prenom + " " + age + " " + matiere);

[Link]();

[Link]("matiere : " + matiere);

//[Link]

/**

* @author Triki

*/

public class Etudiant extends Personne{

private String branche;

private int nbAbs;

public Eleve(String nom, String prenom, int age,

String branche, int nbAbs){

super(nom,prenom,age);

[Link] = branche;

[Link]=JoursAbs;

public void Affiche(){

[Link]();
[Link](" " + section + " nb abs :" + JoursAbs);

public void ajouterAbsence(){

JoursAbs++;

public void supprimerAbsence(){

JoursAbs--;

//[Link]

/**

* @auteur Triki

* [Link]

*/

public class Test {

public static void main(String[] args) {

Personne p0 = new Personne("HAMDI","BOUTHAINA",20);

[Link]();

Enseignant p1 =

new Enseignant("TRIKI","EMNA",27,"Informatique");

[Link]();

[Link]();

Etudiant p2 = new Etudiant("KTARI","JIHEN",21,"2DSI");

[Link]();

[Link]();

[Link]();

[Link]();
[Link]();

[Link]();

Exercice n°2

Q1) Peut-on créer une instance à partir d’une interface ? une classe abstraite ?

Correction : Non pour les deux.

Q2) Peut-on rajouter un constructeur ? un constructeur avec un corps ?

Correction : Non pour les deux s’il s’agit des interfaces.

Oui pour les deux s’il s’agit des classes abstraites, il pourra être appelé avec super(...).

Q3) Peut-on écrire le code suivant : A a = new B() ;

▪ si A est une classe abstraite, dérivée par la classe B ?

▪ si A est une interface, implémentée par une classe B ?

Correction : Oui pour les deux (si la classe B n'est pas abstraite).

Q4) Une interface/classe abstraite peut-elle contenir des méthodes abstraites ? non-abstraites ?
statique et abstraite ?

Correction :

▪ Java < 8 : une interface ne peut contenir que des méthodes publiques abstraites et non-
statiques ; les modificateurs public abstract n'ont pas besoin d'être déclarés.

▪ Java ≥ 8 : on peut aussi définir des méthodes statiques ainsi que des implémentations par
défaut des méthodes non-statiques (déclaration précédée du mot-clé default), n'utilisant pas
d'attributs non-statiques (car non-existants).

▪ Une méthode abstraite a vocation à être implémentée quelque part en aval dans le graphe
d'héritage/implémentation, faute de quoi elle ne servirait à rien. Comme les méthodes
statiques ne sont pas héritées, les méthodes statiques et abstraites n'existent pas.

Q5) Une interface/classe abstraite peut-elle contenir des attributs ? avec quels modificateurs ?
doivent-il être instanciés ?

Correction : Les interfaces ne peuvent avoir que des attributs public static final, c'est-à-dire
des constantes ; les modificateurs n'ont pas besoin d'être déclarés. Ces attributs doivent être
instanciés directement dans le corps de l'interface.

Q6) Une interface peut-elle hériter d'une autre interface ? D’une classe abstraite ?
Correction : Oui pour une interface et non pour une classe abstraite.

Q7) Une classe abstraite peut-elle hériter d'une autre classe abstraite ? D’une interface ?

Correction : Oui et non, elle peut en revanche l'implémenter.

Vous aimerez peut-être aussi