Programmation Orientée
Comprendre les concepts de la programmation orientée objet.
Définition
En programmation, l'objet a plus ou moins la même définition que dans la vie de tous les jours. Par exemple, un ordinateur, un clavier, un iPhone… Un utilisateur est aussi un objet en programmation. En fait, dans la programmation orientée objet, presque tout est un objet, et vous allez en utiliser tout au long de votre apprentissage en programmation.
Pour créer un objet, nous avons d'abord besoin, à l'image d'un architecte, de créer un plan, un cahier des charges, ou un moule. Ce plan aura, entre autres, des propriétés, des méthodes qui seront autant de fonctionnalités que l'on attribuera aux objets. Ce 'plan' est soit une classe, soit une structure.
Une fois ce plan fait, nous pouvons initialiser des objets à l'infini. Chacun suivant son plan.
Dans une application, la classe ou la structure peut être écrite dans un fichier séparé ou dans un fichier joint à d'autres éléments. Comparé à d'autres langages, nous n'avons pas besoin ensuite d'importer le fichier pour l'avoir disponible dans tous les autres fichiers.
Lorsqu'on parle d'objet, on peut entendre instance de classe. C'est la même chose.
Concepts clés de la programmation orientée objet
Classes et Objets
- Classe : Une classe est un modèle ou un plan qui définit les propriétés et les méthodes que ses objets (instances) auront. C'est une structure qui décrit un groupe d'objets similaires.
- Objet : Un objet est une instance d'une classe. Chaque objet possède ses propres valeurs pour les propriétés définies par sa classe.
Encapsulation
L'encapsulation consiste à regrouper des données (propriétés) et des comportements (méthodes) dans une seule unité, qui est la classe. Cela permet de protéger les données internes de l'objet contre des accès ou modifications non désirés depuis l'extérieur.
- Propriétés : Les variables stockées dans une classe.
- Méthodes : Les fonctions définies dans une classe.
Swift permet de contrôler l'accès aux propriétés et méthodes à l'aide de modificateurs d'accès comme public, private, internal, et fileprivate.
Héritage
L'héritage permet de créer une nouvelle classe basée sur une classe existante. La nouvelle classe (sous-classe) hérite des propriétés et des méthodes de la classe parente (super-classe) et peut ajouter ses propres propriétés et méthodes ou remplacer celles existantes.
Polymorphisme
Le polymorphisme permet d'utiliser des objets de différentes classes de manière interchangeable si elles partagent une super-classe commune. Les méthodes peuvent être redéfinies dans les sous-classes, et le comportement spécifique à la sous-classe sera utilisé même si l'objet est traité comme une instance de la super-classe.
Abstraction
L'abstraction consiste à exposer uniquement les détails essentiels et à masquer les détails d'implémentation. Cela simplifie l'interaction avec les objets complexes.
Swift utilise des protocoles pour définir un ensemble de méthodes ou propriétés que les classes ou structures conformes doivent implémenter, ce qui favorise l'abstraction.
Avantages de la Programmation Orientée Objet
- Modularité : Le code est divisé en modules (classes) qui peuvent être développés, testés et maintenus séparément.
- Réutilisabilité : Les classes peuvent être réutilisées à travers différentes parties d'un programme ou dans différents projets.
- Extensibilité : Les nouvelles fonctionnalités peuvent être ajoutées via l'héritage ou les extensions.
- Maintenabilité : Le code orienté objet est souvent plus facile à comprendre, à dépanner et à mettre à jour.