• Aucun résultat trouvé

Cette liste présente des fonctions classiques de refactoring implémentées dans le plupart des IDE.

– Renommer : Cette fonction renomme un package, une classe, une méthode ou une va- riable, et corrige toutes les références à celui-ci.

– Déplacer : Permet de déplacer une classe ou une interface vers un autre package en conservant l’intégrité sémantique.

– Déplacer champ/ méthode : Permet de dépacer un champ ou une méthode vers une autre classe en conservant l’intégrité sémantique.

– Pull Up / Push Down dans la hiérarchie : Pour réorganiser la hiérarchie d’un projet, vous pouvez "tirer"(Pull Up, déplacer) des champs et des méthodes dans une classe de base et "pousser" (Push Down) du code dans une sous-classe. Cette fonctionnalité vous permet de rationaliser un projet pour des performances optimales.

– Extrait Méthode : Cette fonction permet d’extraire un morceau de code et d’en faire une méthode distincte. Ceci facilite la modularisation des programmes et permet au code d’être décomposé en morceaux mieux gérables et plus compréhensibles.

– Extrait Super-classe / Interface : Permet de sélectionner des méthodes existantes et des champs pour les extraire afin de créer une nouvelle classe ou interface. Cette opération est utilisée pour améliorer le désign et l’ergonomie du code.

– Introduire une variable explicite : Cette fonctionnalité vous permet de placer le résultat d’une expression, ou de parties d’une expression, dans une variable temporaire avec un nom qui le désigne. Cette fonction est utile pour briser les longues expressions en éléments mieux gérables et plus compréhensibles.

– Créer une méthode fabrique : Grâce à cette fonctionnalité, vous pouvez prendre un constructeur existant et le remplace par une méthode fabrique (Factory) statique. – Créer constructeur : Cette fonction crée un simple constructeur pour un groupe de dé-

clarations de champs et initialise ces champs. Ceci est utile lors de la déclaration des valeurs initiales ou lors de la réinitialisation des paramètres.

– Ajouter méthode déléguée : Grâce à cette fonctionnalité, il est possible de créer des méthodes de déléguation pour un champ donné qui améliorent la modularisation et l’er- gonomie du code.

– Surcharger / Implémenter des méthodes : Ce refactoring vous permet d’ajouter des im- plémentation de méthodes d’une superclasse. Ceci est utile lorsqu’il s’agit d’améliorer une méthode en surchargeant l’implémentation pour ajouter des fonctionnalités.

– Inline variable : Cette fonction remplace toutes les références d’une variable avec l’ expression correspondant à sa déclaration. Ceci minimise des erreurs introduite lors de déplacement de code en supprimant les variables inutiles. Il devient plus souple.

– Inline Méthode : Cette fonctionnalité remplace toutes les références d’une méthode par son code. Ceci est utile pour éliminer les méthodes qui ne justifient pas.

– Changer la signature de la méthode : Cette fonctionnalité vous permet d’ajouter, suppri- mer, réorganiser et renommer les paramètres pour une méthode donnée.

– Nettoyage d’importations : Cette fonction permet de supprimer les déclarations d’impor- tation inutiles.

– Convertir Temporaire vers champ : Cette fonctionnalité permet à un utilisateur de trans- former des variables locales en champ de classe.

– Encapsule champ : Cette fonctionnalité vous permet de sélectionner une catégorie et les remplacer les utilisations directes de ses champs par des méthodes d’accès. Ainsi, il deviens facile de modifier la visibilité des champs.

– Minimisation des droits d’accès : Cette fonction détermine les modificateurs d’accès minimaux pour les champs des classes et des méthodes.

– Utilisez Supertype lorsque cela est possible : Cette règle permet de remplacer la sous- classe utilisée par sa super-classe.

Details des composants Java utilisés

dans les applications Web

Comme présenté en fig. D.1 pour le marché français, le développement Web est un secteur en plein essor. Les applications Web sont composées de codes ayant des caractéristiques et des

FIGURED.1 – Evolution du E-commerce en france.

utilisations variés. Ce chapitre montre que même au sein des codes Java uniquement, il existe une grande diversité dont certains détails sont montrés ici.

D.1

Principales caractéristiques d’une applet

– La classe d’une applet dérive obligatoirement de la classe Applet, est public et possède un constructeur sans paramètre public (éventuellement celui fourni par défaut).

– Une applet de classe ClasseApplet est lancée grâce à la balise (tag) <APPLET CODE=ClasseApplet ...> ou <OBJECT codetype="application/java" ... </OBJECT> définie dans un fichier

HTML.

– Différents paramètres peuvent être passés à une applet grâce aux balise <PARAM NAME="Param" VALUE="ValueParam"> inclus après la balise <APPLET ...>.

– Une instance de la classe de l’applet demandée est créée pour chaque balise <APPLET ...>.

– Une applet n’a pas un unique point d’entrée comme pour les applications : les méthodes surchargées init (), start (), stop () et destroy () d’une classe d’applet sont appelées res- pectivement à la création de l’applet, son affichage, son effacement et sa destruction. . Le navigateur détecte la présence d’une applet grâce à la balise <APPLET>, il crée

une instance de cette applet par la méthode "init()".

. L’exécution de l’applet se fait par la méthode "start()". Si la page est rechargée cette méthode est systématiquement rappelée. Il se peut également que la méthode "init()" soit rappelée, cela dépend du navigateur.

. Lorsque l’internaute quitte la page où est située l’applet, l’exécution de celle-ci est stoppée par le navigateur grâce à la méthode "stop()".

. Ca n’est que lorsque le navigateur sera fermé que l’instance de l’applet sera détruite via la méthode "destroy()".

– Une applet est une portion de fenêtre graphique, on n’utilise pas la méthode println () dans une applet pour afficher du texte, mais la méthode graphique drawString (). Comme pour une image, une applet s’affiche dans une zone dont la taille est définie dans des balises HTML dans laquelle elle est exécutée.

– Pour éviter toute intrusion dans le système où fonctionne le navigateur, le gestionnaire de sécurité (SecurityManager) défini par la machine virtuelle du navigateur est très restrictif (principe du ’bac à sable’) :

. Aucun accès au système de fichiers local.

. Possibilité d’accéder uniquement à l’hôte sur lequel est hébergé le fichier de la classe de l’applet.

. Les fenêtres créées par une applet (de classe dérivée de la classe Window) comportent un bandeau indiquant que la fenêtre a été créée par l’applet.

. Impossibilité de lancer des applications locales.

. Impossibilité de définir des méthodes natives et d’utiliser des librairies du système. . Accès limité aux propriétés du système de la machine virtuelle.