« Programmation objet et géométrie » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 4 : Ligne 4 :


==SmallTalk et DrGeoII==
==SmallTalk et DrGeoII==

Le logiciel [[w:DrGeo|DrGeo]], comme tout logiciel de géométrie dynamique, est lui-même programmé objet (en langage c++) mais sa console de script utilise [[w:Scheme|Scheme]], une variante de [[w:LISP|LISP]], qui n'est pas un langage objet: L'utilisateur de DrGeo peut faire de la programmation fonctionnelle avec DrGeo, mais pas de la programmation objet. Il en est tout autrement de son successeur [[w:DrGeoII|DrGeoII]], qui est écrit en [[w:Smalltalk|Smalltalk]], et dont la console est elle aussi une console Smalltalk. Ce qui donne à DrGeoII un intérêt double:

# historique parce que Smalltalk est le premier langage objet (ancêtre en autres, de [[w:Java (langage)|Java]], de [[w:Python (langage)|Python]] et de [[w:Ruby|Ruby]], ce dernier étant très proche de Smalltalk).
# technique de par les capacités d'introspection de DrGeoII: Il est possible de consulter depuis DrGeoII, le code source de DrGeoII, et même de modifier celui-ci!


* [[/Programmation avec DrGeoII|Programmation avec DrGeoII]]
* [[/Programmation avec DrGeoII|Programmation avec DrGeoII]]
Ligne 12 : Ligne 17 :


[[Fichier:Point3D.png|thumb|200px]]
[[Fichier:Point3D.png|thumb|200px]]

Le module [[w:CaRScript|CaRSCript]] de [[w:CaRMetal|CaRMetal]] permet assez facilement de créer des petits programmes en [[w:JavaScript|JavaScript]] et de les faire interagir avec la figure géométrique. Et comme JavaScript est presque un langage objet, on peut faire de la programmation objet avec CaRMetal.


* [[/CaRScripts et nombres complexes|CaRScripts et nombres complexes]]
* [[/CaRScripts et nombres complexes|CaRScripts et nombres complexes]]
Ligne 45 : Ligne 52 :
[[Fichier:SierpinskiBlender1.png|thumb|200px]]
[[Fichier:SierpinskiBlender1.png|thumb|200px]]


[[w:Python (langage)|Python]] permet de faire de la géométrie avec le module ''turtle'', qui en fait partie depuis la version 2.6. Ce module utilise un [[w:Repère de Frenet|repère mobile]] et n'est pas particulièrement adapté à la géométrie repérée. Mais il est basé sur ''canvas'', qui permet de faire du graphisme (donc de la géométrie repérée) et même de l'exporter au format [[w:Encapsulated Postscript|eps]].
[[w:Python (langage)|Python]] permet de faire de la géométrie avec le module ''turtle'', qui en fait partie depuis la version 2.6. Ce module utilise un [[w:Repère de Frenet|repère mobile]] et n'est pas particulièrement adapté à la géométrie repérée. Mais il est basé sur ''canvas'', qui permet de faire du graphisme (donc de la géométrie repérée) et même de l'exporter au format [[w:Encapsulated PostScript|eps]].


Le logiciel [[w:Kig|Kig]] comprend le langage ''Python'' et permet donc de faire de la programmation objet. Mais plus surprenant, les logiciels [[w:Inkscape|Inkscape]], [[w:Gimp|Gimp]] et [[w:Blender|Blender]] possèdent eux aussi une console Python, et comme ce sont des logiciels de graphisme, ils permettent eux aussi de faire de la géométrie sous Python.
Le logiciel [[w:Kig|Kig]] comprend le langage ''Python'' et permet donc de faire de la programmation objet. Mais plus surprenant, les logiciels [[w:Inkscape|Inkscape]], [[w:Gimp|Gimp]] et [[w:Blender|Blender]] possèdent eux aussi une console Python, et comme ce sont des logiciels de graphisme, ils permettent eux aussi de faire de la géométrie sous Python.


* [[/Objets Python sous Blender|Objets Python sous Blender]]
* [[/Objets Python sous Blender|Objets Python sous Blender]]

JavaScript effectue un retour dans le chapitre sur la graphisme sous Gimp, en effet par souci de comparaison on survole l'utilisation d'[[w:ImageJ|ImageJ]] qui, lui, utilise JavaScript comme langage de script.

* [[/Objets en Python sous Gimp|Objets en Python sous Gimp]]
* [[/Objets en Python sous Gimp|Objets en Python sous Gimp]]



Version du 11 janvier 2012 à 08:37

La programmation objet est parfois considérée comme déroutante pour ceux qui la découvrent, particulièrement ceux qui ont déjà une expérience de programmation au sein d'un autre paradigme (programmation impérative par exemple). Aussi la possibilité qu'offrent certains outils, de définir et gérer des objets graphiques, semble-t-elle prometteuse en termes de pédagogie, puisqu'une fois les objets créés, on peut les voir, et souvent aussi les manipuler.

Ce livre est une collection d'exemples, illustrant le mode de fonctionnement des objets, dans divers univers graphiques. N'y seront évoqués que des logiciels libres.

SmallTalk et DrGeoII

Le logiciel DrGeo, comme tout logiciel de géométrie dynamique, est lui-même programmé objet (en langage c++) mais sa console de script utilise Scheme, une variante de LISP, qui n'est pas un langage objet: L'utilisateur de DrGeo peut faire de la programmation fonctionnelle avec DrGeo, mais pas de la programmation objet. Il en est tout autrement de son successeur DrGeoII, qui est écrit en Smalltalk, et dont la console est elle aussi une console Smalltalk. Ce qui donne à DrGeoII un intérêt double:

  1. historique parce que Smalltalk est le premier langage objet (ancêtre en autres, de Java, de Python et de Ruby, ce dernier étant très proche de Smalltalk).
  2. technique de par les capacités d'introspection de DrGeoII: Il est possible de consulter depuis DrGeoII, le code source de DrGeoII, et même de modifier celui-ci!

CaRScripts et objets

Le module CaRSCript de CaRMetal permet assez facilement de créer des petits programmes en JavaScript et de les faire interagir avec la figure géométrique. Et comme JavaScript est presque un langage objet, on peut faire de la programmation objet avec CaRMetal.

Géométrie avec html5

La balise canvas de html5 permet de faire du dessin vectoriel, donc de la géométrie. Comme avec les CaRScripts (ci-dessus), la fabrication des figures se fait par JavaScript. Et la programmation objet apparaît d'emblée, avec le DOM. L'objet de référence s'appelle document et c'est ... le document lui-même, c'est-à-dire la page html. Ainsi, on crée dans le corps du fichier html une zone de dessin avec

<canvas id="cadre" width="320" height="240">
Si vous arrivez à lire ce texte, changez de navigateur!
</canvas>

Alors le canevas porte un identifiant (cadre) ce qui permet à JavaScript de le retrouver, en demandant au document de lui donner un objet ayant comme identifiant cadre:

var canvas = document.getElementById('cadre');
var pinceau = canvas.getContext('2d');

À partir de là, l'objet pinceau possède les méthodes graphiques de tracé de lignes droites, arcs de cercles, courbes de Bézier et rectangles qui lui permettent de faire du graphisme vectoriel dans le document html.

Objets en Python

Python permet de faire de la géométrie avec le module turtle, qui en fait partie depuis la version 2.6. Ce module utilise un repère mobile et n'est pas particulièrement adapté à la géométrie repérée. Mais il est basé sur canvas, qui permet de faire du graphisme (donc de la géométrie repérée) et même de l'exporter au format eps.

Le logiciel Kig comprend le langage Python et permet donc de faire de la programmation objet. Mais plus surprenant, les logiciels Inkscape, Gimp et Blender possèdent eux aussi une console Python, et comme ce sont des logiciels de graphisme, ils permettent eux aussi de faire de la géométrie sous Python.

JavaScript effectue un retour dans le chapitre sur la graphisme sous Gimp, en effet par souci de comparaison on survole l'utilisation d'ImageJ qui, lui, utilise JavaScript comme langage de script.