CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Difficultés en Java

]linkdu64[
]linkdu64[
Niveau 8
24 février 2018 à 17:37:19

Bonjour tout le monde je suis étudiant maintenant en S2 IUT informatique et je commence à me rendre conte que je rencontre quelques difficultés en programmation.

En S2 je commence à travailler sur eclipse (j'ai fait de l'ada et un peu de python en S1) pour l'instant on nous demande de savoir coder des TAD et réaliser des tests, mais j'ai l'impression d'être un peu perdu sur les bases de la programmation objet.
En cour je pense avoir compris mais en réalité j'ai beaucoup de mal à refaire les TP seul.

Malheureusement je sais pas trop comment m'améliorer en Java et comprendre les bases.
J'ai aussi beaucoup de mal à travailler chez moi je me retrouve souvent devant une page vide sans savoir quoi faire.

Je me dit souvent qu'il fraudais que je commence un projet seul et apprendre par moi même mais je sais pas quoi faire et par ou commencer.

Donc si vous auriez une idée de ce que je devrais faire pour apprendre les bases de la prog objet se serais sympas.

Merci

whiteapplex
whiteapplex
Niveau 18
24 février 2018 à 18:31:42

Il y a plein de projet typique mais il suffit de s'inspirer des jeux classiques.
-Tictactoe
-Pendu
-Echecs
-Dame
C'est normal d'être devant une page blanche un certain temps, c'est ce temps là qu'il faut utiliser pour structurer une application. En terme de programmation en général la façon de procéder et assez intuitive: Tu donnes une entrée au programme et tu attends une sortie.
Du coup la programmation pour ce genre de petit projet c'est "Quelles sont mes entrées? Quelles sont mes sorties? Comment structurer le système qui permet d'arriver à ce résultat ? Comment représenter les objets de ce système avec des objets de POO?"
Si on prend Tic Tac Toe:
Entrée : Un utilisateur choisi une case (si tu n'as pas d'interface graphique, alors on va dire qu'il choisi un nombre entre 1 et 9, chaque nombre correspond à une case).
Sortie: La case sélectionnée est activée avec le symbole de l'utilisateur qui l'a sélectionné.
Système: Il faut un système d'affichage de cette grille, un système qui vérifie le placement (validité/victoire/défaite), un système qui place, un système qui accepte l'entrée. Et vu qu'on a beaucoup de système et qu'on est dans un jeu avec plusieurs séquences, il faut un système qui gère tout ça dans le bon ordre.
Voilà, avec ça tu as tes méthodes à programmer (respectivement: display(), check(where, user), place(where, user), input(), main())
Et si on veut rajouter des objets: Une case est un objet, une grille est un tableau 2 dimensions de cases, Un utilisateur possède un symbole (et un nom éventuellement). Il faut du coup un système pour initialiser ces objets, et qui les possède en meme temps (Un objet "PartieDeJeu" )
Bref, c'est une façon de faire, il y en a plein, si tu as du mal avec l'objet tu peux déjà essayer de faire ce genre de petits logiciels de base :ok:

tbol
tbol
Niveau 20
24 février 2018 à 19:35:23

Tu as pas les bases donc tu es paumé. Tu peux les reprendre pas à pas par exemple avec ce livre gratuit pour apprendre facilement Java en s'amusant : https://java.developpez.com/livres-collaboratifs/javaenfants/
Fait tous les exercices, puis commence à programmer des jeux 2D par toi même.

Message édité le 24 février 2018 à 19:35:50 par tbol
]linkdu64[
]linkdu64[
Niveau 8
24 février 2018 à 20:26:02

Le 24 février 2018 à 19:35:23 tbol a écrit :
Tu as pas les bases donc tu es paumé. Tu peux les reprendre pas à pas par exemple avec ce livre gratuit pour apprendre facilement Java en s'amusant : https://java.developpez.com/livres-collaboratifs/javaenfants/
Fait tous les exercices, puis commence à programmer des jeux 2D par toi même.

Merci beaucoup oui c'est clairement les bases que je n'est pas acquise. Je vais essayé de me pencher sur ce livre pendant les vacances voir si ça me permet de progresser et de régler mon problème.

noisyz_
noisyz_
Niveau 5
25 février 2018 à 10:46:43

Va sur openclassroom, c'est hyper bien expliqué !

]linkdu64[
]linkdu64[
Niveau 8
27 février 2018 à 13:07:48

J'ai commencé à lire ce livre (ch5) et il y a deux notions que je ne comprend pas tout à fait le this et le void. J'ai du mal à savoir quand les utiliser.

sirzesx
sirzesx
Niveau 7
27 février 2018 à 14:25:22

Void est un type de retour d'une méthode , dans le cas ou elle ne retourne rien : Method ToString par exemple pour l'affichage.

This est utilisé dans la cas où on appel la classe actuel.

JmEclateAuCrac
JmEclateAuCrac
Niveau 10
27 février 2018 à 22:25:17

Le 27 février 2018 à 14:25:22 sirzesx a écrit :
Void est un type de retour d'une méthode , dans le cas ou elle ne retourne rien : Method ToString par exemple pour l'affichage.

This est utilisé dans la cas où on appel la classe actuel.

J'ajouterai que le void (signifiant néant en anglais) est effectivement un type de retour d'une méthode. En cours, tu as du voire la difference entre PROCEDURE et FONCTION. Une fonction va réaliser un traitement et renvoyer un objet.
Example :

public boolean isBigger(int a, int b){if(a>b){ return true; } else { return false; } }
public est le domaine de la fonction (ici tout le monde y a accés)
boolean est le type de retour de la fonction (ici un booléen vrai ou faux)
isTrue est le non de la fonction
int a et int b sont les arguments de la fonction (de type int = integer = entier)

Une procédure EST une fonction qui va réaliser un traitement MAIS qui ne renvois pas de résultat (type de retour void).
Par example :


public void incrementerA(){a = a+1;

}

Ici on ajoute 1 a la variable a. Pas besoin de renvoyer de résultat.

Pour terminer, on pourrait transformer la procedure incrementerA pour la transformer en fonction:


public int incrementerA(){a = a+1; return a;

}

Ici on ajoute 1 à a et on retourne la variable a de type int.

PS: dans les deux derniers example, on part du principe que a est déclaré dans le code. Procedure et Fonction ont des avantages et des inconvenients mais ce n'est pas le sujet ici :)

JmEclateAuCrac
JmEclateAuCrac
Niveau 10
27 février 2018 à 22:33:25

Pour le this, c'est plus compliqué a mon sens. Cela a voir avec l'objet courant. Regarde déja ça: https://fr.wikibooks.org/g/wiki/Programmation_Java/this

Pour faire simple, le this représente la classe actuel.
par exemple imaginons la classe Personnage.



public Class Personnage{
int vie = 100;
String nom = "barbatruc";

//constructeur de la classe

public Personnage(String nom, int vie){
 this.nom = nom;
 this.vie = vie;

 }
}



Un personnage possede de la vie et un nom.
Dans le constructeur de personnage tu as ces 2 parametres: age et vie.
Or les parametres du constructeur et tes parametres de classes ont le meme nom. Pour differencier le parametre de classe et le parametre du constructeur, tu appel this.

this.nom = nom -> le parametre "nom" de la classe actuel reçoit le parametre "nom" du constructeur.
En effet, tu distingue les 2 graces au mot clef this.

Viandopain
Viandopain
Niveau 6
27 février 2018 à 22:36:10

Le 27 février 2018 à 14:25:22 sirzesx a écrit :
Void est un type de retour d'une méthode , dans le cas ou elle ne retourne rien : Method ToString par exemple pour l'affichage.

This est utilisé dans la cas où on appel la classe actuel.

Depuis quand la méthode toString() est un void ? Aux dernières nouvelles, elle retourne un ... String.

Et this est surtout utilisé pour appeler des objets instancier dans la classe. On voit souvent ce mot clef dans les constructeurs.

Sinon si tu as du mal avec les mots clefs, je te conseille vraiment de lire cet article de fond en comble. C'est la base pour bien comprendre le Java :
http://baptiste-wicht.developpez.com/tutoriels/java/mots-reserves/

Mention spéciale au volatile et au native que je n'ai jamais utilisé. Mais enfin c'est toujours une bonne piqure de rappel :ok:

Message édité le 27 février 2018 à 22:37:05 par Viandopain
Viandopain
Viandopain
Niveau 6
27 février 2018 à 22:47:28

Le 27 février 2018 à 22:33:25 JmEclateAuCrac a écrit :
Pour le this, c'est plus compliqué a mon sens. Cela a voir avec l'objet courant. Regarde déja ça: https://fr.wikibooks.org/g/wiki/Programmation_Java/this

Pour faire simple, le this représente la classe actuel.
par exemple imaginons la classe Personnage.



public Class Personnage{
int vie = 100;
String nom = "barbatruc";

//constructeur de la classe

public Personnage(String nom, int vie){
 this.nom = nom;
 this.vie = vie;

 }
}



Un personnage possede de la vie et un nom.
Dans le constructeur de personnage tu as ces 2 parametres: age et vie.
Or les parametres du constructeur et tes parametres de classes ont le meme nom. Pour differencier le parametre de classe et le parametre du constructeur, tu appel this.

this.nom = nom -> le parametre "nom" de la classe actuel reçoit le parametre "nom" du constructeur.
En effet, tu distingue les 2 graces au mot clef this.

Oui alors ça c'est pour moi une mauvaise habitude (même si c'est qu'un exemple). Même si JmEclateAuCrac a très bien expliqué le this, c'est quand même pas top.
Dans les variables de classe, on ne les instancie jamais aussi brutalement. On les mets en privés et on les modifie avec des setters lorsqu'on appelle la classe ailleurs (dans un main par exemple).
Si on veut leur attribuer une valeur par defaut, on le fait avec un constructeur "vide".

public Class Personnage{
private int vie;
private String nom;

//constructeur de la classe

public Personnage(String nom, int vie){
 this.nom = nom;
 this.vie = vie;
 }

public Personnage(){
 this.nom = "barbatruc";
 this.vie = 100;
 }
// Getter et setters 
public int getVie() {
        return vie;
}
public void setVie(int vie) {
	this.vie = vie;
}
public String getNom() {
	return nom;
}
public void setNom(String nom) {
	this.nom = nom;
}
	
}

Mais bon, je chipote :noel:

Et d'ailleurs on voit aussi le this dans les getters :oui:

Message édité le 27 février 2018 à 22:50:42 par Viandopain
JmEclateAuCrac
JmEclateAuCrac
Niveau 10
27 février 2018 à 22:53:54

Le 27 février 2018 à 22:47:28 Viandopain a écrit :

Le 27 février 2018 à 22:33:25 JmEclateAuCrac a écrit :
Pour le this, c'est plus compliqué a mon sens. Cela a voir avec l'objet courant. Regarde déja ça: https://fr.wikibooks.org/g/wiki/Programmation_Java/this

Pour faire simple, le this représente la classe actuel.
par exemple imaginons la classe Personnage.



public Class Personnage{
int vie = 100;
String nom = "barbatruc";

//constructeur de la classe

public Personnage(String nom, int vie){
 this.nom = nom;
 this.vie = vie;

 }
}



Un personnage possede de la vie et un nom.
Dans le constructeur de personnage tu as ces 2 parametres: age et vie.
Or les parametres du constructeur et tes parametres de classes ont le meme nom. Pour differencier le parametre de classe et le parametre du constructeur, tu appel this.

this.nom = nom -> le parametre "nom" de la classe actuel reçoit le parametre "nom" du constructeur.
En effet, tu distingue les 2 graces au mot clef this.

Oui alors ça c'est pour moi une mauvaise habitude (même si c'est qu'un exemple). Même si JmEclateAuCrac a très bien expliqué le this, c'est quand même pas top.
Dans les variables de classe, on ne les instancie jamais aussi brutalement. On les mets en privés et on les modifie avec des setters lorsqu'on appelle la classe ailleurs (dans un main par exemple).
Si on veut leur attribuer une valeur par defaut, on le fait avec un constructeur "vide".

public Class Personnage{
private int vie;
private String nom

//constructeur de la classe

public Personnage(String nom, int vie){
 this.nom = nom;
 this.vie = vie;
 }

public Personnage(){
 this.nom = "barbatruc";
 this.vie = 100;
 }
// Getter et setters 
...
}

Mais bon, je chipote :noel:

Exact, cette approche est a privilegier pour garder son code clean :ok:

]linkdu64[
]linkdu64[
Niveau 8
07 avril 2018 à 13:57:57

Merci beaucoup pour l'aide, j'ai beaucoup plus de facilité maintenant. Et je cherche un projet à réaliser pour approfondir.

J'ai essayé de commencer à créer un jeu sur Unity en C# mais c'est peut être encore un peu tôt. Donc si vous avez des idées que se soit des petits jeux simple à réalisé en Java ou autre juste pour apprendre je prend.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment