Blog ENI : Toute la veille numérique !
🎃 Jusqu'à -30% sur les livres en ligne, vidéos et e-formations.
Code : GHOST30.
Cliquez ici !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Des classes particulières

Les énumérations

1. Qu’est-ce qu’une énumération ?

Une énumération est une classe qui permet de définir un ensemble de valeurs prédéfinies que l’on peut utiliser ensuite comme "garde-fou".

En guise d’exemple, prenons une classe Dog un peu simplifiée, qui contient trois attributs permettant de renseigner, pour chaque chien, sa couleur, sa race et son nom.

class Dog(val name: String, val race: String, val color: String) 

Ces champs sont de simples chaînes de caractères. Il est possible de saisir des valeurs cohérentes :

val dog = Dog("Doggo", "Golden Retriever", "sable") 

ou pas :

val dog = Dog("Doggo", "Cat", "pouet") 

ou encore des valeurs cohérentes, mais de casse distincte :

val dog = Dog("Doggo", "Golden Retriever", "sable") 
 
val dog2 = Dog("Doggo2", "Golden retriever", "Sable") 

En faisant évoluer le programme pour que les attributs race et color soient des énumérations et non plus des chaînes de caractères, nous contrôlerons les valeurs de ces attributs et garderons ainsi une certaine cohérence entre les données du programme.

2. Écrire une énumération

En guise d’exemple, écrivons l’énumération permettant de représenter la race d’un chien.

 Pour créer cette première énumération, rendez-vous dans IntelliJ IDEA.

 Cliquez du bouton droit sur le dossier src du programme, puis sur New, et sélectionnez Kotlin File/Class.

 Dans la boîte de dialogue qui s’affiche, nommez l’énumération DogRace.

 Puis sélectionnez le type Enum Class dans la liste.

 Pour finaliser la création de ce nouveau fichier, appuyez sur la touche [Entrée] du clavier.

images/15RI01.PNG

Un fichier DogRace.kt apparaît dans le dossier src du programme avec le contenu suivant :

enum class DogRace 
{ 
} 

C’est le code minimal pour créer une énumération.

Pour déclarer une énumération, il convient donc d’utiliser les mots-clés enum class, suivis du nom de la classe, ici DogRace.

Maintenant que l’énumération...

Les classes de données

1. Qu’est-ce qu’une classe de données ?

Une classe de données est une classe un peu particulière qui a pour objectif de représenter ce qu’on appelle un objet métier.

Qu’est-ce qu’un objet métier ?

Un objet métier est un objet qui permet de définir le métier d’un programme et qui se veut spécifique à son fonctionnement. Dans tous les exemples étudiés jusqu’à présent, nous n’avons écrit que des objets que nous pouvons qualifier de "métier". En effet, ils sont spécifiques à nos programmes.

Soit un logiciel de gestion d’un zoo qui permet de gérer les employés, les animaux, les stocks de nourriture, les visites vétérinaires, etc.

Ce logiciel complexe ne s’exécute pas dans un terminal, il a une interface graphique plus ou moins complexe, composée de listes, de scrollbars, de boutons, d’images, d’icônes, de labels (texte), etc.

Tous ces éléments sont, d’un point de vue technique, des objets. Et parmi tous ces objets, certains sont de la "peinture" (les éléments graphiques), tandis que d’autres représentent le véritable métier du logiciel (les employés, les animaux, les stocks, etc). Ce sont ces derniers que l’on appelle des objets métier (encore appelés BO pour Business Object, POJO (Plain Old Java Object), entité, etc).

Jusqu’à maintenant, nous n’avons pas eu besoin de classes spéciales pour modéliser ces fameux objets métier. Qu’apportent donc les classes de données ?

Les classes de données permettent d’automatiser certaines tâches que nous devons faire manuellement. Jusqu’à maintenant, pour afficher un objet de manière lisible dans le terminal, nous avons dû surcharger la méthode toString. Avec une classe de données, ce travail n’est plus nécessaire, car cette méthode est automatiquement générée.

Créer une méthode toString n’est pas un travail colossal, mais toute maintenance manuelle peut conduire à des bogues. Imaginons qu’on nous demande de...

Les objets Singleton

1. Qu’est-ce qu’un patron de conception ?

En programmation, un patron de conception (pattern) décrit une façon particulière d’organiser du code afin de lui permettre d’adopter un comportement spécifique pour répondre à un besoin précis.

Il existe un très grand nombre de patrons de conception. Il est presque impossible de tous les citer. Citons tout de même les plus populaires.

Le patron de conception Fabrique (Factory pattern) permettre d’instancier des objets dont le type est dérivé d’un type abstrait.

Le patron de conception Monteur (Builder pattern) permet la création d’un objet complexe en construisant individuellement différentes propriétés de cet objet.

Le patron de conception Composite (Composite pattern) permet de créer un objet constitué d’un ou de plusieurs objets ayant des fonctionnalités similaires afin de les manipuler comme s’il s’agissait d’un seul objet.

Le patron de conception Observateur (Observer pattern) définit deux types d’objets : les observateurs et les observables. Les objets observateurs observent les observables et effectuent des actions en fonction des informations qui leur parviennent.

Le patron de conception Stratégie (Strategy pattern) permet de rendre une hiérarchie de classes plus souple via l’utilisation d’interfaces.

2. Le patron de conception Singleton

Le but du patron de conception Singleton (Singleton pattern) est de limiter l’instanciation d’une classe à un seul objet. Lorsque le programme a besoin d’instancier une classe qui implémente le patron de conception Singleton, une vérification est faite. Si aucune instance de la classe n’existe alors elle est créée puis renvoyée pour être utilisée. Si une instance existe déjà, elle est directement renvoyée pour être utilisée.

L’instance est stockée dans la mémoire vive et vit donc pendant toute la durée de vie du programme informatique. Elle ne survit cependant pas à son arrêt.

À quoi ça sert ?

Il existe des cas d’utilisation assez populaires...

En résumé

  • Une énumération est une classe qui permet de lister des valeurs.

  • Une énumération est définie grâce aux mots-clés enum class.

  • Il est possible de faire porter des attributs et des méthodes à une énumération.

  • Une classe de données permet de modéliser ce qu’on appelle un objet métier.

  • Une classe de données est définie grâce aux mots-clés data class.

  • Une classe de données génère automatiquement les méthodes toString, equals, hashcode et copy.

  • En programmation, il est parfois nécessaire d’organiser le code selon un patron de conception afin de répondre à un besoin ou à une contrainte technique spécifique.

  • Le patron de conception Singleton permet de limiter le nombre d’instances d’une classe à une unique instance.

  • En Kotlin, la mise en place du patron de conception Singleton est facilitée grâce au mot-clé object.

  • Dans une classe implémentant le patron de conception Singleton, il n’est pas possible de définir des constructeurs ou des éléments statiques.