2 Stimmen

Entwerfen von Klassen in C#

Kürzlich hatte ich an einem Interview teilgenommen und diese Frage erhalten:

Frage: Designen Sie mit den folgenden Entitäten eine Klassendiagramm oder Skelettcode:

Die Entitäten sind:

Kleidungsstück Hemd Hose Stoff Knöpfe Reißverschluss

Das Beste, was ich tun konnte, war folgendes:

class Hemd : Stoff 
{
  Knöpfe knöpfe {get;set;}
  // Erbt alle Stoffmethoden

  HemdMachen()  
  {
    // hier ein Hemd machen
  }
}

class Hose : Stoff
{
  Knöpfe knöpfe {get;set;}
  // Erbt alle Stoffmethoden

  HoseMachen()
  {
     // hier eine Hose machen
  }
}

class Stoff
{
  private MaterialArt materialArt {get;set;}
  private Stoffart stoffart {get;set;}

  Stoff(MaterialArt mArt, Stoffart sArt)
  {
     this.materialArt = mArt;
     this.stoffart = sArt;
  }

  public GetStoffMaterial();
  public GetStoffart();

}

class Kleidungsstück : IKleidungsstück
{
  Preis preis {get;set;}
  Zielgruppe zielgruppe {get;set;}
}

enum Stoffart
{
  Stoff_Formal,
  Stoff_Casual,
}

enum Materialart
{
   Stoff_Baumwolle,
   Stoff_Seide,
   Stoff_Wolle, 
}

class Knöpfe
{
Farbe farbe {get;set;}
Form form {get;set;}
}

class Reißverschluss
{
Farbe farbe {get;set;}
Größe größe {get;set;}
}

Aber ich sehe immer noch viele Dinge, die im obigen Skelettcode fehlen.

  1. Wie kann ich Kleidungsstück mit den anderen Entitäten in Beziehung setzen (Objektbeziehung! ?)
  2. Was kann der Rückgabetyp der Funktionen HemdMachen() und HoseMachen() sein?
  3. Bei der Beantwortung dieser Fragen, welche Herangehensweise ist am besten? Mit anderen Worten, wie geht man am besten mit solchen Fragen um?

Jegliche Eingaben dazu sind willkommen. (Wenn dies nicht die richtige Frage ist, die hier gestellt werden soll, lassen Sie es mich bitte wissen, damit ich dies auf die richtige Stackoverflow-Seite verschieben kann!)

2voto

T McKeown Punkte 13014

Ich denke, du hast das überdacht, ich sehe es so. Hosen und Hemden sind Kleidungsstücke. Kleidungsstücke bestehen aus Stoff.

Hosen haben einen Reißverschluss, Hemden haben Knöpfe...

public enum Fabric { Baumwolle, Seide, Polyester }

public abstract Garment{

    public Fabric Fabric {get; set; }
}

class Buttons
{
  Farbe farbe {get;set;}
  Form form {get;set;}
}
class Zip
{
   Farbe farbe {get;set;}
   Größe größe {get;set;}
}

public class Shirt : Garment{
   public Buttons Buttons { get; set;} 
}
public class Pants : Garment{
  public Zip Zip { get; set;}
}

1voto

Jeb Punkte 3569

Dies ist eher eine Übung in Eltern-Kind-Beziehungen. Ich hätte gedacht, dass Garment deine abstrakte Basisklasse ist, von der Shirt und Pant erben. Fabric, Buttons und Zip sind alle Eigenschaften eines Garment.

Ich würde keine spezifischen Herstellungs-Methoden haben. Der Konstruktor für die spezifischen Garment-Typen sollte den Garment-Typ direkt einsatzbereit machen, anstatt ihn nachträglich zu initialisieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X