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

C++ Discussion :

Classes et Structures (C++)


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif
    Homme Profil pro
    Etudiant en g�nie m�canique
    Inscrit en
    Mars 2011
    Messages
    146
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Etudiant en g�nie m�canique

    Informations forums :
    Inscription : Mars 2011
    Messages : 146
    Par d�faut Classes et Structures (C++)
    Salut!

    J'ai continu� ma lecture, et en arrivant au chapitre qui explique comment utiliser des "classes" en C++, je n'ai pas pu m'emp�cher de penser sans arr�t aux structures.

    Apparemment, les classes sont plus compl�tes que les structures: on peut g�rer l'encapsulation (public/private), y ajouter des fonctions...

    Concr�tement, mes questions sont les suivantes:
    - Est-ce que les classes sont au C++ ce que les structures sont au C (sachant que les classes ont apparemment des possibilit�s plus �tendues).
    - Si dans mes classes, je mettais tout en "public", quelle incidence cela pourrait-il avoir sur mon programme?
    - Les fonctions contenues dans mes classes peuvent-elles y �tre seulement d�clar�es, et impl�ment�es ailleurs dans le programme? (Ou alors je risque de me retrouver avec des classes hyper-grandes si j'ai un code complexe a y int�grer?)

    Merci pour ces petits �claircissements. Si jamais je vais un peu vite (parce que je suis encore en train de lire), contentez-vous de me le signaler et merci de votre compr�hension.

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2012
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 788
    Par d�faut
    Salut

    Voici un d�but de r�ponse via les entr�es de la FAQ


    Citation Envoy� par Armulis Voir le message
    - Est-ce que les classes sont au C++ ce que les structures sont au C (sachant que les classes ont apparemment des possibilit�s plus �tendues).
    En C++, class et struct sont quasiment �quivalents.
    FAQ C++ - Quelle est la diff�rence entre class et struct ?


    Citation Envoy� par Armulis Voir le message
    - Si dans mes classes, je mettais tout en "public", quelle incidence cela pourrait-il avoir sur mon programme?
    Tu vas t'attirer les foudres des autres d�veloppeurs ^^
    Tu vas complexifier l'utilisation de ta classe et si tu veux faire �voluer ta classe sans casser la compatibilit�, �a sera plus difficile (voire impossible).
    FAQ C++ - Qu'est-ce que l'encapsulation ?

    Citation Envoy� par Armulis Voir le message
    - Les fonctions contenues dans mes classes peuvent-elles y �tre seulement d�clar�es, et impl�ment�es ailleurs dans le programme? (Ou alors je risque de me retrouver avec des classes hyper-grandes si j'ai un code complexe a y int�grer?)
    Oui, bien s�r
    FAQ C++ - Comment structurer ma classe en un fichier .h et un fichier .cpp ?

  3. #3
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    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 299
    Billets dans le blog
    2
    Par d�faut
    Quelques pr�cisions suppl�mentaires (juste une addition au message de Ehonn)
    Citation Envoy� par Armulis Voir le message
    - Est-ce que les classes sont au C++ ce que les structures sont au C (sachant que les classes ont apparemment des possibilit�s plus �tendues).
    En fait, classe et structure en c++ c'est la m�me chose. Seule l'accessibilit� par d�faut (public/private) change. En revanche, les classes/structs en C++ �a n'a rien � voir avec les structs en C. En C, la notion d'objet (donc h�ritage, polymorphisme et tout ce qui en d�coule) n'existe pas. Pas plus que la notion de template. Il est possible de simuler un comportement orient� objet en C, mais il faut passer par des m�canismes "artificiels", non natifs, mais au final ce ne sera jamais vraiment la m�me chose.

    Citation Envoy� par Armulis Voir le message
    - Si dans mes classes, je mettais tout en "public", quelle incidence cela pourrait-il avoir sur mon programme?
    L'incidence d'un tel choix est que tu te priverais d'un outil tr�s puissant de la poo, � savoir l'encapsulation. L'encapsulation a plusieurs avantages. En particulier, cela permet de mieux structurer ton programme. Pour un petit programme de 10 lignes, �a n'a aucun sens. Mais d�s que ton programme grandit (et �a va souvent tr�s vite), une bonne encapsulation te permet d'�viter des erreurs, d'ajouter plus rapidement de nouvelles fonctionnalit�s, d'avoir une meilleure vision du code que tu as d�j� �crit, etc.

    Citation Envoy� par Armulis Voir le message
    - Les fonctions contenues dans mes classes peuvent-elles y �tre seulement d�clar�es, et impl�ment�es ailleurs dans le programme? (Ou alors je risque de me retrouver avec des classes hyper-grandes si j'ai un code complexe a y int�grer?)
    C'est m�me un des principe de base du c++: les d�clarations dans les en-t�te (fichier.h), l'impl�mentation dans le fichier source (fichier.cpp). Avec un b�mol, car on ne peut pas vraiment faire �a dans le cas de classes templates.
    C'est un principe parfois critiqu� (le code d'une classe se retrouve s�par� dans 2 fichiers, c'est parfois compliqu� pour les programmeurs qui viennent d'autres langages o� ce n'est pas le cas), mais �a a de nombreux avantages, dont celui que tu cites.

  4. #4
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    Juste pour rajouter mon grain de sel (et en mettre une couche suppl�mentaire ):
    Citation Envoy� par r0d Voir le message
    L'incidence d'un tel choix est que tu te priverais d'un outil tr�s puissant de la poo, � savoir l'encapsulation. L'encapsulation a plusieurs avantages. En particulier, cela permet de mieux structurer ton programme. Pour un petit programme de 10 lignes, �a n'a aucun sens. Mais d�s que ton programme grandit (et �a va souvent tr�s vite), une bonne encapsulation te permet d'�viter des erreurs, d'ajouter plus rapidement de nouvelles fonctionnalit�s, d'avoir une meilleure vision du code que tu as d�j� �crit, etc.
    Il faut d'ailleurs constater que, m�me C essaye d'apporter une certaine encapsualtion...

    C'est beaucoup moins �vident qu'en C++, o� la notion d'encapsulation vient "naturellement" avec le paradigme orient� objets, mais c'est n�anmoins faisable. Prend, par exemple, la structure FILE dont on ne sait absolument rien, � part les fonctions qui la manipulent .

    C++ t'offre la possibilit� d'encapsuler les donn�es de mani�re simple et efficace, il serai dommage de ne pas le faire m�me si une classe dans laquelle tout serait public serait strictement � �quivalent � une structure utilisant sa visibilit� par d�faut et contenant les m�me donn�es (et invers�ment une structure o� tout serait priv� serait strictement �quivalent � une classe utilisant sa visibilit� par d�faut et contenant les m�mes donn�es, bien que cela n'aurait pas beaucoup de sens )
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  5. #5
    Membre actif
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2012
    Messages
    12
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : D�cembre 2012
    Messages : 12
    Par d�faut
    au fait en c++ la classe est ce qu'est la structure en c, mais faut noter que en c++ on peut dire ''class = struct'' et si tu met tout en public dans ta classe et surtout les attributs croit moi tu auras plus d'ennemis que de programmeurs qui font du c++ sur terre donc pas touche a ce niveau: m�thodes en public et attributs en private.

  6. #6
    Membre Expert

    Avatar de germinolegrand
    Homme Profil pro
    D�veloppeur de jeux vid�o
    Inscrit en
    Octobre 2010
    Messages
    738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : D�veloppeur de jeux vid�o
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Par d�faut
    Citation Envoy� par bayaola93 Voir le message
    au fait en c++ la classe est ce qu'est la structure en c, mais faut noter que en c++ on peut dire ''class = struct'' et si tu met tout en public dans ta classe et surtout les attributs croit moi tu auras plus d'ennemis que de programmeurs qui font du c++ sur terre donc pas touche a ce niveau: m�thodes en public et attributs en private.
    Balivernes, mettre des attributs en public n'est pas plus idiot que mettre des m�thodes en private. Se priver syst�matiquement de le faire lorsque cela est possible/utile, voil� la v�ritable erreur.

  7. #7
    Inactif  

    Homme Profil pro
    Ing�nieur test de performance
    Inscrit en
    D�cembre 2003
    Messages
    1 986
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur test de performance
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 986
    Par d�faut
    Bonjour.

    La diff�rence essentielle en C++ entre une structure et une classe (hormis l'aspect public/private), c'est que l'on peut aligner (niveau m�moire) une structure, mais pas une classe. C'est utile lorsque l'on veut optimiser son code, ou lorsque l'on m�lange code c++ et code assembleur (l'asssembleur n�cessite en g�n�ral un alignement m�moire des donn�es).

    Citation Envoy� par bayaola93 Voir le message
    croit moi tu auras plus d'ennemis que de programmeurs qui font du c++ sur terre donc pas touche a ce niveau: m�thodes en public et attributs en private.
    Je rejoins germinolegrand, en C++ on utilise une structure quand c'est judicieux, et une classe quand c'est judicieux. Les d�veloppeurs C++ n'ont jamais aboli l'utilisation de structure au profit de classe.

    Je pense que tu fais r�f�rence aux d�bats qui disent de toujours prot�ger les variables membres d'une classe C++ par un accesseur. Cela n'a rien � voir avec le d�bat structure/classe.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [D�butant] Classe ou structure
    Par cyrill.gremaud dans le forum C#
    R�ponses: 1
    Dernier message: 14/01/2013, 08h58
  2. [VB.NET] Privil�gier une classe � une structure ou inversement ?
    Par Jean-Philippe Andr� dans le forum D�buter
    R�ponses: 2
    Dernier message: 27/02/2012, 08h47
  3. Organisation d'un programme (Class et Structures)
    Par le_binr dans le forum VB.NET
    R�ponses: 3
    Dernier message: 16/12/2011, 10h12
  4. Classe ou structure ?
    Par tintin72 dans le forum D�buter
    R�ponses: 9
    Dernier message: 20/11/2008, 19h26
  5. R�ponses: 6
    Dernier message: 26/06/2006, 10h29

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