Accueil
Accueil
Le
Club
Delphi
Kylix
C
C++
Java
J2EE
DotNET
& C#
Visual
Basic
Access
Pascal
Dev
Web
PHP
ASP
XML
UML
SQL
SGBD
Win
Linux
Autres



Quel est l'équivalent Java des pointeurs sur fonctions C/C++ ?
auteur : Clément Cunin
En Java il n'existe pas de pointeurs sur méthodes, il faut utiliser un objet là où en C/C++ vous utilisiez une fonction.

1ère étape : définiton d'une interface
On utilise des objets implémentant une interface commune. Cette interface devra définir le prototype de la fonction à exécuter.

public interface IFonctionpublic void execute(int);
2ème étape : définition de classes implémentant l'interface
Ces classes définissent différentes implémentations de la fonction.

public class Fonction implements IFonction { public void execute(int arg) { /** Faire ce que l'on aurait fait dans la fonction * en C/C++ */ } }
3ème étape : passage de paramètres et exécution
Il ne reste plus qu'à définir une fonction qui prend en paramètre une instance du type de l'interface et de faire appel à la méthode définie dans cette interface.

public void fonction(IFonction uneFonction) { uneFonction.execute(unint); }
Un bel exemple d'une telle méthodologie est le système de callback de AWT: au lieu de passer des fonctions comme en C/C++, on passe des instances de classes appelées Listener.

Une alternative intéressante est offerte par Jakarta Comons : l'API Functor. Un functor est une fonction qui peut être manipulée comme un objet, ou un objet repésentant une fonction. Cette API définit trois types de functors : les prédicats (retournent un booléen), les fonctions (retournent un Object) et les procédures (qui ne retournent rien).


Peut-on surcharger les opérateurs comme en C++ ?
auteur : Clément Cunin
NON.
Cela fait partie des spécifications du langage. Les concepteurs de Java n'ont pas souhaité intégrer cette fonctionnalité car le code qui découle de telles pratiques est beaucoup plus difficile à lire et à comprendre.


Comment faire pour hériter de plusieurs classes ?
auteur : Clément Cunin
L'héritage multiple n'est pas possible en Java. C'est l'une des propriétés fondamentales du langage, et c'est un point qui le différencie de beaucoup d'autres langages objets. Ce choix a été fait pour éviter que les nombreux problèmes lié à l'héritage en 'diamant' (une classe qui hérite de 2 parents qui héritent d'une classe commune !) ne se pose en Java.

Oui, mais comment faire alors ?
Afin de contourner le problème, Java introduit la notion d'interface. Une interface est une classe privée de toute implémentation. Il devient alors possible de dériver d'une classe et d'en implémenter plusieurs autres. Cette solution permet de contourner très élégamment les problèmes liés à l'héritage multiple.


Existe-t-il des templates en Java ?
auteur : L'équipe Java
Non, pas pour l'instant. Cependant Sun étudie, dans le cadre d'un processus communautaire ( community process ), l'intégration d'un mécanisme de généricité à Java.

Les templates seront ajoutés à Java dans sa version 1.5, pour plus d'info http://developer.java.sun.com/developer/technicalArticles/releases/generics/

lien :  http://developer.java.sun.com/developer/technicalArticles/releases/generics/


Consultez les autres F.A.Q's

Les codes sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Pour le reste, ce document constitue une oeuvre intellectuelle protégée par les droits d'auteurs.

Ce document issu de http://www.developpez.com est soumis à deux licences, en fonction des contributeurs :

- Les contributions de Clément Cunin et Johann Heymes sont soumises aux termes de la la licence GNU FDL traduite en français ici. Permission vous est donnée de distribuer, modifier des copies des contributions de Clément Cunin et Johann Heymes tant que cette note apparaît clairement :
"Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduite en français ici. Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement".

- Pour ce qui est des autres contributions : Copyright © 2004 Developpez LLC : Tous droits réservés Developpez LLC. Aucune reproduction, ne peux en être faite sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright 2000..2004 www.developpez.com