parametre avec valeur par defaut c'est possible? - Java - Programmation
Marsh Posté le 05-06-2003 à 14:13:52
Je confirme les dires de ton formateur. Java ne permet pas de donner aux paramètres des valeurs par défaut comme en C++. Par contre ne va pas tout recopier !! Tu peux juste surcharger ta methode avec moins de parametres et appeler ta methode par defaut.
Ex :
Code :
|
Marsh Posté le 05-06-2003 à 14:17:47
senternal a écrit : Je confirme les dires de ton formateur. Java ne permet pas de donner aux paramètres des valeurs par défaut comme en C++. Par contre ne va pas tout recopier !! Tu peux juste surcharger ta methode avec moins de parametres et appeler ta methode par defaut.
|
...ce qui ne s'appelle pas surcharger, mais bon!
Marsh Posté le 05-06-2003 à 14:28:52
El_gringo a écrit : |
Ah c'est nouveau ? T'appelles ca comment ? Si tu me dis redefinition je ne suis pas d'accord. Rédéfinition implique une sous-classe dans laquelle ta methode est implementée differemment.
Marsh Posté le 05-06-2003 à 14:31:33
El_gringo a écrit : |
correct
EDIT : quoique, j'ai comme un doute
Marsh Posté le 05-06-2003 à 14:32:56
senternal a écrit : |
La surcharge, c'est ce que t'appelles redéfinition.
Ce que tu lui disais de faire, c'est de faire une autre méthode, tout bêtement.
Marsh Posté le 05-06-2003 à 14:34:31
senternal a écrit : |
quand dans une sous-classe, on redefinit une methode qui a les meme param que dans la super-classe, la c'est clair que c'est de la surcharge ?
Mais redefinir une fonction avec d'autres params ... pas sur
Marsh Posté le 05-06-2003 à 14:43:36
overriding != overloading
vous vous embrouillez avec vos traductions à la noix
Marsh Posté le 05-06-2003 à 14:46:00
bobuse a écrit : |
Enfin moi ce que j'en dis...
overloading ou surcharge
Utiliser un identificateur pour se référer à plusieurs éléments dans le même cadre. Dans Java, vous pouvez surcharger des méthodes mais pas des variables ni des opérateurs.
overriding ou redéfinition
Fournit une mise en oeuvre de méthode différente dans une sous-classe de la classe ayant défini la méthode à l'origine.
Marsh Posté le 05-06-2003 à 14:54:42
senternal a écrit : |
...exact, désolé!
Marsh Posté le 05-06-2003 à 18:14:53
ok merci les gars, j'avais d'ailleur par moi meme découvert cette methode. Par contre, il semblerait qu'il ne soit pas possible de faire ceci (si vous avez une soluce, welcome boy):
Code :
|
PS : mon formateur m'impose de ne JAMAIS utiliser de variable globale, sous peine de lourde pertes de points au TP.
Marsh Posté le 05-06-2003 à 18:17:44
ta formation, elle a duré 10 minutes
Marsh Posté le 05-06-2003 à 18:19:40
Alors Java c'est de l'objet. C'est pas parce que tu as deux classes dans le même fichier source qu'elle vont tout connaître parfaitement. Pour faire un main(), il faut que tu déclares la fonction main() dans ta classe. Exemple :
Code :
|
Essaie de bien capter la notion d'objet et de POO avant de t'attaquer direct à tout ça.
Marsh Posté le 05-06-2003 à 18:19:50
the real moins moins a écrit : |
non elle a commencé il y a 3 semaines, jusqu'en avril prochain (AFPA Rouen)
Marsh Posté le 05-06-2003 à 18:21:32
giova a écrit : |
La formation d'un an
Marsh Posté le 06-06-2003 à 13:19:37
ReplyMarsh Posté le 06-06-2003 à 13:22:01
merci pour tes réponses Taiche.
j'attaque la prog objet dans un mois.
Marsh Posté le 06-06-2003 à 13:44:59
giova a écrit : |
Bin qu'une formation Java d'un an, ça fait un peu beaucoup quand même
Mais je comprends pas un truc : vous avez attaqué Java AVANT les notions de POO ?
Marsh Posté le 06-06-2003 à 15:00:28
Taiche a écrit : |
à priori c pas une formation intensive, et pas pour des gens experimentés en prog hein
Marsh Posté le 06-06-2003 à 15:06:06
the real moins moins a écrit : à priori c pas une formation intensive, et pas pour des gens experimentés en prog hein |
Ah oké. M'enfin j'pige toujours pas pourquoi y a Java avant POO, dans leur planning Tant pis.
Marsh Posté le 06-06-2003 à 15:18:59
Taiche a écrit : |
si y'a un cours tous les 2 mois ça se tient
moi j'ai commencé à faire du java en "traduisant" un truc que j'avais fait avant en php... ben c'etait pas tres objet mais ça marchait
Marsh Posté le 06-06-2003 à 17:01:42
giova a écrit : merci pour tes réponses Taiche. |
Le problème c'est que java ce n'est QUE objet , et en programation objet, une variable globale ça n'a pas bcp de sens.
Le C++ tient ça du C non ? Quelqu'un pourrait me confirmer ? Car moi je dis ça mais bon...
Marsh Posté le 06-06-2003 à 17:04:41
the real moins moins a écrit : moi j'ai commencé à faire du java en "traduisant" un truc que j'avais fait avant en php |
.......
non rien
Marsh Posté le 06-06-2003 à 18:49:04
on a commencé par la programation procedurale (conditionnelles, types, variables, fonctions), le prochain "chapitre" sera la POO.
oui le niveau est vraiment faible, en fait tout depend du centre AFPA ou tu vas, et il faut savoir que les delais d'attente pour etre pris sont de plus de 1 an. J'ai malgres tout accepté d'y aller, car j'en avais marre d'attendre, et si j'ai choisi une formation aussi longue c'est pour arretter de programmer comme un bricoleur, et donc bien maitriser toutes les etapes de conception d'un soft, la methodologie de programmation, bref programmer propre, que mes softs utilisent un minimum de ressource, et ne pas perdre de temps lors d'un developpement a cause d'une conception qui a la base n'est pas optimale.
malheureusement, je suis assez septique sur l'avenir de cette formation, j'ai encore 2 semaines pour me rétracter.
Sachant que certains stagiaires, ne savent pas faire la difference entre un repertoire et un fichier (vous comprennez ainsi mon septicisme)... Je suis persuadé que l'on ne va que survoller les chapitres, et qu'en fin de compte, j'obtiendrai le meme resultat en achetant un livre sur Java. Le seul point positif, et que l'on obtient un certificat nous donnant un status de developpeur Java .
deja ca fait 2 semaines que je m'emmerde a mort, alors dans mon coin je me fais mes classes, ma boite a outils quoi...
A la base, j'ai demandé une formation C++ car ce qui m'interresse, c'est le pilotage de peripherique. Mais je n'arrive pas a trouver de personne qui:
1- soit competante techniquement pour m'orienter
2- connaisse les formations dispo par rapport a ce que je recherche.
j'ai bossé 4 ans en tant que programmeur dans de l'automatisme audiovisuelle, et j'ai un Bac STI Elec.
voila.
Marsh Posté le 06-06-2003 à 20:14:23
deltaden a écrit : |
chui pas d'accord
une variable globale, c'est une variable de classe, et au meme titre que les methodes statiques, ca a un sens, c'est une variable qui est propre a une classe, pas a ses instances.
Marsh Posté le 06-06-2003 à 20:30:41
souk a écrit : |
SI on est d'accord,
toi tu parle de variable de classe, évidement que ça a un sens.
En C/C++ tu peux définir des variables/méthodes qui sont globales: elles n'appartiennent à aucunes classes. C'est de ça que je parlais
Marsh Posté le 06-06-2003 à 21:03:38
pkoi pas tout simplement comme ca :
Code :
|
Marsh Posté le 06-06-2003 à 22:02:55
oui biensur que l'on peut faire comme ca, mais dans ton code, tu precise une valeur fixe, et non une variable déclarée dans une autre classe que maClasse
Marsh Posté le 06-06-2003 à 22:23:28
giova a écrit : oui biensur que l'on peut faire comme ca, mais dans ton code, tu precise une valeur fixe, et non une variable déclarée dans une autre classe que maClasse |
dans toutes les solutions données, la variable était déclarée dans la classe ...
j'ai loupé un truc ?
Marsh Posté le 06-06-2003 à 22:58:45
DarkLord a écrit : |
je pense avoir bien intégré la notiopn d'objet
je dis pas que je maitrise mais bon
Marsh Posté le 06-06-2003 à 23:01:00
giova a écrit : on a commencé par la programation procedurale (conditionnelles, types, variables, fonctions), le prochain "chapitre" sera la POO. |
bah si t'as deja plus que des notions en prog, pour le java tu te prends un bon bouquin sur java (voir la faq) + ça http://hillside.net/patterns/DPBook/DPBook.html et t'es paré
Marsh Posté le 07-06-2003 à 00:26:44
benou a écrit : |
[++] c'est tout bonnement la méthode standard et _équivalente_ a la notation C++.
D'ailleur on retrouve ce type de bêbête avec le lambda calcul (où, si on est puriste, on a le droit qu'à un seul paramètre par expression).
Marsh Posté le 07-06-2003 à 08:03:05
deltaden a écrit : |
oops, au temps pour moi
Marsh Posté le 07-06-2003 à 10:45:41
Taiche a écrit : |
À l'école j'ai eu ça
Du coup je faisais du procédural en JAVA (c'est pas facile ! )
Marsh Posté le 07-06-2003 à 12:14:04
benou a écrit : |
La différence avec mon truc, c'est que tu vires une variable privée pour mettre direct la constante dans la méthode. Alors OK, dans cet exemple c'est éviedemment bien mieux, mais de manière générale, quitte à hardcoder des valeurs, autant les foutre en variables privées passke le jour où tu changes la valeur dans ton prog pour une raison X, bin t'es pas dans la merde
'fin moi j'dis ça, j'me trompe p'têt
Marsh Posté le 07-06-2003 à 23:26:36
Taiche a écrit : |
Je pense que les valeurs par défaut doivent être les valeurs triviales (genre 0, 1, chaine vide, etc.). Sinon, si ce sont les "valeurs courantes" du paramètre (genre par défaut le zoom est à 2x etc.) alors il doit exister un moyen des les régler dans l'application (sinon, tu risques de recevoir une lettre enflamée de Bertrand Meyer).
Marsh Posté le 07-06-2003 à 23:41:33
nraynaud a écrit : |
Bin oui mais si c'est des valeurs que t'as pas envie d'exposer ?
OK pour la valeur publique avec le zoom, où des getters/setters peuvent exister pour changer. Mais dans le cas d'une variable propre au dev ou à l'admin, genre une taille de buffer max que, lorsque tu fabriques ton appli tu positionnes à 1024 pis un jour t'apprends (ou tu testes) que la valeur optimale c'est 2048, bin une variable privée c'est quand même bien pratique. Non ?
Marsh Posté le 08-06-2003 à 00:32:46
Taiche a écrit : |
Si je crois aussi.
Je suis en train de constater que j'utilise jamais 2 fois le même nom pour une méthode.
Ah oui tiens, je suis en train de repenser à Meyer (encore oui, désolé c'est le meilleur bouquin que j'ai lu jusqu'a maintenant) : en gros il existe 2 types d'arguments à une fonction, les paramètres du traitement (les trucs indispensables) et les options (les trucs qui justement, ont souvent une valeur par défaut).
Son principe est le suivant : on passe jamais une option à une fonction, elle ira la chercher toute seule dans la classe (l'option possède des setter/getter). On passe bien entendu les paramètres du traitement, ils sont un peu là pour ça.
C'est pourquoi :
1) ta solution est pas mal et je me suis un peu égaré dans le fonctionnel
2) Eiffel ne possède ni surcharge (de toute façon c'est impossible avec la covariance) ni surcharge avec un nombre d'arguments différents.
Marsh Posté le 08-06-2003 à 02:01:18
nraynaud a écrit : |
Faudra que j'pense à le lire un jour, Meyer
Marsh Posté le 12-06-2003 à 10:59:55
Taiche a écrit : |
C'est tout à fait logique : il faut avoir assimilé les notions de boucles, de test conditionnel, de fonction avant de se lancer dans la programmation objet. Et on peut tout à fait se restreindre au procédural en Java avec de bien faibles contraintes (en gros, on met static partout, sans trop avoir à comprendre pourquoi, au moins au début).
Pourquoi Java alors qu'on se limite au procédural ? Parce que ça évite d'avoir à apprendre un 2ème langage une fois qu'on passe à la POO.
Tu vas me dire, il y a d'autres langages qui supportent les deux (procédural et objet), contrairement à Java. Mais C++ est un langage abominable quand on apprend à programmer, et Ada, qui reste sans doute un des meilleurs langages, voire le meilleur langage, pour l'apprentissage, est souvent dénigré au prétexte qu'il n'est pas diffusé dans l'industrie (en fait, il est massivement utilisé dans quelques secteurs de l'industrie, et le reste de l'industrie l'ignore pour des raisons un peu obscures).
Marsh Posté le 05-06-2003 à 13:20:20
Salut.
Je viens de débuter une formation afpa de dev Java, je découvre le language.
Et a la facon dont mon formateur me presente ce language, et bien j'ai l'impression que c'est un language qui est opposé ma ma logique de programmation.
Je commence a envisager, d'abandonner la formation. J'aimerai donc que vous eclairiez un peu ma lanternes sur certains aspects de ce language, qui me semblent plus noirs que noir.
par exemple :
Je souhaite déclarer une fonction avec un parametre (disons int) qui puisse avoir une valeur par defaut.
aller un petit exemple plus parlant qu'un long discourt :
public static mafonction (int toto = 1)
{
System.out.println(toto);
}
main(String[] args)
{
mafonction();
mafonction(2);
}
resultat affiché :
1
2
Evidemment si je compile ce code, le compilateur me jete. Je demande donc a mon formateur comment declarer une fonction avec parametre par defaut.
il me dit que si l'argument represente une reference ca n'est pas possible (ok ca se comprend), puis il me dit que si le parametre est une primitive , alors il faut
déclarer en double la fonction comme ce qui suit :
public static mafonction (int toto = 1)
{
System.out.println(toto);
}
public static mafonction ()
{
int toto = 1;
System.out.println(toto);
}
main(String[] args)
{
mafonction();
mafonction(2);
}
resultat affiché :
1
2
Je lui répond alors que je suis géné de devoir copier/coller des blocs de code, car si on doit modifier ce bloc, il faut reporté la modif sur toutes ses copies,
et chacun c'est que c'est le meilleur moyen pour se planter (ou oublie de modifier l'un des bloc).
il me répond : bah c'est ca java.
Alors voila, j'aimerai que vous me confirmiez on ou contre disez ses dires, car là je suis sur le luc!!!