IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Classe abstract et vector


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11
    Par défaut Classe abstract et vector
    J'ai une classe abstract dans laquel j'ai une méthode abtract coutLocation.
    Dans une autre classe qui est l'étendue de la classe abstract, j'ai définie des parametres pour un film tel que le prix VHS, le prix DVD...

    Dans cette classe j'ai une méthode coutLocation.
    Il faut que dans cette méthode, si le fornat est VHS pour l'objet courant, le prix est 2$ sinon il est de 3$.

    Le problème est qu'à l'objet courant il ne vérifie pas le format il retourne le prix de 3$ et cela pour chacun des objet du vector. Voici le code pour aider à comprendre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    import java.util.*;
    import java.io.*;
     
    abstract class Location
    {
    	//Instanciation objet héritage classe classique
    	protected String leCode, leFormat, leTitre;
     
    	//On a le droit de construire
    	public Location (String leCode, String leFormat, String leTitre)
    	{
    		this.leCode = leCode;
    		this.leFormat = leFormat;
    		this.leTitre = leTitre;
    	}
     
    	public abstract double coutLocation();
    	//Méthode abstrait #1. Ne c'est pas comment retourner
     
    	public abstract int joursLocation(); 
    	//Méthode abstrait #2. Ne c'est pas comment retourner
     
    	public abstract double tauxRetard();
    	//Méthode abstrait #3. Ne c'est pas comment retourner
     
    	public double penalite(int nbJours)
    	{
    		return nbJours;
    	}
     
    	public double coutTotal(int prixBase_VHS)
    	{
    		return prixBase_VHS;
    	}
     
    	public String toString()
    	{
    		return String.format("%4s %4s %1f$ pour%3d jours",leFormat, leTitre, coutLocation(),joursLocation());  
    	}
    }
     
    class Classique
    	extends Location
    {
        //Construit l'objet
       private String code, 
       				  format, 
                      titre;	
     
       		   int prixBase_VHS=0,
    			   prixBase_DVD=0,
    			   dureeMax=0,
    		       penaliteRetard=0;	
     
    	public Classique(String code, String format, String titre)
    	{
    		super(code, format, titre);		
    		prixBase_VHS=2;
    		prixBase_DVD=3;
    		dureeMax=5;
    		penaliteRetard=1;	
    	}
     
                       //Le probleme est ici. Je ne sais pas pourquoi?
                      //Il devrait dire sir format=VHS, alors prix=2$, si format =DVD alors prix=3$
     
                       public double coutLocation()
    	{
    		return (format=="VHS")?prixBase_VHS:prixBase_DVD;
    	}
     
    	public int joursLocation() 
    	{
    		return dureeMax;
    	}
     
    	public double tauxRetard()
    	{
    		return penaliteRetard;
    	}
     
    	public String toString()
    	{
    		return "Classique" + super.toString();
    	} 
    }
    Est-ce que quelqu'un a une idée? :

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut


    Sinon peux-tu nous montrer le code utilisant le Vector en question, parce qu'à priori, le code que tu nous montre devrait fonctionner ( à moins d'avoir loupé quelquechose ), le polymorphisme devrait faire le travail.

  3. #3
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    J'ai trouvé ce qui ne va pas :
    pour comparer des chaines de caractères, on n'utilise pas l'opérateur '==' mais la méthode "equals" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return (format.equals("VHS")) ? prixBase_VHS : prixBase_DVD;

  4. #4
    Membre expérimenté Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Par défaut
    c'est valable pour toi aussi iohack


    Citation Envoyé par belukrin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Classique
    extends Location
    {
    //Construit l'objet
    private String code,
    format,
    titre; 
     
    //.....
    }
    tu n'as pas a redéclarer les membres de ta classe mère.

    du coup dans ta classe fille tu as comme membres :
    • String leCode
    • String leFormat
    • String leTitre
    • String code
    • String format
    • String titre


    quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     super(code, format, titre);
    c'est les champs leCode, leFormat et letitre que tu renseignes

    donc tu doit faire ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public double coutLocation()
    {
    return (leFormat.equals("VHS"))?prixBase_VHS:prixBase_DVD;
    }

Discussions similaires

  1. Classe abstract mappée sur deux tables
    Par Hyperion99 dans le forum Hibernate
    Réponses: 4
    Dernier message: 03/10/2007, 14h33
  2. Réponses: 5
    Dernier message: 26/07/2007, 19h09
  3. [POO] Classe Abstract : problème de conception
    Par viviboss dans le forum Langage
    Réponses: 22
    Dernier message: 14/12/2006, 15h37
  4. classe JList avec vector
    Par madislak dans le forum Composants
    Réponses: 1
    Dernier message: 08/12/2006, 08h30
  5. [POO]Classes abstract
    Par smag dans le forum Langage
    Réponses: 5
    Dernier message: 29/06/2005, 23h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo