Magasin de vêtements Leçon de CodeHS


Je suis donc actuellement inscrit dans la classe avec mon école appeler Ap Computer Science en Java (Mocha). je suis coincé sur la scène 4.12.4. Voici l'exercice

Dans ce problème, vous allez concevoir quelques classes qui représentent différents vêtements dans un magasin de vêtements.

Vous écrirez les cours pour T-shirt, Jeans, Sweat-shirt et Vêtements.

La classe Clothing doit avoir deux variables d'instance: une pour la taille des vêtements (une chaîne), et une autre pour la couleur des vêtements (également une chaîne).

Les vêtements doivent également avoir deux accesseurs (méthodes getter):

public String getSize()
public String getColor()

La classe Sweatshirt doit avoir une variable d'instance privée (ou un champ) pour stocker si elle a ou non un capot, et une méthode getter correspondante

public boolean hasHood()

La classe TShirt devrait avoir un champ privé pour stocker le tissu et un getter correspondant pour celui appelé

public String getFabric()

Tous les jeans doivent avoir la couleur bleue.

Les constructeurs doivent être ce format:

public Clothing(String size, String color)
public TShirt(String size, String color, String fabric)
public Sweatshirt(String size, String color, boolean hasHood)
public Jeans(String size)

Voici le Code que j'ai.

TShirt.java:

public class TShirt extends Clothing
{
private String size;
private String color;
private String fabric;


public TShirt(String Size, String Color, String Fabric)
{
    size = Size;
    color = Color;
    fabric = Fabric;
}


public String fabric()
{
    return this.fabric;
}

}

Jeans.java:

public class Jeans extends Clothing
{
private String size;
private String color = "blue";

public Jeans(String Size)
{
   size = Size;
}



public String getColor()
{
    return this.color;
}
}

Sweat-shirt.java:

public class Sweatshirt extends Clothing
{
private String size;
private String color;
private boolean hasHood;

public Sweatshirt(String Size, String Color, boolean HasHood)
{
    //super(Clothing);
    size = Size;
    color = Color;
    hasHood = HasHood;

}


public boolean hasHood()
{
    return this.hasHood;
}
}

Vêtements.java:

public abstract class Clothing
{
private String size;
private String color;
private String fabric;

public Clothing(String Size, String Color)
{
    this.size = size;
    this.color = color;
}

public String getSize()
{
    return this.size;
}

public String getColor()
{
    return this.color;
}

public String getFabric()
{
    return this.fabric;
}

}

Voici la liste des erreurs que j'ai eues lorsque j'ai exécuté le programme

root/TShirt.java:9: error: constructor Clothing in class Clothing cannot be applied to given types;
{
^
required: String,String
found: no arguments
reason: actual and formal argument lists differ in length
root/Jeans.java:7: error: constructor Clothing in class Clothing cannot be applied to given types;
{
^
required: String,String
found: no arguments
reason: actual and formal argument lists differ in length
root/Sweatshirt.java:8: error: constructor Clothing in class Clothing cannot be applied to given types;
{
^
required: String,String
found: no arguments
reason: actual and formal argument lists differ in length
3 errors
Error: Could not find or load main class ClothingTester

Je ne sais pas ce que j'ai fait de mal alors n'importe qui m'aide je suis resté sur cette leçon quelques jours déjà.

Author: Nick W., 2016-10-31

2 answers

Les classes qui étendent la classe Clothing semblent lancer les erreurs. L'un est de TShirt (dont je ne vois pas le code pour), un autre est de Jeans et un autre de Sweat-shirt (qui est dans votre code affiché deux fois).

Chaque fois que vous étendez une classe, le compilateur se plaindra si vous n'initialisez pas immédiatement le constructeur de la classe héritée. Dans toutes les classes étendues montrées, aucune ne le fait jamais. Donc pour vous aider à démarrer j'ai fourni un strict minimum de la classe de sweat shirt qui initialise le constructeur super ou dans votre cas, il initialise Clothing chaque fois que vous créez un objet Sweatshirt. super est Clothing dans ce cas. De plus, puisque vous vous étendez de la classe de vêtements, vous n'avez pas besoin de redéfinir les propriétés de taille et de couleur dans vos classes étendues.

Soyez également prudent lorsque vous utilisez différentes variables portant le même nom mais qui sont "Cas" différents, par exemple. En regardant le code que vous avez fourni, regardez le constructeur de classe Clothing. Là vos valeurs entrantes: Taille et la Couleur ne sont pas s'habituer. Il devrait être présent.taille = Taille et cela.couleur = Couleur. Puisque vous utilisez la variable propre aux classes pour se définir, je suis à peu près sûr que vous obtiendrez une erreur ou que vous n'obtiendrez tout simplement pas les bonnes valeurs. Je ne recommanderais pas de nommer différentes variables qui ne diffèrent qu'au cas où.

public class Sweatshirt extends Clothing
{
   //private String size;
   //private String color;
   private boolean hasHood;

   public Sweatshirt(String inSize, String inColor, boolean inHasHood)
   {
     super(inSize, inColor);
     //super(Clothing);
     //size = Size;
     //color = Color;
     hasHood = inHasHood;  
   }

   public boolean getHasHood()
   {
     return this.hasHood;
   }

   @Override
   public String toString()
   {
     return "Sweatshirt [hasHood=" + getHasHood() + ", getSize()=" + getSize() + ", getColor()=" + getColor() + "]";
   }

 }

J'espère que cela vous aidera à démarrer.

 2
Author: JohnG, 2016-10-31 15:50:45

Voici ce que j'ai fait:

Sweat-shirt

public class Sweatshirt extends Clothing
{

    private boolean hood;

    public Sweatshirt(String size, String color, boolean hood)
    {
        super (size,color);
        this.hood=hood;
    }

    public boolean hasHood()
    {
        return this.hood;
    }
}

Magasin de Vêtements

public class Jeans extends Clothing
{ 
    public Jeans(String size)
    {
       super(size,"blue");
    }
}

T-shirt

public class TShirt extends Clothing
{
    private String fabric;

    public TShirt(String size, String color, String fabric)
    {
        super(size,color);
        this.fabric=fabric;
    }

    public String getFabric()
    {
        return this.fabric;
    }

Vêtements

public class Clothing
{
    // all instance variables should be private
    private String size;
    private String color;
    // private int x;

    // default constructor
    /* 
    public Clothing ()
    {
        // intialize all instance variables
        size="";
        color="";
        x=0;
    }
    */
    // only intialize when the parameter is empty or zero argument

    public Clothing(String size, String color)
    {
        this.size=size;
        this.color=color;
        // this.x=0;

        // always initialize all the instance variables
        //even though the parameters are incomplete
    }


    public String getSize()
    {
        return this.size;
    }
    public String getColor()
    {
        return this.color;
    }

}

Vous avez probablement déjà terminé, mais juste au cas où

 1
Author: CodingBat, 2017-11-22 03:11:56