사전캠프 최종 과제: 동물 관리 시스템 만들기
학습 목표
•
요구사항 분석을 통한 적절한 클래스 설계
•
객체지향 프로그래밍 4대 원칙 이해 및 적용
•
클래스 간 관계 설정 및 UML 다이어그램 작성
•
확장 가능한 코드 구조 설계
•
Git을 활용한 체계적인 버전 관리
제출 방법 및 구조
Git Repository 구조
다음과 같은 브랜치 구조로 제출하시오:
•
•
level-1 브랜치: 1단계 구현 코드
•
level-2 브랜치: 2단계 확장 코드
필수 제출 파일
1.
2.
1단계: 기본 반려동물 관리 시스템
1.1 요구사항 분석
다음 기능 요구사항을 분석하여 필요한 클래스들을 도출하시오:
기본 기능
•
반려동물(강아지, 고양이) 등록 및 관리
•
동물과의 상호작용 (먹이주기, 놀아주기)
•
동물 상태 조회 및 관리
•
콘솔 기반 사용자 인터페이스
상세 요구사항
1.
동물은 이름, 나이, 배고픔 수치, 행복도를 가진다
2.
강아지와 고양이는 서로 다른 울음소리를 낸다
3.
먹이를 주면 배고픔이 감소하고, 놀아주면 행복도가 증가한다
4.
사용자는 메뉴를 통해 다양한 기능을 선택할 수 있다
1.2 클래스 설계
Mermaid 클래스 다이어그램 작성 가이드
요구사항 분석을 바탕으로 다음 작업을 수행하시오:
1.
클래스 식별
•
필요한 클래스들을 나열하고 각각의 역할을 정의
•
각 클래스가 가져야 할 속성(필드)과 행동(메소드) 식별
2.
클래스 관계도 작성
•
UML 클래스 다이어그램 또는 간단한 텍스트 다이어그램 작성
•
클래스 간의 상속, 구성 관계 표현
3.
메소드 시그니처 정의
•
각 클래스의 public 메소드들의 이름, 매개변수, 반환 타입 정의
1.3 구현 요구사항
다음 조건을 만족하는 코드를 작성하시오:
기본 구조
•
Animal 클래스: 모든 동물의 공통 속성과 메소드
•
Dog, Cat 클래스: Animal을 상속받은 구체적인 동물 클래스
•
Zoo 클래스: 동물들을 관리하는 메인 클래스
•
Main 클래스: 프로그램 진입점 및 사용자 인터페이스
필수 기능 구현
1.
동물 등록 기능
2.
동물 목록 조회 기능
3.
먹이주기 기능 (배고픔 수치 감소)
4.
놀아주기 기능 (행복도 증가)
5.
동물 울음소리 듣기 기능
6.
동물 상태 확인 기능
실행 예시
=== 동물원 관리 시스템 ===
1. 동물 등록
2. 동물 목록 보기
3. 동물과 놀기
4. 먹이주기
5. 동물 상태 확인
6. 울음소리 듣기
7. 종료
메뉴를 선택하세요: 1
동물 이름을 입력하세요: 바둑이
동물 나이를 입력하세요: 3
동물 종류를 선택하세요 (1.강아지 2.고양이): 1
바둑이(강아지, 3살)가 등록되었습니다.
메뉴를 선택하세요: 6
울음소리를 들을 동물을 선택하세요:
1. 바둑이 (강아지, 3살)
선택: 1
바둑이: 멍멍!
Plain Text
복사
1.4 기술적 요구사항
•
Java 기본 문법만 사용 (외부 라이브러리 사용 금지)
•
적절한 접근 제어자 사용 (private, protected, public)
•
Scanner 클래스를 활용한 사용자 입력 처리
•
ArrayList를 활용한 동물 목록 관리
•
예외 처리 (잘못된 입력에 대한 처리)
2단계: 다양한 동물들로 확장
2.1 확장 요구사항 분석
1단계의 기본 구조를 유지하면서 다음 기능들을 추가하시오
•
한번에 모든 기능을 추가하는것이 아닌 구현할 기능 한개씩 확장하시오.
추가 동물 종류
•
조류: 독수리(Eagle), 펭귄(Penguin)
•
포유류: 사자(Lion), 코끼리(Elephant)
•
파충류: 뱀(Snake), 거북이(Turtle)
확장 기능
•
동물별 고유 특성 및 능력
•
사육사 시스템
•
먹이 관리 시스템
•
통계 및 관리 기능
2.2 확장 설계
상속 구조 재설계
1.
Animal 클래스를 추상 클래스로 변경
2.
중간 분류 클래스 추가 (Bird, Mammal, Reptile)
3.
구체적인 동물 클래스들을 해당 분류 클래스에서 상속
인터페이스 설계
•
Flyable 인터페이스: 날 수 있는 동물
•
Swimmable 인터페이스: 헤엄칠 수 있는 동물
•
기타 특별한 능력을 위한 인터페이스
2.3 세부 구현 요구사항
동물별 고유 특성
1.
각 동물마다 다른 울음소리 구현
2.
동물별 선호 먹이 설정 (육류, 어류, 식물, 견과류 등)
3.
고유 능력 구현 (독수리-날기, 펭귄-헤엄치기, 코끼리-물뿌리기 등)
사육사 시스템
1.
ZooKeeper 클래스 구현
2.
사육사별 전문 분야 설정 (조류 전문, 대형동물 전문, 파충류 전문)
3.
전문 분야에 따른 동물 관리 효과 차이
먹이 관리 시스템
1.
Food 클래스 또는 enum 구현
2.
동물별 적절한 먹이 체크 기능
3.
부적절한 먹이 제공시 경고 메시지
통계 기능
1.
동물 종류별 개체 수 조회
2.
전체 동물의 평균 행복도 계산
3.
배고픈 동물 목록 출력
4.
동물원 현황 요약 정보
2.4 실행 예시
=== 확장된 동물원 관리 시스템 ===
현재 등록된 동물: 총 6마리 (강아지 1, 사자 1, 펭귄 2, 독수리 1, 뱀 1)
1. 동물 등록
2. 동물 목록 보기
3. 동물과 놀기
4. 먹이주기
5. 특별 능력 사용
6. 사육사 관리
7. 통계 보기
8. 종료
메뉴를 선택하세요: 5
특별 능력을 사용할 동물을 선택하세요:
1. 독이 (독수리) - 날기 능력
2. 펭이 (펭귄) - 헤엄치기 능력
선택: 1
독이가 하늘 높이 날아올랐습니다! 행복도가 크게 증가했습니다.
메뉴를 선택하세요: 7
=== 동물원 통계 ===
- 전체 동물 수: 6마리
- 평균 행복도: 75.5
- 배고픈 동물: 사자(심바), 뱀(구렁이)
- 가장 행복한 동물: 펭귄(펭이) - 행복도 95
Plain Text
복사
