Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3100 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]Question de compréhension

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA]Question de compréhension

n°303411
Whismeril
Posté le 06-02-2003 à 19:34:39  profilanswer
 

hello, demain j'ai un exa et je ne comprends pas bien deux choses.
 
Premièrement l'utilité des interfaces. Je vois pas l'utilité si de toute façon il faut redéfinir toutes les méthodes...
 
Deuxièmement pareil mais avec les classes et méthodes abstraites.. quelle utilité ??
 
exemple:
 
abstract class shape
 
{
double sumArea(Shape other)
{return this.area() + other.area();}
abstract double area();
}
Ca fait quoi ca ???
 
Merci d'avance.

mood
Publicité
Posté le 06-02-2003 à 19:34:39  profilanswer
 

n°303416
Osama
Posté le 06-02-2003 à 19:37:21  profilanswer
 

je pense que tu vas avoir 0

n°303421
HappyHarry
Posté le 06-02-2003 à 19:39:09  profilanswer
 

une interface c un contrat
 
une classe qui va implémenter cette interface va "signer" le contrat et s'engager a implémenter les méthodes spécifiées dans le contrat
 
une classe abstraite ne peut etre instanciée, une classe qui va hériter d'une classe abstraite va etre obligée de donner une implémentation aux méthodes abstraites, ou etre déclarée elle meme abstraite
 
 
edit : si tu ne vois pas l'interet, soit t'as rien ecouté en cours, soit tu n'y es pas allé, dans les 2 cas, abandonne la POO :o


Message édité par HappyHarry le 06-02-2003 à 19:43:18
n°303427
deltaden
Posté le 06-02-2003 à 19:48:09  profilanswer
 

c'est extrèmement utile.
Par exemple tu as un programme qui gère des comptes banquaires, tu définit une classe abstraite Compte qui implémente des fonctions getCompteNumber() et des trucs comme ca.
Et tu l'étend avec une classe CompteCourant et une classe compteEpargne qui ont des méthodes différentes spécifiques.
 
Les opérations qui peuvent être faites sur les deux types de compte sont définis sur des objets Compte, par exemple, tu peux avoir une méthode pour un distributeur de billet qui fait imprimerExtraits(Compte c)
 
Par contre un méthode pour faire des virements automatique ne peut se faire que à partir d'un compte courant: virementAuto(CompteCourant c)
 
Voilà, c'est la même chose pour une interface, mais là il n'y a aucune méthodes définies dedant.


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
n°303429
Whismeril
Posté le 06-02-2003 à 20:04:40  profilanswer
 

Osama a écrit :

je pense que tu vas avoir 0


 
écoute je te tiens au courant
 
merci aux autres


Message édité par Whismeril le 06-02-2003 à 20:05:32
n°303482
darklord
You're welcome
Posté le 06-02-2003 à 22:23:04  profilanswer
 

Osama a écrit :

je pense que tu vas avoir 0


 
[+1]


---------------
Just because you feel good does not make you right
n°303514
gfive
Posté le 06-02-2003 à 23:30:02  profilanswer
 

ouais, bon, pour le 0, je suis assez d'accord, mais bon, si tu peux piger, c'est pas plus mal...
L'explication de DeltaDen est pas mal, mais manque de pr"cisions, je trouve : une interface, ça définit un ensemble de méthodes, que DOIVENT implémenter les classes qui implémentent l'interface. Par contre, on peut faire appel à ces méthodes, par l'intermédiaire de l'interface, sans connaître la classe de l'objet qu'on manipule.
Par exemple, une interface shape, pour reprendre ton exemple...
 
Une forme géométrique, c'est très variable, ça peut être un carré, un rectangle, un cercle, etc..Par contre, chacune de ces formes a une aire, un périmètre, une façon d'être dessinée, etc..
 
Donc, pour faire un logiciel de dessin, par exemple, tu définis une interface shape, avec la méthode draw(graphics)
 
Ensuite, tu implémente la méthode dans chaque classe : dans Carre, la méthode dessine un carré, dans Rectangle, ça dessine un rectangle, etc...
 
Au moment de dessiner l'interface de ton programme, au lieu de dire "je dessine les carrés, puis les cercles, puis les rectangles" tu dis "je dessine les formes" , et ça se fait en appellant draw() sur chacun des objets définis....
au lieu de faire 3 boucles sur 3 ensembles d'objets, tu n'en fait qu'une...Bon, c'est un avantage basique et purement gratuit, mais ce n'est qu'un exemple.
 
Ensuite, une classe abstraite, c'est comme une interface, mais ça définit en plus, des comportements commune à tes objets (par l'intermédiaire des méthodes non-abstraites)
 
l'exemple des comptes est en l'occurence très bien choisi, mais pour à la place de Deltaden, j'aurais dit :  
"Pour imprimer un extrait de compte, on a une méthode Compte.imprimeExtrait(Machin m), qi imprime l'ensemble des opérations effectuées sur le compte : ça ne dépend pas du type de compte, ça, les opérations...
Bon, c'est flou, mais il est 23h29, et je suis naze...
Mais garanti, c'est très très très très très utile, et même indispensable en POO.

n°303523
--greg--
Posté le 06-02-2003 à 23:40:53  profilanswer
 

on pourrait meme dire que sans ces notions l'interet de la poo serait plutot limité nan?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°303541
fykman
Errare Humanum Est
Posté le 07-02-2003 à 00:09:40  profilanswer
 

Allez un autre exemple : L'utilisation des interfaces pour une architecture type plug-ins.
Imaginons que j'ai cree un viewer d'image, je te le montre et tu me dis :  
"ouais, il est super ton viewer tu me le files ? il prend quoi comme type d'images  ?"
 
"les bmp, et le jpg."
 
"Merde, moi j'utilise plutot les gifs, c'est con.... :/"
 
"Pas de probleme, j'ai defini une interface qui contient les methodes  

Code :
  1. Image readImage(String filename);
  2. void writeImage(Image image, String filename);


t'as plus qu'a creer une classe qui implemente l'interface pour lire ou ecrire ton propre format d'image et le tour est joué...."

n°303613
nraynaud
lol
Posté le 07-02-2003 à 03:38:47  profilanswer
 

--greg-- a écrit :

on pourrait meme dire que sans ces notions l'interet de la poo serait plutot limité nan?  


 
On me souffle "smalltalk" et "self" dans mon oreilette.
Encore que dans le cas de smalltalk, le manque de contrats c'est fait sentir et les catégories on rapidement pris une partie de cette place.
 
C'est la conbinaison typage statique + objet qui est liée aux interfaces java (et héritage simple mais c'est un aspect plus technique de la chose).

mood
Publicité
Posté le 07-02-2003 à 03:38:47  profilanswer
 

n°303659
benou
Posté le 07-02-2003 à 09:31:48  profilanswer
 
n°303694
_guigui_
Posté le 07-02-2003 à 10:13:54  profilanswer
 


lol ;)
y'en a qui citent pas leurs sources, merci benou de le faire pour eux! :lol:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]Question de compréhension

 

Sujets relatifs
Petite question conne, aide svpjava virtuel machine en englais pour un xp francais
question gestion de fenetrequestion loufoque à propos des GPU
Pro du C requi : question sur les variables initalisées dans un forQuestion pratique avec les src, link, include etc...
Petit soucis en java / perl ...Java ---> XML
java script marche paspas bon le java
Plus de sujets relatifs à : [JAVA]Question de compréhension


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR