Contrôle continu Nom : Prénom

Transcription

Contrôle continu Nom : Prénom
Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL
Nom :
Contrôle continu
Prénom :
Programmation objet
Vous devez répondre dans les cadres aux questions posées. Documents de cours et notes personnelles autorisés. Téléphones portables, ordinateurs et calculatrices interdits.
Partie 1 : Classes, constructeurs, méthodes, tableaux
On considère une classe Convive qui représente un invité à un banquet et une classe Table
qui représente la table utilisée pour ce banquet.
Un convive a un nom, un prénom, un age et un sexe. Le sexe est représenté par un caractère
qui peut prendre deux valeurs : ‘H’ pour homme et ‘F’ pour femme. La classe Convive dispose
en outre d’une méthode getNoms retournant une chaîne de caractères constituée du prénom et
du nom de la personne concernée, d’une méthode getAge retournant son âge, et d’une méthode
getSexe retournant son sexe. Complétez ci-dessous la définition de cette classe.
public class Convive
{
String nom,prenom;
int age;
char sexe;
public Convive(String nom, String prenom, int age, char sexe)
{
}
String getNoms()
{
}
int getAge()
{
}
char getSexe()
{
}
}
Contrôle continu n°1 - page 1 sur 8
Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL
La classe Table contient un tableau de convives. L’indice de chaque cellule du tableau
correspond au numéro de la place à table du convive concerné, ou contient null si la place
est vide. Comme c’est un banquet d’informaticiens, les places sont numérotées à partir de 0.
Complétez ci dessous la définition de la classe Table.
public class Table
{
private Convive[] tab;
Crée une table avec n places vides.
public Table(int n)
{
Retourne true si la
place est libre,
false sinon.
}
public boolean estLibre(int place)
{
}
public void ajouteInv(Convive inv, int place)
{
Met un convive à la place
mentionnée, en supposant
qu’elle est vide.
}
Libère toutes les places
public void libereTable()
{
}
}
Complétez ci contre la
définition de la
méthode qui retourne
le nombre de femmes à
table.
Attention, certaines
places peuvent être
vides.
public int combienDeFemmes()
{
}
Contrôle continu n°1 - page 2 sur 8
Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL
Complétez la méthode ci-dessous de manière à ce qu’elle retourne un tableau d’entiers contenant les numéros des places où se trouvent des femmes.
Ne faites cet exercice que si vous avez les compétences nécessaires, sinon passez à la
suite.
public int[] ouSontLesFemmes()
{
}
Partie 2 : Variables de classe, d’instances, de méthodes…
Deux classe A et B, ainsi qu’une classe Main, sont définies page suivante. Dans les définitions des classe A et B, encadrez les variables d’instances, entourez d’un ovale les variables de classe, et soulignez les variables de méthode.
Répondez par oui ou par non aux questions suivantes :
Y a t-il un constructeur implicite dans la classe A ?
Y a t-il un constructeur implicite dans la classe B ?
Y a t-il un constructeur par défaut dans la classe A ?
Y a t-il un constructeur par défaut dans la classe B ?
Contrôle continu n°1 - page 3 sur 8
Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL
public class A
{
private B b;
public class B
{
private int x;
public int y;
private static int z=5;
public void m3(B z)
{
b = z;
}
public String toString()
{
return x+" "+y+" "+z;
}
public void m4()
{
B b = new B();
}
public void m1()
{
y++; z++;
}
public void m5()
{
b = new B();
}
public B()
{
x=11; y=22;
}
public void afficher()
{
System.out.println("--> " +
b.toString());
}
public void afficher()
{
System.out.println(toString());
}
}
}
Dans la classe Main ci-contre, barrez les
lignes de code qui provoquent une erreur
due à l’appel d’une méthode avec un objet
null ou à la tentative d’accéder à une
variable inaccessible depuis la classe
Main.
Puis donnez ci dessous les affichages
réalisés par l’exécution de la méthode
main.
public class Main
{
static public void main(String[] args)
{
A a = new A();
B b1 = new B();
B b2 = new B();
B b3 = b2;
b1.x++;
b1.y++;
a.afficher();
b1.afficher();
b2.afficher();
b1.m1();
b2.m1();
b1.afficher();
b2.afficher();
b3.m1();
b2.afficher();
a.m4();
a.afficher();
a.m3(b1);
a.afficher();
a.m4();
a.afficher();
a.m5();
a.afficher();
}
}
Contrôle continu n°1 - page 4 sur 8
Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL
Partie 3 : Composition, héritage, interfaces, ArrayList.
On représente certains concepts du milieu hospitalier à l’aide des classes suivantes :
● Personnel : Membres du personnel d’un hôpital.
● PersonnelMédical : Cas particulier des personnels intervenant lors des soins donnés aux
patients.
● Medecin : Les médecins sont des personnels médicaux qui peuvent faire des prescriptions.
● Infirmier : Un autre type de personnel médical.
● Comptable : Un cas particulier de personnel qui n’est pas un personnel médical.
● Hopital : Un établissement médical constitué de plusieurs services
● Service : Une partie d’un l’hopital.
● ServiceDeCardiologie : Un service particulier dédié aux traitement des maladies cardiovasculaires.
Représentez graphiquement les liens d’héritage et de composition entre ces classes.
Contrôle continu n°1 - page 5 sur 8
Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL
Complétez la définition suivante.
public class Personnel
{
private String nom,prenom;
private int indice;
public Personnel(String nom, String prenom, int indice)
{
}
}
Certaines catégories de personnel, dont notamment le personnel médical, doivent être réquisitionnables, et les classes qui les représentent doivent implanter une méthode public void
requisitionner().
Détaillez l’interface Requisitionnable permettant de modéliser cette notion.
Complétez la définition suivante sans oublier que les personnels médicaux doivent être
réquisitionnables (ne mettez rien dans le corps de la méthode concernée) et sont avant tout
des personnels. La variable d’instance certification est une ArrayList de String qui est
vide (pas null) à la construction d’une instance.
public class PersonnelMedical
{
certifications;
public PersonnelMedical(String nom, String prenom, int indice)
{
}
}
Contrôle continu n°1 - page 6 sur 8
Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL
Définissez la classe Medecin en lui adjoignant juste un constructeur.
Expliquez brièvement pourquoi on ne peut pas, en l’état, mettre dans la classe Medecin une
méthode toString retournant une chaîne contenant le nom et le prénom du médecin. Proposez
(donnez juste les explications, pas le code java) au moins deux solutions permettant de
résoudre ce problème.
Contrôle continu n°1 - page 7 sur 8
Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL
Partie 4 : ArrayList, String.
La classe String inclut une méthode length qui retourne la longueur de l’instance courante.
Par exemple, si s est une instance de String représentant la chaîne "pi", s.length()
retourne la valeur 2.
Réalisez une méthode statique cumul qui accepte en paramètre une liste w de String et retourne la somme des longueurs des chaînes contenues dans w.
public static int cumul(ArrayList<String> w)
{
}
Réalisez une méthode statique maxN qui accepte en paramètres une liste w de String et un
entier n et retourne la liste des chaînes de longueur inférieure ou égale à n contenues dans
w.
public static ArrayList<String> maxN(ArrayList<String> w, int n)
{
}
Contrôle continu n°1 - page 8 sur 8