Des voitures et des hommes II

[30 minutes]

Soit le diagramme de classe UML et le MLD en RO suivants :

CTRL+C pour copier, CTRL+V pour coller
1
Type Personne : <
2
  nom:string,
3
  ddn:date,
4
  =age():entier
5
>
6
tPersonne de Personne (#nom)
7
8
Type Conducteur : <
9
  nom:string,
10
  ddn:date,
11
  typePermis:{A,B,E},
12
  datePermis:date
13
  =age():entier
14
>
15
tConducteur de Conducteur (#nom)
16
17
Type Voiture : <
18
  type:string,
19
  marque:string,
20
  nbPortes:integer,
21
  puissance:integer,
22
  fkPropriétaire =>o tPersonne,
23
>
24
tVoiture de Voiture (#type, #marque)
25
26
tConduit (voiture =>o tVoiture, conducteur =>o tConducteur)
Type Personne : <
  nom:string,
  ddn:date,
  =age():entier
>
tPersonne de Personne (#nom)

Type Conducteur : <
  nom:string,
  ddn:date,
  typePermis:{A,B,E},
  datePermis:date
  =age():entier
>
tConducteur de Conducteur (#nom)

Type Voiture : <
  type:string,
  marque:string,
  nbPortes:integer,
  puissance:integer,
  fkPropriétaire =>o tPersonne,
>
tVoiture de Voiture (#type, #marque)

tConduit (voiture =>o tVoiture, conducteur =>o tConducteur)

Question

Proposer une implémentation sous Oracle de votre modèle logique (sans implémenter les méthodes et sans utiliser l'héritage de type).

Question

Implémenter la méthode Age() pour Personne et pour Conducteur.

Question complémentaire (héritage de type)

L'amélioration proposée ci-après évite notamment la double déclaration de la méthode age.

Question

Proposer une solution mobilisant l'héritage de type afin de factoriser la déclaration des attributs nom et ddn et la méthode age.