Created
November 4, 2014 18:09
-
-
Save gbougeard/a60915a958695f96c5b2 to your computer and use it in GitHub Desktop.
TP Scala : AST, typage et heritage
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Modéliser le règne animal tel que tout animal peut dire qui il est. | |
Définir: | |
- les oiseaux (ils ont des plumes) | |
- les mammifères (ils peuvent allaiter) | |
- les reptiles (ils ont le sang froid) | |
- les poissons (ils ont des branchies) | |
- les ovipares | |
- les animaux marins | |
- les animaux volants | |
Définir le pingouin, l'ornithorynque, la chauve-souris, le beluga et le requin zèbre et le requin marteau. | |
(pour les questions http://lmgtfy.com/) |
un peu mieux comme ca
/** Mode de reproduction */
sealed trait Reproduction
trait Ovipare extends Reproduction
trait Vivipare extends Reproduction
/** Milieu de vie */
sealed trait MilieuAnimal
trait Marin extends MilieuAnimal
trait Volant extends MilieuAnimal
trait Animal[X <: Reproduction, Y <: MilieuAnimal]
/** Type d'animaux */
trait Oiseau[X <: MilieuAnimal] extends Animal[Ovipare, X]
trait Reptile[X <: MilieuAnimal] extends Animal[Ovipare, X]
trait Poisson[X <: Reproduction] extends Animal[X, Marin]
trait Mammifere[X <: Reproduction, Y <: MilieuAnimal] extends Animal[X, Y]
/** Animaux */
class Pingouin extends Oiseau[Marin]
class Beluga extends Mammifere[Vivipare, Marin]
class Ornithorynque extends Mammifere[Ovipare, Marin]
class ChauveSouris extends Mammifere[Vivipare, Volant]
class RequinZebre extends Poisson[Ovipare]
class RequinMarteau extends Poisson[Vivipare]
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
reponse 1 :