Nu är jag inte den bästa på detta, och du kommer säkert få mer korrekt av dem som vet mer. Men jag skulle hålla på med arv och polymorphism, där du skriver över den generella metoden för det specifika djuret.
ex.
Något som alla djur har gemensamt är att dem äter. Du behöver inte skapa en "äta" metod för varje djur, det räcker med att root classen erbjuder den funktionen. Däremot kanske en fisk äter på ett specifikt sätt, en hund på ett annat och en fågel på ett tredje. Då kan du använda dig av polymorphism, där du "skriver över" den ärvda metoden med din egna specifika för den klassen.
Ex:
Jag skriver i Java då det jag är bekväm med
public class Animal {
public void eat (int food)
{
food = 2;
}
}
Denna är ganska generell för varje djur, därmot kanske du har en hund klass som ärver animal och där kan du skriva om själva eat till något annat just för specifikt hund. Fördelen med detta är att du kan skapa en generell äta metod, och äter någon på ett annat sätt så behöver du bara göra det för specifikt den klassen.
public class Dog extends Animal {
public void eat (int food, boolean eat)
{
food = 2;
eat = true;
}
}
Det går att läsa mer om polymorphism på oracles dokumentation: http://docs.oracle.com/javase/tutorial/java/IandI/polymorphis...
Java är ett annat språk, men jag vågar påstå att fundamentalet är likadant.