Information à propos d'un langage de programmation Java.

Voir le sujet précédent Voir le sujet suivant Aller en bas

Information à propos d'un langage de programmation Java.

Message  Ivan1992 le Mer 2 Mai - 1:10

Bonjour ( ou plutôt bonsoir ),
Je me permet de mettre un sujet sur la programmation Java.
En effet, je suis en BTS Services Informatiques aux Organisations et j'ai beaucoup de mal à comprendre la programmation Objet sachant que je n’ai fait que du procédurale pour le moment.
Un de vos membres m'a autorisé à placer ce topic ici.

Extrait de mon code :
J'ai mis en Rouge ce qui ne fonctionne pas et je ne comprend pas,sachant que je veux que le programme principal affiche : " Personne 1 = Michon et son prénom = Eric ".

public class Personne {


public static String Nom;
public static String Prenom;

// Constructeur Personne
Personne(String Nom, String Prenom)
{
this.Nom = Nom ;
this.Prenom = Prenom;

}
// Methode du prénom
public String AfficheNom(String Nom)
{
Nom = "Michon";
return Nom;
}
public String AffichePrenom(String Prenom)
{
Prenom = "Ericl";
return Prenom;
}
// Methode d'affichage d'une personne
public void AffichePersonne(String Nom, String Prenom,int Age)
{
System.out.println("Le nom de l'employé est "+ Nom + ",son prénom"+ Prenom +"et son age est "+ Age );

}

public static void main(String[] args){
Personne p1 = new Personne("","");
System.out.println("Personne 1 = "+ p1.AfficheNom() +" et son prénom est = "+ p1.AffichePrenom() );

Ivan1992
Parleur
Parleur

Messages : 16
Date d'inscription : 02/05/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Information à propos d'un langage de programmation Java.

Message  Cocobard le Mer 2 Mai - 1:29

C'est avec moi que tu as parlé programmation ingame niark


Voici comment j'ecrirais cela :

Code:

public class Personne
{

//Les attributs ne sont pas statiques : chaque personne a des valeurs differentes
//Les attributs ne prennent pas de majuscules (c'est une bonne pratique pour ne pas les confondre avec des classes)
protected String nom;
protected String prenom;
//je rajoute l'age, note que c'est en general une erreur de stocker l'age d'une personne, en effet cette donnée devient fausse au bout d'un an au maximum :) Stocke plutôt la date de naissance ;)
protected int age;

// Constructeur Personne
public Personne(String Nom, String Prenom, int Age)
{
this.nom = Nom ;
this.prenom = Prenom;
this.age = Age;

}

// Méthode d'affichage d'une personne (pas de majuscule non plus en debut de methode)
//on va utiliser les données encapsulées dans l'objet personne pas besoin d'arguments
public void affichePersonne()
{
//affichage simple
System.out.println("Le nom de l'employé est " + this.nom + ",son prénom " + this.prenom + "et son age est " + this.age );
}

//Méthode main
public static void main(String[] args)
{
Personne p1 = new Personne("Dulac","Lancelot",29);
p1.affichePersonne();
}



Il faut que tu comprennes qu'une methode qui n'ajoute pas de données a un objet n'a pas besoin d'arguments (en general), par exemple quand tu fais afficher une personne, l'objet p1 sait deja quel est le nom, prenom, age de la personne, pas besoin de les lui repasser.

Par contre si tu veux faire des "setters" la tu auras besoin d'arguments :

Code:


public void setNom(String newNom)
{
this.nom = newNom;
}


Enfin c'est peut être désolant, mais en général on code toujours en anglais Wink


Dernière édition par Cocobard le Mer 2 Mai - 1:33, édité 1 fois

__________________
No anni ancuetas
"Ah le printemps! La nature se réveille, les oiseaux reviennent, on crame des mecs."

Cocobard
Bot floodeur
Bot floodeur

Messages : 3645
Date d'inscription : 17/05/2010
Personnage principal : Calarielle

Voir le profil de l'utilisateur http://metateam.forumactif.org

Revenir en haut Aller en bas

Re: Information à propos d'un langage de programmation Java.

Message  Ivan1992 le Mer 2 Mai - 1:32

Bon, l'explication est claire.
Merci à toi.
Je vais essayer de trouvé par moi même pour désormais :
- Saisir le prénom d'une personne ( avec Scanner dans une méthode)
- Récupérer le prénom dans le main.
- Afficher le prénom dans le main.

Je t’envoie mon code si j'ai quelques soucis. Si j'y arrive je te l'enverrai quand même pour que tu corriges des fautes qui selon toi sont importantes ( comme autres que les majuscules ou l'âge par exemple).


Ivan1992
Parleur
Parleur

Messages : 16
Date d'inscription : 02/05/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Information à propos d'un langage de programmation Java.

Message  Ivan1992 le Mer 2 Mai - 2:02

Pour le statique, j'ai pas compris parce que dés que je met en protected ou public cela ne fonctionne pas.

Voilà ce que j'ai fait , sa fonctionne correctement cependant, j'ai réussi avec un doute là où ici ( dans le main ):
a = p1.setNom(nom);
b = p1.setPrenom(prenom);
Je me demande pourquoi faut - il mettre " nom " et pas "newNom".
idem pour le prénom.


Code:

import java.util.Scanner;
public class Personne {

   
   public static String nom;
   public static String prenom;
   
   // Constructeur Personne
   Personne(String nom, String prenom)
   {
      this.nom = nom ;
      this.prenom = prenom;
      
   }

public String setNom(String newNom)
   {
      Scanner sc= new Scanner(System.in);
      System.out.println("Saisir un nom :");
      newNom = sc.nextLine();   
      return newNom;
   }
   public String setPrenom(String newPrenom)
   {
      Scanner sc= new Scanner(System.in);
      System.out.println("Saisir un prenom :");
      newPrenom = sc.nextLine();   
      return newPrenom;
   }
/************* PROGRAMME PRINCIPAL *******************/
// Methode d'affichage d'une personne

   public static void main(String[] args){
      String a,b;
      
      //Création de l'objet P1 issue de Personne, contenant donc le constructeur de Personne.
      Personne p1 = new Personne("","");
      a = p1.setNom(nom);
      b = p1.setPrenom(prenom);
      System.out.println("Nom : "+ a +"\nPrenom : "+ b );
   }
}


J'attends que tu me dises ce que tu en penses.

Ivan1992
Parleur
Parleur

Messages : 16
Date d'inscription : 02/05/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Information à propos d'un langage de programmation Java.

Message  Cocobard le Jeu 3 Mai - 1:10

Voila je pense que tu n'as pas saisi encore bien le concept d'encapsulation des données.

Pour resumer tu dois ecrire une classe qui est un peu le plan de fabrication de tes objets (on dit des instances de ta classe).


Par exemple :


Code:


public Class Voiture
{
//Chaque voiture aura un kilometrage different
protected double kilometrage;
//Chaque voiture aura une date d'achat differente.
protected long achatTimestamp;
//Le nombre de voiture sur le marché lui sera statique : il ne depend pas de chaque voiture.
public static int nombreSurMarche;
//par exemple je definis le nombre d'or (un truc qui ne change jamais)
public static final double phi = (Math.sqrt(5)+1)/2.0;


//cela donne pour le constructeur :
public Voiture(double kilom, long dateachat)
{
//la valeur kilometrage de *la* (this) voiture que je créé prend celle passée en argument
this.kilometrage = kilom;
//idem pour la valeur d'achat :
this.achatTimestamp = dateachat;

/* Note : jamais tu n'as d'argument en lvalue, cela n'a aucun sens de mettre dans cette methode "dateachat = XYZ;" */

//enfin je crée une voiture : il y en a une de plus sur le marché!
Voiture.nombreSurMarche++;
/* je n'ai pas utilisé this car c'est une variable commune (statique) : elle ne concerne pas que la voiture que je crée mais l'ensemble des voitures */

}


//Methode "setter" (qui definit une valeur de l'objet)
public void setKilometrage(double nouvelleValeur)
{
this.kilometrage = nouvelleValeur;
}

//Methode "getter" (qui permet d'obtenir la valeur d'un attribut) ; note : pas d'arguments!, mais on retourne un double.
public double getKilometrage()
{
return this.kilometrage;
}

//une methode pour tester
public static void main(String args[])
{
Voiture voitureAToto = new Voiture(200,new GregorianCalendar().getTimeInMillis());
Voiture voitureAMoi = new Voiture(150000,new GregorianCalendar().getTimeInMillis());

voitureAToto.setKilometrage(33845.25);
System.out.println("la voiture à toto a roulé : " + voitureAToto.getKilometrage() );

}

}



Si tu as une methode pour "scanner" une valeur tu peux l'utiliser dans une methode :

Code:


public void scanKilometrage()
{
this.kilometrage = Scanner.scanDouble();
}




J'espere que ça t'aidera Smile

__________________
No anni ancuetas
"Ah le printemps! La nature se réveille, les oiseaux reviennent, on crame des mecs."

Cocobard
Bot floodeur
Bot floodeur

Messages : 3645
Date d'inscription : 17/05/2010
Personnage principal : Calarielle

Voir le profil de l'utilisateur http://metateam.forumactif.org

Revenir en haut Aller en bas

Re: Information à propos d'un langage de programmation Java.

Message  Contenu sponsorisé Aujourd'hui à 15:08


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum