de l'obj-c au c++?
Anis
Membre
bonjour à tous je recherche un cours qui permet de passer de l'obj-c au c++ ! En connaissez vous?
Ou sinon auriez vous un bon livre/cours a me conseiller qui vous a permis d'aprendre le c++!?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Non, mais je connais l'inverse
http://www.chachatelier.fr/programmation/objective-c.php
l'Objective-C est un langage simple à apprendre mais lacunaire.
Le C++ se veut complet et flexible mais complexe à maitriser.
Je ne pense pas qu'il y ait le bouquin miracle que fera de toi un crack du C++.
La seule méthode éprouvée pour s'améliorer en programmation c'est coder et encore coder !
Aujourd'hui, avec internet, tu as de la chance, pléthore de tutos sont accessibles en un simple clic.
Moi, j'écumais Eyrolles et Le Monde en Tique à la recherche du saint graal.
Mais c'était une autre époque
J'avait trouvé ce pdf mais il n'a pas d'intérêt pour moi! moi qui veut apprendre le C++,
je voulais juste que vous me conseillez sur un cours qui vous a aidé a apprendre les base du language ( qui a l'air très similaire au C, que je connais) ainsi que la POO. on a beaucoup de choix sur le net c'est vrai! par exemple le site du zero (openclassroom) presente un bon tuto mais s'adresse vraiment a un public de debutant dont je ne fait plus trop partis!
dernière essaie: un cours complet qui passe du C au C++?
En anglais:
Moving from C to C++
En français:
C++ pour les programmeurs C
Claude Delannoy est un auteur connu et plutôt apprécié.
Je n'ai lu aucun de ces ouvrages.
fais ce que je dis, pas ce que je fais
non ce livre a l'air tres complet et il est récent! Merci mpergand
Avec le recul, et hors framework spécifique, j'ai presque envie de dire qu'il suffit de passer ton Obective-C en dot-syntax
Bon, ok y'a des subtilités, mais l'essentiel de la compréhension est la même, vu que l'Objective-C et le C++ apporte notamment la notion de POO au C...
- Les classes abstraites, les mots clés virtual & co
- Les Class Templates
- La gestion de la mémoire (new/delete) à faire à la main (pas d'ARC, pas de reference counting, à moins d'utiliser des libs genre Boost, ...)
- Pas la même syntaxe de déclaration des classes
- Pas de @property, notion de private/protected/public bien plus forte du coup sur les variables et méthodes
- Héritage multiple possible (même si c'est le MAL)
- Pas de dynamic runtime (introspection, instanceRespondsToSelector, etc) ou du moins ça ne marche pas pareil
Bref, même si l'Objective-C apporte une surcouche Object / POO au C et que le C++ un peu aussi, dans l'ensemble certes on retrouve dans les 2 cas les concepts de la POO (classes, héritage, instanciation, ...) mais il y a quand même pas mal de différences dans la pratique.
Oui, évidemment, y'a pas mal de subtilités...
Mais de toute manière, j'suis pas encore passé à l'ARC, donc la gestion de mémoire, ça m'va...
Les @property et les private/protected/public sont une manière différentes de gérer, mais bon...
L'héritage multiple, c'est le mal, donc on peut s'en passer, non ?
Les classes abstraites/virtuales, ça par contre, c'est intéressant.
Les classes templates, c'est génial, mais j'en ai toujours chier à les faire.
Quand à la déclaration des classes et la création de méthodes, c'est un truc à prendre...
Mais disons que grosso-modo, beaucoup de ces notions ne sont pas trop compliquées à comprendre... De là à bousculer les habitudes et à penser directement à ce qu'il faut faire en C++, c'est autre chose. Mais sur la courbe d'apprentissage, ça va.
en dehors des différences liées au langage, il y aussi pas mal de techniques comme la gestion de mémoire qui s'abordent un peu différemment, il est utile de jeter un oeil à la librairie Boost... (avec ses smart pointers). Il y a aussi l'utilisation des exceptions qui est traditionnellement plus ancrée dans les usages et à des fins de traitement. Par ailleurs même ce qui ne devrait pas se faire doit être maà®trisé si l'on a besoin de lire un peu de code.
Non, mais surtout, la culture du C++ est totalement différente. C'est vraiment pour les gens qui veulent tout maà®triser.
Dix ans après ne plus y avoir touché, j'ai jeté un oe“il pour me rendre compte qu'ils avaient ajouté des classes de collection à la bibliothèque standard... mais alors, il faut voir la tronche des API.
Rien que le classique
me démontre à quel point ce langage est foireux.
Tu m'étonnes ! C'est moche, j'ai fait beaucoup de C++, j'ai toujours essayé d'éviter la stdlibc++.
La plupart des livres parle beaucoup de la surcharge des opérateurs et des stream (cout << " Hello"), ce qui en fait des mauvais livres à mon avis. Pour moi c'est vraiment le mauvais côté du C++.
Le bon côté c'est tout ce qui se rapporte à la POO :
-l'héritage (spécialisation)
-les mots clés public, private, protected (encapsulation)
-le mot clé virtual (polymorphisme).
-new, delete, constructeur, destructeur (encapsulation)
A laisser tomber dans un premier temps :
-les templates
-l'héritage multiple
-la librairie boost
A laisser tomber définitivement :
-les streams (<<) (le sprintf est plus explicite)
-la surchage des opérateurs +, -, ==, etc (Il vaut mieux créer des méthodes explicites type isEqualToString().
Le problème du C++, c'est qu'il lui manque des classes de collections pratiques (type NSArray, NSDictionary).
Il y a bien la stdlibc++, mais je la trouve inutilement compliquée.