티스토리 뷰
728x90
반응형
오늘은 학점계산기와 음식 주문 과정을 객체지향 설계 방식에 따라 구현해보는 실습을 진행하였다.
1. 학점 계산기
1) 요구사항
- 평균학점 계산 방법 = (학점수×교과목 평점)의 합계/수강신청 총학점 수
- MVC패턴(Model-View-Controller) 기반으로 구현한다.
- 일급 컬렉션 사용
2) 객체지향 설계 과정
- 도메인 구성 객체 : 이수 과목(Course), 학점 계산기
- 객체 간 관계 : 학점 계산기가 이수 과목을 변수로 가질 것
- 동적 -> 정적 타입으로 추상화 : 다양한 이수 과목(자료구조, 데이터베이스) -> 과목 클래스
- 협력 설계
- 이수 과목(인자)을 전달하여 평균학점 계산 요청 to 학점 계산기
- 학점 계산기는 ① (학점수×교과목 평점)의 합계 와 ② 수강신청 총학점 수 를 요청하여 평균학점 계산하여 전달
- 학점수, 교과목 평점, 총학점 수 등 정보는 과목 클래스에 요청
- 객체를 포괄하는 타입에 책임 할당
- 구현
3) 구현 참고사항
- 테스트 코드는 작은 단위부터 만들어 보면 좋다.
- 예를 들어, 학점 계산기를 구현하기 위해서는 이수한 과목 정보가 필요하기 때문에, 이수한 과목(Course) 객체부터 만드는 것이 좋다.
- 테스트 코드 외에 객체 클래스는 main 안에 위치하도록 한다.
- 이수 과목 객체에는 과목명, 과목의 학점, 성적 세 가지의 정보를 담는다.
- 평균 학점 계산기는 수강과목을 전달 받아 성적을 계산해 달라는 요청을 받으면 학점 계산기가 성적을 return해 주는 방식으로 구현한다.
- 테스트 코드를 구현할 때는 즉각적인 테스트를 위해 임의의 숫자를 return 해주고, 테스트에 통과하면 다시 메소드를 구현하여 테스트 한다.
- getter 등으로 불러와 작업을 해주는 코드같은 경우는 응집도가 낮아 로직이 바뀔 때 모두 수정해줘야 하는 단점이 발생할 수 있다. 이럴 때는 작업을 위임하는 형태를 취하는 것이 좋다. 그렇게 한다면 getter를 통해 정보를 가지고 와서 처리하는 것보다 메세지를 통해 객체가 작업을 처리하게 한다면 응집도가 높고 변화에 유연한 코드를 작성할 수 있다.
* 일급 컬렉션(First Class Collection)
- 학점 계산기의 요구사항 중에는 일급 컬렉션의 사용이 포함되어 있다.
- 리스트 형태로 된 정보만 인스턴스로 가진 클래스이다.
- 관련 책임들이 모두 일급 컬렉션으로 이동이 되어 수정이 발생했을 때 처리하기 수월해진다.
- 또한 모든 정보들을 한꺼번에 돌면서 합계를 구하는 것처럼 단순화한 코드를 사용할 수 있다. (stream, mapToInt, sum 함수 사용)
2. 음식 주문 과정
1) 객체지향 설계 과정
- 도메인 구성 객체
- 손님, 메뉴판, 음식메뉴/요리, 요리사
- 객체 간 관계
- 손님-메뉴판 (손님이 메뉴판을 보며 음식메뉴를 고름)
- 손님-요리사 (손님이 요리사에게 주문)
- 요리사-요리 (요리사가 요리를 함)
- 동적 -> 정적 타입으로 추상화
- 손님 -> 손님 타입
- 돈까스, 냉면, 만두 -> 음식메뉴/요리 타입
- 메뉴판 -> 메뉴판 타입
- 메뉴 -> 메뉴 타입
3) 구현 참고사항
- 마찬가지로 작은 단위부터 구현을 한다.
- 생성한 객체들끼리 비교를 할 때는 equals() and hashCode() 가 있어야 한다.
- alt + insert 를 통해 equals 및 hashCode를 선택하고, 모든 필드를 선택한 뒤 생성해주면 된다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 웹 애플리케이션2 (0) | 2023.08.14 |
---|---|
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 웹 애플리케이션 (0) | 2023.08.13 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 객체지향 (0) | 2023.08.11 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 테스트코드 (0) | 2023.08.10 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 환경설정3 Docker Desktop (0) | 2023.08.10 |
댓글