Bonjour à tous !
Je continu ma grande aventure à la quête du Ruby. J'ai donc une question concernant la POO en général. J'ai actuellement une classe Fish qui ressemble à ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #!/usr/bin/env ruby # encoding: utf-8 class Fish attr_reader :life, :sex @@nb_fish = 0 # Number of fish since the simulation start def initialize @@nb_fish += 1 @life = 10 @sex = choose_sex end # Accessors def nb_fish @@nb_fish end # Methods def choose_sex # this one is private if Random.rand(1..2) == 1 'm' else 'f' end end def alive? @life > 0 end private :choose_sex end |
Elle est on ne peut plus basique, je le sais. J'aimerais définir une méthode eat
(car oui, un poisson ça mange) dont les classes filles (herbivore et carnivore) hériterais afin de la spécialiser (l'herbivore mange les algues et le carnivore mange les herbivores). D'où ma question :
Faut-il que je définisse cette méthode dans la classe Fish ou dans ses filles ?
J'imagine que l'idéologie de la POO voudrait que je la définisse dans la classe Fish mais si je le fais ça me fait 3 fonctions dont une inutile (celle de la classe Fish qui ne sera jamais instanciée) et si je ne le fais pas, ça ne colle pas aux principes de la POO car un poisson sait manger donc théoriquement je devrait définir cette méthode dans la classe Fish…
Bref, je suis un peu perdu, j'ai du pour et du contre. J'attends donc vos avis sur la question !
Merci de votre aide et bonne journée !