@Va84 : Racourcir, et surtout rendre plus modulaire, par exemple tu peut créer une "classe" conversion, que tu pourrais utiliser en mode console, mais aussi avec une interface graphique, sans changer ton code de conversion, j'peut te faire un exemple pour une de tes fonctions s'tu veux ^^
IOIO: Machine à tout faire
Ouais je comprends ...
Comme j'ai dis c'est ce que j'avais essayé mais c'est la partie la plus dure du C j'ai l'impression, les autres j'ai vite compris mais celle là j'ai dû y passer pas mal de jours dessus et j'ai jamais réussi à bien comprendre....
Disons qu'en C la POO c'est pas fait pour. Pour la POO le mieux c'est Java ou C++.
(au fait, je viens d'indenter ton code pour y voir plus clair et le traduire (je traduirais en java, mais tu verras, c'est à peu près pareil) et pour tes choix multiples, pense à utiliser Switch Case plutôt que if else if else if ... ;)
IOIO: Machine à tout faire
Ok, switch case c'est dans le sytle
switch
case1
{
}
break;
etc .... ?
Ouais voilà,
Je te recode ta deuxième appli en java XD
Je devrais pas mettre trop longtemps (le plus long c'est refaire l'interface console ^^)
IOIO: Machine à tout faire
La POO, ce peut être magnifique comme bordélique. J'en vois des exemples tous les jours chez mes clients.
Les dernières modes : Spring + annotations + Aspects
Avec ça, le code est illisible, imbitable, et dans les faits, beaucoup plus lent (je ne dis pas que ces frameworks ou technos sont lentes par essence).
Mais quand on est tombé dedans tout petit, on a du mal à s'en défaire
Tiens, un petit exemple de code : c'est du JavaScript, une horloge analogique. Ça doit pouvoir tourner localement avec une référence relative sur l'URL de l'image de fond:
Spoiler
L'url de l'image de fond : http://twinxeon.no-ip.org/img/clock160.png
Je me suis mis depuis peu au JavaScript pour mon site, et l'absence d'une gestion simple de l'héritage me manque beaucoup je dois dire...
Envie de s'y mettre ? le développement d'APK Android, c'est ici !
@eagle: j'ai l'impression que t'es du genre obstiné non ?On ou tu t'es plongé dans l'objet donc tu ne défends que ce paradigme.. Y'a de l'idée aussi dans le paradigme itératif, pour des besoins simples
![]()
Vous pouvez me contacter sur dyonysos[at]archoslounge.net.
La nétiquette: elle peut toujours servir
L'administrateur a toujours raison !
Respecte mon autorité !
@dyonysos : un peu ^^ Disons que je suis un utilisateur convaincu, et que pour son cas la POO rendrait son code plus lisible ^^
@twinxeon : je dois en ce moment même bosser sur un projet Java Spring Hibernate anotations avec un bonus une interface en Flex ^^ Je m'amuse comme un fou pour retrouver d'où viennent les bugs (surtout ceux liés à la configuration de tout ce bazar ^^)
sinon, pour Va84 : voilà ton appli en 2 classes, c'est plus ou moins sale, mais le code fonctionne et permet de voir la POO ^^ (j'ai pas codé le convertisseur de devises)
CalcuConv.java :
Calculatrice.java :Code:package com.calcuconv.main; import java.util.Scanner; import com.calcuconv.calculatric.Calculatrice; public class CalcuConv { /** * @param args */ public static void main(String[] args) { Calculatrice maCalculatrice = new Calculatrice(); System.out.println(" Veuillez faire un choix :"); System.out.println(" 1 : Calculatrice"); System.out.println(" 2 : Convertisseur de monnaies"); System.out.println(" 3 : Aide"); Scanner sc = new Scanner(System.in); int retour = sc.nextInt(); switch (retour) { case 1: System.out.println("Choisissez l'opération :"); int operation = sc.nextInt(); System.out.println("Veuillez entrer le premier membre de l'opération"); int nb1 = sc.nextInt(); System.out.println("Puis le second"); int nb2 = sc.nextInt(); System.out.println("Le résultat de l'addition est :"); System.out.println(maCalculatrice.opération(operation, nb1, nb2)); break; case 2: break; case 3: System.out.println("Bonjour et bienvenue dans l'aide, cette aide sera completee plus tard\n Le modulo est un calcul qui permet de dire combien reste t-il \n apres une division, dont le resulat est un entier.\n Voici un exemple :\n le modulo de 9 divise par 4 est 1 car 4 fois 2 est egal a 8 et il reste 1 car 9-8 = 1 \n Je vous le rappelle encore et encore pour l'instant le calcul des :\n - Additions \n - Soustractions \n - Division \n - Multiplication \n - Modulo \n Ne se termine pas completement le resultat est un entier. Exemple :\n 10 divise par 3 est egal a 3.333333...Ici 10 divise par 3 sera egal a 3 \n car comme je vous l'ai dit le resultat est un entier. Maintenant passons a la pratique du programme \n Ce programme fonctionne uniquement avec des chiffres si vous entrez une \n lettre le programme buggera. Maintenat voyons les differents module : \n - Calculatrice \n - Convertisseur \n - Aide , la ou nous sommes \n Donc commencons par la calculatrice c'est tres simple a utiliser il y a juste a suivre les instructions ,\n pour le convertisseur de monnaie des monnaies seront rajoutees au fur et a mesure.\n\n"); break; default: break; } } }
(j'ai fait ça vite fait hein, donc s'pas ultra propre, m'enfin, ça démontre un peu le fonctionnement^^)Code:package com.calcuconv.calculatric; public class Calculatrice { public int opération(int operation, int nb1,int nb2){ switch (operation) { case 1: return addition(nb1, nb2); case 2: return soustraction(nb1, nb2); case 3: return multiplication(nb1, nb2); case 4: return division(nb1, nb2); case 5: return modulo(nb1, nb2); } return 0; } public int addition(int nb1, int nb2) { return nb1 + nb2; } public int soustraction(int nb1, int nb2) { return nb1 - nb2; } public int division(int nb1, int nb2) { return nb1 / nb2; } public int multiplication(int nb1,int nb2) { return nb1*nb2; } public int modulo(int nb1,int nb2) { return nb1%nb2; } }
IOIO: Machine à tout faire
ta classe CalcuConv n'est qu'un launcher qui réalise l'adaptation d'interface pour STDIN, je l’appellerai bien StdinLauncher ou CalculatriceStdinAdapter...
Sinon, pour aller plus loin dans l'analyse orientée objet de cette calculatrice, je remarque qu'il faudra éditer la classe Calculatrice à chaque implémentation d'une nouvelle opération binaire. Or ce type d'opération retourne un nombre, et prend deux nombres en arguments. J'aurai donc ajouté une interface BinaryOperationDelegate :
Spoiler
et implémenté la Calculatrice sous la forme d'un sélecteur, avec par exemple un fichier de configuration externe (un peu lourd pour une simple Calculatrice, mais l'idée ici est de montrer la beauté de la POO) avec chargement dynamique du code en fonction de l'opération choisie. Ton launcher devra donc adapter le format de résultat au type d'affichage désiré (formatage des doubles en notation comptable par exemple).
On peut aller très loin dans l'abstraction comme ça![]()
Envie de s'y mettre ? le développement d'APK Android, c'est ici !
Et personnellement j'aurais mis la calculatrice statique, mais j'ai voulu simplifier la lecture ^^
(mais réponses très intéressantes :) )
Et sinon, Va84, tu t'y retrouve?
Dernière modification par eagleofdeath13 ; 24/04/2012 à 15:22:30.
IOIO: Machine à tout faire
Moi, pour le HTML/CSS, j'utilise PSPad, gratos et génial!
Meiner Unterschrift ist in Deutsch, um sie auf den Wecker zu gehen. :)
Aller, je vous mets un petit jeu en C réalisé hier soir
Oui, je sais, j'aurais pu faire mieux, mais je l'ai codé comme exemple pour des débutants, et j'ai fait ça très (très) vite :p
Voilà, amusez-vous bien !Code:#include <stdio.h> #include <stdlib.h> void playIA(int *tasChoisi, int *nbAlu); int tas[6] = {1, 2, 3, 4, 5, 6}; int main() { int tasChoisi = 1, nbAlu = 0, joueur = 1, continuer = 1, nbJoueurs = 2; printf("Un ou deux joueurs ? "); scanf("%d", &nbJoueurs); while (continuer) { printf("\n\n"); if (joueur) printf("joueur 1\n"); else printf("joueur 2\n"); printf("tas : 1 2 3 4 5 6\n"); printf("allumettes : %d %d %d %d %d %d\n", tas[0], tas[1], tas[2], tas[3], tas[4], tas[5]); if (nbJoueurs == 2 || (nbJoueurs == 1 && joueur == 1)) { do { printf("Votre coup (tas [ENTER] puis nombre d'alumettes [ENTER])"); scanf("%d", &tasChoisi); scanf("%d", &nbAlu); } while (tas[tasChoisi - 1] < nbAlu); } else if (nbJoueurs == 1 && joueur == 0) { playIA(&tasChoisi, &nbAlu); } tas[tasChoisi - 1] -= nbAlu; if(tas[0] + tas[1] + tas[2] + tas[3] + tas[4] + tas[5] == 0) continuer = 0; joueur = 1 - joueur; } printf("\n\n"); if (joueur) printf("le joueur 1 a gagné !\n"); else printf("le joueur 2 a gagné !\n"); return 0; } void playIA(int* tasChoisi, int* nbAlu) { int i; for (i = 5; i > 0; i--) { if (tas[i] >= 1) { *tasChoisi = i + 1; *nbAlu = 1; return; } } }
@ncommiss : t'as essayé Eclipse ou Netbeans? Ils ont des options plutôt sympa pour ça ;)
IOIO: Machine à tout faire
Eclipse : Essayé mais pas convaincu
NetBeans : Connais pô
Meiner Unterschrift ist in Deutsch, um sie auf den Wecker zu gehen. :)
Il y a actuellement 1 utilisateur(s) naviguant sur cette discussion. (0 utilisateur(s) et 1 invité(s))