J' ai lu le premier chapitre du cours de Mateo : et je crois avoir remarqué une grossiére erreur :
Ce que Mateo presente avec les espace, c' est le concept des namespaces. Mais ce n' est absomument pas parce que vous utilisez les namespaces que vous faite de la POO. Comme il le presente, c' est plutôt de la programation procedurale.
qu'est ce que tu prendrais pour expliquer les classes ?
perso les "namespace" ne sont que des espaes plus grands pouvant contenir tout et n'importe quoi (comme d'autres espaces)
La confusion est possible à ce stade je l'admets, mais le principe était d'introduire à l'idée que l'on regroupe les fonctions par thème. Cela sera plus détaillé dans les prochains chapitres ne t'en fais pas.
"Par thème"... Je trouve la formulation complètement nulle. En POO, ya des objets. Un objet, c'est pas un ensemble de fonctions du même thème, ça n'a même rien à voir. Dans une classe "microonde", tu peux avoir des méthodes pour faire tourner le plateau et pour programmer la durée de la cuisson, ça n'a rien à voir. Pourtant c'est dans le même objet.
Oui, mais il peut y avoir plusieurs objets micro-ondes, avec toute leurs fonctions, alors que les namespaces n' existe qu' en une seule instance. Une fonction agit sur les paramétre, alors qu' une methode agit aussi sur son objet.
Oui, mais il peut y avoir plusieurs objets micro-ondes, avec toute leurs fonctions, alors que les namespaces n' existe qu' en une seule instance. Une fonction agit sur les paramétre, alors qu' une methode agit aussi sur son objet.
Mais tous les micro-ondes de l'univers partagent en commun le fait d'être des micro-ondes. En cela le concept de thème introduit par m@teo21 me semble parfaitement approprié. Le namespace micro-ondes regroupe les types, valeurs, règles, classes, fonctions qui touchent de près où de loin au concept de four micro-ondes. En quelque sorte il définit le thème du four micro-ondes et tout ce qui s'y rapporte.
D'ailleurs le terme même namespace, suggère cette approche. En français namespace se traduit littéralement par espace de nom, le concept implémenté est typiquement celui d'espace de theme. Toutes les informations relatives à un même thème se regroupent dans le même espace.
Par analogie, dans le domaine linguistique, on parle d'anglais littéraire, d'anglo-américain, d'anglais techniques (ils y en a une multitude). L'anglais en tant que langue est le C++, ses différentes implémentations: anglais médical, anglais littéraire, anglais informatiques, anglais financier, anglo-américain, australien... sont des namespace.
Tout ces anglais utilisent le même langage de base (l'anglais), mais ils implémentent des concepts différents, utilisent un vocabulaire différent, des tournures de phrases différentes. La signification d'une phrase en anglais technique dépend fortement du domaine technique dans laquelle elle est produite.
Un avocat et un médecin qui discutent en anglais en utilisant leur jargon spécifique vont se comprendre s'ils replacent les concepts qu'ils emploient dans leurs domaines respectifs.
Par exemple, le médecin dira "en médecine ...", l'avocat dira "en droit ...". Il y a ici deux namespace, le namespace médecine et le namespace droit.
l'exemple de l'anglais dérivé est a mon sens un mauvais exemple :
pour reprendre l'exemple de remram44, je verrai ton concept comme ça :
namespace Langage {
class Anglais { // ... };
class AnglaisMedical : Anglais { // ... }; };
Non, ceci est faux, et ne reflète absolument pas ce que je voulais dire. Relisez mon post précédent, mon analogie avec l'anglais se situe au niveau supérieur. L'anglais dans mon analogie est le langage de programmation lui même, pas un objet du langage. Dans l'optique de mon explication, on programme en anglais, pas en C++.
Ce n' est pas ce que je veux dire :
Imaginons que je veuille me cuire un steak au micro-onde.
Si j' ai bien compris les differents concepts, en programation procedurale, je ferait comme ça :
class MicroOnde{ void CuireAliment(Aliment& aliment); //... };
class Steak : public Aliment{ //... };
int main(){
Steak steak;
MicroOnde microonde;
microonde.CuireAliment(steak); }
Et puis, pour int21h, je ne crois pas que ça soit comparable :
les languages naturels sont constitué de mots et de phrases, alors que les language de programmation son constituée de fonctions et de variables
oui up ?
quel est l'intéret de poster pour dire up ?
Par exemple je peux dire que moi je vois pas ça comme ça, car je ferais plutot une class template pour pouvoir cuire autre chose que des steack achés, puis aussi que je passerait l'aliment par le constructeur (genre je le met dedans) puis je déclencherai la cuisson par exemple.
bref ...
POO - Namespace
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
If you'd like to join us, read "How do we work at OpenClassrooms"! :)
If you'd like to join us, read "How do we work at OpenClassrooms"! :)