Examen Programmation par objets (Java)

Programming, Java, Agriculture Software · exam

Browse all programmation documents

FMIN110 - GMIN327 - 18/01/2013 - 08h30

Examen Programmation par objets (Java) - 2h

Tous documents autorisés

Nous étudions quelques éléments d’un logiciel de suivi pour une exploitation agricole. Nous

verrons successivement la notion de parcelle agricole, d’activité (semis, traitement, récolte, etc.)

pratiquée sur une parcelle. Une exploitation disposera d’une liste d’activités pratiquées sur des

parcelles.

1 Parcelle

Une parcelle est décrite par ses coordonnées cadastrales (une section composée d’un ou deux

caractères et un numéro de parcelle entier), une superficie en hectares et le nom de son proprié-

taire. Vous trouverez ci-dessous les premiers éléments de la classe décrivant les parcelles. Tous

les accesseurs sont supposés exister.

public class Parcelle {

private String section;

private int numero;

private double superficie;

private String nomProprietaire;

public Parcelle() {}

public Parcelle(String section, int numero, double superficie,

String nomProprietaire) {

this.section = section;

this.numero = numero;

this.superficie = superficie;

this.nomProprietaire = nomProprietaire;

}

public String getSection() {

return section;

}

Advertisement

public void setSection(String section) {

this.section = section;

}

..........................

}

Question 1 Dans la classe Parcelle, modifiez l’accesseur setSection : si le paramètre est bien

composé d’un ou deux caractères, il est affecté à l’attribut, sinon un message d’erreur est affiché

et la valeur "zzz" est affectée à l’attribut.

Question 2 Ecrivez dans la classe Parcelle un main dans lequel vous créez une parcelle p1

avec le constructeur sans paramètre, puis une parcelle p2 qui a pour section "AB", pour numéro

234, une superficie de 3 hectares et un propriétaire qui s’appelle "Maximilien". Enfin modifiez la

section de p1 de manière à ce que ce soit la chaîne "B".

Examen FMIN110 - GMIN327

18/01/2013 - 08h30

Examen Programmation par objets (Java) - 2h

Tous documents autorisés

2 Activités de culture

Nous étudions maintenant les activités agricoles, en nous limitant à une description simplifiée

de quelques activités liées à la culture. Une activité de culture est supposée pratiquée sur une

parcelle. On ne demandera pas, dans le cadre limité de cet examen, que la parcelle dispose de la

liste des activités qui y sont pratiquées. L’activité a un nom (semis de luzerne, traitement anti-

phylloxera, récolte de blé, etc.), un calendrier qui donne les semaines où l’activité est pratiquée

(ce calendrier est représenté par un tableau de 52 booléens) et un revenu annuel. Un embryon

de classe vous est donné ci-dessous.

public class ActiviteCulture {

private String nom;

private Parcelle parcelle;

private boolean[] calendrier = new boolean[52];

Advertisement

private double revenuAnnuel;

public ActiviteCulture() {}

public ActiviteCulture(String nom, Parcelle parcelle, boolean[] calendrier,

double revenuAnnuel) {

this.nom = nom;

this.parcelle = parcelle;

this.calendrier = calendrier;

this.revenuAnnuel = revenuAnnuel;

}

Question 3 On veut interdire de créer des instances propres de cette classe ActiviteCulture :

qu’ajoutez-vous au code pour représenter cette information ?

Une activité de traitement est décrite par un nom de produit, si le produit est admis en agriculture

biologique, un coût hebdomadaire forfaitaire à l’hectare pour la main d’oeuvre et le matériel (le

même pour toute activité de traitement), une quantité hebdomadaire de produit à épandre par

hectare (en litres/hectare) et le prix d’un litre de produit (ce dernier attribut sera supposé

s’appeler prixLitreProduit.

Question 4 Ecrivez les éléments suivant pour une classe ActiviteTraitement, sous-classe

de ActiviteCulture : la première ligne correspondant à la déclaration, le(s) attribut(s), le(s)

constructeur(s). Vous proposerez un constructeur sans paramètres et un constructeur avec des

paramètres destinés à initialiser les attributs. N’écrivez pas les accesseurs, mais ils sont supposés

exister pour la suite.

Question 5 Ecrivez dans les classes représentant les activités une méthode

double coutSemaineDePratique() qui retourne le coût d’une semaine de pratique de l’activité.

Cette méthode sera abstraite dans la classe ActiviteCulture. Pour une activité de traitement, le

coût d’une semaine de pratique est calculé par cumul du coût hebdomadaire forfaitaire à l’hectare

pour la main d’oeuvre et le matériel, du prix pour le produit de traitement, et d’une taxe de 0,5

euros par litre de produit s’il n’est pas admis en agriculture biologique (au titre de la dépollution).

Question 6 Ecrivez dans la classe ActiviteCulture, une méthode donnant le coût de l’activité

Advertisement

pour une semaine i donnée ( i est un paramètre) : il est de 0 si l’activité n’est pas pratiquée en

semaine i et vaut coutSemaineDePratique si l’activité est pratiquée en semaine i.

Question 7 Ecrivez dans la classe ActiviteCulture, une méthode donnant le coût annuel de

l’activité.

Question 8 Ecrivez dans la classe ActiviteCulture, une méthode boolean rentable() re-

tournant vrai si l’activité est rentable sur une année. C’est le cas si le coût annuel de l’activité

est inférieur au revenu annuel.

Examen FMIN110 - GMIN327

2

18/01/2013 - 08h30

Examen Programmation par objets (Java) - 2h

Tous documents autorisés

3 Exploitation

Une exploitation est décrite ici par un nom et une liste d’activités. Cette dernière est vide lors

de la création d ?une exploitation et on peut y ajouter une par une des activités.

Question 9 Ecrivez les éléments suivant pour une classe Exploitation : la première ligne cor-

respondant à la déclaration, le(s) attribut(s), le(s) constructeur(s). Vous proposerez uniquement

un constructeur sans paramètres. N’écrivez pas les accesseurs, mais ils sont supposés exister pour

la suite.

Question 10 Ecrivez dans la classe Exploitation une méthode permettant d’ajouter une acti-

vité passée en paramètres (si elle n’est pas déjà présente).

Question 11 Ecrivez dans la classe Exploitation une méthode coutAnnuel retournant le coût

annuel total (de toutes les activités pratiquées sur l’exploitation).

Question 12 Ecrivez dans la classe Exploitation une méthode activitesRentables retour-

nant la liste des activités rentables de l’exploitation.

4 Question sur l’héritage

Question 13 Etant données les déclarations de classes suivantes :

abstract

Advertisement

public class

A{

public abstract void m2();

public void m1(){System.out.println("m1 dans A"); m2();}

}

public class B extends A{

public void m2(){System.out.println("m2 dans B");}

}

public class C extends B{

public void m1(){System.out.println("m1 dans C"); super.m1();}

}

public class D extends C{

public void m2(){System.out.println("m2 dans D"); super.m2();}

}

Qu’affichera le main de LiaisonDynamique lors de son exécution ?

public class LiaisonDynamique {

public static void main(String[] args) {

D instD = new D();

instD.m1();

}

}

Examen FMIN110 - GMIN327

3

18/01/2013 - 08h30