Urgent ! Aide en Java

Fermé
yoyo1985 Messages postés 11 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 10 décembre 2004 - 24 nov. 2004 à 00:37
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 - 5 déc. 2007 à 00:17
Salut !!

je dois faire un programma avec l'énoncé suivant mais je ne sais pas trop comment m'y prendre... donc toutes aides sont les bienvenues...

merci beaucoup


Créer une classe Voiture avec les membres suivants :
• Marque ;
• Année ;
• Couleur (utiliser une énumération) ;
• Une variable statique pour compter le nombre d’objets créés ;
• Deux constructeurs qui incrémentent tous les deux la variable statique. Le premier constructeur ne reçoit pas de paramètre et le deuxième en reçoit ;
• Une méthode statique qui retourne le nombre d’objets créés ;
• La méthode toString.

La classe Voiture implémente l’interface Comparable. La comparaison sera basée sur l’année. Une structure, tableau ou ArrayList, contiendra un certain nombre d’objets Voiture.

Le programme de test doit contenir un menu avec les options suivantes :
• créer une voiture et l’ajouter à la structure ;
• afficher le nombre de voitures créées ;
• comparer les deux premières voitures de la structure ;
• enlever une voiture de la structure (voiture à l’indice i) ;
• afficher les voitures contenues dans la structure ;
• quitter.

Il faut signaler une erreur si une option ne peut pas être exécutée à un moment donné.
A voir également:

9 réponses

choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
24 nov. 2004 à 08:03
Salut yoyo

c'est un programme très simple à réaliser, n'ai pas peur, lance toi...

dès que tu as quelques lignes de codes à nous montrer, n'hésite pas, montre-les nous, on te conseillera avec plaisir... Mais tu comprendra que nous ne pouvons pas tout faire à ta place..

Maintenant, je comprends pas très bien ce que tu veux dire par utiliser une énumaration pour les couleurs ????????????

Deuxième chose, le fait d'incrémenter le nombre de voitures créées dans la classe Voiture est à mon avis impossible, vu que lorsque une instance de Voiture sera créée, la variable statique reprendra sa valeur initiale ....

Chouba,
Pochard d'assaut .. 
0
yoyo1985 Messages postés 11 Date d'inscription dimanche 26 septembre 2004 Statut Membre Dernière intervention 10 décembre 2004 1
24 nov. 2004 à 23:43
salut !!

j'ai donc fais les deux classes suivantes... le problème, c'est que je dois implanter l'interface comparable et je ne sais pas comment faire...

merci de l'aide que vous pourrez m'apporter...

Classe Voiture :

public class Voiture
{
private enum couleur {rouge, vert, jaune, noir, autre};
private String m_marque;
private int m_annee, m_couleur;
private couleur m_app;
public static int m_nbrvoiture = 0;

/* Premier constructeur (sans paramètres) */
public Voiture()
{
m_nbrvoiture++;
}
/* Deuxième constructeur (avec paramètres) */
public Voiture (String marq, int an,int color)
{
m_marque = marq;
m_annee = an;
m_nbrvoiture++;
m_couleur = color;
}

/* Méthode Couleurs */
public couleur Couleurs()
{
switch (m_couleur)
{
case 1:
m_app = couleur.rouge;
break;
case 2:
m_app = couleur.vert;
break;
case 3:
m_app = couleur.jaune;
break;
case 4:
m_app = couleur.noir;
break;
case 5:
m_app = couleur.autre;
break;
default :
}
return m_app;
}

/* Méthode pour retourner le nombre de voitures contenues dans la liste */
public int getNbrvoiture()
{
return m_nbrvoiture;
}

/* Méthode pour retourner l'annéee de la voiture */
public int Annee()
{
return m_annee;
}

/* Méthode compareTo permettant de comparer les 2 premières voitures selon leur année */
public static boolean compareTo(Voiture v1, Voiture v2)
{
return v1.Annee() == v2.Annee();
}

/* Méthode toString */
public String toString()
{
String vehicule = "Une " + m_marque + " de l'année " + m_annee + " et de couleur " + Couleurs() + "\n";

return vehicule;
}
}


Classe Test :

import java.util.*;

public class Test
{

public static void main (String[] args) /* Début du programme principal */
{
int choix = 0, annee, i, suppr = 0, couleur;
String marque;
Voiture vehi = new Voiture();
ArrayList<Voiture> voiture = new ArrayList<Voiture>();
Scanner scan = new Scanner (System.in);


while (choix != 6)
{
System.out.println ("\n********** Menu **********");
System.out.println ("1. Créer une voiture et l'ajouter à la liste");
System.out.println ("2. Afficher le nombre de voitures crées");
System.out.println ("3. Comparer les deux premières voitures de la liste");
System.out.println ("4. Enlever une voiture de la liste (voiture à L'indice i)");
System.out.println ("5. Afficher les voitures contenues dans la liste");
System.out.println ("6. Quitter");

choix = scan.nextInt();

switch (choix)
{
case 1: /* Méthode permettant la création d'un véhicule (marque, année et couleur) */
System.out.println ("De quelle marque est la voiture que vous voulez ajouter ?");
marque = scan.next();
System.out.println ("Année de la voiture ? (sous la forme AAAA)");
annee = scan.nextInt();
do
{
System.out.println ("De quelle couleur est la voiture (Saisir le n° de la couleur) : \n 1. Rouge \n 2. Vert \n 3. Jaune \n 4. Noir \n 5. Autre");

couleur = scan.nextInt();
if (couleur < 1 || couleur > 5)
System.out.println("Erreur ! Entrer un chiffre compris entre 1 et 5"); /* Message d'avertissement */
else
{
Voiture auto = new Voiture(marque, annee, couleur); /* Création du véhicule */
voiture.add (auto); /* Ajout du véhicule dans la liste */
}
}
while (couleur < 1 || couleur > 5);
break;

case 2:
System.out.println ("Il y a " + (vehi.getNbrvoiture()-(1+suppr)) + " voiture créées"); /* Affichage du nombre de véhicules créés */
break;

case 3:
if (voiture.size() >= 2)
{
Voiture v1 = voiture.get(0); /* Première voiture de la liste */
Voiture v2 = voiture.get(1); /* Deuxième voiture de la liste */

if (Voiture.compareTo(v1,v2)) /* Comparaison des 2 premiers véhicules suivant l'année */
System.out.println ("Les deux premières voitures sont de la même années");
else
System.out.println ("Les deux premières voitures ne sont pas de la même années");
}
else
System.out.println("Vous devez avoir au moins deux voitures de créé"); /* Message d'avertissement */
break;

case 4:
if (voiture.size() == 0)
System.out.println ("Aucune voiture n'est présente dans la liste"); /* Message d'avertissement */
else
{
System.out.println ("Quelle voiture voulez-vous enlever de la liste?");
System.out.println ("De la numéro 1 à " + voiture.size());

i = scan.nextInt();

if (i < 1 || i > voiture.size())
System.out.println("Entrer un choix entre 1 et " + voiture.size());
else
{
suppr++;
voiture.remove (i-1); /* Suppression d'un véhicule de la liste à l'indice i-1 */
}
}
break;

case 5:
System.out.println ("La liste des voitures:"); /* Affichage de la liste des véhicules */
System.out.println (voiture);
break;

default :
if (choix != 6)
System.out.println ("Erreur ! Merci de saisir un nombre entre 1 et 6"); /* Message d'avertissement */

}
}
}
}
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
25 nov. 2004 à 07:50
salut

pour implémenter Comparable


public class Voiture implements Comparable


ça c'est pour la déclaration ...

Le fait d'implémenter Comparable t'oblige à "Overrider" la méthode "compareTo(Object o)"

ici le mode d'emploi ...

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html

Chouba,
Pochard d'assaut .. 
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
25 nov. 2004 à 08:08
/* Méthode compareTo permettant de comparer les 2 premières voitures selon leur année */ 
public static boolean compareTo(Voiture v1, Voiture v2) 
{ 
return v1.Annee() == v2.Annee(); 
} 


cette méthode donc n'est pas valable, puisque l'interface Comparable te fournit déjà une méthode avec une signature différente, te renvoyant un "int"...


Petit truc aussi, essaye de suivre les conventions

Méthode pour retourner l'annéee de la voiture */ 
public int Annee() 
{ 
return m_annee; 
} 


devrait devenir

Méthode pour retourner l'annéee de la voiture */ 
public int getAnnee() 
{ 
return m_annee; 
} 


tu utilises une variable "m_couleur" superflue, il te suffit de modifier la méthode

/* Méthode Couleurs */ 
public couleur Couleurs(int currentColor) 
{ 
switch (currentColor) 
{ 
case 1: 
m_app = couleur.rouge; 
break; 
case 2: 
m_app = couleur.vert; 
break; 
case 3: 
m_app = couleur.jaune; 
break; 
case 4: 
m_app = couleur.noir; 
break; 
case 5: 
m_app = couleur.autre; 
break; 
default : 
} 
return m_app; 
} 


à ce moment là, il suffit d'appeler cette méthode dans le constructeur

* Deuxième constructeur (avec paramètres) */ 
public Voiture (String marq, int an,int color) 
{ 
m_marque = marq; 
m_annee = an; 
m_nbrvoiture++; 
this.couleur(color); 
} 



Prends l'habitude aussi de prévoir le moyen de modifier les différentes variables dans le cas où tu dois utiliser le constructeur sans arguments. Pour ce faire, il suffit de créer pour chaque variable une methode de type "set...." et tant qu'on y est pour chaque variable une méthode de type "get....".

Maintenant, j'ai encore toujours un méchant doute concernant l'incrémentation du nombre de voitures créées, tu peux faire le test, mais j'ai plus que l'impression que tu peux créer un million d'objet Voiture, le résultat sera toujours "1" ... Maintenant si l'incrémentation se fait dans la classe test, d'accord ...

Bonne continuation ...

Chouba,
Pochard d'assaut .. 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Slt !
alors voilà supposons ke je dispose d'un fichiers texte ds lequel se trouve la description de taches ; je voudrais savoir comment lire ce fichier ligne par ligne en plaçant chaque ligne ds un buffer( chaque line représente une tache!)
je cherche à savoir quelles méthode utiliser ...etc
un exemple de code me serais très utile, merci bcp!
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
25 nov. 2004 à 12:44
euh? no comprendo...

erreur de post?

Chouba,
Pochard d'assaut .. 
0
Bonjour à vous...
Un doute me prend, à moi aussi : à partir du moment où une variable est déclarée "static" (typiquement, ici, il s'agit de la variable de classe "m_nbrvoiture"), sa valeur ne reprendra PAS la valeur par défaut, mais au contraire s'incrémentera bel et bien.
Je peux évidemment me tromper, mais les cours que je suis en Java, et les quelques tests ré"alisés dans ce contexte me semblent corroborer cette intuition.
A suivre, donc, et bon courage à tous

Mémé
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
31 déc. 2004 à 08:46
à condition que la classe reste chargée en mémoire, c'est possible ...

mais c'est une manière bizarre de programmer ...

Les variables statiques sont utiles lorsque l'on se trouve en présence de valeurs susceptibles de ne pas changer. Exemple la valeur PI dans la classe Math.

Chouba,
Pochard d'assaut .. 
0
Je crains qu'il n'y ait une confusion entre les modificateurs 'static' et 'final' dans cette discussion...
"Le modificateur static indique que le champ représente un champ de classe. [...]
Le modificateur final indique que la valeur du champ ne peut être modifiée. [...]
Il est courant de définir de telles constantes en tant que champs de classes, ce qui signifie que les modificateurs static et final sont souvent utilisés ensemble. Tous les champs de classe ne sont pas des constantes pour autant. En d'autres termes, un champ peut être déclaré static sans être déclaré final. [...]
Le principe fondamental des champs statiques est qu'il n'existe qu'une seule copie de ces champs. Le champ est associé à la classe elle-même, et non pas aux instances de cette classe."

David Flanaghan, in "Java in a Nutshell "
4ème éd, fr, publié chez O'Reilly

Il me semble donc plus approprié de parler de variables globales pour les champs déclarés static... ce qui en parait du coup plus tellement incongru comme manière de programmer... mais bon, je suppose que nous ne pouvons pas avoir la même vision des choses, et d'ailleurs tant mieux, ça laisse de la place aux surprises...
Bonne journée à tous,

Mémé
0
Voici un programme que je narrive pas faire .. jai besoin d'aide...

Vous réalisez une classe Vivant pour représenter un être vivant. Les variables
d’instance de la classe sont nom, milieuDeVie (eau, terre ou airTerre) et
complexité, un indice de complexité allant de 1 à 10 (du moins complexe au plus
complexe). La classe doit contenir une méthode abstraite pour afficher le mode de
déplacement de l’être vivant. La classe Vivant doit implanter l’interface Comparable :
les objets de la classe Vivant sont ordonnés selon l’indice de complexité (compareTo).
À partir de la classe Vivant, vous réalisez trois sous-classes : Humain, Animal et
Plante.
• La classe Humain a une variable d’instance : numéro . Elle redéfinit la méthode
déplacement en affichant un message qui indique qu’un humain est bipède et
qu’il pourrait nager.
• La classe Animal a deux variables d’instance : deux booléennes pour savoir si
l’animal est domestique et, si c’est un mammifère. Elle redéfinit la méthode
déplacement en affichant un message qui indique qu’un animal peut marcher
et/ou nager et/ou voler.
• La classe Plante a une variable d’instance booléenne : comestible. Elle
redéfinit la méthode déplacement avec un message qui indique qu’une plante
ne se déplace pas.
Chaque classe devrait avoir un ou plusieurs constructeurs, une redéfinition de la
méthode equals qui utilise les noms et une méthode toString. Les
constructeurs doivent au moins définir la complexité. Si la complexité est en dehors de
l’intervalle de 1 à 10, le constructeur doit lancer une exception ComplexitéIncorrecte

tableau d’objets de type Vivant. Il permettra aussi d’afficher les éléments du tableau,
de trier le tableau, de rechercher un élément dans le tableau.
La séquence d’opérations est la suivante :
• Mettre les objets dans le tableau : vous devez intercepter l’exception
ComplexitéIncorrecte ;
• Afficher les éléments du tableau ;
• Trier le tableau selon la complexité : utiliser la recherche linéaire du chapitre 9
(pas la recherche binaire) ;
• Afficher de nouveau les éléments du tableau ;
• Chercher un élément qui se trouve dans le tableau à partir d’un nom ;
• Chercher un élément qui ne se trouve pas dans le tableau.
0
choubaka Messages postés 39376 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 29 avril 2024 2 101
5 déc. 2007 à 00:17
salut

c'est pas tout à fait le genre de la maison de faire les devoirs à la place des étudiants, cependant commence déjà à faire ce que tu peux, on peut te guider et/ou te corriger
0