IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

[Débutant] Classes ou interfaces?


Sujet :

Visual C++

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Points : 59
    Points
    59
    Par défaut [Débutant] Classes ou interfaces?
    Bonjour à tous,

    J'essaie d'écrire un utilitaire de sauvegarde pour Win qui utilise les shadow copy.
    D'après msdn, la première des choses à faire c'est:

    Creates an IVssBackupComponents interface and initializes it to manage a backup (see CreateVssBackupComponents, IVssBackupComponents::InitializeForBackup) and optionally enable or disable writers on the system.

    Ok, mais qu'est-ce qu'ils entendent par interface?

    Une interface d'une classe, comme dans penser enn C++, ou bien l'autre manière d'écrire du code C++ sans utiliser la POO?

    D'avance merci pour tout eclaircissement

    PS: J'ai des notions de java, mais en C++, j'en suis encore à la page 56 de penser en C++, avec les flux d'entrée/sortie

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    plusieurs remarques en vrac:

    -> en c++, le notion d'interface n'est pas exactement la même qu'en java. Pour moi, une interface en c++ est une classe abstraite pure, c'est à dire qu'elle ne contient que des fonctions membre virtuelles pures, et aucune données. Mais je crois que les avis sont différents sur le sujet.

    -> je crois que ce qu'ils entendent par Interface, dans la Msdn, c'est plus un mélange de ses 2 sens: "l'ensemble des fonctions publiques de la classe" et "une classe qui tiens le rôle, au sens de la conception, d'une interface."

    Mais tout cela n'est pas bien clair pour moi, je déplace donc ton message vers le forum VisualC++ où se cachent de meilleures compétences
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Points : 59
    Points
    59
    Par défaut
    Merci de ta réponse.

    Je croix avoir compris qu'une classe abstraite ne peut pas être instanciée.
    Donc, si je créé ma classe, est-ce que j'ai une chance de pouvoir créer cette fameuse interface, ou la démarche est différente?

    D'avance merci pour toute suggestions

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    une classe de abstraite est une classe qui ne peut être instanciée et donc qui ne sert que d'interface.
    une classe est abstraite si elle déclare au moins une fonction virtuelle pure ou en hérite sans l'implémenter.

  5. #5
    Membre éclairé
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 749
    Points
    749
    Par défaut
    Je pense comme rOd qu'une interface est un cas particulier de classe abstraite avec uniquement des méthodes vrituelles pures et aucune donnée.

    Mais en C++, l'interface n'existe pas comme en java ou en C#. Une interface C++ est juste une classe abstraite particulière.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    IVssBackupComponents est une interface COM.

    Si je comprends bien ton extrait de texte, ce n'est pas à toi d'écrire l'interface, ni même d'écrire une classe qui l'implémente.
    Ce que tu dois faire, c'est appeler CreateVssBackupComponents() pour obtenir un pointeur d'interface sur un objet l'implémentant...

    (et ne pas oublier de faire un Release() sur cette interface quand tu n'en as plus besoin)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Points : 106
    Points
    106
    Par défaut
    Salut,
    Je suis du même avis que Medinoc.

    Il faut que tu regardes dans MSDN pour les détails d'utilisation d'une interface Com obtenue par
    CoCreateInstance et QueryInterface

    N'oubli pas d'initialiser la librairie COM par (CoInitialize ou CoInitializeEx).

  8. #8
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 110
    Points : 59
    Points
    59
    Par défaut
    Houla, ça fait beaucoup d'informations d'un coup, et merci de vos précisions, je croix qu'il y a des choses que je n'avais pas vu, en particulier ces histoires de COM.

    Merci pour tout ça, ça m'aide beaucoup, et je croix que j'ai encore pas mal de chemin à parcourir

Discussions similaires

  1. [Débutant] Classe abstraite ou Interface
    Par weabow dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 11/05/2014, 08h05
  2. [Débutant] classe abstraite ou interface
    Par Chatbour dans le forum Langage
    Réponses: 9
    Dernier message: 29/11/2007, 09h45
  3. [Débutant(e)]Erreur 'class' or 'interface' expect
    Par chevy dans le forum Général Java
    Réponses: 7
    Dernier message: 30/03/2005, 08h13
  4. [Débutant] Lancer une interface sous éclipse
    Par bonnefr dans le forum SWT/JFace
    Réponses: 11
    Dernier message: 11/05/2004, 15h59
  5. [Débutant]Classe d'Authentification : compilation impossible
    Par acyclique dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/08/2003, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo