Skip to content

Instantly share code, notes, and snippets.

@medkhelifi
Last active August 10, 2021 13:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save medkhelifi/80fd8157622ffd8c3f65ffa4bd789329 to your computer and use it in GitHub Desktop.
Save medkhelifi/80fd8157622ffd8c3f65ffa4bd789329 to your computer and use it in GitHub Desktop.
package com.hemebiotech.analytics;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class HemebiotechApp {
public static void main(String[] args) {
// Symptoms reading phase//
List<String> mySymptomsList;
/*
commentaire Mohamed:
ça c'est bien, tu a crée une instance de ISymptomReader en lui fournissant le chemin
du fichier texte source, et t'a bien fait aussi d'utiliser l'interface comme type de variable:
https://beginnersbook.com/2013/05/java-interface/
*/
ISymptomReader reader = new ReadSymptomDataFromFile("symptoms.txt");
/*
commentaire Mohamed:
ça c'est pas bon du tout, ce que tu est entrain de faire ici, c'est déclarer une méthode qui s'appel GetSymptoms() et qui doit retrouner une List<String>
la méthode que tu viens de déclarer n'a aucun lien avec la méthode ISymptomReader.GetSymptoms().
Nous on a pas besoin de redéfinir la méthode GetSymptoms(), mais seulement utiliser celle qui est fournie par ISymptomReader, pour faire ça:
List<String> mySymptomsList = reader.GetSymptoms();
*/
List<String> GetSymptoms() {
return mySymptomsList; // **Je ne comprends pas pourquoi il n'est pas reconnu //
System.out.println(mySymptomsList); // alors que j'ai l'impression de l'avoir d�clar� correctement, Commentaire Mohamed: après un return aucune auntre instruction n'est tolérée**//
}
/*
commentaire Mohamed:
1- Tu est entrain de définir une méthode (calculateOccurrences) à l'intérieur d'une autre méthode (main) ce qui n'est pas bon du tout, donc tu dois faire sortir cette méthode à l'éxtérieur.
2- Rappel toi ce que nous avons dis l'autre jours, La nouvelle classe que tu a crée (HemebiotechApp doit servir comme un point d'entré à notre programme suelement, Une classe ne doit faire qu'une seule chose et elle doit bien la faire).
Donc HemebiotechApp doit servir comme un point d'entrée à notre programme avec la méthode main, et l'intitialisation des objets comme tu viens de le faire par ex avec ISymptomReader.
Par contre c'est plutôt la classe AnalyticCounter qui doit contenir ce genre de méthodes de business.
*/
// Symptoms calculating phase//
Map<String, Integer> calculateOccurrences(List<String> symptoms) {
Map<String, Integer> countSymptoms = new HashMap<String, Integer>();
countSymptoms.put(mySymptomsList);// commentaire Mohamed: Tu ne peux pas faire un put d'une liste à l'intérieur d'une map de cette façon.
// commentaire Mohamed: la tu dois boucler plutôt sur mySymptomsList que args
for (String a : args) {
Integer freq = countSymptoms.get(a);
countSymptoms.put(a, (freq == null) ? 1 : freq + 1); // reprise d'une doc oracle pas s�r de comprendre//
}
return countSymptoms;
//Commentaire Mohamed: après un return aucune auntre instruction n'est tolérée
System.out.println(countSymptoms.size() + " distinct symptoms: ");
System.out.println(countSymptoms);
}
/*
commentaire Mohamed:
J'imagine qu'ici tu est entrain d'ordoner la map, pareil ceci est un traitement qui doit se faire dans la classe AnalyticCounter en lui créant dans une nouvelle méthode par ex.
*/
Map sortedSymptoms = new Treemap (countSymptoms);
Set set = sortedMap.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Map.entry me = (MapEntry) iterator.next();
System.out.print(me2.getKey() + ": ");
System.out.println(me2.getValue());
}
}
/**
* Commentaire Mohamed: résumé:
* 1- C'est bien d'avoir crée une classe qui servira comme un point d'entrée à notre programme HemebiotechApp
* 2- C'est bien d'avoir instancié une instance de l'interface ISymptomReader qui servira comme outil de lécture.
* 3- t'avais pas besoin de redéfinir la méthode GetSymptom() mais seulement l'utiliser.
* 4- Essaies de regrouper tout tes méthodes métiers: calculateOccurrences(), et le script de tri dans notre classe business AnalyticCounter
* 5- Une fois notre classe AnalyticCounter bien définie, tu va l'initialiser comme t'afait pour ISymptomReader et appeler juste ses méthodes qui feront le boulot, en passant les résultats d'une méthode comme paramètre à la méthode suivante.
*
* Voila bon courage.
*/
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment