Sto eseguendo un'applicazione zoo.
Il mio zoo include una classe astratta di "animale" e diverse classi derivate - "zebra", "elefante", "orangutan", "babbuino" e così via. Di ogni classe ho diverse istanze.
La mia domanda è: voglio verificare se due istanze animali possono accoppiarsi.
La logica aziendale è divisa in due parti:
- Voglio verificare se ciascun partner di accoppiamento è adatto per l'accoppiamento, ad es. non troppo giovane o troppo vecchio o malato ecc.
- Voglio verificare se i due partner corrispondono - ad es. una zebra non può accoppiare un elefante, ma un orangutan può accoppiarsi con un babbuino.
Presumo che il primo requisito sarebbe implementato da una funzione astratta che risiederebbe sotto la classe di base animale. Ma per quanto riguarda il secondo requisito?
Come progetteresti le lezioni nella questione più generale che aggiungere nuovi tipi di animali non richiederebbe molto di un sovraccarico?