J'ai une autre question rudimentaire. Je me souviens un peu entendu que tout en C ++ se rend dans une classe. Ensuite, j'entends que les classes ne devraient pas être utilisées si possible. Donc, ma question se passe: quand faites-vous des cours et quand ne-tu pas? (un exemple ou deux serait cool) p>
et une question secondaire aléatoire: quand est-il approprié de mettre 2 classes dans une en-tête? Ou est-ce important? P>
6 Réponses :
Les classes font partie d'un paradigme de programmation appelé " Programmation orientée objet ".
Nous faisons quelques "objets": p> montre maintenant: p> personne code> est une classe code> >:: p> Alice's age: 5
Bob's age: 50
Merci. Je comprends comment ils sont utilisés, je ne sais tout simplement pas si tout dans votre programme devrait appartenir à une classe ou non.
Pas vraiment. Le code ci-dessus serait à peu près la même chose en C, qui n'est pas orienté objet.
Vous avez des conventions de nommage très étranges. Typiquement, toutes les capuchons sont réservées aux constantes, capitalisées pour les classes et minuscules pour les instances / variables.
-1 pour les conventions de codage WTF.
@shoosh: C'est injustifié, les conventions codantes sont une chose personnelle, rien qui ne devrait être puni. Dans une équipe, bien sûr, respectez la convention de codage que tout le monde a accepté, mais à ce sujet? Allez..
@Mark c'était accidentel; Je pensais à Microsoft rect code> structs de style.
Très généralement, si quelque chose peut être appelé objet, il peut s'agir d'une classe. Une classe ne doit correspondre qu'à un seul objet "réel". Pas plus d'un objet et ne faisant généralement pas partie d'un objet.
Exemples - Une personne, une brosse, un livre, une bibliothèque, une application, un processus, un thread, une connexion Internet, un bouton d'interface graphique, une fenêtre d'interface graphique. P>
L'option de deux classes dans un en-tête dépend des normes de codage que vous travaillez avec ou celles qui sont appliquées pourquoi quiconque vous écrivez le code pour. Certaines personnes n'en auraient rien. Habituellement, il est approprié lorsque les deux classes sont assez petites et très liées, par exemple, hériter de la même classe de base ou de la même interface. P>
Veuillez envisager de lire un livre approprié orienté objet et C ++. p>
en C ++, il n'est pas nécessaire d'encapsuler tout dans une classe. C ++ est un langage de programmation multi-paradigmes, ce qui signifie que vous pouvez soit adopter une approche orientée objet, soit une procédure (pas de cours), soit une certaine mélange d'entre elles. P>
Généralement, l'encapsulation est une bonne chose et peut améliorer la lisibilité du code et la maintenabilité. P>
Dans tout C de la nécessité de ne pas aller à l'intérieur d'une classe (par opposition à Java où tout ne va dans une classe). p>
Vous devriez faire une classe lorsque vous souhaitez représenter une entité du monde réel, par exemple une personne, un client, un utilisateur, animal, voiture, etc Vous avez besoin de stocker des données sur l'entité et ont des fonctions liées à l'entité. p>
Par exemple: le client. Vous créez une classe de client. Le client a les données suivantes à stocker. {Nom, âge, adresse, téléphone}. Vous avez besoin de certaines fonctions comme addCustomer (), sendMessage (), etc. p> li>
Choix de l'endroit où utiliser des classes et où ne pas est un grave problème de conception. Il n'y a pas de règle générale. Avant de commencer votre application, vous devez vous asseoir avec un papier et un crayon et un brainstorm les classes de base que vous exigerons. Vous pouvez toujours ajouter et affiner votre conception à l'avenir. Lors de la conception de vos cours le plus de chose importante à garder à l'esprit est le code réutilisabilité. Essayez également de garder votre code comme couplage lâche que possible. P> li>
En pratique courante, vous devriez avoir une classe par fichier d'en-tête. P> li> ol>
Une classe est essentiellement une représentation d'un objet.
La classe tiendra des informations sur cet objet et généralement des méthodes pour modifier ces données.
Tout pas dans une classe in C ++ est connu sous le nom Méthodes dans les classes (méthodes dans les classes peut être statique aussi, mais oublions que pour l'instant) nécessite un objet de les appeler sur. p> Si vous avez une méthode statique boo est appelé comme cette:
tandis que la barre serait appelée comme ceci: p> programmation orientée objet (avec des classes) présente plusieurs avantages et la plupart des utilisées couramment utilisées. Langues d'aujourd'hui sont OOP. P> P> Code statique code> Signification de la méthode ne nécessite pas de contexte à appeler . p> foo (int, int) code> et une méthode de classe bar (int, int) code> dans la classe exemple code> p>
foo (3, 4);
code> p>
Est-ce que tout va dans une classe? p>
Non, très certainement pas. Les cours font partie de la programmation orientée objet, mais C ++ n'est pas seulement cela, contrairement à, dites, java ou c #. P>
c ++ est un langage multi-paradigme em>, ce qui signifie que cela permet également d'autres choses. C'est parce que le plus gros inconvénient lors de l'utilisation de OOP est réutilisabilité des algorithmes em>.
Bien sûr, vous pouvez simplement écrire certaines fonctions pour chaque classe là-bas, mais à quel point ce serait cool de simplement l'écrire une fois et d'être fait avec elle pour toujours? C'est ce que STL est construit. Classes dans la STL, commevecteur code>, seulement les fonctions de membre qu'ils ont absolument besoin em> pour l'encapsulation. La plupart d'entre eux sont uniques de toute façon, comme la façon dont vous récupérez le premier élément d'un vecteur code> code> est différent de la récupération du premier élément d'une listecode>. Tout ce qui est encapsulé et résumé à l'écart des fonctions de membre tels queavant code> et(code> (pour un accès direct aux membres) oucommencer code> etetfin code> (pour l'accès itérateur). p>MAINTENANT, tous les autres éléments algorithmiques sont une fonction libre tant que cela fonctionne sur plusieurs classes et n'a pas besoin d'un accès direct à l'internalisation de cette classe. Prenez
std :: Trier code> à titre d'exemple. Cela fonctionne sur n'importe quelle paire itératrice tant qu'ils sont des itérateurs d'accès aléatoire. Dans la STL, ce seraitvecteur code> etdeque code>, avec C ++ 0x, nous obtenonstableau code>, mais en dehors de la STL, vos cours aussi em> strong> s'ils fournissent de tels itérateurs. Ou encore plus de matrices de style C! Oui, vous pouvez les utiliser pour trier, très facilement: p>xxx pré> écrire une fois, utilisez partout. P>
comme dernier point, Cet article de Scott Meyers est une lecture très très intéressante sur la conception de classe et quand utiliser des fonctions libres et quand non. P> blockQuote>
Félicitations pour atteindre 10k. :)
+1 La STL est une si belle gemme.
Vous devriez vraiment baser votre apprentissage sur quelque chose de plus substantiel que les conversations enterrées.
Un exemple de quelque chose qui n'est pas dans une classe serait les fonctions mathématiques en C ++.
Être obligé de mettre tout dans une classe est de savoir comment vous finissez par être obligé de "inventer" le "modèle de conception" appelé le singleton.
@Christian ce n'est pas comme ça que Java le fait. :)