Accueil Finances personnelles Factorisation et héritage en C ++ - dummies

Factorisation et héritage en C ++ - dummies

Vidéo: 008 — Rappels, classes et héritage en Java 2025

Vidéo: 008 — Rappels, classes et héritage en Java 2025
Anonim

Le concept d'héritage, et donc d'affacturage, en C ++ permet à une classe d'hériter des propriétés d'une classe de base. L'héritage a un certain nombre de buts; le principal avantage de l'héritage est la capacité de souligner la relation entre les classes. C'est ce que l'on appelle la relation IS_A - un four à micro-ondes IS_A et des trucs comme ça.

L'affacturage est une bonne chose si vous faites les corrélations correctes. Par exemple, la relation entre les micro-ondes et les fours conventionnels semble naturelle. Affirmez que le micro-ondes est un type de grille-pain spécial, et vous vous dirigez vers des problèmes. Certes, ils font tous les deux chaud, ils utilisent tous deux l'électricité, et ils sont tous les deux trouvés dans la cuisine, mais la similitude s'arrête là - un micro-ondes ne peut pas faire de pain grillé et un grille-pain ne peut pas faire de nachos.

L'identification des classes inhérentes à un problème et l'établissement des relations correctes entre ces classes est un processus connu sous le nom de affacturage. (Le mot est lié à l'arithmétique que vous avez été obligé de faire à l'école primaire: affiner les plus petits dénominateurs communs, par exemple, 12 est égal à 2 fois 2 fois 3.)

Voici comment vous pouvez utiliser héritage pour simplifier vos programmes en utilisant un exemple de compte bancaire. Supposons que l'on vous demande d'écrire un programme bancaire simple mettant en œuvre le concept de compte d'épargne et de compte chèque.

Les programmeurs orientés objet ont trouvé une manière concise de décrire les points saillants d'une classe dans un dessin. Les classes Vérification et Économies sont représentées sur cette figure. (Ceci n'est que l'une des façons d'exprimer graphiquement la même chose.)

Vérification et Économies. ">

Classes indépendantes Vérification et Économies.

Pour lire cette figure et les autres chiffres, rappelez-vous ce qui suit:

  • La grande boîte est la classe, avec le nom de la classe en haut.

  • Les noms dans les boîtes sont des fonctions membres.

  • Les noms qui ne sont pas dans les boîtes sont des membres de données.

  • Les noms qui sortent partiellement des boîtes sont des membres accessibles au public; c'est-à-dire que ces membres peuvent être accédés par des fonctions qui ne font pas partie de la classe ou de ses descendants. Les membres qui sont complètement dans la boîte ne sont pas accessibles depuis l'extérieur de la classe.

  • Une flèche épaisse représente la relation IS_A.

  • Une flèche fine représente la relation HAS_A.

Une voiture IS_A véhicule , mais une voiture HAS_A moteur .

Vous pouvez voir dans le premier chiffre que les classes Vérification et Epargne ont beaucoup en commun. Par exemple, les deux classes ont une fonction de membre de retrait () et de dépôt ().Comme les deux classes ne sont pas identiques, elles doivent rester séparées. (Dans une application bancaire de la vie réelle, les deux classes seraient beaucoup plus différentes que dans cet exemple.) Pourtant, il devrait y avoir un moyen d'éviter cette répétition.

Vous pourriez avoir une de ces classes héritée de l'autre. Les économies ont plus de membres que Vérification, , donc vous pouvez laisser Économies hériter de Vérification. Cette disposition est illustrée dans la figure suivante.

La classe Epargne hérite de tous les membres. La classe est complétée avec l'ajout du membre de données noWithdrawals et en surchargeant la fonction de retrait () . Vous devez annuler le retrait () car les règles de retrait d'argent d'un compte d'épargne sont différentes de celles pour retirer de l'argent d'un compte courant.

Économies implémentées en tant que sous-classe de Vérification. ">

Économies implémentées en tant que sous-classe de Vérification.

Même si Économies hérite de La vérification de est une économie de travail, mais elle n'est pas totalement satisfaisante. Le principal problème est que, comme le poids indiqué sur mon permis de conduire, il déforme la vérité. Cette relation d'héritage implique qu'un compte d'épargne est un type particulier de compte chèque, ce qui n'est pas le cas.

De telles fausses déclarations sont source de confusion pour le programmeur, à la fois aujourd'hui et demain. Un jour, un programmeur peu familier avec nos astuces de programmation devra lire et comprendre ce que fait notre code. Les représentations trompeuses sont difficiles à concilier et à comprendre.

De plus, de telles fausses déclarations peuvent entraîner des problèmes à l'avenir. Supposons, par exemple, que la banque change ses règles en matière de vérification des comptes. Dites qu'il décide de facturer des frais de service sur les comptes de chèques seulement si le solde minimum baisse en dessous d'une valeur donnée au cours du mois.

Un changement comme celui-ci peut être facilement manipulé avec un minimum de changements dans la classe Vérification. Vous devrez ajouter un nouveau membre de données à la classe Vérification pour garder trace du solde minimum pendant le mois. Allons-y et appelons-le minimumBalance.

Mais maintenant vous avez un problème. Parce que Économies hérite de Vérification, Économies obtient également ce nouveau membre de données. Il n'a aucune utilité pour ce membre parce que le solde minimum n'affecte pas les comptes d'épargne, donc il se trouve juste là. Souvenez-vous que chaque objet de compte de contrôle a ce membre supplémentaire minimumBalance . Un membre de données supplémentaire peut ne pas être un gros problème, mais il ajoute plus de confusion.

Des changements comme celui-ci s'accumulent. Aujourd'hui, c'est un membre supplémentaire des données - demain, c'est une fonction membre modifiée. Finalement, la classe de compte d'épargne porte beaucoup de bagages supplémentaires qui est applicable uniquement aux comptes chèques.

Maintenant, la banque revient et décide de changer une politique de compte d'épargne. Cela vous oblige à modifier certaines fonctions dans Vérification. Les modifications de ce type dans la classe de base se propagent automatiquement à la sous-classe, sauf si la fonction est déjà surchargée dans la sous-classe Économies.

Par exemple, supposons que la banque décide de donner des toasters pour chaque dépôt dans le compte courant. Sans que la banque (ou ses programmeurs) le sachent, les dépôts sur les comptes chèques entraîneraient automatiquement des dons de grille-pain. Sauf si vous êtes très prudent, les modifications apportées à Vérification peuvent apparaître de manière inattendue dans Économies.

Comment pouvez-vous éviter ces problèmes? Affirmer que Vérification est un cas particulier de Économies change mais ne résout pas notre problème. Ce dont vous avez besoin est une troisième classe (appelez-le compte, juste pour les grins) qui incarne les choses qui sont communes entre Vérification et Économies, comme montré ici.

Vérification des et économies sur une classe compte commune. ">

Baser Vérification des et économies sur une classe compte commune.

Comment la création d'un nouveau compte résout-elle les problèmes? Tout d'abord, créer une nouvelle classe Account est une description plus précise du monde réel (quel qu'il soit). Bien sûr, il y a vraiment quelque chose de connu comme un compte. Les comptes d'épargne et les comptes chèques sont des cas particuliers de ce concept plus fondamental.

De plus, la classe Économies est isolée des modifications apportées à la classe Vérification (et vice versa). Si la banque instaure une modification fondamentale de tous les comptes, vous pouvez modifier Compte, et toutes les sous-classes hériteront automatiquement de la modification. Mais si la banque ne modifie sa politique que pour la vérification des comptes, vous pouvez modifier uniquement la classe de compte Vérification sans affecter Économies.

Ce processus d'élimination des propriétés communes de classes similaires est l'essence de l'affacturage de classe .

L'affacturage n'est légitime que si la relation d'héritage correspond à la réalité. Factoring ensemble une classe Mouse et Joystick parce qu'ils sont tous les deux des périphériques de pointage matériels est légitime. Factoring ensemble une classe Mouse et Display car ils font tous les deux des appels de système d'exploitation bas niveau ne l'est pas.

Factorisation et héritage en C ++ - dummies

Le choix des éditeurs

Comment envoyer une vidéo et des photos avec Flip Video - Dummies

Comment envoyer une vidéo et des photos avec Flip Video - Dummies

Après avoir pris photos et vidéos d'événements dans votre vie avec votre caméra Flip Video, vous pouvez les envoyer par e-mail à vos amis et aux membres de votre famille. Le partage de films et d'images que vous capturez et créez en envoyant un message e-mail vous permet de toucher et de toucher quelqu'un avec vos créations, même si vous êtes à proximité ...

Comment enregistrer le son séparément pour votre film numérique - Les mannequins

Comment enregistrer le son séparément pour votre film numérique - Les mannequins

Ont parfois besoin d'un réalisateur enregistrer le son en utilisant un appareil séparé de l'appareil photo, enregistrer le son séparément, puis synchroniser le son sur la vidéo plus tard, lors de l'édition. Habituellement, la raison en est d'augmenter la qualité du son enregistré car de nombreuses caméras n'enregistrent pas le son aussi bien que ...

Comment enregistrer une vidéo avec un caméscope Flip - Les nuls

Comment enregistrer une vidéo avec un caméscope Flip - Les nuls

Enregistrant des vidéos avec votre caméra Flip est comme facile comme 1-2-3 (et 4). Avant d'enregistrer une vidéo, vérifiez les indicateurs d'état de votre Flip pour vous assurer que votre caméra est complètement chargée et qu'elle a suffisamment de temps d'enregistrement pour capturer la vidéo que vous voulez filmer. Pour vérifier le niveau de charge de la batterie de votre Flip (ou ...

Le choix des éditeurs

Mot Raccourcis des symboles 2016 - des mannequins

Mot Raccourcis des symboles 2016 - des mannequins

Dans Word 2016 vous pouvez insérer des symboles communs en utilisant ces raccourcis clavier. Utilisez ces raccourcis clavier au lieu de la commande Insérer → Symbole pour insérer des symboles typographiques communs. Symbole Raccourci Tableau de bord Alt + Ctrl + signe moins En tableau Ctrl + signe moins Copyright Alt + Ctrl + C Marque déposée Alt + Ctrl + R Marque Alt + Ctrl + T Ellipsis Alt + Ctrl + période

Mot Raccourcis des symboles 2016 - mannequins

Mot Raccourcis des symboles 2016 - mannequins

En fonction de la manière dont vous choisissez d'utiliser Word 2016, vous risquez de devoir faire face pour un symbole spécial. Avec ces raccourcis clavier, vous pouvez insérer des symboles communs dans Word 2016. Utilisez ces raccourcis clavier au lieu de la commande Insérer → Symbole pour insérer des symboles typographiques communs. Symbole Raccourci Tableau de bord Alt + Ctrl + signe moins En tiret ...

Mot Trucs et astuces pour les tables 2013 - mannequins

Mot Trucs et astuces pour les tables 2013 - mannequins

Dans Word 2013, le texte se déverse dans un tableau sur une cellule base de la cellule. Vous pouvez taper un mot, une phrase ou même un paragraphe. Tout ce texte reste dans la cellule, bien que la cellule change de taille pour accueillir de plus grandes quantités de texte. Vous pouvez mettre en forme la cellule d'une table comme n'importe quel paragraphe de Word, en ajoutant même des marges ...

Le choix des éditeurs

Sexe For Dummies Cheat Sheet - les nuls

Sexe For Dummies Cheat Sheet - les nuls

Que vous vous considériez comme un Don Juan, une Lady Chatterly, ou un novice sexuel , tout le monde peut tirer le meilleur parti du sexe avec un peu plus de connaissances. Vous devriez savoir que les préliminaires sont quelque chose que vous devriez prendre en considération avec chaque interaction que vous et votre partenaire avez, ainsi que la façon de garder les choses ...

Mots et significations liés à la ménopause - mannequins

Mots et significations liés à la ménopause - mannequins

Bien que ce soit loin d'être une liste complète des termes que vous pourriez entendre être utilisé lorsque la ménopause est discutée, les cinq termes essentiels suivants devraient vous aider à comprendre les bases. HRT (hormonothérapie substitutive): Un traitement pour compléter les hormones que vous perdez pendant la ménopause - généralement une combinaison d'œstrogènes, ...

Symptômes qui indiquent que la ménopause est proche - mannequins

Symptômes qui indiquent que la ménopause est proche - mannequins

La plupart des femmes commencent à éprouver des symptômes de ménopause déséquilibrés, alors qu'ils ont encore des règles. Si vous ressentez un ou plusieurs des symptômes suivants, consultez votre médecin - vous pouvez être en train d'aborder le changement. Peau sèche ou cheveux Pensée floue (difficulté à se concentrer) Flutters du cœur (battements de cœur rapides) ...