2014-03-13 4 views
0

제목이 정확하지 않으면 용서해주십시오.이 질문은 "다형성"이 있어야하지만 제목을 복잡하게 만들고 싶지는 않다고 생각했습니다.다른 클래스의 생성자 내에서 클래스 유형을 전달합니까?

저는 "Java : Learn to Program"을 배우면서 다음과 같이 진행합니다 : "다형성"이 적용되는 방법을 보려면 해당 지식을 적용하고 자신의 시나리오를 만듭니다. 누군가가 나를이 일을하는 방법을 이해하도록 도울 수 있다면 고맙겠습니다.

  1. 추상 직원
  2. 관리자 (직원의 서브 클래스)
  3. 레스토랑

Employee 클래스 및 관리자 클래스 꽤 정직하고 있습니다 : 나는 세 가지 클래스가 있습니다. 나는 식당을 만들려고 노력하고 있으며 모든 식당마다 매니저가있다. 내 질문은 :

"Restaurant"클래스의 생성자 인수로 "Manager"유형을 전달하거나 생성자에서 "Manager"객체를 인스턴스화해야합니까?

public abstract class Employee{ 

    private String _empName; 
    private double _empSalary; 

    public Employee(string name, double salary){ 

     _empName = name; 
     _empSalary = salary; 
    } 

    public void setEmpName(String name){ 
     _empName = name; 
    } 

    public String getEmpName(){ 
     return _empName; 
    } 

    public void setEmpSalary(double salary){ 
     _empSalary = salary; 
    } 

    public double getEmpSalary(){ 
     return _empSalary; 
    } 
}//CLASS 


public class Manager{ 

    private double _yrsOfExp; 

    public Manager(String name, double salary, double experience){ 
     super(name, salary); 
     _yrsOfExp = experience; 
    } 

    public void setManagerExperience(double years){ 
     _yrsOfExp = years; 
    } 

    public double getManagerExperience(){ 
     return _yrsOfExp; 
    } 

}//CLASS 

여기 제가 도움이 필요한 곳으로, "MANAGER TYPE"으로 생성자를 선언하고 있습니다. 대신 "Manager 유형"을 생성자와 전달하는 대신 "Manager"의 인스턴스를 선언해야합니까?

public class Restaurant{ 

    private Manager _manager; 
    private String _location; 

    //CONSTRUCTOR 1 
    //SHOULD I PURSUE IT THIS WAY OR 
    public Restaurant(Manager manager, String location){ 
     _manager = manager; 
     _location = location; 
    } 

    //CONSTRUCTOR 2 
    //SHOULD I DO IT THIS WAY? 
    public Restaurant(String name, double salary, double experience, String location){ 
     super(name, salary, experience); 
     _location = location; 
    } 

    public String toString(){ 
     String str = ""; 

     return str; 
    } 
}//CLASS 

답변

1

이것은 부분적으로 맛의 문제이며 그 밖의 객체로 무엇을 할 것인가입니다.

관리자를 개별적으로 참조하려는 경우 식당의 속성이 아닌 자신의 개체가되고 싶습니다.

레스토랑 자체가 관리자가 아니기 때문에, 생성자에서 관리자의 속성을 가져 가면 안되며 대신 관리자 (생성자 또는 setManager() 호출에서 할당 된 관리자를 가져야 함)).

한 가지 관리자가 두 개의 레스토랑을 담당하는 경우 훨씬 더 의미가 있습니다.

+0

이렇게 생각하면 식당에 매니저가 있습니까? 아니면 식당에 이름, 급여 및 경험이 있습니까? –

+0

@keshlam 고맙습니다. 내 두 번째 생성자쪽으로 기울고 있었고 두 번째 생성자가 될 수도 있습니다. – Combustion007

+0

우리가 제공 한 최소한의 데이터를 바탕으로 한 제 권장 사항이 첫 번째 옵션입니다. Manager를 레스토랑의 속성이 아닌 객체로 취급하십시오. – keshlam

관련 문제