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

Problème Java : Classe main

Simbra
Simbra
Niveau 18
11 mai 2014 à 14:42:27

Bonjour à tous !

J'ai un problème pour mon projet JAVA, consistant à programmer un programme de traitement d'image.

J'ai crée une interface Filtre puis 3 classes qui implémentent cette classe (ce sont chacune des filtres particuliers). Ces dernières contiennent une méthode qui décrit les opérations sur les pixels pour appliquer le filtre. Elle prend en paramètre une BufferedImage et renvoie une BufferedImage. Je l'ai appelée "filtrage".

Cependant, dans ma classe main, je voudrai appliquer cette méthode mais il ne la reconnait pas. De plus on ne peut pas dire que cette méthode est statique car c'est une méthode abstraite mais j'ai crée une classe test qui n'implémente pas Filtre et qui possède la même méthode que je peux rendre statique, ma classe main ne la reconnait pas ...

Avez-vous une idée d'ou ça peut venir ?

Merci d'avance ! :)

Simbra
Simbra
Niveau 18
11 mai 2014 à 14:43:52

JE précise aussi que toutes mes classes sont dans un même package que j'importe à chaque fois et dans ma classe main, j'ai importé l'interface Filtre !

dark_drow
dark_drow
Niveau 15
11 mai 2014 à 14:52:38

code ?

Simbra
Simbra
Niveau 18
11 mai 2014 à 14:56:17

package projet2;
import java.awt.image.BufferedImage;

public interface Filtre {

BufferedImage filtrage(BufferedImage src);

}
_______

package projet2;
import java.awt.Color;
import java.awt.image.BufferedImage;

public class FiltreNB implements Filtre {

public BufferedImage filtrage(BufferedImage src) {
BufferedImage dst = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_INT_RGB);

for(int y=0; y<dst.getHeight(); y++)
{
for(int x=0; x<dst.getWidth(); x++)
{
Color color = new Color(src.getRGB(x,y));
int red = color.getRed();
int green = color.getGreen();
int blue = color.getBlue();
int moy = (int)((red+green+blue)/3);
color = new Color(moy, moy , moy);

dst.setRGB(x, y, color.getRGB());
}

}
return dst;

__________________________

package projet2;
import projet2.Filtre;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class ClasseMain {

public static void main(String[] args) throws IOException {

BufferedImage src = ImageIO.read(new File(args[0]));
filtrage(src);
ImageIO.write(filtrage(src), args[3], new File(args[2]));
}

}

___

Je n'ai mis que l'une des classes qui implémentent Filtre.
Le code refuse les lignes : "filtrage(src);
ImageIO.write(filtrage(src), args[3], new File(args[2]));"
puisqu'il ne reconnait pas la méthode.

bobby_35
bobby_35
Niveau 4
11 mai 2014 à 15:49:40

Je crois que tu n'as pas bien compris le principe de la POO.
Il te faut créer une instance d'un filtre, pqrmis les trois et lui appliqué la méthode filtrage.
Ici, lorsque tu appels filtrage, tu recherches une méthode static de la classe ClasseMain.

shinigota
shinigota
Niveau 10
11 mai 2014 à 15:50:26

Le code refuse les lignes : "filtrage(src);
ImageIO.write(filtrage(src), args[3], new File(args[2]));"
puisqu'il ne reconnait pas la méthode. "filtrage(src); "

C'est normal :

Exemple vraiment bête, mais tu vas comprendre où est le pb : C'est comme les voitures, disons qu'elles ont une méthode "démarrer" :hap:
Si tu dis "démarrer", personne va te comprendre, mais si tu dis démarrer la voiture, là on comprendra. :hap:

Simbra
Simbra
Niveau 18
11 mai 2014 à 17:32:33

Merci pour vos reponses !
Mais, si je cree une instance d'un filtre pyis que je lui applique la methode filtrage : filtre.filtrage(src) je recupere quand meme une bufferedimage et non un filtre ?

Et derniere question pourquoi quand je declare static la methode filtrage il ne la reconnait pas sous la forme filtrage(src) ?

dark_drow
dark_drow
Niveau 15
11 mai 2014 à 18:44:52

Classe.filtrage(src)

shinigota
shinigota
Niveau 10
11 mai 2014 à 18:46:03

"Mais, si je cree une instance d'un filtre pyis que je lui applique la methode filtrage : filtre.filtrage(src) je recupere quand meme une bufferedimage et non un filtre ? "

Ta méthode filtrage, c'est ça :
public BufferedImage filtrage(BufferedImage src) {
...
}
"public BufferedImage" : quand tu l’exécute, te récupère une BufferedImage :oui:

"Et derniere question pourquoi quand je declare static la methode filtrage il ne la reconnait pas sous la forme filtrage(src) ?"
Parce que tu lui dit toujours "démarrer".
Et tu peux aussi bien démarrer un ordinateur qu'une voiture ou plein d'autre trucs, donc il comprend pas !
http://java.developpez.com/faq/java/?page=langage_motcle#motsClesStatic

Simbra
Simbra
Niveau 18
11 mai 2014 à 19:26:33

Ah daccord !!

Merci beaucoup a tous les deux !

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