Des chiens et des chats Généricité
La généricité, présente dans de nombreux langages de programmation, permet d’aller plus loin dans l’industrialisation du code et de limiter la duplication de code entre plusieurs classes.
Nous allons aborder la généricité par le biais d’un problème difficile à régler sans faire appel à elle.
Soit une classe de données Dog permettant de représenter un chien. Cette classe, très simple, contient un unique attribut permettant de nommer l’animal :
data class Dog(val name: String)
Ajoutons à ce programme une classe DogKennel représentant un chenil capable d’accueillir dix chiens :
class DogKennel
{
companion object
{
private const val KENNEL_CAPACITY = 10
}
private val dogs = arrayOfNulls<Dog>(DogKennel.KENNEL_CAPACITY)
var dogsCounter = 0
private set
private fun getAvailablePlacesNumber(): Int =
DogKennel.KENNEL_CAPACITY - dogsCounter
fun addDog(dog: Dog): Boolean
{
return if (getAvailablePlacesNumber() < 0)
{
false
}
else ...