CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Classes et interfaces ?

Tharsis20
Tharsis20
Niveau 10
04 mars 2016 à 19:17:39

Bonsoir,
J'aurais quelques questions à propos des classes et interfaces en Java. J'ai dû mal comprendre quelque chose...
Admettons que j'aie une interface Ia (contenant des méthodes m1, m2, m3, m4) et une classe Ca qui implémente cette interface, et qui contient un constructeur et une implémentation de m1, m2 et m3, mais pas de m4.
Y a t-il un moyen de "régler" ce "problème" en écrivant une autre interface Ib et une autre classe Cb qui implémenterait m4 ?
Alors je ne sais pas si c'est vraiment intéressant mais ce "schéma" ne vient pas de moi, j'ai moi-même du mal à comprendre comment cela fonctionne et c'est pour ça que j'aimerais votre avis.

De plus, admettons que j'écrive une autre classe Cc contenant uniquement une méthode statique qui retourne une instance de Ca via son constructeur :
public class Cc {   public static Ca init() {     return new Ca();   } }
... Dans quel contexte peut-il y avoir un intérêt à faire Ca objet = Cc.init(); plutôt que directement Ca objet = new Ca(); ?

TintinMage
TintinMage
Niveau 10
04 mars 2016 à 21:54:29

La class Ca doit être une class abstraite puisqu'elle n'implémente pas toutes les méthodes de La, pour la class Cb elle peut étendre Ca pour redéfinir la méthode m4 seulement
Pour la deuxième question, renseigne-toi sur le pattern factory (par exemple) pour voir l'intérêt

Message édité le 04 mars 2016 à 21:56:19 par TintinMage
Tharsis20
Tharsis20
Niveau 10
04 mars 2016 à 22:09:17

Merci de ta réponse...

Alors en fait c'était un examen de prog et on en est pas du tout aux design patterns (même si j'en ai vu quelques uns par le passé), on est censé commencer l'orienté objet (j'en ai déjà fait mais c'est la première fois que je vois vraiment les interfaces Java) donc je vois pas du tout l'intérêt de faire ça dans ce cas-là...

Et donc sur le sujet, la classe Ca n'était pas abstraite, et il est uniquement question de créer une classe Cb et une interface Ib (dans ma notation c'est un i majuscule pour interface, pas un L :hap: ) avec Cb qui implémente Ib et m4.
On pouvait apporter des modifications au code fourni mais c'est tellement peu clair que je voyais vraiment pas comment m'y prendre en fait. Il aurait fallu que Cb étende Ca (abstraite) ET implémente Ib (mais pourquoi une nouvelle interface pour m4 qui est déjà dans Ia ?) ? Je trouve ça un peu tordu...

TintinMage
TintinMage
Niveau 10
04 mars 2016 à 22:25:40

Ca implémente Ia mais qui ne redéfinie que m1, m2 et m3 mais pas m4 ne peut qu'être qu'abstraite, Cb qui va étendre Ca va juste devoir implémenter m4 pas besoin de faire une interface Ib pour pouvoir implémenter m4
Peut-être que je t'ai pas très bien compris

tharsisco
tharsisco
Niveau 10
04 mars 2016 à 22:28:04

Non non tu m'as bien compris, il était bien demandé d'écrire une nouvelle classe ET une nouvelle interface pour définir m4 :hap:
C'est pour ça que moi-même je comprends pas vraiment.
(je suis l'auteur, j'ai juste changé de pseudo)

Message édité le 04 mars 2016 à 22:29:21 par tharsisco
MageNoir-75
MageNoir-75
Niveau 7
05 mars 2016 à 00:10:54

Le 04 mars 2016 à 19:17:39 Tharsis20 a écrit :

De plus, admettons que j'écrive une autre classe Cc contenant uniquement une méthode statique qui retourne une instance de Ca via son constructeur :
public class Cc {   public static Ca init() {     return new Ca();   } }
... Dans quel contexte peut-il y avoir un intérêt à faire Ca objet = Cc.init(); plutôt que directement Ca objet = new Ca(); ?

Regarde du côté du pattern factory.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment