Java 문법 종합반 수강하며 배운것들을 사용하여
직접 키오스크 프로그램을 만드는 과제를 시작하게 되었다...
맨처음 과제를 보았을때 보자마자 머리가 멍해짐을 느꼈다. 주어진 시간이 그리 길지 않기에 마음
을 다잡고 차근차근 필수 요구사항과 출력예시를 보고 구현 방향을 설계해 보았다.
Java 클래스 설계 시 필수 요구사항!
- 메뉴 클래스는 이름, 설명 필드를 가지는 클래스로 만들어주세요.
- 상품 클래스는 이름, 가격, 설명 필드를 가지는 클래스로 만들어주세요.
- 상품 클래스의 이름, 설명 필드는 메뉴 클래스를 상속받아 사용하는 구조로 개발해주세요.
- 주문 클래스도 만들어서 상품 객체를 담을 수 있도록 해주세요.
요구사항을 토대로 부모클래스가 될 Menu, 자손클래스가 될 Product, Product의 객체가 담길 Order와 코드가 실행될 Main를 만들었다.
이후 메인메뉴판을 작성하였다.
메뉴판 출력을 위한 코드또한 작성하였다.
이후 필수요구사항을 충족하기 위해 부모클래스인 Menu와 자손클래스인 Product를 상속관계를 형성한 후 부모클래스에선 이름과 설명을 정의하였고 자손클래스에선 가격을 정의하였다.
필드를 초기화하기위해 Product클래스의 생성자를 아래와같이 작성하였다.
이제 메인메뉴판의 메뉴들의 세부메뉴를 입력하기위해 List형태로 선언 후 ArrayList의 형태로 생성후 대입하였다.
이후 Menu의 생성자로 Product 타입으로 매개변수를 입력받아 각 리스트에 추가할려는 코드를 작성을 하였지만 런타임에러가 발생하였다.
오류를 확인한 결과 부모클래스인 Menu클래스의 생성자와 자손클래스인 Product클래스의 생성자가 서로 루프하여 발생한 문제를 확인하였다. 객체를 생성하게 되면 부모 생성자부터 실행이 되고 자손클래스의 생성자가 실행이되는데 이부분에서 문제를 발생한것으로 생각된다.
해결법으로 기존 Menu의 생성자였던 메뉴추가를 메소드로 변경하여 실행결과 각 리스트의 값이 Product의 타입으로 들어간걸 확인할수있었다.