begin process at 2012 02 13 02:19:01
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > INTÉRÊT DE L’UTILISATION D’UNE CLASSE ABSTRAITE [DEV-CPP]

INTÉRÊT DE L’UTILISATION D’UNE CLASSE ABSTRAITE [DEV-CPP]


 Information sur la source

Note :
Aucune note
Catégorie :Tutoriaux Classé sous :abstraite, virtuelle, cercle, triangle, rectangle Niveau :Débutant Date de création :25/03/2006 Vu / téléchargé :9 845 / 607

Auteur : stenka

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Ce programme très simple illustre l’intérêt de l’utilisation d’une classe abstraite. Avec des pointeurs de Forme (abstraite) on peut instancier n’importe quels objet des classes dérivées (Cercle,Triangle, …). C’est alors que ça devient intéressant car les fonctions virtuelles de Forme une fois définies pour les classes héritées peuvent être utilisées sur les pointeurs sans s’occuper du type d’objet vers lesquels ils pointent !

Source

  • #include <iostream>
  • #include "cercle.h"
  • #include "rectangle.h"
  • #include "triangle.h"
  • // MISE EN OEUVRE //////////////////////////////////////////////////////////
  • using namespace std;
  • int main(int argc, char *argv[])
  • {
  • Forme *pt[3]; // Pointeur car on ne peut instancier une classe virtuelle
  • pt[0] = new Cercle(2.);
  • pt[1] = new Rectangle(2.5,4.);
  • pt[2] = new Triangle(3.,8.);
  • for(int i = 0; i < 3; i++)
  • cout << "Surface du "
  • << pt[i]->GetName()
  • << " : "
  • << pt[i]->Surface()
  • << endl;
  • system("PAUSE");
  • return EXIT_SUCCESS;
  • }
#include <iostream>
#include "cercle.h"
#include "rectangle.h"
#include "triangle.h"


// MISE EN OEUVRE //////////////////////////////////////////////////////////

using namespace std;

int main(int argc, char *argv[])
{
    Forme *pt[3]; // Pointeur car on ne peut instancier une classe virtuelle
    pt[0] = new Cercle(2.);
    pt[1] = new Rectangle(2.5,4.);
    pt[2] = new Triangle(3.,8.);
    
    for(int i = 0; i < 3; i++)
        cout << "Surface du " 
             << pt[i]->GetName() 
             << " : " 
             << pt[i]->Surface() 
             << endl;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

COPIE DE FICHIERS AVEC REMPLACEMENT OU SUPPRESSION DE CHAÎNE...

 Sources de la même categorie

LISTER FICHIERS ET RÉPERTOIRES (MULTIPLATEFORME) par christophedlr
UTILISATION DES TYPELIST EN C++ par wyden
Source avec Zip Source avec une capture QCSSCOMPRESSOR par alphaone
AFFICHAGE D'UN TRIANGLE ISOCELE par nabche
Source avec Zip GESTION D'UNE BIBLOTHEQUE par leclerro19

 Sources en rapport avec celle ci

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
Source avec Zip APPLICATION DE DESSIN DE QUELQUES FIGURES par laguchori
AFFICHAGE D'UN TRIANGLE ISOCELE par nabche
Source avec Zip POLYGONE EN SDL par alexis0788
Source avec Zip CONNAITRE UN COTÉ DE L'ANGLE DROIT (PYTHAGORE) par pipolasmimi38

Commentaires et avis

Commentaire de zeratul67 le 25/03/2006 19:18:54

Je commence enfin à comprendre l'intérêt des classes abstraites ... merci pour ce petit exemple :)

Commentaire de magic_Nono le 26/03/2006 22:07:36

en effet, l'exemple standart de la plupart des cours sur l'héritage abstrait est sur les formes géométriques...

voici un autre exemple, sur différents types de fichiers à remplir:

http://www.cppfrance.com/codes/GESTION-COMMUNE-FORMATS-SORTIE-INTERFACE-COMMUNE-POUR-HTML_24520.aspx

magicalement
Nono.

Commentaire de samra_82 le 27/03/2006 13:16:26

Salut
Je trouve que c'est un exemple bien claire qui permet de comprendre l'utilité des classes abstraites pour les débutants dans la programmation orientée objet avec les commentaires qui le rend plus lisible.Merci

Commentaire de Kleidp le 28/03/2006 20:03:36

Salut, juste deux petite question sur ta source (je débute sur la programmation objet):

- Dans ta description, tu dis que la classe Forme est une classe abstraite.
   En fait (à ce que j'ai lu), ce n'est pas plutot une classe de base ou classe mère ?
   Quel est la difference ?

- Tu as mis "virtual" devant les methotes de Forme. A quoi cela sert il ?

Merci pour vos réponses ..

Commentaire de magic_Nono le 30/03/2006 10:28:46

cette classe est abstraite puisqu'elle ne peut avoir d'instance

le mots clef virtual impose que chaque classe fille possède cette méthode.

Magicalement
Nono.

Commentaire de exar le 14/05/2006 14:27:39

Magic_Nono:
Il me semble que c'est le fait que la méthode soit virtuelle pure (=0) qui impose sa présence dans les classes filles, si je ne me trompe pas, non ?
Quand une, fonction membre n'est pas virtuelle, la fct invoquée est celle définie dans le type statique de l'objet de classe(ou pointeur ou réf) à travers laquelle elle est invoquée.  Quand une fct membre est virtuelle, la fct invoquée est celle définie dans le type dynamique de l'objet de classe.
Une fct membre virtuelle pure permet d'encapsuler la fct de manière indépendante du type dérivé.  Ces fcts membres n'ont d'ailleurs pasx d'implémentation dans la clase de base.

Commentaire de magic_Nono le 15/05/2006 16:04:17

totalement exact, désolé, j'ai dût répondre un peu vite lors de mon dernier post.

les fonctions virtuelles sont redéfinissables dans les classes filles.

et ces dernieres refusent de compiler seulement si elles comportes des fonctions virtuelles pures (=0) non redéfinies.

Magicalement
Nono.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

tableau dynamique [ par azkab ] bonjour,dans mon programme j ai deux classes (classe 'rectangle' et classe 'cercle'). j ai une troisieme classe 'Objet' qui est l aggregation de ces d Comment ne colorier que l'interieur d'un triangle ou d'un cercle sour TC? [ par SurGeon1503 ] Voil&#224; mon probleme:pour un projet d'&#233;tude en C je programme un jeu de d&#232;s en graphique et j'aimerai mettre mes d&#232;s(5 rectangles av Faire une base virtuelle pure de classe abstraite pour hériter trois classes de listes chaînées [ par Dralnu ] Boujour &#224; tous, J'ai un petit probl&#232;me... Comment je peux faire pour faire une base virtuelle pure de classe abstraite pour h&#233;riter t programme triangle rectangle ou non [ par Phil974m ] j'ai un petit soucis avec mon programme qui ne gère pas correctement les données saisiej'ai fait un petit programme demandé dans mon bts iris qui cher MultiHéritage et Classe Forme [ par dumbadonf ] VOici le sujet du partiel de C++ de l'année dernière... Si quelqu'un l'a déjà fait ca serait super sympas de m'en faire profiter car le mien est cette programme qui affiche un triangle [ par laguchori ] Bonjour , J'ai un projet à faire qui consiste à créer une classe ligne et la tracer à partir de deux point et ensuite créer une Class triangle dérivée Besoins d'aide pour faire un algorythme du triangle de pascal en C?? [ par Gokuan ] Hello tout le monde, Voilà, il faut que je fasse l'algorythme qui me permet de calculé le triangle de Pascal, mais j'essai mais je n'y arrive pas, al conteneur CList dans aplication du type paint [ par andarius40 ] bonjour,j'apprends le c++ avec le livre visual c++ 6 de ivor horton.(J'en suis au chapitre 6 pour ceux qui ont le livre)Lorsque je compile le programm Dessiner un Rectangle [ par SnOOpss ] bonjour tout le monde, vla le probleme :HBITMAP hbmp = (HBITMAP)LoadImage(0,"c:\\logo.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);HDC hdc;hdc = GetWindowDC


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,739 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales