Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

td3 4 PDF

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

TD 3-4

Compte rendu à remettre au plus tard Mardi 21/04/2020


Objectifs : hiérarchie de classe, héritage,polymorphisme

Exercice 1 : Analyse d’un programme Java.

class Album extends Livre {


Considérons le programme Java suivant : boolean page_coloriee[];
package exo1;
public Album(String t, String a, double p, int n){
super(t,a,p,n) ;
class Livre {
page_coloriee = new boolean[n];
// int i ;
// les attributs for (i=0 ; i<100 ; i++)
// page_coloriee[i] = false ;
protected string titre, auteur, proprietaire ;
}
protected int nb_page ;
public void Colorie(int num_page){
double prix ; if((page_coloriee[num_page] == false) && !Est_neuf()){
// page_coloriee[num_page] = true ;
// les méthodes } else {
// System.out.println("page deja coloriee" ) ;
public Livre(String t, String a, double p, int nb){
}
titre = t ; auteur = a ;
}
prix = p ; proprietaire = "" ;
}
nb_page = nb ;
} // la classe principale d'appel
public void Afficher() {
System.out.println("Titre : " + titre) ;
public class Test {
System.out.println("Auteur : " + auteur) ;
public static void main(String[] args) {
System.out.println("Prix : " + prix) ;
System.out.println("Nombre de pages : " + nb_page); Livre l1 = new Livre("Le petit prince","St
if ( this.Est_neuf() ) {
Exupéry",10.40, 50) ;
System.out.println("Aucune proprietaire" ) ;
Livre l2 = new Livre("Contes","Grimm",14.40,254) ;
} else {
l1.Afficher() ;
System.out.println("Proprietaire: "+proprietaire);
l1.acheter("moi") ;
} l1.Afficher() ;
System.out.println() ; l1.prix = 0.0 ;
}
l2.Acheter("lui") ;
public boolean Est_neuf() {
l2.Afficher();
if ( proprietaire =="" ) return true ;
else return false ; BD b1 = new BD("Lucky Luke","Morris",10.40, 45, true);
} BD b2 = new BD("Tintin","Herge",200.40, 45, false) ;
public void Acheter(String nom) {
b1.Acheter("moi");
proprietaire = nom ;
b1.Afficher() ;
} b2.Afficher() ;
}
Album a1 = new Album("Dora","Dora", 300, 3.5) ;
class BD extend Livre {
a1.Afficher() ;
private boolean encouleur ;
a1.Colorie(23) ;
public BD(String t,String a,double p,int nb, boolean c){
a1.Acheter("moi");
super(t,a,p,nb) ;
a1.Colorie(23) ;
encouleur = c ;
}
} }
}
Questions :
1) Expliquer les informations que le programme va afficher lors de son exécution.
2) Dans la classe Livre, l’attribut prix a été défini sans règle d’encapsulation (public, private…) Comment
Java va-t-il l’interpréter ? Comment pouvez-vous le tester ou comment est-il testé dans le programme ?
3) Expliquer comment on teste dans ce programme si un livre est neuf ou non.
4) Décrivez la hiérarchie de classe décrite dans ce programme et expliquer le processus d’appel entre les
constructeurs.
5) Expliquer comme ce programme gère le fait de colorier une page d’un album à colorier.
6) Découvrez les erreurs de frappe présentes dans le code. Corriger-les en codant et en commentant ces
quelques lignes sous Eclipse.

Exercice 2 : Héritage de classe et constructeurs


1) Un site internet est spécialisé dan la vente de livres pour enfant. Ces livres sont soit des bandes dessinées,
soit des albums à colorier. Un livre est défini par son titre, son auteur, son prix et son nombre de pages.
Les bandes dessinées sont soit en couleur soit en noir&blanc alors l’utilisateur a la possibilité de colorier
une page d’un album présenté. Proposer et implémenter et tester sous Eclipse une solution à ce problème.
2) Le site web veut donner la possibilité aux utilisateurs de revendre un livre et de s’échanger deux bandes
dessinées si elles ont un prix équivalent. Modifier le programme précédent pour prendre en compte ces
fonctions supplémentaires.
3) Enfin, le site web veut étendre son offre d’œuvre culturelles à des films (DVD) qui sont définis eux- aussi
par un titre, un auteur et un prix mais avec en plus une information sur la durée du film. Comment modifier
la hiérarchie de classe pour intégrer ces modifications ? Programmer-le.
Exercice 3 : Héritage de classe et polymorphisme
Vous devez développer pour une chaîne de télévision un logiciel permettant de gérer la programmation
journalière d’émissions télévisuelles. Pour simplifier le problème, toutes les heures ou les durées sont
représentées par des valeurs entières (13h, 15h, 22h…). Une émission peut être de trois types : divertissement,
fiction et reportage. Une émission de type divertissement dure obligatoirement 2 heures, possède un nom et
est systématiquement présentée par un animateur. Une fiction se définit par le nom du film, l’année de sa
réalisation, le nom du réalisateur et s’il s’agit ou non d’une rediffusion. Enfin un reportage est défini par un
nom, un thème (fixé parmi les trois thèmes : information, animalier, culturel) et une durée.
1) Proposer une solution fondée sur les héritages entre classe pour représenter toutes les émissions possibles.
Donner pour chaque classe, la liste de ses attributs et les paramètres de ses constructeurs. Comment
coderiez-vous le fait que le thème d’un reportage soit prédéfini ?
2) Implanter cette solution sous Eclipse en Java et tester tout d’abord les classes que vous avez imaginées en
instantiant différents objets de votre choix (avec les constructeurs) pour chacune de celles-ci.
3) La programmation d’une émission dans la journée dépend du type d’émission mais se traduit par le fait
de lui fixer une heure de début de diffusion et de calculer l’heure de fin.
a. Les divertissements durent systématiquement 2 heures, mais on ne peut les programmer qu’entre
18h et 23h.
b. Les fictions qui ne sont pas des rediffusion ne se programment qu’en début de soirée, c’est-à-
dire qu’à 21h, alors qu’une rediffusion peut se programmer n’importe quand dans la journée.
c. Enfin, les reportages ne se programment qu’à des heures creuses (14h –18h et 0h-6h) et s’ils ont
une durée inférieure, égale à 1heure.
Proposer une solution fondée sur la notion de classe abstraite et de polymorphisme permettant de décrire
la programmation ou non n’importe quelle émission à une heure donnée. Comment initialiser
efficacement ces heures de début et de fin de diffusion.
4) Définissez enfin un programme télé comme un ensemble fini (tableau) d’émissions hétérogènes que vous
remplirez d’émission de votre choix, programmer à une heure de votre choix. Décrire puis implémenter
les algorithmes vous permettant :
a. Afficher la liste des émissions programmées dans la journée
b. Tester s’il y a une superposition de programmation.
c. Afficher heure par heure les émissions programmées pour vérifier que tous les créneaux horaires
ont bien été rempli

Vous aimerez peut-être aussi