En news:48ba96bf$0$961$, Wykaaa va escriure:Donc, pour résumer, l'approche objet s'appuie sur 4 concepts majeurs
de base :
- le concept d'abstraction (se matérialise par la notion de classe
dans un langage de programmation objet)
- le concept d'encapsulation qui permet à un objet (une classe donc)
de ne montrer à l'extérieur que ce qui est nécessaire à son
utilisation.
Ce concept est matérialisé dans les LOO (langages orientés objet) par
les directives de contrôle d'accès (private, protected, public)
- le concept de modularité (au sens objet) qui s'ppuie sur 2
principes :
- La forte cohésion : un objet ne traite que d'une seule
abstraction et il la traite entièrement
- Le faible couplage : minimisation des dépendances entre classes
et encapsulation
ATTENTION : cette notion de modularité est piégeuse car dans les
langages on a aussi la notion de package (regroupement de plusieurs
classes). Le faible couplage est souvent mis en oeuvre, dans les
grosses applications, au niveau des packages et non au niveau des
classes car la granularité est trop fine.
- Enfin le concept de hiérarchie. Il est mis en oeuvre, dans les LOO,
à travers l'héritage mais aussi à travers la composition/agrégation
d'objets.
Si on revient à C, le concept d'encapsulation est me semble-t-il traité par
la séparation .h/.c et des règles de gestion, et le concept de modularité
par d'autres règles de gestion, mais le langage n'est aucunement un
obstacle.
Le concept d'héritage est (toujours « me semble-t-il ») spécifiquement mis
en ouvre par les règles relatives aux pointeurs de structure et d'union.
Le concept d'abstraction tel que décrit ci-dessus n'a aucun sens pour moi.
Se reférerait-il à l'utilisation de pointeurs ?
Par exemple, il doit être plus difficile d'utiliser Fortran que C, justement
pour cette raison ?
Si j'ai bien compris, on peut faire ce genre d'approche orientée objets avec
le langage C plus quelques règles (communément observées) sur ce qui
s'appelle traditionellement en C la compilation séparée, c'est-à-dire le
découpage en module ?
Ce qui me surprend le plus à relire cet article, c'est que je n'ai même pas
mentionné les pointeurs de fonction... Comme à ma connaissance c'est un
ingrédient nécessaire à une API pour pouvoir y implanter des langages «
orientés objet », j'ai comme l'idée qu'il y a des choses qui ne sont pas
correctes ci-dessus. Donc, où est l'erreur ?
En news:48ba96bf$0$961$ba4acef3@news.orange.fr, Wykaaa va escriure:
Donc, pour résumer, l'approche objet s'appuie sur 4 concepts majeurs
de base :
- le concept d'abstraction (se matérialise par la notion de classe
dans un langage de programmation objet)
- le concept d'encapsulation qui permet à un objet (une classe donc)
de ne montrer à l'extérieur que ce qui est nécessaire à son
utilisation.
Ce concept est matérialisé dans les LOO (langages orientés objet) par
les directives de contrôle d'accès (private, protected, public)
- le concept de modularité (au sens objet) qui s'ppuie sur 2
principes :
- La forte cohésion : un objet ne traite que d'une seule
abstraction et il la traite entièrement
- Le faible couplage : minimisation des dépendances entre classes
et encapsulation
ATTENTION : cette notion de modularité est piégeuse car dans les
langages on a aussi la notion de package (regroupement de plusieurs
classes). Le faible couplage est souvent mis en oeuvre, dans les
grosses applications, au niveau des packages et non au niveau des
classes car la granularité est trop fine.
- Enfin le concept de hiérarchie. Il est mis en oeuvre, dans les LOO,
à travers l'héritage mais aussi à travers la composition/agrégation
d'objets.
Si on revient à C, le concept d'encapsulation est me semble-t-il traité par
la séparation .h/.c et des règles de gestion, et le concept de modularité
par d'autres règles de gestion, mais le langage n'est aucunement un
obstacle.
Le concept d'héritage est (toujours « me semble-t-il ») spécifiquement mis
en ouvre par les règles relatives aux pointeurs de structure et d'union.
Le concept d'abstraction tel que décrit ci-dessus n'a aucun sens pour moi.
Se reférerait-il à l'utilisation de pointeurs ?
Par exemple, il doit être plus difficile d'utiliser Fortran que C, justement
pour cette raison ?
Si j'ai bien compris, on peut faire ce genre d'approche orientée objets avec
le langage C plus quelques règles (communément observées) sur ce qui
s'appelle traditionellement en C la compilation séparée, c'est-à-dire le
découpage en module ?
Ce qui me surprend le plus à relire cet article, c'est que je n'ai même pas
mentionné les pointeurs de fonction... Comme à ma connaissance c'est un
ingrédient nécessaire à une API pour pouvoir y implanter des langages «
orientés objet », j'ai comme l'idée qu'il y a des choses qui ne sont pas
correctes ci-dessus. Donc, où est l'erreur ?
En news:48ba96bf$0$961$, Wykaaa va escriure:Donc, pour résumer, l'approche objet s'appuie sur 4 concepts majeurs
de base :
- le concept d'abstraction (se matérialise par la notion de classe
dans un langage de programmation objet)
- le concept d'encapsulation qui permet à un objet (une classe donc)
de ne montrer à l'extérieur que ce qui est nécessaire à son
utilisation.
Ce concept est matérialisé dans les LOO (langages orientés objet) par
les directives de contrôle d'accès (private, protected, public)
- le concept de modularité (au sens objet) qui s'ppuie sur 2
principes :
- La forte cohésion : un objet ne traite que d'une seule
abstraction et il la traite entièrement
- Le faible couplage : minimisation des dépendances entre classes
et encapsulation
ATTENTION : cette notion de modularité est piégeuse car dans les
langages on a aussi la notion de package (regroupement de plusieurs
classes). Le faible couplage est souvent mis en oeuvre, dans les
grosses applications, au niveau des packages et non au niveau des
classes car la granularité est trop fine.
- Enfin le concept de hiérarchie. Il est mis en oeuvre, dans les LOO,
à travers l'héritage mais aussi à travers la composition/agrégation
d'objets.
Si on revient à C, le concept d'encapsulation est me semble-t-il traité par
la séparation .h/.c et des règles de gestion, et le concept de modularité
par d'autres règles de gestion, mais le langage n'est aucunement un
obstacle.
Le concept d'héritage est (toujours « me semble-t-il ») spécifiquement mis
en ouvre par les règles relatives aux pointeurs de structure et d'union.
Le concept d'abstraction tel que décrit ci-dessus n'a aucun sens pour moi.
Se reférerait-il à l'utilisation de pointeurs ?
Par exemple, il doit être plus difficile d'utiliser Fortran que C, justement
pour cette raison ?
Si j'ai bien compris, on peut faire ce genre d'approche orientée objets avec
le langage C plus quelques règles (communément observées) sur ce qui
s'appelle traditionellement en C la compilation séparée, c'est-à-dire le
découpage en module ?
Ce qui me surprend le plus à relire cet article, c'est que je n'ai même pas
mentionné les pointeurs de fonction... Comme à ma connaissance c'est un
ingrédient nécessaire à une API pour pouvoir y implanter des langages «
orientés objet », j'ai comme l'idée qu'il y a des choses qui ne sont pas
correctes ci-dessus. Donc, où est l'erreur ?
Bref pour toi apprendre est un combat, une lutte. Pour moi, apprendre
c'est comme quand je vais au cinéma ou quand on me raconte une histoire
ou que je fais un voyage.
Bref pour toi apprendre est un combat, une lutte. Pour moi, apprendre
c'est comme quand je vais au cinéma ou quand on me raconte une histoire
ou que je fais un voyage.
Bref pour toi apprendre est un combat, une lutte. Pour moi, apprendre
c'est comme quand je vais au cinéma ou quand on me raconte une histoire
ou que je fais un voyage.
J'ai retrouve la ref papier que je cherchais, c'est
http://lucacardelli.name/TheoryOfObjects.html
dont tu peux avoir au moins la table des matieres sur le web.
La partie sigma-calcul et la suite sont une bonne theorisation de
l'oriente-objet, entierement basee sur la notion d'objet et de methodes,
avec un eventuel typage, et l'introduction de concepts divers et varies
`au-dessus' des concepts primitifs, dont ne fait pas partie la notion
d'heritage... La partie I 4, avec les choix de prototype-based, et
tout ce qui s'ensuit, correspond plus ou moins a mon discours.
Pas mal de tout ceci de memoire: c'est un bouquin que j'ai lu il y a
deja quelques annees, et que je n'ai evidemment plus sous la main!
J'ai retrouve la ref papier que je cherchais, c'est
http://lucacardelli.name/TheoryOfObjects.html
dont tu peux avoir au moins la table des matieres sur le web.
La partie sigma-calcul et la suite sont une bonne theorisation de
l'oriente-objet, entierement basee sur la notion d'objet et de methodes,
avec un eventuel typage, et l'introduction de concepts divers et varies
`au-dessus' des concepts primitifs, dont ne fait pas partie la notion
d'heritage... La partie I 4, avec les choix de prototype-based, et
tout ce qui s'ensuit, correspond plus ou moins a mon discours.
Pas mal de tout ceci de memoire: c'est un bouquin que j'ai lu il y a
deja quelques annees, et que je n'ai evidemment plus sous la main!
J'ai retrouve la ref papier que je cherchais, c'est
http://lucacardelli.name/TheoryOfObjects.html
dont tu peux avoir au moins la table des matieres sur le web.
La partie sigma-calcul et la suite sont une bonne theorisation de
l'oriente-objet, entierement basee sur la notion d'objet et de methodes,
avec un eventuel typage, et l'introduction de concepts divers et varies
`au-dessus' des concepts primitifs, dont ne fait pas partie la notion
d'heritage... La partie I 4, avec les choix de prototype-based, et
tout ce qui s'ensuit, correspond plus ou moins a mon discours.
Pas mal de tout ceci de memoire: c'est un bouquin que j'ai lu il y a
deja quelques annees, et que je n'ai evidemment plus sous la main!
Tiens, en tapant "Conception et programmation orientée objet" sur
google, je tombe sur ce cours : http://rainet.enic.fr/unit/A43/index.htm
Ça a l'air vachement bien. :-)
Tiens, en tapant "Conception et programmation orientée objet" sur
google, je tombe sur ce cours : http://rainet.enic.fr/unit/A43/index.htm
Ça a l'air vachement bien. :-)
Tiens, en tapant "Conception et programmation orientée objet" sur
google, je tombe sur ce cours : http://rainet.enic.fr/unit/A43/index.htm
Ça a l'air vachement bien. :-)
langages OO à la "crise du logiciel" (qui proviendrait de sa
complexification croissante) et justement dans la 4ème page du menu
"crise du logiciel", il cite des projets d'ampleurs croissantes (j'ai
pas compris ses unités hommes/ mois) :
langages OO à la "crise du logiciel" (qui proviendrait de sa
complexification croissante) et justement dans la 4ème page du menu
"crise du logiciel", il cite des projets d'ampleurs croissantes (j'ai
pas compris ses unités hommes/ mois) :
langages OO à la "crise du logiciel" (qui proviendrait de sa
complexification croissante) et justement dans la 4ème page du menu
"crise du logiciel", il cite des projets d'ampleurs croissantes (j'ai
pas compris ses unités hommes/ mois) :
Deja, vu que tu ecris hommes / mois, tu dois etre fache avec la physique.
C'est evidemment homme * mois qu'il faut lire, et c'est une unite de
mesure de travail
Deja, vu que tu ecris hommes / mois, tu dois etre fache avec la physique.
C'est evidemment homme * mois qu'il faut lire, et c'est une unite de
mesure de travail
Deja, vu que tu ecris hommes / mois, tu dois etre fache avec la physique.
C'est evidemment homme * mois qu'il faut lire, et c'est une unite de
mesure de travail
Francois a écrit :
> Tiens, en tapant "Conception et programmation orientée objet" sur google,
> je tombe sur ce cours : http://rainet.enic.fr/unit/A43/index.htm
> Ça a l'air vachement bien. :-)
Je trouve ce lien très intéressant et l'auteur fait un bel effort de
vulgarisation, dommage que tout soit dans des frames.
Alors, dans sa séquence 1, l'auteur attribue le développement des langages
OO à la "crise du logiciel" (qui proviendrait de sa complexification
croissante) et justement dans la 4ème page du menu "crise du logiciel", il
cite des projets d'ampleurs croissantes (j'ai pas compris ses unités
hommes/ mois) :
Compilateur (C, Pascal...) -> 120 HM
Compilateur ADA -> 1800 HM
Logiciel Navette -> 12000 HM
Système d'exploitation -> 60000 HM
Bon, justement, un des logiciels les plus complexes est un OS.
Or, des OS comme Linux ou Windows pour x86 sont en général écrit
majoritairement en C avec de l'assembleur dans de petites proportions.
Donc, ma question est : pourquoi ne réécrit-on from scratch pas les OS dans
un langage objet genre C++ ? Trop de travail ? pas utile ?
Autre question dans le même registre : comment se fait-il que les
implémentations de langage objets comme Python et Ruby soient écrits en C
et non pas en C++ ?
Et les jvm, elles sont écrites en C ou en C++ ?
Un compilateur C++ est écrit en quoi ?
Sinon, il me semble que le compilateur DMD est écrit en C.
Francois a écrit :
> Tiens, en tapant "Conception et programmation orientée objet" sur google,
> je tombe sur ce cours : http://rainet.enic.fr/unit/A43/index.htm
> Ça a l'air vachement bien. :-)
Je trouve ce lien très intéressant et l'auteur fait un bel effort de
vulgarisation, dommage que tout soit dans des frames.
Alors, dans sa séquence 1, l'auteur attribue le développement des langages
OO à la "crise du logiciel" (qui proviendrait de sa complexification
croissante) et justement dans la 4ème page du menu "crise du logiciel", il
cite des projets d'ampleurs croissantes (j'ai pas compris ses unités
hommes/ mois) :
Compilateur (C, Pascal...) -> 120 HM
Compilateur ADA -> 1800 HM
Logiciel Navette -> 12000 HM
Système d'exploitation -> 60000 HM
Bon, justement, un des logiciels les plus complexes est un OS.
Or, des OS comme Linux ou Windows pour x86 sont en général écrit
majoritairement en C avec de l'assembleur dans de petites proportions.
Donc, ma question est : pourquoi ne réécrit-on from scratch pas les OS dans
un langage objet genre C++ ? Trop de travail ? pas utile ?
Autre question dans le même registre : comment se fait-il que les
implémentations de langage objets comme Python et Ruby soient écrits en C
et non pas en C++ ?
Et les jvm, elles sont écrites en C ou en C++ ?
Un compilateur C++ est écrit en quoi ?
Sinon, il me semble que le compilateur DMD est écrit en C.
Francois a écrit :
> Tiens, en tapant "Conception et programmation orientée objet" sur google,
> je tombe sur ce cours : http://rainet.enic.fr/unit/A43/index.htm
> Ça a l'air vachement bien. :-)
Je trouve ce lien très intéressant et l'auteur fait un bel effort de
vulgarisation, dommage que tout soit dans des frames.
Alors, dans sa séquence 1, l'auteur attribue le développement des langages
OO à la "crise du logiciel" (qui proviendrait de sa complexification
croissante) et justement dans la 4ème page du menu "crise du logiciel", il
cite des projets d'ampleurs croissantes (j'ai pas compris ses unités
hommes/ mois) :
Compilateur (C, Pascal...) -> 120 HM
Compilateur ADA -> 1800 HM
Logiciel Navette -> 12000 HM
Système d'exploitation -> 60000 HM
Bon, justement, un des logiciels les plus complexes est un OS.
Or, des OS comme Linux ou Windows pour x86 sont en général écrit
majoritairement en C avec de l'assembleur dans de petites proportions.
Donc, ma question est : pourquoi ne réécrit-on from scratch pas les OS dans
un langage objet genre C++ ? Trop de travail ? pas utile ?
Autre question dans le même registre : comment se fait-il que les
implémentations de langage objets comme Python et Ruby soient écrits en C
et non pas en C++ ?
Et les jvm, elles sont écrites en C ou en C++ ?
Un compilateur C++ est écrit en quoi ?
Sinon, il me semble que le compilateur DMD est écrit en C.
In article <48bbed5f$0$15612$,
candide wrote:langages OO à la "crise du logiciel" (qui proviendrait de sa
complexification croissante) et justement dans la 4ème page du menu
"crise du logiciel", il cite des projets d'ampleurs croissantes (j'ai
pas compris ses unités hommes/ mois) :
Deja, vu que tu ecris hommes / mois, tu dois etre fache avec la physique.
C'est evidemment homme * mois qu'il faut lire, et c'est une unite de
mesure de travail violemment decriee en informatique (confere le tres
fameux _le mythe du mois-homme_), puisqu'elle revient a supposer qu'il
suffit de mettre deux fois plus de programmeurs sur un projet pour le
terminer en deux fois moins de temps...
In article <48bbed5f$0$15612$426a74cc@news.free.fr>,
candide <candide@free.invalid> wrote:
langages OO à la "crise du logiciel" (qui proviendrait de sa
complexification croissante) et justement dans la 4ème page du menu
"crise du logiciel", il cite des projets d'ampleurs croissantes (j'ai
pas compris ses unités hommes/ mois) :
Deja, vu que tu ecris hommes / mois, tu dois etre fache avec la physique.
C'est evidemment homme * mois qu'il faut lire, et c'est une unite de
mesure de travail violemment decriee en informatique (confere le tres
fameux _le mythe du mois-homme_), puisqu'elle revient a supposer qu'il
suffit de mettre deux fois plus de programmeurs sur un projet pour le
terminer en deux fois moins de temps...
In article <48bbed5f$0$15612$,
candide wrote:langages OO à la "crise du logiciel" (qui proviendrait de sa
complexification croissante) et justement dans la 4ème page du menu
"crise du logiciel", il cite des projets d'ampleurs croissantes (j'ai
pas compris ses unités hommes/ mois) :
Deja, vu que tu ecris hommes / mois, tu dois etre fache avec la physique.
C'est evidemment homme * mois qu'il faut lire, et c'est une unite de
mesure de travail violemment decriee en informatique (confere le tres
fameux _le mythe du mois-homme_), puisqu'elle revient a supposer qu'il
suffit de mettre deux fois plus de programmeurs sur un projet pour le
terminer en deux fois moins de temps...
Oh là. Tu y vas fort quand même.
Si on prend le modèle COCOMO d'estimation des HM en fonction du nombre
de lignes de code estimées et des différents facteurs de coût, on voit
que les formules ne sont pas linéaires, justement parce que, par
exemple, 6 * 20 HM ne sont pas équivalents à 12 * 10 HM ce que montre,
justement, Frederick Brooks dans son livre "The mythical Man-Month".
Oh là. Tu y vas fort quand même.
Si on prend le modèle COCOMO d'estimation des HM en fonction du nombre
de lignes de code estimées et des différents facteurs de coût, on voit
que les formules ne sont pas linéaires, justement parce que, par
exemple, 6 * 20 HM ne sont pas équivalents à 12 * 10 HM ce que montre,
justement, Frederick Brooks dans son livre "The mythical Man-Month".
Oh là. Tu y vas fort quand même.
Si on prend le modèle COCOMO d'estimation des HM en fonction du nombre
de lignes de code estimées et des différents facteurs de coût, on voit
que les formules ne sont pas linéaires, justement parce que, par
exemple, 6 * 20 HM ne sont pas équivalents à 12 * 10 HM ce que montre,
justement, Frederick Brooks dans son livre "The mythical Man-Month".