Aide dans un projet Java
Fermé
Art_1491
Messages postés
5
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
15 décembre 2020
-
Modifié le 15 déc. 2020 à 00:08
Art_1491 Messages postés 5 Date d'inscription lundi 14 décembre 2020 Statut Membre Dernière intervention 15 décembre 2020 - 15 déc. 2020 à 11:02
Art_1491 Messages postés 5 Date d'inscription lundi 14 décembre 2020 Statut Membre Dernière intervention 15 décembre 2020 - 15 déc. 2020 à 11:02
A voir également:
- Aide dans un projet Java
- Jeux java itel ✓ - Forum Jeux vidéo
- Java runtime - Télécharger - Langages
- Java apk - Télécharger - Langages
- Scanf en java ✓ - Forum Java
- Java heap space ✓ - Forum Java
3 réponses
jordane45
Messages postés
37253
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 mars 2023
4 551
14 déc. 2020 à 22:53
14 déc. 2020 à 22:53
Bonjour,
Sans voir le code en question... personne ne pourra te venir en aide !!
Quoi qu'il en soit, il semble s'agir d'un exercice... la seule réponse à te donner dans ce cas est donc : Merci de lire ceci : https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Sans voir le code en question... personne ne pourra te venir en aide !!
Quoi qu'il en soit, il semble s'agir d'un exercice... la seule réponse à te donner dans ce cas est donc : Merci de lire ceci : https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Art_1491
Messages postés
5
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
15 décembre 2020
14 déc. 2020 à 23:44
14 déc. 2020 à 23:44
Rébonsoir à toute la communauté !
J'espère que nous allons tous bien. En ce qui concerne mon problème, je continue personnellement à faire des recherches sur comment rémanier , analyser et prévenir les erreurs efficacement sur un code Java.
Et durant mes recherches sur cet axe, je suis tombé sur l'outil jUnit pour tester mon code mais je ne comprend vraiment pas bien comment l'utiliser ici ?
Suis je sur la bonne voie ? Comment utiliser le module jUnit pour cet code ?
La question de la fusion des cartes me dérange toujours. Là j'ai aucune idée.
Merci de bien me lire.
J'espère que nous allons tous bien. En ce qui concerne mon problème, je continue personnellement à faire des recherches sur comment rémanier , analyser et prévenir les erreurs efficacement sur un code Java.
Et durant mes recherches sur cet axe, je suis tombé sur l'outil jUnit pour tester mon code mais je ne comprend vraiment pas bien comment l'utiliser ici ?
Suis je sur la bonne voie ? Comment utiliser le module jUnit pour cet code ?
La question de la fusion des cartes me dérange toujours. Là j'ai aucune idée.
Merci de bien me lire.
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
15 déc. 2020 à 08:02
15 déc. 2020 à 08:02
Bonjour,
jUnit permet de faire des tests unitaires, ce qui requiert d'avoir des méthodes "unitaires" qui font des tâches simples individuellement et qui dépendent de pas ou peu de contexte.
Dans ton code l'utilisation de Scanner est omniprésente mais ce n'est pas facilement testable, il faudrait davantage découper le code en méthodes qui ne dépendent que des paramètres des méthodes pour pouvoir tester efficacement.
De toute façon tout est à revoir dans le code, à commencer par la structure de données (long[359] String[359] et long[359][359]), Java est un langage objet, l'amélioration du programme devrait donc passer par la création de classes spécifiques à ton programme (chacune ayant ses propres tests unitaires).
Donc oui jUnit est un très bon outil, indispensable en milieu professionnel, mais il requiert d'abord de faire du Java propre, et ici il faudrait tout revoir de zéro.
jUnit permet de faire des tests unitaires, ce qui requiert d'avoir des méthodes "unitaires" qui font des tâches simples individuellement et qui dépendent de pas ou peu de contexte.
Dans ton code l'utilisation de Scanner est omniprésente mais ce n'est pas facilement testable, il faudrait davantage découper le code en méthodes qui ne dépendent que des paramètres des méthodes pour pouvoir tester efficacement.
De toute façon tout est à revoir dans le code, à commencer par la structure de données (long[359] String[359] et long[359][359]), Java est un langage objet, l'amélioration du programme devrait donc passer par la création de classes spécifiques à ton programme (chacune ayant ses propres tests unitaires).
Donc oui jUnit est un très bon outil, indispensable en milieu professionnel, mais il requiert d'abord de faire du Java propre, et ici il faudrait tout revoir de zéro.
Art_1491
Messages postés
5
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
15 décembre 2020
15 déc. 2020 à 08:18
15 déc. 2020 à 08:18
Merci pour ta réponse
S'il te plaît, tu veux dire quoi par faire du Java propre ?
Merci de bien m'indiquer une source pour ample compréhension.
S'il te plaît, tu veux dire quoi par faire du Java propre ?
Merci de bien m'indiquer une source pour ample compréhension.
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
>
Art_1491
Messages postés
5
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
15 décembre 2020
15 déc. 2020 à 08:51
15 déc. 2020 à 08:51
Faire du Java "propre" c'est notamment faire de la programmation objet, séparer les instructions "métier" des interactions avec l'utilisateur (pattern MVC par exemple), parce que ici tu codes effectivement avec le langage Java, mais dans l'esprit ce n'est pas comme cela qu'un programme Java devrait être écrit.
https://jmdoudoux.developpez.com/cours/developpons/java/chap-poo.php
https://baptiste-wicht.developpez.com/tutoriels/conception/mvc/
https://jmdoudoux.developpez.com/cours/developpons/java/chap-poo.php
https://baptiste-wicht.developpez.com/tutoriels/conception/mvc/
Art_1491
Messages postés
5
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
15 décembre 2020
>
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
15 déc. 2020 à 11:02
15 déc. 2020 à 11:02
Merci beaucoup pour les liens ! Je lis et j'applique puis je reviendrai vers toi.
Modifié le 14 déc. 2020 à 23:35
Voici le code :
Ça c'est pour la première classe qui hérite d'une autre classe dont j'ajoute le code en bas de celui-ci :
package fr.icam.bb8; import java.io.InputStream; import java.util.Scanner; public class UnitR { long[] systems; String[] namings; long[][] navmaps; void init(){ systems = new long[359]; namings = new String[359]; navmaps = new long[359][359]; } int read(String name, int index) throws Exception { InputStream input = UnitR.class.getResourceAsStream("/" + (name == null ? "" : name + "-") + "systems.csv"); Scanner scanner = new Scanner(input); int i = index; while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] items = line.split(","); systems[i] = Long.valueOf(items[0]).longValue(); namings[i] = items[1]; i++; } scanner.close(); input.close(); return i; } int index(long id) { for (int i = 0; i < systems.length; i++) { if (systems[i] == id) { return i; } } return -1; } void load(String name) throws Exception { InputStream input = UnitR.class.getResourceAsStream("/" + (name == null ? "" : name + "-") + "navmaps.csv"); Scanner scanner = new Scanner(input); while (scanner.hasNextLine()) { String line = scanner.nextLine(); String[] items = line.split(","); long source = Long.valueOf(items[0]).longValue(); long target = Long.valueOf(items[1]).longValue(); long effort = Long.valueOf(items[2]).longValue(); int i = index(source); int j = index(target); if (i == -1 || j == -1) { System.err.println("skiping " + source + " -> " + target + " (" + effort + ")"); } else { navmaps[i][j] = effort; navmaps[j][i] = effort; } } scanner.close(); input.close(); } void setup(String name) throws Exception { init(); read(name, 0); load(name); } int index(String name) { for (int i = 0; i < namings.length; i++) { String source = namings[i]; if (source == null) { continue; } else if (source.equalsIgnoreCase(name)) { return i; } } return -1; } int ask(Scanner scanner, String text) { int s = -1; do { System.out.print(text); String source = scanner.nextLine(); s = index(source); if (s == -1) { System.out.println("sorry, i don't know " + source + "."); } } while (s == -1); return s; } void route(Scanner scanner) { int s = ask(scanner, "from? "); int t = ask(scanner, "to? "); String src = namings[s]; String tgt = namings[t]; long duration = navmaps[s][t]; if (duration == 0) { System.out.println("there is no direct route from " + src + " to " + tgt + "."); } else { System.out.println("the direct route from " + src + " to " + tgt + " takes " + duration + "ms."); } } void list(Scanner scanner) { System.out.print("filtering on: "); String filter = scanner.nextLine(); for (int i = 0; i < namings.length; i++) { if (namings[i] == null) { continue; } else { long id = systems[i]; String pattern = namings[i].toLowerCase(); String prefix = filter.toLowerCase(); if (pattern.startsWith(prefix)) { System.out.println(" - " + namings[i] + " (" + id + ")"); } } } } void loop(String name) { System.out.println("hello! my name is " + name + " and i'm ready."); Scanner scanner = new Scanner(System.in); boolean exit = false; while (exit == false) { System.out.print("what are you asking for? "); String line = scanner.nextLine(); if (line.equalsIgnoreCase("exit")) { exit = true; } else if (line.equalsIgnoreCase("list")) { list(scanner); } else if (line.equalsIgnoreCase("route")) { route(scanner); } else { System.out.println("sorry, i don't understand your request."); } } System.out.println("bye!"); scanner.close(); } void process(String name) throws Exception { setup(name); loop(name); } public static void main(String[] arguments) throws Exception { UnitR unit = new UnitR(); unit.process("bb8"); } }N.B : J'ai crée des fichiers cvs dans lequel se trouve les coordonnées et le nom des villes du problème.
La deuxième classe :
package fr.icam.bb8; public class UnitBB extends UnitR { void setup(String... names) throws Exception { /* TODO */ } void process(String name, String... names) throws Exception { setup(names); loop(name); } public static void main(String[] arguments) throws Exception { UnitBB unit = new UnitBB(); unit.process("BB-8", "r2d2", "bb8"); } }Pour les fichiers cvs notés que tout au long du code je lis et fais des recherches sur ses données. Elles contiennent les villes et les distances entre les villes. Je continue à travailler sur la présentation du code pour qu'il soit plus lisible ce qui m'embête vraiment c'est trouvé un moyen optimal pour fusionner les deux cartes.