|
Publicité ' | ||||||||||||||||||||||||
|
|
#61 | |
|
Nouveau Membre du Club
![]() Inscription : octobre 2012 Messages : 9 ![]() |
Citation:
Voire Oui, tu as raison, arrêtons... Dans ton exemple, c'est difficile de trouver un intérêt à l'OO dans la mesure où la complexité n'est pas exprimé, On ne sais pas ce que veulent dire Foo et bar . Maintenant, il serait intéressant de discuter du contexte.
|
|
|
|
30
|
|
|
#62 | ||||||||
|
Nouveau Membre du Club
![]() Inscription : octobre 2012 Messages : 9 ![]() |
Citation:
En substance, le contenu de mon post :
Citation:
Pour implémenter un comportement avec un langage OO, on utilise des méthodes qui siègent à l'endroit (la classe) le plus pertinent. Lorsque l'on explique ce que c'est qu'une méthode à quelqu'un, on essaie d'utilise des images en s'appuyant sur quelque chose qu'il connait : ben, une méthode, c'est un peu comme un fonction... Voilà, le vers est dans le fruit, ce qui au départ n'est qu'une approximation pédagogique, se transforme rapidement en "ces idiot d'intégristes de l'OO passent leur temps à inventer des nouveaux termes pour noyer le poisson, c'est de la m... intellectuelle". Simplicité... quand tu nous tiens... Pour reprendre l'exemple du lecteur DVD, il dispose de tout un tas d'autres comportements qui sont non visibles (encapsulés), une capacité à allumer et éteindre le laser de lecture, une capacité à faire tourner un disque, etc... L’intérêt de tout çà, c'est que je n'ai pas besoin de connaitre tous ces comportements internes pour regarder un bon film. Une fonctionnalité, c'est l'idée d'un usage potentiel :
Citation:
Prenons la physique, un exemple approprié. La théorie des cordes est vue par certains comme un moyen d'unifier l'ensemble des forces de la nature, le rêve d'Einstein. Certains physiciens qui n'adhèrent pas à ces idées considèrent les autres comme des charlatans. Il seront peut-être d'accord un jour, il est normal d'avoir des débats. Dans l'exemple que je prenais, le rapport entre enveloppe et lettre est le même rapport qu'entre :
C'est ce qui fait que les choses sont complexes, que notre monde est complexe et que l'on peut les observer sous plusieurs angles et découvrir des choses nouvelles. Dans le cas de la lettre et du distingo lettre/enveloppe, l'un et l'autre peuvent se justifier. Dans la mesure où je n'ai pas justifié mon choix (le distingo en question) je dirais que j'ai tord et que je n'ai pas respecté le principe de simplicité (j'ai introduit un concept inutile car non justifié, j'ai augmenté la complication mais pas la complexité) Ces idées ne sont pas nouvelles et je ne développerai pas plus, on les retrouve dans des choses très différentes comme le cubisme, le bouddhisme, la psychanalyse ou la systémique : la réalité prend plusieurs (poly) formes (morphie). Qu'est-ce qu'une personne pour une banque ?
Tiens un autre exemple, la lumière, onde ou particule ? Certains penchaient pour l'un d'autres pour l'autre pour finalement accepter que c'est les deux. Certains voient le monde qui nous entoure à l'aune de la machine de Von Neumann. D'autres voient le monde à l'aune de la systémique. Qui a tord, qui a raison ? Tout cela est du ressort d'abstractions qui, quelques soient nos efforts restent bien éloignées de la réalité, ma réalité, celle de mon voisin et celle des physiciens. L'important, c'est de donner du sens quelle que soit notre façon de penser et toujours en conformité avec les exigences techniques, fonctionnelles, organisationnelles, qualitatives... En ce qui me concerne, Von Neumann n'est pas le filtre par lequel j'observe le monde qui m'entoure. D'autres observent le monde par le filtre du capitalisme, le bouddhisme,... Qui a tord ? tous. "Un homme sage ne croit que la moitié de ce qu'il lit" on pourrait ajouter : "un homme sage ne croit que le quart de ce qu'il lit en diagonale" "un homme sage ne croit que la moitié de ce qu'il écrit, lorsqu'il lui arrive de se relire" "un homme sage, même plus sage aura du mal à retrouver ce qu'il doit croire dans ce qu'il a écrit" Citation:
Enchanté de l'apprendre, mais on en attendait pas mois de toi. Citation:
Citation:
Citation:
Citation:
|
||||||||
|
|
22
|
|
|
#63 | ||
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 147 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#64 | |
|
Expert Confirmé Sénior
![]() Inscription : décembre 2007 Messages : 2 545 ![]() |
Citation:
(1)L'abstraction. L'abstraction permet de gérer la complication, la complexité, la quantité, la masse, tant à la création qu'à la maintenance. Je crois qu'on est tous d'accord jusque là. C'est pourquoi Steve McConnell considère la routine comme la plus grande invention de la science informatique - juste après l'ordinateur, évidemment. Ce qui nous amène à : (2)L'objet. L'objet est une forme parmi d'autres de routines, fonctions, procédures, paragraphe appelé par GOTO(oui c'est une routine, oui c'est moche)..... L'objet a ceci d'unique qu'il groupe, en un seul espace de codage, la donnée et les routines associées à cette donnée. Quand on appelle une fonction ou une procédure, au contraire, la routine est délocalisée par rapport à la donnée traitée. Ce qui offre de nombreuses possibilités, tel l'héritage. Mais la plupart des autres possibilités soi-disant objet, tel le polymorphisme, sont parfaitement possibles en procédural ou en fonctionnel. Une fonction, dans certains langages, peut être surchargée suivant le type de l'élément passé en paramètre. C'est une forme de polymorphisme. Mais celà pose aussi une limite : toute manipulation d'une donnée doit, dans une conception objet, appartenir à cette donnée. Cette limite est bourrée d'avantages(encapsulation) et d'inconvénients. Surtout, je ferais la différence entre complication et complexité. La complication, c'est quand une opération unitaire est compliquée. La complexité, c'est quand l'enchevêtrement d'opérations(simples ou compliquées) est compliqué. L'exemple que tu nous a donné de gestion du planning est compliqué : on a trois opérations qui se battent en duel, mais elles sont extrêmement compliquées chacune. C'est, à mon sens, le domaine ou l'objet doit briller. Sa manière de gérer l'abstraction permet des architectures qui se mappent bien sur le problème. Par contre, sur des traitements de grande complexité, ou les opérations deviennent innombrables, et surtout peuvent changer de nature fréquemment(un grand classique en bancaire), je reste circonspect sur la pertinence du modèle objet. Et, dans le cas d'une complexité sans complication, je pense même que c'est completement contre-productif. Souviron34 disait il y a quelque temps qu'on ne fait pas quelquechose d'extraordinaire avec des gens ordinaires. Je suis d'accord avec lui. Mais on a bien souvent des tâches ordinaires en grand nombre à mettre en place/maintenir. Or l'objet nécéssite plus d'agileté intellectuelle que le procédural. Il va donc mettre en echec des personnes "moyennes" qui suffiraient en procédural(pour peu qu'elles aient une grande rigueur, et un peu d'intelligence quand même). Chaplin a parlé de "bagage mathématique nécéssaire", qui n'est pas, à mon sens, à la portée de tout le monde.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten : 1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception 2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences 3)le temps de comprendre toutes les exigences, le projet est terminé 4)le temps de terminer le projet, les exigences ont changé Et le serment de non-allégiance : Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée. |
|
|
|
11
|
|
|
#65 | |
|
Membre émérite
![]() Inscription : décembre 2008 Messages : 189 ![]() |
Citation:
1- L'abstraction, à ma connaissance, est ce que l'on a fait de mieux pour traiter de la complexité des systèmes. D'autre part : 2- l'OO est une façon de faire de l'abstraction, qui a ses avantages et ses inconvénients. Chacun fait ses choix selon son environnement, son expérience et ses connaissances et compétences (qui changent avec l'expérience). Il y a une époque où je pensais systématiquement objet pour faire de l'abstraction ; ce n'est plus le cas aujourd'hui. Je ne code objet plus que marginalement, parce que le plus souvent j'ai une meilleure réponse à apporter, qui est souvent en full procédural, mais pas toujours, et ce n'est pas parce que j'ai plus l'habitude du procédural. J'ai du manger autant des deux... Faut dire que j'ai codé mes propres bibliothèques pour faire plein de choses, qu'elles sont maintenues et régulièrement enrichies depuis vingt ans pour les plus anciennes, et que leur organisation permet un très haut niveau d'abstraction, OO ou pas, et qu'au bout d'un moment le paradigme choisi en lui-même (s'il y en a un) n'a que peu d'impact sur le résultat. Faut dire aussi que j'aime bien la programmation fonctionnelle (et même fonctionnelle objet, mais c'est un millième de ce que je code seulement qui est fonctionnel objet), ce qui ouvre d'autres perspectives. Bref, d'accord pour l'abstraction mais associer systématiquement abstraction à OO (au à tout autre paradigme) c'est arbitraire. Je ne doute cependant pas que l'OO soit très adapté aux projets sur lesquels tu travailles, mais c'est un autre sujet. |
|
|
|
41
|
|
|
#66 | |
|
Membre émérite
![]() ![]() Inscription : janvier 2006 Messages : 525 ![]() |
Citation:
Après, il se trouve que l'OO l'utilise. Mais aussi la quasi totalité des langages de développement, assembleur compris.
__________________
"L'incohérence de ceux qui dirigent et l'incompétence de ceux qui critiquent sont un vibrant hommage à ceux qui exécutent." Général George S. PATTON. Messine 1943. |
|
|
|
20
|
|
|
#67 | |
|
Membre éclairé
![]() Didier ChaumondDirecteur de projet Inscription : octobre 2012 Messages : 111 ![]() |
Citation:
Si l'abstraction permet, généralement, de gérer plus efficacement la complexité, elle n'est par contre pas au service d'un projet, au sens où le projet aura besoin de communiquer au sein d'une équipe, des métiers amont et aval. Ils nous est parfois même difficile de revenir sur notre propre code que l'on a écrit il y a quelques semaines, quelques mois, que dire alors des autres participants. On a tous fait l'expérience de découvrir ou avoir a intervenir sur un code existant auquel on a bien du mal a comprendre quelque chose quand son niveau d'abstraction est très élevé. Quand je pense a l'objet, j'aime bien l'analogie avec un système de menus d'une UI. Imaginez un menu avec 10 niveaux hiérarchiques et où toute action dépendrait d'un autre élément à configurer dans un autre menu lui-même au trente sixième niveau ? C'est a peu près l'effort que l'on doit faire quand on intervient sur un code OO, héritages, polymorphies, utilisées a tous les étages, c'est ensuite être contraint d'avoir en tête toutes les classes et les méthodes d'un système complet pour y faire la moindre modification. Ca n'est pas propre a l'OO et on peut le rencontrer en procédural, on a pas attendu l'objet pour faire de l'encapsulation et de la réutilisation, mais c'est vrai que l'objet y pousse plus naturellement. C'est pourquoi, de mon point de vue, l'objet m'a plus apporté en facilitant les compositions que pour ce qui est de l'héritage ou du polymorphisme qu'il faut utiliser avec modération. |
|
|
|
10
|
|
|
#68 | |||||||||
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 701 ![]() |
Je rebondis simplement sur mes exemples qui visiblement n'ont pas été compris ...
Citation:
Cet exemple ci visait à simplement mettre en évidence qu'à un certain niveau d'abstraction qui n'est pas élevé du tout, il n'y a aucune différence entre procédurale et OO. Par ailleurs, il suffit de regarder un code C++ désassemblé, c'est un code en C ... Les méthodes sont devenues des fonctions dont le nom est basé sur les noms du namespace, de la classe et de la méthode. Le polymorphisme se gère directement avec des pointeurs de fonction... Bref ce qui est montré dans mes exemples. L'OO n'offre rien que ne puisse faire le procédurale et ceux même au niveau de la modélisation PIM. Ce serait (un peu) moins vrai pour le fonctionnel ou le logique. Et la complication déprendra surtout de l'expérience du développeur : les pointeurs de fonction pour le développeur Objet et l'héritage pour le développeur procédurale. D'ailleurs si on approfondi l'analyse, nombre de design pattern sont basés sur "les pointeurs de fonction" : Visiteur, Observateur, Stratégie, Commande, Fonction de rappel, etc.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|||||||||
|
|
00
|
|
|
#69 |
|
Membre éclairé
![]() Didier ChaumondDirecteur de projet Inscription : octobre 2012 Messages : 111 ![]() |
Ca en amusera peut-être quelques uns: http://fr.wikipedia.org/wiki/Ooc_%28langage%29 ça n'en fait pas du C++ pour autant mais comme quoi on peut faire "de l'objet" en C
|
|
|
00
|
|
|
#70 | |
|
Nouveau Membre du Club
![]() Inscription : octobre 2012 Messages : 9 ![]() |
Citation:
Il est d'ailleurs amusant de noter que dans certains langages OO, 1+2, c'est de l'objet... '1' est une instance de Integer, '+' est une méthode de Integer, '2' est une instance de Integer passée en paramètre à la méthode '+'. Donc pas de problème : "Console show: 1+2" c'est bien de l'OO. |
|
|
|
01
|
|
|
#71 | |
|
Nouveau Membre du Club
![]() Inscription : octobre 2012 Messages : 9 ![]() |
Citation:
|
|
|
|
00
|
|
|
#72 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2012 Messages : 9 ![]() |
Bon, en ces temps Halloweenesques je vous propose de chasser le troll un instant avec un petit exemple amusant que j'ai emprunté.
Un bazar vend des produits, malheureusement, ces derniers se dégradent en qualité au fur et à mesure que le temps passe. Le système que vous devez développer doit mettre à jour l'ensemble des produits jour après jour (un batch, quoi)
Jusque là, çà va plutôt bien. Voici l'inventaire du bazard (pour chaque produit : nom/péremption/qualité) :
Quelques règles qui s'appliquent :
Alors, à vos claviers, vous pouvez développer un bon vieux batch avec le langage de votre choix. Vous pouvez prendre :
Qu'est-ce que vous en pensez ? |
|
|
02
|
|
|
#73 |
|
Membre émérite
![]() Inscription : décembre 2008 Messages : 189 ![]() |
Vas-y, commence.
|
|
|
10
|
|
|
#74 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 590 ![]() |
Citation:
En termes de nombre de fichiers, de maintenance, et de complexité de compréhension, que ce soit du code ou des répertoires, et de la compil, je penserais l'inverse... Chacun voit midi à sa porte... Mais encore une fois tu présentes une opinion comme une vérité... Quant à tes petits exercices, on n'est ni à ton service, ni là pour prouver que dans un cas ça marche mieux ou pas..
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
|
20
|
|
|
#75 |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 568 ![]() |
Je ne peux faire l'exercice car malheureusement j'ai suffisamment de boulot comme ça en tant que no 2 dans une start-up.
Cependant ce que je peux dire, c'est que là de nouveau, comme lors de l'exemple précédent, je travaillerai complètement différemment selon que j'utilise une source de données ou non. Si j'ai tout en mémoire et que je travaille façon "simulation" soit avec une sorte d'horloge ou scheduler qui déclenche les ajustements, je veux bien faire une belle modélisation OO avec des objets métiers qui utilisent des Strategy pour calculer leur plus ou moins-value. En revanche, si j'ai tout en base de données (genre y'a 200'000 articles) et que j'ai une procédure d'ajustement régulière à coder, Je vais juste charger ces articles dans de simples structures sans intelligence, calculer les ajustements et envoyer des gros batchs. Côté DB ce sera beaucoup plus facile d'organiser tout ça en transactions (au sens ACID) et beaucoup plus efficace que de charger des objets intelligents capables de travailleur sur leurs données de façon autonome puis de les bricoler pour qu'ils participent à la même transaction. C'est encore plus vrai si les stratégies de vieillissement sont nombreuses, configurables et éditables car cela rajoute des dépendances. Je vois pas chaque article devoir aller charger lui même sa stratégie de péremption dans son coin, ou alors il faut lui donner un fournisseur qui s'occupe de toutes les charger et éventuellement d'utiliser un cache. Quoi qu'il en soit c'est vite beaucoup plus compliqué que la solution entre guillements "procédurale" sans forcément faire gagner grand chose. Ok ce n'est pas du full-oo domain model si cher aux auteurs de bouquins, pourtant c'est facile à relire, facile à maintenir et le code lui-même documente de façon évidente le processus. Donc pourquoi ce serait faux? Le truc qui a inspiré mon post, c'est qu'à chaque fois que je vois des exemples de modélisation full-oo sur BDD, c'est toujours des exemples de merde avec 5-6 objets simplistes avec des comportements individuels hard-codés et aucune inter-dépendance. |
|
|
30
|
|
|
#76 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 590 ![]() |
d'ailleurs même en dehors de BD, tout logiciel manipulant des centaines de milliers d'objets a le même problème.
Exemple : (personnel) Un SIG censé afficher les éclairs pour la Météo Nationale.. Ah.. Pas de bol.. C'est pas la Météo Nationale française, mais celle du Canada. Le territoire n'est donc pas 1000*1000 km, mais 5000*5000 km (car ce qui se passe aux US intervient). Une belle journée d'été il y a environ 300 à 500 000 éclairs par heure. Le logiciel est censé afficher ces 500 000 points. Si ces points sont créés via des "objets", qui chacun a sa méthode "trace", suivant l'occupation du CPU je n'ai pas de contrôle sur qui s'affiche quand.. Or l'information temporelle est essentielle. De plus, un élément de l'affichage doit être des couleurs différentes par tranche de 10 minutes.. Il n'est pas très efficace (c'est le moins qu'on puisse dire) de repasser à travers 500 000 objets alors que tout ce qu'on veut changer de seconde en seconde c'est juste la couleur des objets se situant "à la frontière" de ces bins temporels.. (peut-être 0.5% au grand maximum des points). Si ma modélisation est tout OO, je suis forcé de passer à travers tous les objets à chaque "update" visuel.. Au vu du nombre, il me faut une super-machine pour pouvoir le faire en moins d'une seconde (d'autant plus que j'ai plein d'autres choses à faire pendant cette seconde) ![]() Maintenant, du point de vue de la BD : J'ai des BD réparties dans le monde (les divers centres de météo). Un type de donnée manipulé par les utilisateurs est par exemple "la température". Suivant les bases de données, c'est un point (stations au sol), un vecteur 3D (ballon sonde), un plan ou un volume (modèles numériques), une image (satellites IR) . Quelle devrait être une modélisation full-OO simple, permettant d'avoir un dialogue simple avec les BD, une bibliothèque simple pour fabriquer des serveurs, et une structure simple pour y accèder via une bibliothèque servant à construire des logiciels de requêtes et d'affichage ??????? D'autant plus que ce que je dis ici pour la température est vrai pour toutes les autres données, certaines possédant plusieurs composantes, comme le vent (vitesse et direction), etc etc..., n'ayant pas les mêmes types numériques : certaines données sont des entiers, d'autres des réels, d'autres des chaines de caractères, d'autres encore des booléens ou des images (serveurs de photos extérieures).....
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
22
|
|
|
#77 |
|
Membre Expert
![]() Mickael Développeur .NET Inscription : novembre 2009 Messages : 726 ![]() |
Ca me semble être un problème banal pour un jeux vidéo ton histoire d'éclair de météo.
Si l'on suit ton raisonnement, pour des raisons de rapidité les jeux vidéos ne peuvent fonctionner avec de la POO? Faudrait que des gens du monde du jeux video nous éclairent la dessus, mais il me semble bien avoir lu une citation d'un des créateurs de la série des Dooms, que même s'il n'aimait pas ca, il était forcé de reconnaitre son utilité pour ses projets futurs[...] |
|
|
00
|
|
|
#78 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 568 ![]() |
Citation:
Le fait que le dit "objet" soit une classe n'y change pas grand chose, pour prendre ton analogie avec un jeu, il est peu probable que ce soit dans la classe "Epée" qu'on teste l'état du bouton gauche de la souris pour savoir si le joueur attaque, tout autant qu'il est peu probable que celle-ci ait l'intelligence nécessaire pour s'afficher dans le moteur graphique, sans doute non plus qu'elle ne calcule pas non plus elle-même les dégats lors de la collision avec le joueur 2 car à nouveau ceux-ci dépendent d'une foule de facteurs externes, le niveau du joueur, son équipement etc... Elle aura par contre certainement des méthodes permettant de connaître ses dégats de base, son niveau d'usure actuel, sa probabilité de coût critique etc... dont le système pourra se servir. C'est dans ce sens là qu'il faut le prendre, et non dans le sens langage objet ou pas. |
|
|
|
20
|
|
|
#79 | |
|
Membre éclairé
![]() Didier ChaumondDirecteur de projet Inscription : octobre 2012 Messages : 111 ![]() |
Citation:
Bref autant de questions qui impactent l'architecture pour tenir compte des aspects humains et business du "problème". Quand j'ai débuté en Java, j'avais lu un bouquin de Bruce Eckel, "Thinking Java" et un élément m'avait particulièrement parlé, c'était ce qu'il appelle le "Vector of Change", à savoir essayer d'identifier les risques de changement dans mon projet et retravailler mon architecture pour en tenir compte. C'est ce qui va permettre ensuite, quand on doit retravailler sur le projet, de réduire la "complexité relative" en ayant adapté l'architecture a la nature des interventions qui vont suivre. C'est le défaut que peut avoir une approche OO par trop "puriste" qui va traiter très efficacement le problème a résoudre mais contraindra a se remettre en tête l'intégralité de l'implémentation pour la moindre modification. Ce qui, comme le suggère __skip, plus haut, va se traduire par une augmentation du coût au final dans un cycle de vie, "ordinaire" de tout projet. |
|
|
|
00
|
|
|
#80 | |||||
|
Expert Confirmé Sénior
![]() Inscription : décembre 2007 Messages : 2 545 ![]() |
Citation:
Mon traitement contient donc un bloc de 3 JCL (1)un JCL de déchargement(le standard, ça prend 5 minutes) (2)un JCL avec juste un programme dedans(pour l'instant, on a pas besoin de tri. si on a besoin, on l'ajoute en début de ce JCL, pour ne pas polluer) (3)un JCL de rechargement(le standard, ça prend 5 minutes) le programme, en gros, lit un fichier, le traite, et l'écrit. Je ne crois pas que la partie lecture-ecriture pose le moindre problème, c'est hyper standard. Ma définition de fichier est calée sur la définition de la base. Elle ressemblera à Code :
Mon paragraphe principal ressemblera à : Code :
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten : 1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception 2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences 3)le temps de comprendre toutes les exigences, le projet est terminé 4)le temps de terminer le projet, les exigences ont changé Et le serment de non-allégiance : Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée. |
|||||
|
|
20
|
Copyright © 2000-2013 - www.developpez.com