O p i k a n o b a . o r g |
||
ButCette étape permet d'écrire l'application graphique en Jython et non plus en Java. Il s'agit ici de modifier la classe FindGui sans pour autant changer tous les packages. Le but est ainsi de démontrer qu'il est possible de créér une classe Python dérivant de classe(s) Java, soit par extension, soit par implémentation. Cette classe Python utilise alors des classes Java.
Migration vers JythonLa syntaxe Python étant plus simple et non typée, le code s'en trouve allégé (un des nombreux avantages du langage Python). Les principales différences sont évoquées ci dessous. Le déclaration de la fenêtre principale devient : class FindGui(JFrame, ActionListener): à la place de : public class FindGui extends JFrame implements ActionListener La déclaration du constructeur (nommé __init__) def __init__(self,title): à la place de : public FindGui(String title) { A chaque déclaration d'une méthode Python, il faut passer comme premier argument l'objet lui même, celui ci est représenté par "self" (équivalent au "this" Java). Pour appeler le constructeur de la super classe, il faut explicitement le nommer comme n'importe quel autre appel : JFrame.__init__(self,title, visible=1) à la place de : super(title); En python, et à fortiori en Jython, les variables membres n'ont pas besoin d'être déclarées. Néanmoins, il est possible de le faire, tout dépend de la façon de programmer. Les variables membres, au même titre que les méthodes, sont stockées dans un dictionnaire interne de la classe. Donc à chaque fois que l'on fait référence à un self.toto, si dans le dictionnaire, la clé 'toto' n'existe pas et qu'il s'agit d'une affectation, une nouvelle clé est insérée ainsi que la valeur associée. Si la valeur n'existe pas dans le dictionnaire et que l'on veut un accès en consultation, une exception est levée. En prenant deux variables membres au hasard, l'une est déclarée dans le constructeur et affecté à rien (None), l'autre n'est déclarée que lors de l'instanciation du JButton. self.foundlist = None self.searchButton = swing.JButton("Recherche") En Java, il y a d'abord la déclaration, puis l'instanciation (bien que l'on puisse faire les temps en une seule étape) : // déclaration private JList foundlist; private JButton searchButton; // création des objets foundlist = new JList(dataModel); searchButton = new JButton("Recherche"); DistributionLes fichiers sont regroupés dans des archives au format tarball ou zip. Les sources sont sous licence GPL. Le makefile fournit permet de compiler le code java, de créer un jar, et de lancer l'exécution. Les possibilités sont compile,jar,clean, et exec. Le 'make' sans argument permet de tout enchaîner. Dans cette version, comme il y a du java à compiler, il faut mettre le bytecode dans un fichier jar pour que l'interpreteur jpython puisse trouver les classes. make compile make jar make exec ou make |
||
Cette page en version :
brut
|
Imprimable
|