2012-12-01 2 views
-2

제 질문은 숙제와 직접 연관되어 있습니다. 네가 묻기 전에, 네가 다른 질문을 보았다. 나는 자바 문서를보고 도와 주려고했지만, 나는 그저 이해할 뿐이다 ..Abstract Concept Assignment

당신은 레스토랑 거물이되었다. 여러 패스트 푸드 체인을 소유하고 있습니다. 그러나 소프트웨어를 전체적으로 균일하게 사용하려면 모든 패스트 푸드 체인이 따라야하는 표준을 설정해야합니다. 모든 레스토랑에서 동일한 규칙이 적용됩니다.

추상 클래스라는 이름의 레스토랑

호출하면 레스토랑의 이름을 인쇄하는 함수/메소드 만들기를 만듭니다.

추상적 인 기능/방법이라는 메뉴 항목을 만듭니다 총 가격

라는 추상적 인 기능/방법을 만들기

추상적 인 기능/메소드 이름 위치

만들기 레스토랑을 확장 맥도날드라는 클래스 만들기

모든 추상 메소드 구현

로직을 추가하면 가격 방법/기능은 6 % 세금을 포함한 식사의 총 가격을 제공합니다.

hasPlayPlace라는 부울을 반환하는 메소드를 추가하십시오. 이 위치는 playplace

맥도날드, 위치의 이름을 설정하는 생성자를 만들고 있으며, hasPlayPlace

public class McDonalds extends Restaurant { 
    private String name; 
    private String location; 
    private boolean hasPlayPlace; 
    Scanner input = new Scanner(System.in); 

    public McDonalds (String name, String location, boolean hasPlayPlace) { 
     setName(name); 
     setLocation(location); 
     setHasPlayPlace(hasPlayPlace); 
    } 

    McDonalds location1 = new McDonalds("McDonalds", "Kirkman", false); 
    McDonalds location2 = new McDonalds("McDonalds 2", "International Dr.", true); 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getLocation() { 
     return location; 
    } 
    public void setLocation(String location){ 
     this.location = location; 
    } 
    public boolean isHasPlayPlace() { 
     return hasPlayPlace; 
    } 
    public void setHasPlayPlace(boolean hasPlayPlace) { 
     this.hasPlayPlace = hasPlayPlace; 
    } 


    public void totalPrice() { 
     double totalPrice = 0; 
     double tax = 0.06; 
     totalPrice += (totalPrice * tax);  
    } 

    public void menuItems() { 
      //some syntax is wrong in this method 
     double mcChicken = 1; 
     double fries = 1.25; 
     System.out.println("1. Mc Chicken $1"); 
     System.out.println("2. Fries $1.25"); 
     int choice = input.nextInt(); 
     switch (choice){ 
     case 1: mcChicken *= tax; 
     case 2: fries *= tax; 
     } 

    } 

    public void location() { 
     //Don't know what's supposed to go in here. 
     //But I've implemented the method as I was supposed to. 
    } 

} 

때 모든 감각을 내가 부탁 해요 기본적으로 무엇인지 확인합니까 true를 반환한다. 위치 지정 방법에는 무엇이 있어야합니까? 이 클래스 내에서 getter 및 setter의 용도는 무엇이며 올바르게 수행 했습니까?

+1

맥도날드에 지금 이름이 있습니다!? (물론 McDonalds는 제외) – NullUserException

+3

이름에 char을 사용하지 말고 String을 사용하십시오. 문자열 리터럴은 ""로 작성되어 있으므로 McDonald 대신에 "McDonald"를 사용하십시오 (Kirman과 유사) – Vertex

+3

이것은 매우 혼란스럽고 혼란스러운 질문입니다. 어떻게 당신의 방법을 부르는거야? 당신이 묻고있는 ** 질문 **은 무엇입니까? (너는 틀린 것 모두를 고칠 수 있는가?) 너가 언급하는 메뉴는 무엇과 관련이 있나? "하나의 생성자에 대해 여러 객체를 가질 수 있습니까?" 심지어 의미? – millimoose

답변

2

이름과 위치는 String이 아니고 char이어야합니다.

나는 constructor 안에서 setter를 호출하는 스타일을 좋아한다. 왜냐하면 그 코드의 형태가 재사용되기 때문이다. 특히 null이 아닌 것과 같은 값에 대한 특별한 검사가있는 경우 특히 그렇다. 한 곳에서.

코드는 컴파일되지 않습니다,하지만 당신은 가까이있어 : 두 번 호출하는 경우 때문에

double tax = 0.06; 
totalPrice *= (tax + 1); 

그러나 이것은 위험하다, 그것을 :

McDonalds location1 = new McDonalds("Some name", "Kirkman", true); 

귀하의 계산은 조금 떨어져 너무 세금을 두 번 더할 것입니다. 매번 계산하는 세금 포함 가격을 반환하는 방법을 사용하는 것이 좋습니다. 부작용이있는 게터를 갖는 것은 설계 오류입니다. 즉 따라서이 있습니다

public double getTaxIncPrice() { 
    double tax = 0.06; 
    return totalPrice * (1 + tax); 
} 
2

1) 귀하의 생성자는 구조화 된 괜찮지 만, 당신은 이름과 위치 String의 대신 char의를 사용해야합니다. char은 한 문자 만 보유합니다.

2) 당신은 클래스의 여러 인스턴스를 만들 수 있습니다 price * 1.06 :

McDonalds location1 = new McDonalds("McDonald", "Kirkman", true); 
McDonalds location2 = new McDonalds("McDonald2", "Kirkman", false); 

3) 당신은 비율이 아닌 금액으로 가격에 세금을 추가해야합니다. 총 가격을 인쇄 할 때 가격 w/o 세금을 변경하지 않도록주의하십시오.

McDonalds location1 = new McDonalds("McDonald", "Kirkman", true); 

및 세금 :

생성자 호출이 문자열 매개 변수에 따옴표가 필요합니다 보헤미안는 (이름과 위치, 문자없는 문자열이어야 함) 지적 문제뿐만 아니라

1

계산이 올바르지 않습니다. 총 금액에 세금 비율을 곱해야하며 계산을 수행 할 총액이 생길 때까지 기다려야합니다.

+0

그래, 내가 실수로 "+"했을 때 "+"를 넣으십시오. "*" – RazaHuss

+3

여전히 올바르지 않습니다. 예를 들어 총 금액이 100 달러이고 세금이 6 % 인 경우 결과를 106 달러로 원한다면 totalPrice + = (totalPrice * tax) – GreyBeardedGeek

+0

예가 필요합니다. – RazaHuss

0

그냥 내 코드를 편집하고 질문을 제공했습니다. 귀하의 의견은 지금까지 도움이되었습니다.

public String TacoBellSauce(String fire, String hot, String mild) { 
    System.out.println("What sauce would you like to have?"); 
    System.out.println("1. Fire"); 
    System.out.println("2. Hot"); 
    System.out.println("3. Mild"); 
    int choice = input.nextInt(); 
    switch(choice) { 
    case 1: 
     return fire; 
    case 2: 
     return hot; 
    case 3: 
     return mild; 
    } 
    return null; 
} 

여기도 TacoBell 클래스에 대한 나의 방법입니다. Test 클래스에서 어떻게 돌려 주겠습니까? TacoBell 내에서 내가 원하는 핫 소스의 문자열을 반환하는 메서드를 만드는 것이 있습니다. 그런데 시험 수업 시간에 핫스팟을 불러 뜨거운 소리를냅니다. 나는 그 클래스를 만들지 않았지만 McDonalds와 TacoBell로 모든 것을 수정하는 데 집중하고 있습니다.

+0

더 이상 답변하지 않으시겠습니까 ?? – RazaHuss