Bienvenue invité ( Connexion | Inscription )

> Java pour les nuls, ou Tecka va tout planter
Tecka
posté 8 Mar 2008, 15:48
Message #1


Boulet on Tour


Groupe : Ancien de la Team
Messages : 6085
Inscrit : 14-Dec-04
Lieu : Blainville sur l'eau
Membre n° 191



C'est le grand jour je me lance, ras le bol de passer pour un gros noob
je me lance dans la programmation mais il faut que je reprenne tout
depuis le début , ma dernière expérience en programmation remonte
à la calculatrice Casio FX850-P. Il me faudrait en premier un environnement
pour faire du Java, vous avez quelque chose de simple et gratos ?
Et si en plus il y a un petit didacticiel c'est encore mieux happy.gif
Sinon des titres de livres genre "le Java pour les nuls".
Merci smile.gif

Edit :Je viens de DL Eclipse 3.3 et NetBeans 6.0.1 wink.gif

Ce message a été modifié par Tecka - 8 Mar 2008, 16:20.


--------------------
CoD4//Black Ops:iClanlTecka
MacPro Xéon Quad 2,66 ghz 6 go de ram ATI Radeon HD 5770 1Go+2 Raptor150Go+500Go
MacBookPro Rétina 15' 2,8 Ghz i7 16Go ram NVIDIA GeForce 650M 1Go
IN VINO VERITAS IN VINAS VERY TÔT
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
atarxerxes
posté 10 Mar 2008, 21:18
Message #2


Marathon Man


Groupe : Ancien de la Team
Messages : 10953
Inscrit : 20-Nov-04
Lieu : Paris, XIe
Membre n° 160



Trop tard tongue.gif (mais bon tu peux les mettre, ça peut compléter). N'hésitez pas à souligner si un truc est pas clair, j'ai du mal à définir la barrière "ceci est évident"/"ceci demande certaines connaissances préalables".


Leçon 0 : le langage Java

Un langage de programmation est un langage dans lequel s'exprime le développeur pour donner des ordres à la machine, afin d'automatiser certaines tâches.
A l'origine (moderne, donc Unix) de la programmation était le C.

C pas compliqué
Le C est un langage à programmation impérative classique. La motivation à la base de la création du C est d'avoir une manière facile, puissante et efficace de donner des ordres à la machine. Le C est la base de Unix.
Il se caractérise principalement par les particularités suivantes.
Le développeur écrit des fichiers en texte clair (de l'anglais simplifié et un peu bizarre). On appelle ceux-là les fichiers sources.
La machine ne comprend pas directement ce qu'écrit le développeur dans ces fichiers (sinon on lui donnerait des ordres directement à la voix). Il faut d'abord les transformer dans le seul langage que comprend un ordinateur : le code assembleur (ce sont directement une suite d'appels à des instructions du processeur). Le traducteur, qui s'occupe de produire ce code assembleur à partir des fichiers sources est un compilateur.
Pour le C, un fichier source a pour extension ".c" et un fichier source compilé ".o" (en général).
Rappel : une fonction, en mathématique comme en programmation est une boîte noire qui prend un certain nombre de paramètres pour produire un retour à parti de ceux-ci. Par exemple, on peut définir que une fonction "somme" qui prend deux paramètres a et b, et dont le retour est a+b.
Le C n'est qu'une suite d'appels de fonctions : il existe une fonction spéciale (main(...)) dont le nom, les paramètres et le retour sont toujours les mêmes, par convention. Cette fonction sera toujours le point d'entrée d'une application en C : chaque fois qu'on demande l'exécution d'un code compilé C, c'est sa méthode main(...) qui est appelée.
Donc un programme C se décompose comme cela :
- on demande l'exécution du code compilé
- cela appelle la fonction main(...) du code compilé
- les différentes instructions à l'intérieur de la méthode main(...) sont exécutées
- la méthode main(...) renvoie sa valeur de retour, qui constitue le code retour du code compilé (on peut par exemple trouver ce code retour écrit dans la console lorsqu'une application plante).
Le but d'un programme est d'effectuer un traitement d'informations de manière automatique (c'est de là que vient le terme français "informatique"). Or les informations ne sont pas abstraites, elles se traduisent en types simples (entier, chaînes de caractères) ou plus compliqués (un ensemble de types simples).
En C, par défaut on ne trouve que des types simples (int pour un entier, char pour un caractère) et une manière de définir des types compliqués à partir de ces types simples.
A ce propos, que sont les instructions? En fait il s'agit de tout ordre complet, donc presque tout en C. Les instructions sont séparées par un ";" en général
(sauf quelques unes qui ne nécessitent pas de séparateur).
"int a;" est une instruction qui définit une variable de type entier (une variable est une boîte où stocker une valeur)
"a = 4;" est une instruction qui affecte la valeur 4 à la variable a de type entier.
De la même manière l'appel à une fonction est une instruction :
"int c; c = somme(3,5);" en définissant la fonction somme(...) comme expliqué ci-dessus. On peut aussi écrire "c = somme(a,5);" en réutilisant la valeur qui est stockée en a (4) pour produire la somme de 4 et de 5 et la stocker dans la variable c.
On peut séparer ses fichiers sources en plusieurs fichiers ".c", puis ensuite appeler des méthodes d'un autre fichier, une fois qu'on l'a importé (c'est-à-dire qu'on a dit au début du fichier qu'on allait l'utiliser).
Bien sûr on peut donc utiliser des types plus compliqués en c, par exemple on peut définir un type "point" comme étant un float (nombre à virgule) pour l'abscisse et un float pour l'ordonnée. Pour cela on utilise le mot-clef "struct" :
struct point {
float abscisse;
float ordonnee;
}
On peut même aller plus loin en créant un type compliqué qui utilise d'autres types compliqués. Par exemle, un cercle peut être défini comme un point et un float pour le rayon.

Les limites du C
Les problèmes du C sont les suivants :
- très peu de conventions : les conventions ne sont pas des contraintes en programmation, mais des garde-fous qui permettent au développeur d'être plus direct en le guidant plus efficacement. Il est évident qu'il est plus facile d'utiliser le code c d'un autre développeur si son code se rapproche du nôtre
- il n'est pas évident de créer une documentation claire et formattée
- dans le même esprit de collaboration entre développeurs, lorsqu'on veut utiliser un type compliqué C développé par un autre, il faut déjà récupérer la définition du type, puis les fonctions qui les utilisent (souvent dans un autre fichier). Et le pire est que la moindre adaptation est impossible : si un développeur a défini le type "rectangle" et a créé les fonctions de calcul basique associés (périmètre, surface,...), si on créé le type "carré" on aimerait bien pouvoir réutiliser les fonctions de calcul des rectangles mais on ne peut pas : le compilateur C nous dira que le carré n'est pas un rectangle du point de vue des types C
- problème plus technique : la gestion des réservations mémoires (car il faut bien stocker les informations quelque part dans l'ordinateur pendant l'exécution du code) est lourde et contraignante, surtout à une époque où la mémoire coule à flot dans nos ordinateurs. En plus dès qu'on se trompe, ou si on oublie de réserver la place ou assez de place, l'application se plante avec un message d'erreur incompréhensible. En effet le c ne fournit pas de vrai moyen de gérer les erreurs pendant l'exécution du code
Le langage Java est une réponse à ces défauts.

Les caractéristiques de base du Java
Java est un langage objet. Un objet est à comprendre au sens de composant, comme des pièces de Lego : il est facile d'utiliser ensemble les composants, et il est facile de s'approprier un composant défini par quelqu'un d'autre pour le spécialiser. Un exemple près de nous : le composant "champ de texte" Cocoa (écrit en Objective-C, un autre langage objet) est utilisé dans les applications Cocoa. Il suffit à Apple de l'enrichir d'une fonction de vérification de l'orthographe, pour qu'une simple recompilation de notre application hérite de la fonctionnalité.
Le maître mot ici est "hériter". En fait en Java tous les types compliqués seront en relation de filiation avec un autre type compliqué. Ce sont ces types compliqués qu'on appelle des objets (le code définissant ces objets étant une classe, l'équivalent du code source simple de C) (par la suite on ne distinguera plus trop une classe d'un objet, la classe étant plutôt le type, et un objet l'instanciation de la classe, c'est-à-dire une variable de type la classe).
L'ancêtre commun à tous ces objets, puisqu'il en faut bien un est la classe Object. Il n'a pas beaucoup de code associé réutilisable puisqu'il ne fait pas grand chose. Une autre classe intéressante, qui descend directement de Object, est String, qui représente une chaîne de caractères. Par exemple, on va pouvoir en Java définir l'objet MyString, une chaîne de caractère dont la première lettre serait toujours en majuscule. En indiquant que la classe MyString hérite de la classe String, on peut en particulier utiliser la méthode qui calcule la longueur d'une String sur un objet MyString. C'est donc beaucoup plus facile de réutiliser du code existant pour l'enrichir et l'adapter à nos besoins particuliers. Une classe Java, c'est donc un peu à la fois le struct C, plus les fonctions associées directement intégrées dans le même fichier, plus la possibilité de réutiliser les fonctions pour une classe fille. En Java, les fonctions s'appellent plutôt des méthodes (essentiellement par convention).
Les conventions en Java ont été définies depuis le début :
- les noms de classe commencent par une majuscule : Object
- les noms des variables, des méthodes commencent par une minuscule : Object monObjet;
-...
Un outil est directement intégré à Java pour facilement produire une documentation HTML de son code : la Javadoc. Pour moi c'est la clarté et la complétude de la Javadoc produite par Sun (qui a inventé le Java) pour les très très nombreuses classes de base du langage qui a facilité son développement : pour savoir comment marche la méthode substring de la classe String, il suffit de taper "java String substring" dans google pour tomber en une demi-seconde sur la documentation.
Enfin la gestion des erreurs à l'exécution est directement intégrée dans le système. Comment est-ce possible? En fait la compilation Java ne produit pas un code dans un langage compréhensible par l'ordinateur (il produit du byte code et pas du code assembleur), la machine a besoin d'un traducteur intermédiaire qui s'appelle la JVM (Java Virtual Machine). En fait, sous le capot, la JVM n'est qu'un petit programme, qui lit les fichiers classes compilés (les .class) comme s'il s'agissait de fichiers textes comportant des suite d'instructions qu'il a à exécuter. Et ce petit programme n'est pas bête : si les instructions qu'on lui demande d'exécuter plantent, il nous avertit en langage presque humain. Quand on oublie d'initialiser un objet, au lieu d'un "segmentation fault" à la C, il nous dit "NullPointerException" et nous indique dans quel endroit du code le problème est survenu. On dit que Java intègre la gestion des Exceptions.
Concernant la réservation mémoire, Java simplifie à moitié le problème : en C il faut allouer et libérer la mémoire à la main. En Java on a juste à allouer la mémoire (avec une syntaxe simplifiée par rapport au C), la libération de la mémoire se fait automatiquement (en fait un process de la JVM, le garbage collector (ou ramasse-miettes en français), regarde de temps en temps les objets en mémoire : ceux qui ne sont plus utilisables sont détruits). La syntaxe pour allouer de la mémoire est la suivante (par exemple pour un objet Object) : "Object objet = new Object();".
Mais me direz-vous, tout est donc objet en Java? En fait pour des raisons de performances, Sun a laissé dans le système quelques types simples à la C (ils sont appelés types primitifs en Java pour les distinguer des objets, et sont une poignée seulement). Les types primitifs s'appellent en général comme en C : int, float, char,... On les distingue, en tant que type, des objets car ils sont écrits en minuscules (alors que le type d'un objet aura sa première lettre en majuscule). Pour les types simples, comme en C, il n'est pas question de méthodes ou d'allocation mémoire : ils sont identiques en fonctionnalités et en utilisation aux mêmes types simples en C. Il est un peu compliqué quand on commence le Java à comprendre cette bivalence entre types primitifs et objets. Par exemple, on a à la fois un type primitif "int" et un objet "Integer" : le premier est un type primitif, le second un objet à part entière (qui est en fait défini en interne comme un attribut de type int et un ensemble de méthode de travail sur les Integer). Dans la classe Integer, on a des méthodes pour récupérer un int à partir d'un Integer et inversement.


Prochaine leçon : rapide présentation des différentes librairies utiles fournies avec Java et réalisation d'un premier programme Java avec Eclipse.


[edit]J'avais oublié quelques trucs à la fin

Ce message a été modifié par atarxerxes - 11 Mar 2008, 07:15.


--------------------
Ordis: iPad 2 16Go 3G ; MacbookAir 11" Core i7 2GHz 8 Go RAM SSD128Go + Dell 2405FPW; Mini C2D2.0GHz media center / Accessoires: Wii , XBox360, PS3, 3DS, iPhone 4 / Télé: Numericable HD Box -> Samsung LE32R51B + Denon AVR-3808 + 5.0 Triangle
About.me
"Je n'ai jamais aimé que moi / Et je reste sans lendemain", H.F. Thiéfaine
"Reality is that which, when you stop believing in it, doesn’t go away", Philip K. Dick
Go to the top of the page
 
+Quote Post
W@T3RC00L3d
posté 12 Mar 2008, 22:04
Message #3


Jonathan Hart


Groupe : Membre
Messages : 514
Inscrit : 14-Mar-04
Lieu : Val d'Oise (95)
Membre n° 34
Section(s) : JdS



CITATION(atarxerxes @ 10 Mar 2008, 21:18) *
Et le pire est que la moindre adaptation est impossible : si un développeur a défini le type "rectangle" et a créé les fonctions de calcul basique associés (périmètre, surface,...), si on créé le type "carré" on aimerait bien pouvoir réutiliser les fonctions de calcul des rectangles mais on ne peut pas : le compilateur C nous dira que le carré n'est pas un rectangle du point de vue des types C.

Et l'héritage?


--------------------
MacBook Pro 2GHz, 2x1Go de RAM, ATI Radeon X1600 128Mo;
PC portable 1Go de Ram, X600, P4, XP.

L'amour du risque
<- Attention, Troll Inside.
Ca sert à rien mais j'ai trouvé ça joli.
Go to the top of the page
 
+Quote Post

Les messages de ce sujet
- Tecka   Java pour les nuls   8 Mar 2008, 15:48
- - Grimaldus   Ben justement java pour les nuls est un bon débuts...   8 Mar 2008, 16:45
- - Ogur   Je bosse sous Eclipse et pour le moment je n'a...   8 Mar 2008, 16:57
- - atarxerxes   Comme plate-forme de développement je plébiscite a...   8 Mar 2008, 17:09
- - Tecka   tu fait comme ça » « Alt+7 et shift + Alt +7   8 Mar 2008, 18:07
- - atarxerxes   Ah ok, parce que le raccourci standard n'est p...   8 Mar 2008, 18:18
- - Gamoul   Pour faire les accolades { }, c'est Alt Parent...   8 Mar 2008, 18:21
- - atarxerxes   Effectivement Gamoul, c'est bien ça dans TextE...   8 Mar 2008, 19:02
- - Ogur   Les buts viennent tout seuls Atar J'avais au...   8 Mar 2008, 20:46
- - atarxerxes   Le problème (et je parle d'après mon expérienc...   8 Mar 2008, 21:00
- - Gamoul   Je suis d'accord, si on a pas le temps de vrai...   8 Mar 2008, 21:10
- - Diurn   pourquoi tu commences avec le java ( juste par cur...   9 Mar 2008, 05:23
- - Tecka   Je fais ça pour ma culture personnel sans vraiment...   9 Mar 2008, 10:22
- - Tecka   Je fais ça pour ma culture personnel sans vraiment...   9 Mar 2008, 10:24
- - Tecka   Je fais ça pour ma culture personnel sans vraiment...   9 Mar 2008, 10:23
- - Tecka   Je fais ça pour ma culture personnel sans vraiment...   9 Mar 2008, 10:25
- - Tecka   Je fais ça pour ma culture personnel sans vraiment...   9 Mar 2008, 10:21
- - Gamoul   lol t'as même pas encore commencé le java que ...   9 Mar 2008, 13:06
- - DeviSor   LOL le Tecka quoi. Posté 5 fois de suite, c'es...   9 Mar 2008, 13:10
- - atarxerxes   Voilà qui faisait ramer le forum ce matin par ses ...   9 Mar 2008, 13:21
|- - Diurn   CITATION(atarxerxes @ 9 Mar 2008, 12:21) ...   9 Mar 2008, 16:33
- - Grimaldus   Je trouve Tecka trop balaise car il post 5fois et ...   9 Mar 2008, 14:23
- - Sire Diablo III   Ah ouais carement En fait le titre de Tecka devra...   9 Mar 2008, 14:32
- - atarxerxes   L'assembly code, c'est bien beau, mais tou...   9 Mar 2008, 16:55
- - atarxerxes   A la limite Tecka ça m'intéresse de m'entr...   10 Mar 2008, 07:47
|- - Tecka   CITATION(atarxerxes @ 10 Mar 2008, 07:47)...   10 Mar 2008, 08:45
- - Sire Diablo III   Si je trouve le temps ça pourrait m'intéresser...   10 Mar 2008, 08:52
- - Gamoul   Moi aussi, la dernière fois que j'ai fait du j...   10 Mar 2008, 12:53
- - atarxerxes   Vendu alors, j'essaie de réfléchir à une premi...   10 Mar 2008, 13:12
- - Gamoul   Cool, merci   10 Mar 2008, 13:28
- - CantKillemAll   Y'a de la place pour la session JPLNBA* ? ...   10 Mar 2008, 17:33
- - Ogur   Atar, j'ai les transparents et exercices de mo...   10 Mar 2008, 20:17
- - atarxerxes   Trop tard (mais bon tu peux les mettre, ça peut c...   10 Mar 2008, 21:18
|- - W@T3RC00L3d   CITATION(atarxerxes @ 10 Mar 2008, 21:18)...   12 Mar 2008, 22:04
- - Ogur   impec, atar! concernant eclipse, je vais jeter...   11 Mar 2008, 14:12
- - CantKillemAll   Bon, je viens d'apprendre quelques trucs, là.....   11 Mar 2008, 17:20
- - DBSor   Très intéressant atarxerxes, je ne connais absolum...   11 Mar 2008, 22:51
- - atarxerxes   Ba l'Objective-C 2.0 c'est encore plus con...   11 Mar 2008, 23:13
- - DBSor   Je continue à (essayer de) gérer ma mémoire à l...   11 Mar 2008, 23:36
- - Gamoul   C'est pas un concept généralisé comme en java.   12 Mar 2008, 22:26
- - atarxerxes   Ouais, en C on peut toujours ruser mais c'est ...   13 Mar 2008, 07:17
- - DBSor   D'où le C++   13 Mar 2008, 09:12
- - Tecka   La suite..................   17 Mar 2008, 16:11
- - atarxerxes   Vu que y'a le printemps du cinéma ce soir et d...   17 Mar 2008, 17:05
- - Tecka   Pfffffffff si maintenant les profs sèchent les cou...   17 Mar 2008, 18:30
- - ZenZen   Bon alors déjà, bonjour à tous... (je suis de reto...   17 Mar 2008, 20:14
- - Diurn   j'aime bien le gros jeu de mot en première pag...   17 Mar 2008, 20:55
- - Ogur   en effet   18 Mar 2008, 11:55
- - appleseed   Bon il suffit que je ne passe plus pendant un mome...   19 Mar 2008, 14:37
- - atarxerxes   Leçon 1 : à la découvert des packages (pour la pa...   24 Mar 2008, 14:11
- - CantKillemAll   Merci Maître   24 Mar 2008, 19:46
- - Tecka   Merde j'ai séché le cours mais c'est bon m...   29 Mar 2008, 22:01
- - atarxerxes   Comme l'a indiqué appleseed, les livres de O...   29 Mar 2008, 22:29
- - Darknight670   Suppression du message pour non respect de la char...   1 Apr 2008, 16:42
- - atarxerxes   Ici on n'aime pas les étrangers pirates, étran...   1 Apr 2008, 21:50
- - Darknight670   Pas la peine d'être agressif De plus je poss...   2 Apr 2008, 17:06
|- - atarxerxes   CITATION(Darknight670 @ 2 Apr 2008, 18:06...   2 Apr 2008, 17:14
|- - Darknight670   CITATION(atarxerxes @ 2 Apr 2008, 18:14) ...   2 Apr 2008, 17:48
- - Darknight670   Sinon pour le Java: http://java.developpez.com/co...   2 Apr 2008, 17:11
- - DBSor   Ok, tu peux faire un bisou à Atar maintenant (tu v...   2 Apr 2008, 21:07
- - Tecka   MMMMMMMMMMHHHHHHHHH   2 Apr 2008, 21:17
- - appleseed   Sinon il y a des livres gratuits sur java - pense...   4 Apr 2008, 14:14
- - atarxerxes   Pour la suite des leçons, vous devrez attendre déb...   13 Apr 2008, 09:32
- - Tecka   RE: Java pour les nuls   6 May 2008, 06:52
- - atarxerxes   Leçon 2 : le MVC/l'architecture N-tiers Quand...   17 May 2008, 11:03
|- - fre2x3   CITATION(atarxerxes @ 17 May 2008, 12:03)...   20 May 2008, 16:27
- - Tecka   aaaaaaaah enfin la suite. Merci mon lapin   20 May 2008, 15:25
- - DBSor   Intéressant, étrange (pour un pur jus assembleur/p...   20 May 2008, 15:59
- - atarxerxes   Leçon 3 : le cahiers des charges Notre but est de...   10 Jun 2008, 18:36
- - Tecka   oups j'ai séché le cours ......... Il faut se ...   12 Jun 2008, 05:26
- - Ogur   Atar, petite question à la sauvette car je n'a...   16 Jun 2008, 23:28
- - atarxerxes   Il faudrait voir le code exact. "Assembler...   17 Jun 2008, 06:17
- - Ogur   En effet en ce qui concerne la mémoire (avec les 6...   17 Jun 2008, 13:31
- - atarxerxes   Peut-être du nouveau bientôt !   25 Sep 2008, 11:56
- - Tecka   aaaaaaaaah la reprise des cours après les vacances   25 Sep 2008, 13:02
- - atarxerxes   Pour cette rentrée, on va s'éloigner un peu de...   29 Sep 2008, 16:11
- - Gamoul   Cool   29 Sep 2008, 16:22
- - Heimdal50   Ça c´est une bonne nouvelle J´ai tendance à tout ...   29 Sep 2008, 16:50
- - atarxerxes   Enfin, là je disais que l'application te serai...   29 Sep 2008, 17:18
- - W@T3RC00L3d   Bonne idée, je vais suivre ça, je connais encore m...   29 Sep 2008, 17:47
- - atarxerxes   Cette fois je vais essayer de finir l'applicat...   30 Sep 2008, 08:06
- - atarxerxes   L'application qu'on va réaliser en pas à p...   5 Oct 2008, 12:23
- - Ogur   Tiens, ça m'intéresse de savoir comment coder ...   5 Oct 2008, 14:32
|- - atarxerxes   CITATION(Ogur @ 5 Oct 2008, 15:32) Tiens,...   5 Oct 2008, 15:10
|- - Acid   CITATION(Ogur @ 5 Oct 2008, 15:32) Tiens,...   5 Oct 2008, 19:09
- - Sire Diablo   Pourquoi tu veux coder un cervelet ? Ok vous savez...   5 Oct 2008, 14:44
- - atarxerxes   Sommaire évolutif et approximatif :les installatio...   5 Oct 2008, 15:56
- - atarxerxes   A noter qu'une servlet peut produire vraiment ...   5 Oct 2008, 21:54
- - Ogur   Okay ! Donc c'est bien le serveur qui exéc...   5 Oct 2008, 23:14
- - atarxerxes   En fait Java sur un serveur tomcat c'est un pe...   6 Oct 2008, 06:02
- - atarxerxes   Sommaire évolutif et approximatif :les installatio...   6 Oct 2008, 07:13
- - Heimdal50   C´est nickel, ton flux rss d´actualité des jeux   6 Oct 2008, 15:27
- - atarxerxes   En fait c'est pas si HS que ça, je vais utilis...   6 Oct 2008, 15:45
- - Heimdal50   Pour Tomcat et Eclipse, pas de problèmes; par cont...   6 Oct 2008, 19:13
- - atarxerxes   Effectivement j'ai peut-être oublié de dire qu...   6 Oct 2008, 19:41
- - Heimdal50   Non quand tu installes MySQL (du site Mac4ever), t...   6 Oct 2008, 19:43
- - atarxerxes   En tout cas sur mon mini, c'était déjà telleme...   6 Oct 2008, 19:46
- - Heimdal50   J´ai configuré MySQL Administrator comme suit: Pré...   6 Oct 2008, 19:52
- - atarxerxes   Alors attention : - une seule application/processu...   6 Oct 2008, 20:23
- - Heimdal50   C´est corrigé   6 Oct 2008, 20:37
2 Pages V   1 2 >


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 8 Jun 2024 - 08:26