Tutoriels de programmation - page 2

 

Programmation orientée objet en 7 minutes | Mosh



Programmation orientée objet en 7 minutes | Mosh

La programmation orientée objet (POO) a révolutionné notre approche du développement logiciel en introduisant quatre concepts fondamentaux : l'encapsulation, l'abstraction, l'héritage et le polymorphisme. Ces concepts fournissent un cadre puissant et organisé pour la conception et la mise en œuvre de systèmes complexes.

L'encapsulation est la pratique consistant à regrouper des variables et des fonctions associées dans une unité appelée objet. En encapsulant les données et les méthodes qui fonctionnent sur ces données dans un objet, nous créons une entité autonome avec des limites bien définies. Par exemple, un objet voiture peut avoir des propriétés telles que la marque, le modèle et la couleur, ainsi que des méthodes telles que démarrer, arrêter et déplacer. Cette encapsulation nous permet de manipuler et d'interagir avec l'objet voiture comme une seule entité, cachant les détails de mise en œuvre interne du monde extérieur. L'encapsulation améliore non seulement l'organisation du code, mais améliore également la réutilisabilité et la maintenabilité du code.

L'abstraction est le processus consistant à masquer des détails d'implémentation complexes et à n'exposer que les fonctionnalités ou interfaces essentielles. Il nous permet de créer des représentations simplifiées d'objets ou de concepts du monde réel. Tout comme un lecteur de DVD résume sa logique interne complexe derrière quelques boutons, les objets de la POO peuvent cacher leur fonctionnement interne tout en offrant une interface claire et concise. En faisant abstraction de la complexité, nous pouvons réduire la charge cognitive et rendre notre code plus compréhensible. De plus, l'abstraction agit comme un bouclier protecteur, isolant l'impact des modifications au sein d'un objet et empêchant les conséquences involontaires sur d'autres parties de la base de code.

L'héritage est un mécanisme qui permet aux objets d'hériter des propriétés et des comportements d'autres objets. Avec l'héritage, nous pouvons créer une hiérarchie d'objets, où des objets plus spécialisés héritent des caractéristiques d'objets plus généralisés. Cette hiérarchie favorise la réutilisation du code, car des attributs et méthodes communs peuvent être définis dans un objet de base et hérités par ses sous-classes. Par exemple, dans le cas des éléments HTML, tels que les zones de texte, les listes déroulantes et les cases à cocher, ils partagent tous des propriétés communes telles que le code HTML caché et interne, ainsi que des méthodes telles que le clic et le focus. Au lieu de dupliquer ces propriétés et méthodes dans chaque élément HTML, nous pouvons les définir une fois dans un objet générique appelé élément HTML et en faire hériter les éléments spécifiques. L'héritage élimine la redondance, améliore la maintenabilité du code et permet des architectures de code flexibles et extensibles.

Le polymorphisme, dérivé des mots grecs "poly" (plusieurs) et "morph" (forme), fait référence à la capacité des objets à adopter plusieurs formes ou comportements. En POO, le polymorphisme permet de traiter des objets de types différents comme des objets d'un type commun. Ce concept est réalisé par le remplacement de méthode et la surcharge de méthode. Le remplacement de méthode permet à une sous-classe de fournir sa propre implémentation d'une méthode héritée de sa super-classe. Par exemple, différents éléments HTML peuvent devoir être rendus sur une page, mais chaque élément a son comportement de rendu unique. En implémentant une méthode de rendu dans chaque objet, nous pouvons obtenir un polymorphisme et simplifier le code, en éliminant les longues instructions if-else ou switch-case. La surcharge de méthodes, en revanche, permet à plusieurs méthodes portant le même nom mais différentes listes de paramètres de coexister au sein d'une classe. Le polymorphisme permet la flexibilité du code, améliore la lisibilité du code et promeut le principe de "programmation sur une interface" plutôt que sur une implémentation spécifique.

En tirant parti de l'encapsulation, de l'abstraction, de l'héritage et du polymorphisme, la programmation orientée objet fournit une approche structurée du développement logiciel. Il apporte de nombreux avantages tels que l'organisation du code, la réutilisabilité, la maintenabilité, la modularité et l'extensibilité. La compréhension et l'application efficace de ces concepts de base permettent aux développeurs de créer des systèmes complexes flexibles, évolutifs et plus faciles à comprendre et à entretenir au fil du temps.

Object-oriented Programming in 7 minutes | Mosh
Object-oriented Programming in 7 minutes | Mosh
  • 2018.03.29
  • www.youtube.com
Get the COMPLETE COURSE: http://bit.ly/2keDCna4 pillars of object-oriented programming: encapsulation, abstraction, inheritance and polymorphism. Subscribe f...
 

Introduction à la programmation orientée objet - Cours accéléré


Introduction à la programmation orientée objet - Cours accéléré

Bienvenue dans une introduction à la programmation orientée objet. Dans ce cours, nous explorerons le concept de programmation orientée objet et ses quatre grands principes. Une connaissance préalable de la programmation est supposée, mais si vous débutez dans la programmation, nous vous recommandons de regarder notre vidéo d'introduction à la programmation, qui est liée dans la description.

La programmation orientée objet nous permet de regrouper des variables de types similaires, ce qui facilite la gestion de programmes complexes. Dans le passé, des types de données primitifs tels que byte, int, float, double, boolean et char étaient utilisés pour stocker des valeurs simples simples. Cependant, à mesure que les programmes devenaient plus complexes, les programmeurs avaient besoin d'un moyen de regrouper les variables connexes.

Cela a conduit au développement de structures en C, qui ont permis le regroupement de données de différents types. Les structures constituaient une amélioration par rapport aux baies, car elles permettaient le stockage de données diverses. Cependant, les structures n'avaient pas la capacité de définir des fonctions en leur sein.

Avec l'avènement de la programmation orientée objet, les objets ont été introduits. Un objet est une instance d'une classe, qui sert de modèle pour les objets. Les objets peuvent stocker des données et définir des fonctions. La classe définit les attributs et comportements communs des objets, tandis que les objets représentent des instances spécifiques avec leurs propres données uniques.

L'encapsulation est l'un des grands principes de la programmation orientée objet. Cela implique de regrouper des données et des méthodes dans une classe et de les cacher de l'accès externe. D'autres classes peuvent interagir avec les attributs d'un objet uniquement via les méthodes de la classe, telles que les méthodes getter et setter. L'encapsulation aide à garder le contrôle des données et réduit la complexité du programme en empêchant l'accès direct aux attributs internes.

L'abstraction est un autre principe qui se concentre sur l'affichage des détails essentiels tout en masquant les complexités inutiles. En programmation, cela signifie définir des interfaces pour les classes qui permettent la communication entre différentes sections de code. L'implémentation exacte des méthodes est cachée dans la classe et les classes externes n'interagissent qu'avec l'interface définie. Cette approche permet une programmation modulaire et facilite la collaboration entre plusieurs programmeurs.

Dans les prochaines sections, nous aborderons les principes restants de la programmation orientée objet : l'héritage et le polymorphisme. Ces principes améliorent encore la flexibilité et la réutilisabilité du code dans la programmation orientée objet.

Voilà pour l'introduction à la programmation orientée objet. Passons à la section suivante et explorons l'encapsulation plus en détail.

  • 00:00:00 Dans cette conférence, nous explorerons ce qu'est la programmation orientée objet et comment elle fonctionne. Nous discuterons du fonctionnement des types de données primitifs tels que les octets, les entiers, les flottants, les doubles et les booléens, et de la manière dont les structures peuvent aider à organiser et à stocker les données plus efficacement. Nous explorerons également comment les objets sont créés et comment ils sont liés les uns aux autres.

  • 00:05:00 La programmation orientée objet permet de regrouper des données et des fonctions associées, permettant une programmation complexe sans avoir à tout coder séparément. Dans ce cours intensif, nous examinerons le premier des quatre grands principes de la POO - l'encapsulation. Nous verrons comment cela est utilisé dans le contexte de l'exemple d'échecs de la section précédente, et comment cela facilite le suivi et la gestion des attributs associés.

  • 00:10:00 L'abstraction est l'idée de cacher des détails essentiels aux utilisateurs d'une classe, tandis que l'encapsulation est la pratique consistant à cacher des données aux autres classes. Ces concepts sont importants lorsque vous travaillez sur des programmes volumineux et complexes, car il peut être difficile de se concentrer sur la situation dans son ensemble lors de la programmation. Cette section discutera du quatrième principe de la programmation orientée objet, l'abstraction.

  • 00:15:00 Dans la programmation orientée objet, une interface est un ensemble prédéterminé de méthodes que deux classes sont autorisées à utiliser pour communiquer entre elles. Cela empêche les différents éléments du programme de devenir complètement couplés et aide à prévenir les erreurs de communication. l'héritage est le principe qui permet à une classe d'en dériver d'autres classes, et dans cette vidéo, nous allons voir un exemple.

  • 00:20:00 Dans ce cours intensif sur la programmation orientée objet, nous discutons des trois principaux modificateurs d'accès : public, privé et protégé. Nous discutons également du polymorphisme, qui décrit des méthodes qui peuvent prendre de nombreuses formes. Enfin, nous discutons du principe d'héritage, qui décrit comment les classes peuvent être liées les unes aux autres.

  • 00:25:00 Le polymorphisme est la capacité d'une méthode à prendre différentes formes selon la hiérarchie de classes à partir de laquelle elle est appelée. Cela fonctionne à la fois dynamiquement et statiquement. La surcharge permet aux méthodes portant le même nom d'avoir des effets différents, mais est potentiellement délicate à mettre en œuvre.

  • 00:30:00 Cette vidéo présente les bases de la programmation orientée objet (POO). Si vous souhaitez en savoir plus sur la POO, n'oubliez pas de regarder les autres vidéos de la série de cours intensifs.
Intro to Object Oriented Programming - Crash Course
Intro to Object Oriented Programming - Crash Course
  • 2020.09.30
  • www.youtube.com
Learn the basics of object-oriented programming all in one video.✏️ Course created by Steven from NullPointer Exception. Check out their channel: https://www...
 

C++ OOP - Introduction aux classes et aux objets pour les débutants



C++ OOP - Introduction aux classes et aux objets pour les débutants

Bienvenue sur ma chaîne, tout le monde ! Je m'appelle Saldina et je crée des vidéos liées à l'informatique et à la programmation. Si ces sujets vous intéressent, pensez à vous abonner à ma chaîne et à donner un coup de pouce à cette vidéo.

Dans cette vidéo, je veux plonger dans le monde de la programmation orientée objet (POO). Alors, qu'est-ce que la programmation orientée objet exactement ? La POO nous permet de représenter des objets réels dans la programmation, avec leurs attributs et leurs comportements.

Deux concepts fondamentaux en POO sont les classes et les objets. Comprenons la différence entre les deux. Une classe sert de modèle ou de modèle, définissant la structure et le comportement d'un objet. D'autre part, un objet est une instance d'une classe. Pour illustrer cela, considérons une classe représentant des fruits, et les objets de cette classe pourraient être une pomme, une banane ou une pêche. De même, une classe représentant des voitures aurait des objets comme Volvo, Ford ou BMW. Chaque classe possède des attributs (propriétés) tels que le nom, le prix, la vitesse maximale et la couleur, ainsi que des comportements (méthodes) tels que conduire, freiner et changer de couleur.

Maintenant, créons un exemple de classe appelé "YouTubeChannel". Pour créer une classe, nous utilisons le mot clé "class" suivi du nom de la classe entre accolades. Nous devons également rendre les membres de la classe accessibles en dehors de la classe en utilisant le modificateur d'accès "public". Dans notre classe YouTubeChannel, nous définirons des attributs tels que le nom de la chaîne, le nom du propriétaire, le nombre d'abonnés et une liste des titres vidéo publiés. Pour représenter ces attributs, nous leur attribuons des valeurs. Nous créons un objet de la classe YouTubeChannel et accédons à ses propriétés en utilisant la notation par points. Par exemple, nous pouvons attribuer le nom de la chaîne YouTube à "CodeBeauty" et le nom du propriétaire à "Saldina".

Nous pouvons également définir le nombre d'abonnés à 1800 et ajouter trois titres vidéo publiés à la liste. Pour afficher les informations stockées dans ces propriétés, nous utilisons "cout" pour les imprimer. Pour la liste des titres vidéo publiés, qui est une collection, nous pouvons la parcourir à l'aide d'une boucle et imprimer chaque titre vidéo. En exécutant le programme, nous pouvons voir la sortie affichant les détails de la chaîne YouTube : le nom de la chaîne, le nom du propriétaire, le nombre d'abonnés et la liste des titres vidéo publiés.

Dans les prochaines vidéos, nous aborderons des sujets tels que les constructeurs et les méthodes de classe, qui fournissent des approches plus rationalisées pour travailler avec des classes et des objets.

J'espère que cette vidéo vous a plu ! Si vous l'avez trouvé utile, n'hésitez pas à lui donner un coup de pouce et à vous abonner à ma chaîne en cliquant sur l'icône en forme de cloche. Restez à l'écoute pour plus de contenu passionnant. Rendez-vous dans la prochaine vidéo. Au revoir!

C++ OOP - Introduction to classes and objects for beginners
C++ OOP - Introduction to classes and objects for beginners
  • 2020.08.02
  • www.youtube.com
Object-oriented programming is a programming paradigm that is based on the concept of objects from the real world, and it is used to represent those real wor...
 

C++ OOP (2020) - Que sont les constructeurs et les méthodes de classe ? Comment les utiliser ?


C++ OOP (2020) - Que sont les constructeurs et les méthodes de classe ? Comment les utiliser ?

Salut tout le monde, bienvenue sur ma chaîne ! Je m'appelle Saldina et sur cette chaîne, je crée des vidéos liées à la programmation. Si cela vous intéresse, pensez à vous abonner et à donner un coup de pouce à cette vidéo. Dans cette vidéo, je veux parler des constructeurs et des méthodes de classe.

Dans un tutoriel précédent, nous avons écrit du code pour une classe appelée YouTubeChannel. Il comporte quatre propriétés publiques : le nom, le nom du propriétaire, le nombre d'abonnés et une liste des titres vidéo publiés. Nous avons créé un objet de cette classe et attribué des valeurs à ses propriétés. Maintenant, abordons un problème avec cette approche. Si nous voulons créer un autre objet de chaîne YouTube, nous devrons copier et coller le code et apporter les modifications en conséquence. Cela viole le principe "Ne vous répétez pas". Pour résoudre ce problème, nous pouvons utiliser des constructeurs et des méthodes de classe.

Un constructeur est une méthode spéciale appelée lors de la création d'un objet. Il a le même nom que la classe et n'a pas de type de retour. Créons un constructeur pour la classe YouTubeChannel. Il recevra deux paramètres : nom et nom du propriétaire. Dans le constructeur, nous assignerons ces paramètres aux propriétés correspondantes. Après avoir créé le constructeur, nous pouvons l'utiliser pour créer des objets en transmettant les valeurs requises. Cela élimine le besoin de répéter le code pour créer des objets. Nous pouvons également utiliser des méthodes de classe pour éviter de répéter du code pour afficher des informations sur les canaux.

Créons une méthode de classe appelée getInfo qui écrit les informations du canal. Nous pouvons déplacer le code d'affichage des informations dans cette méthode et l'utiliser pour les deux objets. Pour invoquer la méthode getInfo, nous pouvons l'appeler sur l'objet en utilisant le nom de l'objet suivi d'un point et du nom de la méthode. De cette façon, nous pouvons afficher les informations pour les deux canaux sans dupliquer le code.

En utilisant des constructeurs et des méthodes de classe, nous obtenons un code plus propre et plus efficace. La fonction principale devient plus facile à lire et à maintenir. Les constructeurs gèrent l'initialisation des propriétés d'objet, tandis que les méthodes de classe encapsulent les comportements courants de la classe.

J'espère que vous avez trouvé cette vidéo utile. Si vous l'avez aimé, n'hésitez pas à mettre un pouce bleu et à vous abonner à ma chaîne. N'oubliez pas d'appuyer sur l'icône de la cloche pour rester à jour. Je te verrai dans ma prochaine vidéo. Au revoir!

C++ OOP (2020) - What are constructors and class methods? How to use them?
C++ OOP (2020) - What are constructors and class methods? How to use them?
  • 2020.08.09
  • www.youtube.com
In this video, I'm explaining when, why, and how are constructors and class methods used.📚 Learn how to solve problems and build projects with these Free E-...
 

C++ OOP - Qu'est-ce que l'encapsulation en programmation ?



C++ OOP - Qu'est-ce que l'encapsulation en programmation ?

Salut tout le monde! Je m'appelle Saldina et bienvenue sur ma chaîne consacrée à la programmation. Si vous êtes intéressé par la programmation, pensez à vous abonner et à donner un coup de pouce à cette vidéo. Dans cette vidéo, nous allons discuter de l'encapsulation.

Tout d'abord, examinons rapidement le code de nos vidéos précédentes. Nous avons une classe YouTubeChannel avec des attributs publics : nom, nom du propriétaire, nombre d'abonnés et une liste des titres vidéo publiés. Nous avons également un constructeur YouTubeChannel et une méthode getInfo.

Maintenant, concentrons-nous sur l'encapsulation. Le principe d'encapsulation stipule que les propriétés doivent être privées et que leurs valeurs doivent être accessibles et modifiées via des méthodes exposées par la classe. Cela garantit une manipulation contrôlée et appropriée des données. Pour démontrer la nécessité de l'encapsulation, introduisons un problème. Actuellement, nous pouvons attribuer directement une valeur au nombre d'abonnés, ce qui n'est pas la façon dont les abonnés devraient naturellement augmenter ou diminuer. Au lieu de cela, nous devrions fournir des méthodes telles que s'abonner et se désabonner pour contrôler ces changements.

Pour masquer les propriétés aux utilisateurs, nous les rendrons privées. En changeant leur modificateur d'accès en privé, nous restreignons l'accès direct à ces propriétés. Cependant, cela génère des erreurs car les membres privés sont désormais inaccessibles en dehors de la classe. Pour permettre aux utilisateurs de modifier le nombre d'abonnés, nous créons deux méthodes : subscribe et unsubscribe. La méthode d'abonnement incrémente le nombre d'abonnés, tandis que la méthode de désabonnement le décrémente. En utilisant ces méthodes, les utilisateurs peuvent interagir avec la classe et suivre les règles définies par les méthodes.

Nous avons rencontré un problème dans la méthode de désinscription. Il permet actuellement au décompte de devenir négatif. Pour résoudre ce problème, nous devons ajouter une vérification qui garantit que le nombre est supérieur à zéro avant de le décrémenter. De plus, nous avons une autre propriété privée, les titres vidéo publiés, qui est maintenant inaccessible. Pour fournir l'accès à cette propriété, nous allons créer une méthode appelée publishVideo. Cette méthode prend un paramètre de chaîne (le titre de la vidéo) et l'ajoute à la liste des titres vidéo publiés à l'aide de la méthode push_back.

Enfin, nous avons exposé des méthodes qui permettent aux utilisateurs d'interagir avec la classe et de manipuler les propriétés privées. Pour mieux contrôler l'accès aux propriétés name et owner name, nous pouvons créer des méthodes getter et setter.

Pour résumer l'encapsulation :

  • Rendre les propriétés privées pour restreindre l'accès direct.
  • Fournir des méthodes publiques pour modifier les propriétés privées.
  • Assurez une bonne manipulation des données en suivant les règles définies dans les méthodes.

Si vous avez du code implémentant des méthodes getter et setter, n'hésitez pas à le partager dans la section des commentaires pour examen.

Si vous avez aimé cette vidéo, merci de lui donner un coup de pouce, de vous abonner à ma chaîne et de cliquer sur l'icône en forme de cloche pour recevoir des notifications pour les prochaines vidéos. Merci d'avoir regardé, et je vous verrai dans la prochaine vidéo ! Au revoir!

C++ OOP - What is encapsulation in programming?
C++ OOP - What is encapsulation in programming?
  • 2020.08.17
  • www.youtube.com
Encapsulation is one of the most important characteristics of Object-Oriented Programming. Encapsulation helps in data hiding and is used to prevent direct a...
 

C++ OOP - Qu'est-ce que l'héritage en programmation ?



C++ OOP - Qu'est-ce que l'héritage en programmation ?

Salut tout le monde, je m'appelle Saldina et je crée des vidéos liées à la programmation. Si cela vous intéresse, pensez à vous abonner à ma chaîne. Donnez également un coup de pouce à cette vidéo. Dans cette vidéo, je veux discuter de l'encapsulation.

J'ai écrit du code dans les vidéos précédentes de ce cours. Si vous ne les avez pas vus, assurez-vous de les vérifier. Je fournirai des liens dans la description de la vidéo. Permettez-moi de passer rapidement en revue le code pour vous aider à le comprendre. J'ai créé une classe YouTubeChannel avec quatre attributs publics : le nom, le nom du propriétaire, le nombre d'abonnés et une liste des titres vidéo publiés. Le constructeur YouTubeChannel et la méthode getInfo sont également présents. Vous pouvez voir le code du constructeur ici.

Dans la fonction principale, j'ai créé un objet de la classe YouTubeChannel et attribué des valeurs pour le nom et le nom du propriétaire. J'ai également ajouté trois vidéos à la liste des vidéos publiées. Enfin, j'ai imprimé des informations sur la chaîne. Parlons maintenant de l'encapsulation. Ce principe suggère que ces propriétés doivent être privées et non publiques. Les données stockées dans ces propriétés ne doivent être modifiées qu'à l'aide de méthodes que vous exposez à l'utilisateur. En suivant les règles de ces méthodes, l'utilisateur peut modifier les valeurs des propriétés.

Considérons un problème pour comprendre pourquoi nous avons besoin d'encapsulation. Que se passe-t-il si je fixe le nombre d'abonnés de cette chaîne YouTube à un million ? Cela ne devrait pas être autorisé. Si j'exécute le code, vous verrez que la chaîne compte maintenant un million d'abonnés. Cependant, pour gagner des abonnés, les utilisateurs doivent naturellement invoquer les méthodes d'abonnement et de désabonnement. En utilisant ces procédés, le nombre d'abonnés est augmenté ou diminué. Pour masquer ces propriétés à l'utilisateur, nous les rendons privées au lieu de publiques. Cela signifie qu'ils ne sont accessibles qu'au sein de la classe elle-même. Pour permettre aux utilisateurs de modifier le nombre d'abonnés, nous créons deux méthodes : s'abonner et se désabonner. La méthode d'abonnement incrémente le nombre d'abonnés, tandis que la méthode de désabonnement le décrémente.

Pour augmenter ou diminuer les abonnés, nous devons maintenant invoquer ces méthodes. Par exemple, youtubeChannel.subscribe() est utilisé trois fois pour simuler trois abonnements. Si j'invoque youtubeChannel.unsubscribe() puis que j'appelle getInfo, vous verrez qu'il y a deux abonnés. Nous rencontrons également une erreur de compilation car la propriété des titres vidéo publiés est désormais privée et inaccessible. Pour résoudre ce problème, nous créons une méthode appelée publishVideo, qui ajoute un titre vidéo à la liste des titres vidéo publiés. La méthode prend un paramètre de titre, permettant à l'utilisateur de spécifier le titre de la vidéo. En appelant youtubeChannel.publishVideo("Title"), nous ajoutons des vidéos à la liste.

En résumé, l'encapsulation implique de rendre les propriétés privées et de fournir des méthodes publiques pour les modifier. Les méthodes getter et setter peuvent être utilisées pour accéder à des propriétés spécifiques et les modifier. N'hésitez pas à partager votre implémentation des méthodes getter et setter dans les commentaires pour examen.

Si vous avez trouvé cette vidéo utile, donnez-lui un coup de pouce, abonnez-vous à ma chaîne et cliquez sur l'icône en forme de cloche. Restez à l'écoute pour plus de vidéos. À la prochaine! Au revoir!

C++ OOP - What is inheritance in programming?
C++ OOP - What is inheritance in programming?
  • 2020.08.20
  • www.youtube.com
Inheritance is one of the most important characteristics of Object-Oriented Programming. Inheritance is a process in which one class (aka derived class/child...
 

C++ OOP - Qu'est-ce que le polymorphisme en programmation ? (exemple simplifié)



C++ OOP - Qu'est-ce que le polymorphisme en programmation ? (exemple simplifié)

Salut tout le monde, bienvenue sur ma chaîne. Je m'appelle Saldina et je crée des vidéos liées à l'informatique et à la programmation. Si cela vous intéresse, pensez à vous abonner à ma chaîne et à donner un coup de pouce à cette vidéo. Dans cette vidéo particulière, je veux parler de polymorphisme.

Le polymorphisme fait référence à la capacité d'un objet à avoir plusieurs formes. Cela signifie que vous pouvez avoir deux objets ou plus qui héritent de la même classe de base. Ces objets peuvent avoir une méthode portant le même nom mais des implémentations différentes, ce qui entraîne des comportements différents. Jetons un coup d'œil à du code que nous avons écrit dans mes cours précédents. J'ai créé une classe appelée "YouTubeChannel" avec des propriétés privées telles que le nom, le nombre d'abonnés et les titres des vidéos publiées. Il possède également une propriété protégée appelée "nom du propriétaire". De plus, il existe des méthodes publiques, un constructeur, une méthode « getInfo » et des méthodes « abonnement/désabonnement ».

Ensuite, nous avons un type spécifique de chaîne YouTube appelé "CookingYouTubeChannel", qui hérite de la classe de base. Il a son propre constructeur et une méthode supplémentaire appelée "pratique", qui est spécifique aux canaux de cuisson. Maintenant, je veux créer une autre classe dérivée appelée "SingersYouTubeChannel" pour une chaîne YouTube sur le chant. Cette classe a également une méthode "pratique", mais la mise en œuvre est différente du canal de cuisine. Les chanteurs pratiquaient le chant, apprenaient de nouvelles chansons et même dansaient.

Pour démontrer le polymorphisme, je crée des instances des chaînes YouTube de la cuisine et des chanteurs. Ensuite, j'invoque la méthode "pratique" sur chaque canal. Vous pouvez voir que les implémentations respectives sont appelées en fonction du type de canal. De plus, j'introduis une propriété "contentQuality" pour suivre la qualité du contenu. Chaque fois que la méthode "pratique" est invoquée, la qualité du contenu augmente. J'ajoute également une méthode appelée "checkAnalytics" qui vérifie la note de qualité du contenu et génère un message basé sur la note.

Pour montrer davantage le polymorphisme, j'utilise des pointeurs vers la classe de base pour pointer vers des objets de classes dérivées. J'attribue les adresses des chaînes YouTube de la cuisine et des chanteurs à ces pointeurs. À l'aide de ces pointeurs, j'invoque la méthode "checkAnalytics" pour chaque canal, démontrant que le polymorphisme nous permet d'utiliser des pointeurs de classe de base pour appeler des méthodes de classe dérivées.

J'espère que vous avez trouvé cette vidéo agréable. Si c'est le cas, n'hésitez pas à mettre un pouce en l'air et à vous abonner à ma chaîne. N'oubliez pas de cliquer sur l'icône en forme de cloche pour recevoir les notifications des futures vidéos. Merci et à bientôt dans ma prochaine vidéo. Au revoir!

C++ OOP - What is polymorphism in programming? (simple example)
C++ OOP - What is polymorphism in programming? (simple example)
  • 2020.09.01
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

L'abstraction expliquée avec des exemples concrets et du code ! - Cours C++ POO



L'abstraction expliquée avec des exemples concrets et du code ! - Cours C++ POO

Dans cette vidéo, je discuterai du concept important d'abstraction dans la programmation orientée objet. Je vais expliquer ce qu'est l'abstraction et montrer comment implémenter et utiliser l'abstraction dans la programmation C++. Mais avant de plonger, j'aimerais vous présenter C++ Builder, un puissant IDE qui permet le développement rapide d'applications pour plusieurs plates-formes avec moins de code. Il se connecte de manière transparente à diverses bases de données et comprend de puissantes bibliothèques telles que les frameworks VCL et FireMonkey. Commencez gratuitement en utilisant le lien dans la description.

L'abstraction dans la programmation fait référence à l'acte d'afficher des informations importantes tout en cachant des détails complexes et sans importance. Pour mieux comprendre l'abstraction, prenons un exemple concret : une machine à café. Lorsque vous utilisez une machine à café, tout ce que vous devez savoir, c'est comment mettre du café et de l'eau, et appuyer sur un bouton pour faire du café. Le processus interne de la machine est complexe, mais il est abstrait et caché derrière une procédure simple. Cette abstraction permet aux utilisateurs d'utiliser facilement la machine sans comprendre son fonctionnement complexe. De même, en programmation, nous utilisons l'abstraction pour masquer des détails complexes et fournir une interface simplifiée.

Un autre aspect clé de l'abstraction est que les éléments abstraits ne changent pas fréquemment, ou du moins ils ne semblent pas changer pour l'utilisateur final. Cela signifie que vous pouvez modifier l'implémentation interne, tant que vous ne modifiez pas l'interface exposée à l'utilisateur. Par exemple, si une nouvelle entreprise développe une machine à café plus efficace, elle peut modifier les composants internes pour réduire la consommation d'énergie, faire du café plus rapidement et réduire le bruit. Tant que l'utilisateur a encore besoin de mettre du café et de l'eau et d'appuyer sur le bouton, l'interface reste la même et l'utilisateur n'a pas besoin d'apprendre une nouvelle façon de faire fonctionner la machine. Cette normalisation du comportement par l'abstraction permet aux nouvelles entreprises de s'appuyer sur les attentes existantes des utilisateurs.

En programmation, nous pouvons créer des couches d'abstraction pour masquer des détails complexes et fournir une interface simplifiée aux autres développeurs. Par exemple, si je crée une classe avec diverses fonctionnalités complexes, je peux fournir une couche d'abstraction qui masque la complexité sous-jacente. D'autres développeurs peuvent alors utiliser l'interface simple de la classe sans avoir besoin de connaître les détails d'implémentation. En C++, nous réalisons l'abstraction en utilisant des classes abstraites, qui contiennent au moins une fonction virtuelle pure. Ces classes abstraites définissent le contrat ou l'interface que les autres classes doivent implémenter.

Créons une classe abstraite appelée "Smartphone" pour illustrer cela. Il déclarera une fonction publique appelée "Prendre un selfie", qui constitue une fonctionnalité importante que tous les smartphones devraient avoir. En faisant de cette fonction une fonction virtuelle pure utilisant la syntaxe "= 0", nous transformons la classe en une classe abstraite. Nous ne pouvons pas créer directement des instances de classes abstraites, mais nous pouvons créer des pointeurs vers celles-ci. Toute classe qui veut être un smartphone doit hériter de cette classe abstraite et fournir sa propre implémentation de la fonction virtuelle pure.

Par exemple, créons une classe "Android" qui hérite de la classe "Smartphone". Dans cette classe, nous implémentons la fonction "Prendre un selfie" avec la logique complexe propre aux appareils Android. De même, nous pouvons créer une classe "iPhone" qui hérite également de "Smartphone" et fournit sa propre implémentation de la fonction "Prendre un selfie". Chaque classe peut avoir sa propre implémentation unique, mais du point de vue d'une personne utilisant le smartphone, le processus reste le même.

L'abstraction obtenue grâce à la classe "Smartphone" permet aux développeurs travaillant sur des classes Android ou iPhone de se concentrer sur leurs détails d'implémentation spécifiques sans avoir besoin de connaître la logique de l'autre classe. Il leur suffit de respecter le contrat défini par la classe abstraite, garantissant que les fonctionnalités requises sont implémentées. En utilisant l'abstraction, nous créons une séparation des préoccupations, simplifions l'utilisation du code et facilitons le développement modulaire. L'abstraction nous permet de créer des interfaces standardisées et de masquer des implémentations complexes, ce qui entraîne plus de maintenance.

L'abstraction nous permet de créer des interfaces standardisées et de masquer des implémentations complexes, ce qui se traduit par un code plus maintenable et flexible. Il favorise la réutilisation du code et le développement modulaire en encapsulant les fonctionnalités dans des classes abstraites qui peuvent être étendues et implémentées par d'autres classes. En plus des classes abstraites, C++ fournit également un autre mécanisme d'abstraction appelé interfaces. Les interfaces sont des classes purement abstraites qui définissent un contrat de méthodes qui doivent être implémentées par toute classe souhaitant adhérer à l'interface. Cela permet une abstraction encore plus grande et un couplage lâche entre les composants.

Pour résumer, l'abstraction dans la programmation orientée objet est le processus consistant à masquer des détails complexes et à fournir une interface simplifiée. Il permet aux développeurs de se concentrer sur des implémentations spécifiques tout en faisant abstraction de la complexité sous-jacente. Les classes abstraites et les interfaces sont les principaux outils pour réaliser l'abstraction en C++. En utilisant l'abstraction, nous pouvons créer un code plus modulaire, réutilisable et maintenable.

Abstraction explained with real-life examples and code! - C++ OOP Course
Abstraction explained with real-life examples and code! - C++ OOP Course
  • 2021.04.21
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

Explication de la relation entre les fonctions virtuelles, les fonctions virtuelles pures et les classes abstraites en POO



Explication de la relation entre les fonctions virtuelles, les fonctions virtuelles pures et les classes abstraites en POO

Dans cette vidéo, j'expliquerai le but et la relation entre les fonctions virtuelles, les fonctions virtuelles pures et les classes abstraites. Je suis ravi de continuer cette playlist de programmation orientée objet. Si vous avez des questions ou des sujets que vous aimeriez voir dans les prochaines vidéos, veuillez laisser un commentaire ci-dessous. Passons maintenant aux fonctions virtuelles.

Une fonction virtuelle est une fonction définie dans une classe de base et peut être redéfinie dans une classe dérivée. L'objectif principal des fonctions virtuelles est de permettre le polymorphisme d'exécution. Lorsque vous appelez une fonction virtuelle à l'aide d'un pointeur ou d'une référence de classe de base, la version la plus dérivée de cette fonction sera exécutée. Si la classe dérivée a sa propre implémentation, cette version sera exécutée. Sinon, l'implémentation dans la classe de base sera utilisée.

Regardons un exemple dans Visual Studio. Nous allons créer une classe "Instrument" avec une fonction virtuelle appelée "makeSound" qui génère un message. Ensuite, nous allons créer une classe dérivée appelée "Accordion" qui remplace la fonction "makeSound" avec sa propre implémentation. En utilisant un pointeur de classe de base pour invoquer la fonction, nous pouvons voir que la version dérivée est exécutée. L'ajout du mot clé "virtual" à la fonction de classe de base garantit que la version la plus dérivée est appelée.

Ensuite, discutons des fonctions virtuelles pures et des classes abstraites. Une fonction virtuelle pure est une fonction virtuelle sans implémentation dans la classe de base. Il oblige les classes dérivées à fournir leur propre implémentation. En définissant une fonction virtuelle sur "égale à zéro", nous créons une fonction virtuelle pure. Cela fait de la classe de base une classe abstraite, qui ne peut pas être instanciée. Les classes dérivées doivent implémenter la fonction virtuelle pure. Nous allons créer une classe "Piano" dérivée de la classe "Instrument". Si nous essayons de créer un objet de type "Piano" sans implémenter la fonction virtuelle pure, cela se traduira par une erreur. Cependant, une fois que nous avons implémenté la fonction dans la classe "Piano", nous pouvons créer avec succès un objet et invoquer la fonction.

Enfin, explorons le comportement polymorphe des fonctions virtuelles. Nous avons deux pointeurs d'instrument, l'un pointant vers un objet "Accordion" et l'autre vers un objet "Piano". En créant un tableau de pointeurs d'instruments, nous pouvons démontrer que l'invocation de la fonction "makeSound" à l'aide des pointeurs de classe de base entraîne l'exécution des versions dérivées de la fonction.

J'espère que cette explication vous aidera à mieux comprendre les fonctions virtuelles, les fonctions virtuelles pures et les classes abstraites. Si vous avez d'autres questions, n'hésitez pas à me le faire savoir dans les commentaires ci-dessous. Merci d'avoir regardé, et n'oubliez pas de vous abonner !

Relationship between Virtual Functions, Pure Virtual Functions and Abstract Classes in OOP explained
Relationship between Virtual Functions, Pure Virtual Functions and Abstract Classes in OOP explained
  • 2021.04.15
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
 

C++ Operator Overloading débutant à avancé (explication détaillée)



C++ Operator Overloading débutant à avancé (explication détaillée)

Bonjour à tous et bienvenue sur ma chaîne. J'étais au milieu de mon travail et n'avais pas prévu de filmer cette vidéo, mais puisque je travaille sur un projet très intéressant, je me suis dit pourquoi ne pas vous montrer ? Je travaille actuellement sur un gros projet avec des milliers de fichiers et des millions de lignes de code. J'étais sur le point d'analyser mon code, ce qui prend généralement 10 à 15 minutes. Alors, en attendant l'analyse, je vais vous parler de la surcharge des opérateurs.

L'analyseur que j'utilise s'appelle PDS Studio, et vous pouvez l'obtenir gratuitement en utilisant le lien dans la description. Je vais vous montrer comment j'utilise PDS Studio pour trouver des bogues et optimiser mon code. Une fois que vous avez téléchargé PDS Studio, vous avez besoin de code à analyser. J'ai la solution de mon travail, mais je ne peux pas vous montrer le code en raison d'un accord de non-divulgation. Cependant, je vous montrerai les résultats de l'analyse plus tard dans la vidéo.

Pour analyser votre code à l'aide de PDS Studio, vous devez cliquer sur l'onglet Extensions et sélectionner PDS Studio. Ensuite, choisissez la solution complète pour l'analyse. Étant donné que l'analyse prend un certain temps, je vais passer à un projet vide et vous expliquer en attendant la surcharge des opérateurs.

La surcharge d'opérateur nous permet de définir comment un certain opérateur se comporte avec un type de données spécifique. Par exemple, l'opérateur plus se comporte différemment lorsqu'il est utilisé avec des nombres et lorsqu'il est utilisé avec un type de données défini par l'utilisateur. Nous pouvons créer des fonctions d'opérateur pour définir ce comportement. J'expliquerai ce concept en utilisant un exemple d'ajout de deux types de données définis par l'utilisateur.

En C++, nous pouvons créer des fonctions d'opérateur en utilisant le mot-clé "operator" suivi de l'opérateur que nous voulons surcharger. Par exemple, nous pouvons surcharger l'opérateur plus en créant une fonction "opérateur+". Je vais le démontrer en créant une structure appelée "YouTubeChannel" avec deux attributs : "name" et "subscribersCount". Nous allons également créer un constructeur pour cette structure.

Pour surcharger l'opérateur d'insertion (<<) pour notre type YouTubeChannel, nous devons définir une fonction "opérateur<<". Cette fonction prend deux paramètres : un objet de type "ostream" (par exemple, "cout") et un objet de type "YouTubeChannel". Nous passons ces paramètres par référence pour éviter les copies inutiles.

Dans la fonction "operator<<", nous utilisons l'objet "ostream" pour afficher les informations sur YouTubeChannel. Dans ce cas, nous imprimons le nom et le nombre d'abonnés. En surchargeant l'opérateur d'insertion, nous activons l'impression des objets YouTubeChannel à l'aide de la commande "cout".

Pour utiliser l'opérateur d'insertion surchargé, on peut simplement écrire "cout << youtubeChannelObject". Cela fonctionne de la même manière que nous imprimons d'autres types en utilisant "cout". Nous pouvons également invoquer directement la fonction opérateur, comme une fonction normale, en passant l'objet "cout" et l'objet YouTubeChannel comme paramètres.

Gardez à l'esprit que différents opérateurs ont différentes manières de surcharger. L'opérateur d'insertion est surchargé à l'aide de la fonction "opérateur<<", mais d'autres opérateurs comme plus, moins, supérieur à, inférieur à, égal à, etc., ont leurs propres fonctions d'opérateur spécifiques.

Voilà pour cette vidéo. J'espère que vous avez trouvé cette introduction à la surcharge des opérateurs utile. Consultez la description pour obtenir une liste de tous les opérateurs qui peuvent être surchargés en C++. Une fois l'analyse terminée, je vous montrerai les résultats. Si vous avez des questions, n'hésitez pas à les poser dans les commentaires. Merci d'avoir regardé!

C++ Operator Overloading beginner to advanced (in-depth explanation)
C++ Operator Overloading beginner to advanced (in-depth explanation)
  • 2021.06.30
  • www.youtube.com
📚 Learn how to solve problems and build projects with these Free E-Books ⬇️C++ Lambdas e-book - free download here: https://bit.ly/freeCppE-BookEntire Objec...
Raison: