2014-04-01 5 views
2

는 최근에 나는 인터뷰에 참석했고이 질문에 주어졌다 :디자인 클래스

질문 :

: 당신과 함께 다음과 같은 기관과, 클래스 다이어그램 또는 골격 코드를 디자인 엔티티는 다음과 같습니다

garmentshirtpantfabricbuttons,787,

The best I could do was this: 


class Shirt : Fabric 
{ 
    Buttons buttons {get;set;} 
    //Inherits all Fabric methods 

    MakeShirt() 
    { 
    //make a shirt here 
    } 
} 

class Pant : Fabric 
{ 
    Buttons buttons {get;set;} 
    // Inherits all Fabric methods 

    MakePant() 
    { 
    //Make a pant here 
    } 
} 


class Fabric 
{ 
    private MaterialType materialType {get;set;} 
    private FabricType fabricType {get;set;} 

    Fabric(MaterialType mType, FabricType fType) 
    { 
    this.materialType = mtype; 
    this.fabricType = fType; 
    } 

    public GetFabricMaterial(); 
    public GetFabricType(); 

} 

class Garment : IGarment 
{ 
    Price price {get;set;} 
    Audience audience {get;set;} 
} 

enum FabricType 
{ 
    Fabric_Formal, 
    Fabric_Casual, 
} 

enum MaterialType 
{ 
    Fabric_Cotton, 
    Fabric_Silk, 
    Fabric_Wool, 
} 

class Buttons 
{ 
Color color {get;set;} 
Shape shape {get;set;} 
} 

class Zip 
{ 
Color color {get;set;} 
Size size {get;set;} 
} 

하지만 여전히 나는 많은 일들이 위의 골격 코드에서 놓치고 볼 수 있습니다.

  • 는 어떻게 다른 개체 (개체 관계!?)
  • 가 어떤 기능 MakeShirt()MakePant()의 반환 형식이 될 수와 Garment 관련 될 수
      ?
    1. 이러한 질문에 대답하는 동안 어떤 접근 방식이 가장 좋습니까? 즉, 이러한 유형의 질문에 접근하는 방법은 무엇입니까?

    여기에 대한 의견을 보내 주시면 감사하겠습니다. (이것이 올바른 질문이 아닌 경우 여기 오른쪽의 stackoverflow 사이트로 옮기시기 바랍니다.)

  • +0

    흠을 우편 있습니다. 셔츠가 직물인가요? 나는 그 옷이 의복이라는 것을 모색하고, 그 옷은 옷감을 가지고 있다고 확신합니다. – spender

    +0

    셔츠, 바지는 의복입니다. 옷감은 천으로 만들어졌습니다. – Anirudha

    +0

    @spender : 셔츠가 직물이라고 가정하면 제 수업을 수정하는 방법을 친절하게 가르쳐 주시겠습니까? –

    답변

    2

    나는 이것을 생각해 보았다고 생각합니다. 나는 이것을 이렇게 보았습니다. 바지와 셔츠는 Garment입니다. 의류는 직물로 구성되어 있습니다.

    바지 ... 셔츠 단추가,

    public enum Fabric { Cotton, Silk, Poly } 
    
    public abstract Garment{ 
    
    
        public Fabric Fabric {get; set; } 
    } 
    
    class Buttons 
    { 
        Color color {get;set;} 
        Shape shape {get;set;} 
    } 
    class Zip 
    { 
        Color color {get;set;} 
        Size size {get;set;} 
    } 
    
    public class Shirt : Garment{ 
        public Buttons Buttons { get; set;} 
    } 
    public class Pants : Garment{ 
        public Zip Zip { get; set;} 
    } 
    
    +0

    좋아, 그'객체 - 관계 '부분에 대해? 모든 입력하십시오. –

    +0

    코드에서 식별 할 수 없습니까? –

    +2

    오늘 버튼이 달린 바지를 입고 있습니다.) – Jeb

    1

    이것은 부모/자식 관계에 대한 연습 문제입니다. 나는 ShirtPant이 상속하는 추상적 기본 클래스가 Garment이라고 생각했을 것입니다. Fabric, ButtonsZip은 모두 이고,Garment이다.

    특정 Make 메서드가 없습니다. 특정 Garment 유형의 생성자는 Garment 유형을 초기화하지 않고 게시 할 준비를해야합니다.