IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Conseils structure programme JAVA


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Par défaut Conseils structure programme JAVA
    Bonjour,

    Je débute en Java et j'aimerais avoir un avis et des conseils sur une "application météo" que j'ai créée et notamment sur l'organisation du code (classes et constructeur).

    Voici le lien du repo : https://github.com/nathaliejouet/application-meteo

    Merci par avance

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Euh... et ça se compile?

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Par défaut
    Oui..

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    alors je ne vois pas le code correct
    exemple de ce que je vois (simplifié)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    import java.awt.* ;
    // et plus loin
    new Window(// le paramètre est un String ce qui ne se peut avec java.awt.Window)
    Or tu as certes créé une classe qui s'appelle aussi Window (avec un constructeur prenant une chaîne et avec un import java.awt.* ! gloups ) ...
    C'est déjà bougrement imprudent... mais dans le code que je vois du Main sur git c'est pas celle-là qui est concernée....
    bizarre

    tu pourrais pas remettre ici les codes que tu compiles?
    à bientôt

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Par défaut
    Bonjour,

    Voici le code, je suis preneuse de conseils (même s'il y en a beaucoup).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package com.meteostation;
    import java.awt.EventQueue;
     
    public class Main {
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new Window("Station météo");
                }
            });
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    package com.meteostation;
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    public class Window extends JFrame {
        protected static JLabel tempMin;
        protected static JLabel tempMax;
        private JTextField text;
     
        public Window(String station_météo) {
            setSize(600, 400);
            setLocationRelativeTo(null);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
     
            JPanel panel = new JPanel();
            JPanel otherInfo = new JPanel(new GridLayout(2, 2));
            tempMin = new JLabel("Température minimale", SwingConstants.CENTER);
            tempMin.setBorder(BorderFactory.createEmptyBorder(-50, 0, 0, 0));
            tempMax = new JLabel("Température maximale", SwingConstants.CENTER);
            tempMax.setBorder(BorderFactory.createEmptyBorder(-50, 0, 0, 0));
     
            otherInfo.add(tempMin);
            otherInfo.add(tempMax);
            add(panel, BorderLayout.NORTH);
            add(otherInfo, BorderLayout.CENTER);
     
            text = new JTextField();
            text.setPreferredSize(new Dimension(150, 60));
            panel.add(text);
     
            Api api = new Api();
            JButton button1 = new JButton("OK");
            button1.setPreferredSize(new Dimension(100, 60));
            button1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    api.getMeteo(text.getText());
                }
            });
     
            panel.add(button1);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    package com.meteostation;
     
    import okhttp3.*;
    import org.json.JSONArray;
    import org.json.JSONObject;
     
    import javax.swing.*;
    import java.awt.*;
    import java.io.IOException;
     
    public class Api {
        private int minimumValue;
        private int maximumValue;
        private JTextField text;
        MeteoDonnees comp = new MeteoDonnees();
     
        public void getMeteo(String ville) {
            String apiKey = Settings.getProperty("apiKey");
            String req1 = Settings.getProperty("urlVille") + apiKey + "&q=" + ville;
     
            OkHttpClient client = new OkHttpClient();
            Request request1 = new Request.Builder()
                    .url(req1)
                    .build();
            Call call = client.newCall(request1);
            call.enqueue(new Callback() {
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    if (response.isSuccessful()) {
                        JSONArray array = new JSONArray(response.body().string());
                        if (array.length() != 0) {
                            JSONObject item = (JSONObject) array.get(0);
                            String key = (String) item.get("Key");
                            String req2 = Settings.getProperty("urlMeteo1Day") + key + "?apikey=" + apiKey + "&language=fr-FR&metric=true";
     
                            Request request2 = new Request.Builder()
                                    .url(req2)
                                    .build();
                            Call call2 = client.newCall(request2);
     
                            call2.enqueue(new Callback() {
                                @Override
                                public void onResponse(Call call, Response response2) throws IOException {
                                    if (response2.isSuccessful()) {
                                        JSONObject object = new JSONObject(response2.body().string());
                                        JSONArray dailyForecasts = object.getJSONArray("DailyForecasts");
     
                                        JSONObject day = (JSONObject) dailyForecasts.get(0);
     
                                        JSONObject temperature = (JSONObject) day.get("Temperature");
     
                                        JSONObject minimum = (JSONObject) temperature.get("Minimum");
                                        minimumValue = minimum.getInt("Value");
     
                                        JSONObject maximum = (JSONObject) temperature.get("Maximum");
                                        maximumValue = maximum.getInt("Value");
     
                                        comp.setTempMin(minimumValue + "°");
                                        Window.tempMin.setText(comp.getTempMin());
                                        System.out.println("Température minimum : " + comp.getTempMin() + System.getProperty("line.separator"));
     
                                        comp.setTempMax(maximumValue + "°");
                                        Window.tempMax.setText(comp.getTempMax());
                                        System.out.println("Température minimum : " + comp.getTempMax() + System.getProperty("line.separator"));
                                    }
                                }
     
                                @Override
                                public void onFailure(Call call, IOException e) {
                                    System.out.println("Erreur");
                                }
                            });
                        } else {
                            text.setText("Cette ville n'existe pas");
                        }
                    }
                }
     
                @Override
                public void onFailure(Call call, IOException e) {
                    System.out.println("Erreur");
                }
            });
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    package com.meteostation;
     
    public class MeteoDonnees {
        private String tempMin;
        private String tempMax;
     
        public MeteoDonnees() {
        }
     
        public String getTempMin() {
            return tempMin;
        }
     
        public void setTempMin(String tempMin) {
            this.tempMin = tempMin;
        }
     
        public String getTempMax() {
            return tempMax;
        }
     
        public void setTempMax(String tempMax) {
            this.tempMax = tempMax;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    package com.meteostation;
     
    import java.io.IOException;
    import java.util.Properties;
     
    public class Settings {
        private static Properties properties;
     
        static {
            properties = new Properties();
            try {
                properties.load(Settings.class.getResourceAsStream("settings.properties"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
     
        public static String getProperty(String key) {
            return properties.getProperty(key);
        }
    }

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    un premier conseil: essaye de séparer le graphique du fonctionnel.
    Le mélange des deux est étrange (dans le fonctionnel tu remplis des champs statiques de Window...)
    le graphique: saisit le nom de la ville
    passe la main au fonctionnel -> récupère un objet qui représente min/max et l'affiche (dans des champs d'instance).

Discussions similaires

  1. [STRUCTURE] Structure d'un programme JAVA
    Par pflany dans le forum Langage
    Réponses: 11
    Dernier message: 18/04/2020, 22h05
  2. Réponses: 5
    Dernier message: 29/11/2012, 19h21
  3. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 01h12
  4. [votre avis m'interesse] Interface avec un programme Java
    Par LineLe dans le forum Interfaces Graphiques en Java
    Réponses: 29
    Dernier message: 11/12/2004, 11h39
  5. Lancement d'un programme java depuis un script php
    Par gexti dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 07/05/2004, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo