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

Corection POO

Le document présente un TD de Programmation Orientée Objet comprenant des questions de cours sous forme de QCM et de Vrai/Faux, suivies de problèmes pratiques avec des exemples de classes en Java. Les concepts abordés incluent l'encapsulation, l'héritage, les méthodes, ainsi que des exemples de classes comme Patient, ActeMedical, Elu et ses sous-classes. Des méthodes et des constructeurs sont également fournis pour illustrer la mise en œuvre des principes de la POO.

Transféré par

Steves Fall
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 ODT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
47 vues7 pages

Corection POO

Le document présente un TD de Programmation Orientée Objet comprenant des questions de cours sous forme de QCM et de Vrai/Faux, suivies de problèmes pratiques avec des exemples de classes en Java. Les concepts abordés incluent l'encapsulation, l'héritage, les méthodes, ainsi que des exemples de classes comme Patient, ActeMedical, Elu et ses sous-classes. Des méthodes et des constructeurs sont également fournis pour illustrer la mise en œuvre des principes de la POO.

Transféré par

Steves Fall
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 ODT, PDF, TXT ou lisez en ligne sur Scribd

Correction du TD de Programmation Orientée Objet

I-Questions de cours
A) QCM :
1. Quels sont les 3 principes importants en POO ?
Réponse : b. Encapsulation, c. Héritage, d. Polymorphisme
2. Une Classe est :
Réponse : c. déclare des propriétés communes à plusieurs objets, e. Un modèle
3. Un constructeur :
Réponse : a. Est automatiquement appelé à la création d’un objet, c. a pour rôle d’initialiser les
attributs, e. porte le nom de la classe
4. Les attributs sont des variables :
Réponse : a. contenues dans la classe, c. qui caractérisent l’état
5. Les méthodes des fonctions :
Réponse : a. Qui décrivent les actions et les réactions d’un objet, b. contenues dans la classe
6. Une méthode ou attribut privée est accessible :
Réponse : a. Partout dans la classe
7. Une méthode ou attribut publique est accessible :
Réponse : d. Partout dans le monde
8. Une méthode ou attribut protected est accessible :
Réponse : a. Partout dans la classe, b. dans le package, c. dans la sous-classe
9. Une méthode statique :
Réponse : a. peut être appelée même sans avoir instancié, b. ne peut accéder qu'à des attributs et
méthodes statique
[Link] une classe B hérite d'une classe A, on dit que :
Réponse : a. B spécialise A, c. A est la super-classe et B la classe fille, d. la classe B possède au
moins tous les champs et les méthodes de A
B) Vrai ou Faux :
1. Une classe abstraite ne peut être instanciée
Réponse : Vrai
2. Une agrégation est une relation de composition
Réponse : Faux (l'agrégation est une relation plus faible que la composition)
3. Une méthode ou classe abstraite doit être obligatoirement redéfinie.
Réponse : Vrai
4. L’héritage multiple permet à une classe d’hériter des propriétés et des méthodes de
plusieurs classes
Réponse : Vrai
5. L’héritage multiple n’existe pas en POO
Réponse : Faux (il existe dans certains langages comme C++)
6. Les valeurs d’une variable de classe sont redéfinies à chaque nouvel objet
Réponse : Faux (les variables de classe sont partagées entre toutes les instances)

II-Problèmes
Problème K :
1. Déclaration de la classe Patient :
java
Copy
public class Patient {
private String nom;
private int age;
private Maladie maladie;
private List<Medecin> medecins;

public Patient(String nom, Maladie maladie, int age) {


[Link] = nom;
[Link] = maladie;
[Link] = age;
[Link] = new ArrayList<>();
}
}

2. Constructeur avec paramètres :


java
Copy
public Patient(String nom, Maladie maladie, int age) {
[Link] = nom;
[Link] = maladie;
[Link] = age;
[Link] = new ArrayList<>();
}

3. Setter de age :
java
Copy
public void setAge(int age) {
[Link] = age;
}
4. Méthode afficher() :
java
Copy
public void afficher() {
[Link]("Nom: " + nom);
[Link]("Age: " + age);
[Link]("Maladie: " + maladie);
for (Medecin medecin : medecins) {
[Link]();
}
}

5. Méthode pour ajouter un médecin :


java
Copy
public void ajouterMedecin(Medecin medecin) {
[Link](medecin);
}

6. Getters et Setters :
java
Copy
public String getNom() { return nom; }
public void setNom(String nom) { [Link] = nom; }
public int getAge() { return age; }
public void setAge(int age) { [Link] = age; }
public Maladie getMaladie() { return maladie; }
public void setMaladie(Maladie maladie) { [Link] = maladie; }

7. Procédure main :
java
Copy
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez le nom du patient :");
String ceNom = [Link]();
[Link]("Entrez l'âge du patient :");
int cetAge = [Link]();

Patient p1 = new Patient(ceNom, [Link], cetAge);


[Link](new Medecin("dr Doctor", 35));
[Link]();
}

Problème G :
a. Représentation des patients et des actes :
java
Copy
import [Link];
import [Link];
import [Link];

class Patient {
private String nom;
private String prenom;
private Instant dateNaissance;
private char sexe;
private List<ActeMedical> actesMedicaux;

public Patient(String nom, String prenom, Instant dateNaissance, char sexe) {


[Link] = nom;
[Link] = prenom;
[Link] = dateNaissance;
[Link] = sexe;
[Link] = new ArrayList<>();
}

public long getAge() {


return [Link]([Link](), [Link]);
}

public void ajouterActeMedical(ActeMedical acte) {


[Link](acte);
}
}

abstract class ActeMedical {


protected String soignant;
protected Instant date;

public ActeMedical(String soignant, Instant date) {


[Link] = soignant;
[Link] = date;
}
}

class Diagnostic extends ActeMedical {


private Maladie maladie;
private int fiabilite;

public Diagnostic(String soignant, Instant date, Maladie maladie, int


fiabilite) {
super(soignant, date);
[Link] = maladie;
[Link] = fiabilite;
}
}

class Soin extends ActeMedical {


private int amelioration;

public Soin(String soignant, Instant date, int amelioration) {


super(soignant, date);
[Link] = amelioration;
}
}

b. Représentation des prises de médicaments :


java
Copy
class PriseMedicament extends Soin {
private int posologie;
private int frequence;

public PriseMedicament(String soignant, Instant date, int amelioration, int


posologie, int frequence) {
super(soignant, date, amelioration);
[Link] = posologie;
[Link] = frequence;
}

public int getMedicamentsParJour() {


return posologie * frequence;
}
}

Problème R :
a. Classe Elu :
java
Copy
import [Link];
import [Link];

class Elu extends Personne {


private List<Personne> assistants;

public Elu(String nom, String prenom) {


super(nom, prenom);
[Link] = new ArrayList<>();
}

public void embaucherAssistant(Personne assistant) {


[Link](assistant);
}

public void licencierAssistant(Personne assistant) {


[Link](assistant);
}

public void distribuerDotation(int montant) {


if ([Link]()) return;
int part = montant / [Link]();
for (Personne assistant : assistants) {
[Link](part);
}
}
}

b. Classe EluMafieux :
java
Copy
class EluMafieux extends Elu {
public EluMafieux(String nom, String prenom) {
super(nom, prenom);
}

@Override
public void embaucherAssistant(Personne assistant) {
if ([Link]().equals([Link]())) {
[Link](assistant);
}
}
}

c. Classe EluEconome :
java
Copy
class EluEconome extends Elu {
private static final int SMIC = 1480;

public EluEconome(String nom, String prenom) {


super(nom, prenom);
}

@Override
public void distribuerDotation(int montant) {
if ([Link]()) return;
int part = [Link](SMIC, montant / [Link]());
for (Personne assistant : assistants) {
[Link](part);
}
}
}

d. Classe EluEscroc :
java
Copy
class EluEscroc extends Elu {
private int compteSuisse;

public EluEscroc(String nom, String prenom) {


super(nom, prenom);
[Link] = 0;
}

@Override
public void distribuerDotation(int montant) {
if ([Link]()) return;
int part = [Link](1480, montant / [Link]());
for (Personne assistant : assistants) {
[Link](part);
}
[Link] += montant - (part * [Link]());
}
}

Vous aimerez peut-être aussi