Comment implémenter les concepts de la programmation orientée objet en Rust

La programmation orientée objet (POO) simplifie la conception des logiciels en mettant l’accent sur l’utilisation d’objets pour représenter les entités et les concepts du monde réel. La POO favorise la maintenabilité en encapsulant les fonctionnalités dans des objets.

Rust est un langage flexible qui prend en charge la programmation fonctionnelle et procédurale. Bien qu’il ne prenne pas en charge la programmation orientée objet de manière native, vous pouvez mettre en œuvre les concepts de la POO en utilisant les types de données intégrés de Rust.

L’encapsulation en Rust

L’encapsulation consiste à organiser le code en unités autonomes qui cachent les détails internes tout en exposant une interface publique pour l’interaction externe afin de minimiser la complexité et d’améliorer la maintenabilité du code.

Vous pouvez encapsuler du code Rust avec des modules. Un module est une collection d’éléments comprenant des fonctions, des structures, des enums et des constantes. Les modules Rust permettent de regrouper et de définir les limites entre les différentes parties d’un programme.

Utilisation de modules pour encapsuler des données et des fonctions

Vous pouvez définir un module à l’aide de la fonction mod suivi d’un nom :

Vous pouvez organiser les modules de manière hiérarchique en imbriquant leurs déclarations :

Vous pouvez ensuite vous référer aux modules imbriqués avec la hiérarchie complète, en séparant chaque module par un double point, par exemple, module_parent::mon_module.

Par défaut, les éléments contenus dans les modules sont privés et ne sont accessibles qu’au code du même module. Mais vous pouvez rendre les modules publics à l’aide de l’option pub pour rendre les modules publics :

Vous pouvez alors accéder à ma_fonction à partir d’autres parties de votre programme.

Utilisation des traits pour définir les comportements

Une autre façon dont Rust permet l’encapsulation est l’utilisation des traits. Les traits définissent les comportements que les types peuvent implémenter et garantissent que différents types se conforment à la même interface.

Voir aussi :  Travailler avec les relations de données dans MongoDB

Les Imprimable a un trait print et le trait MyType met en œuvre la méthode Imprimable en mettant en œuvre le trait print .

En utilisant les traits, vous pouvez vous assurer que tout type qui implémente la méthode Imprimable possède un trait print . Ceci est pratique lorsque l’on travaille avec du code générique qui doit interopérer avec différents types partageant un comportement commun.

L’héritage en Rust

L’héritage vous permet de définir une classe à partir d’une autre. La sous-classe hérite des propriétés et des méthodes de son parent.

En Rust, vous êtes encouragé à utiliser la composition plutôt que l’héritage. La composition est un processus qui consiste à créer de nouveaux objets en combinant des objets existants. Au lieu de créer une nouvelle classe qui hérite des fonctionnalités de la classe de base, vous pouvez créer une nouvelle structure qui contient une instance de la structure de base et ses champs.

Créer de nouveaux types en combinant des types existants

Vous utiliserez les enums et les structs pour créer de nouveaux types. Les enums sont pratiques pour les types à valeurs finies, et les structs peuvent contenir plusieurs champs.

Vous pouvez créer un type enum pour différents types d’animaux.

Vous pouvez également créer une structure contenant des champs pour chaque type d’animal. Les structures peuvent contenir des enums et d’autres types.

Les structures peuvent contenir des enums et d’autres types. animaux contient les valeurs de la structure AnimalType de l’énumération.

Vous pouvez utiliser les traits pour mettre en œuvre l’héritage et ajouter un comportement à un type sans en créer un nouveau.

Voici comment vous pouvez mettre en œuvre le type Mouche pour plusieurs types.

Les Oiseau et Avion mettent en œuvre les structures Vol et impriment des chaînes de caractères avec le trait Println ! .

Vous pouvez appeler la macro voler sur les deux structures sans connaître leurs types spécifiques.

Voir aussi :  Les 9 meilleurs outils Python ETL pour répondre à vos besoins en données

La méthode principal instancie la fonction Plan et Oiseau . Les types objets_volants est un vecteur d’instances d’objets, et le vecteur pour les traverse le vecteur et appelle la boucle fly sur les instances.

Implémentation du polymorphisme en Rust

Une classe ou un type est polymorphe si plusieurs types représentent une interface. Puisque les traits fournissent la fonctionnalité pour définir des comportements en Rust, tout en fournissant une interface commune pour écrire du code générique, vous pouvez utiliser les Traits pour implémenter le polymorphisme.

Voici un trait nommé Dessinable qui définit le comportement de rendu des objets à l’écran :

Les types qui implémentent le trait Drawable peuvent accéder au trait dessin à la fonction draw .

Vous pouvez écrire du code générique qui dessine des objets qui implémentent la fonction Dessinable trait.

Les draw_object prend en entrée un type générique qui met en œuvre la fonction Dessinable et appelle la fonction dessiner sur le trait. Différents objets peuvent implémenter la méthode Dessinable et accéder à ses fonctionnalités.

Implémentation de l’abstraction en Rust

L’abstraction est un concept OOP dans lequel les classes et les interfaces sont accessibles à des objets et des types spécifiques. Vous pouvez mettre en œuvre l’abstraction en Rust avec des traits.

Voici un exemple de trait pour un lecteur multimédia :

Les structures et les enums qui implémentent les traits Média doivent fournir une implémentation pour le trait play pour la méthode play .

La méthode Chant met en œuvre la structure Média en fournissant une implémentation pour le trait play qui imprime un message avec les champs du trait Chanson sur la console.

Les chanson est une instance de la variable chanson et la variable peut accéder à la structure play et appeler la méthode play

L’organisation du code Rust est facile

La programmation orientée objet facilite l’organisation du code. Grâce au système de modules de Rust, vous pouvez facilement organiser votre code Rust tout en mettant en œuvre les concepts de la POO pour votre application afin de garder votre code organisé, gérable et intuitif.

Voir aussi :  Comment créer une calculatrice simple à l'aide de HTML, CSS et JavaScript

S’abonner à notre lettre d’information

Peut-on faire de la programmation orientée objet en Rust ?

En utilisant cette définition, Rust est orienté objet : les structs et les enums ont des données, et les blocs impl fournissent des méthodes sur les structs et les enums. Même si les structs et les enums avec des méthodes ne sont pas appelés objets, ils fournissent la même fonctionnalité, selon la définition des objets du Gang of Four.

Qu’est-ce que la programmation orientée objet en Rust ?

Les programmes orientés objet sont constitués d’objets. Un objet contient à la fois des données et les procédures qui opèrent sur ces données. Les procédures sont généralement appelées méthodes ou opérations. Selon cette définition, Rust est orienté objet : les structs et les enums ont des données et les blocs impl fournissent des méthodes sur les structs et les enums.

Comment mettre en œuvre les concepts OOPS ?

Nous utiliserons le langage de programmation Java pour les exemples de code afin que vous sachiez comment mettre en œuvre les concepts OOPS en Java.

  • Abstraction. L’abstraction est le concept qui consiste à cacher les détails internes et à décrire les choses en termes simples.
  • Encapsulation.
  • Le polymorphisme.
  • L’héritage.
  • L’association.
  • Agrégation.
  • Composition.

Quel est le langage de programmation utilisé dans Rust ?

À quoi sert le langage de programmation Rust ? Rust est un langage de programmation informatique moderne développé par Mozilla en 2010. Il a initialement été développé pour construire des applications de haute programmation sans le problème de l’accès invalide à la mémoire auquel les développeurs étaient confrontés lors de l’utilisation de C et C++.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *