일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 운영체제 #CS지식
- 구글 비공개 테스트 20명
- 플레이스토어 비공개 테스트
- 우테코
- 구글 플레이 스토어 배포 방법
- 설계
- 커밋 메시지
- git
- 플레이 스토어 20명
- 객체지향
- 객체지향설계
- 구글 플레이 비공개 테스트
- 클린코드
- 프리코스
- 기능명세서
목록전체 글 (48)
GYUD-TECH

앞 장에서 책임 중심 설계와 데이터 중심 설계를 비교하며 책임 중심 설계의 장점을 코드로 살펴봤다. 그러면 책임 중심 설계를 위해서는 책임을 올바른 객체에게 할당해야 하는데 어떤 객체가 올바른 객체인지 어떻게 알 수 있을까? 책의 3장에서는 아래와 같은 내용이 나온다. 협력은 객체에게 할당할 책임을 결정할 수 있는 문맥을 제공한다. 따라서 협력을 고려하여 적절한 책임을 할당하면 좋은 설계(책임 중심 설계를 할 수 있다.) 이렇게 협력을 기반으로 책임 주도 설계를 하는 방법은 아래 순서를 따른다. 도메인 개념에서 생각한다. 메시지를 생각하고, 메시지를 수신할 적절한 객체에 책임을 할당한다. 객체 내부로 들어가서 메시지 처리를 위한 절차와 구현을 고민해본다. 책임을 더 작은 책임으로 나누어가며 2-3 과정을..

데이터 중심 설계 데이터 중심 설계 책임중심설계는 객체의 책임을 생각하고, 책임 수행을 위한 행동을 정의한 후, 필요한 데이터를 저장한다. 반면, 데이터중심설계는 객체에 필요한 데이터를 먼저 정하고, 이후에 데이터를 조작하는데 필요한 행동을 정의한다. 데이터는 인터페이스가 아닌 객체의 구현에 속하기 때문에 자주 변하고 불안정하다는 특징이 있다. 이런 데이터를 중심으로 설계하면 설계가 자주 변할 것이고, 결국 변경에 취약해진다는 단점이 있다. 객체지향의 사실과 오해와 이전 장에서 이러한 개념을 반복하여 학습했지만 실제 코드로 보지 못해서 아쉬웠다. 이번 장에서는 코드를 통해 영화 예매 시스템의 객체 지향 설계와 데이터 중심 설계를 비교해 주어 내용을 더 깊이 학습할 수 있었다. 데이터 중심 설계 코드 Mo..

객체지향 프로그래밍객체지향 프로그래밍을 위한 방법이번 챕터에서는 영화 예매 시스템을 예로 들면서 객체지향 프로그래밍을 설계하는 방법과 필요한 개념들을 설명해준다. 영화 예매 시스템은 실제 내가 수행했던 프로젝트들과 요구사항이 비슷하여, 나라면 어떻게 했을까를 고민하며 책을 읽을 수 있어서 좋았다. 책에서 소개하는 객체지향 프로그래밍을 위한 순서는 아래와 같다.1. 요구사항 분석2. 도메인 모델을 바탕으로 필요한 객체들과 협력을 설계3. 클래스로 객체들의 협력을 구현 앞부분의 내용들은 대부분 책 '객체지향의 사실과 오해'에 나오는 내용이었기 때문에 편하게 읽을 수 있었다. 책에서 소개하는 메시지, 캡슐화, 도메인과 같은 개념은 아래 글에 자세히 정리하였기 때문에 생략하고 다른 인상 깊었던 내용들을 위주로 ..

'객체지향의 사실과 오해' 를 읽으면서 객체지향의 개념과 장점, 설계방식에 대해 고민할 수 있었다.하지만, 책을 읽으면서 계속해서 '그래서 어떻게 객체지향적 설계를 할 수 있는데?' 라는 의문이 들었다.이를 위해 스스로 예제를 만들어가며 적용해 보았지만, 저자가 생각하는 객체지향적 설계방법이 궁금하였다. 이러한 이유로 다음 스터디 서적을 정할 때 자연스럽게 '오브젝트' 가 먼저 떠올랐다.책의 앞부분에 코드 없이 프로그래밍의 패러다임을 설명하는 것은 영감을 주기 어렵다는 저자의 말에 적극적으로 공감하였고, 어떻게 책을 읽어나갈지 방향을 정할 수 있었다. 책에 나와있는 저자의 코드와 내 생각을 비교해보고, '그래서 어떻게 객체지향적 설계를 할 수 있는데?' 라는 질문에 대한 답을 찾는 것을 목표로 책을 읽어..

추상화 기법 추상화를 사용하는 이유는 도메인의 복잡성을 단순화하고, 직관적인 모델을 만들 수 있기 때문이다. 이러한 추상화의 기법에는 3가지가 있다. 분류와 인스턴스화 일반화와 특수화 집합과 분해 분류와 인스턴스화 객체를 타입으로 분류하는 것을 의미한다. 내가 주문한 아메리카노와 친구가 주문한 아메리카노는 서로 다른 객체이지만 모두 아메리카노로 분류할 수 있다. 객체의 입장에서는 두 객체는 모두 아메리카노 타입의 인스턴스 이다. 이렇게 객체가 타입의 정의에 부합하면 해당 타입으로 분류되며, 이 객체를 타입의 인스턴스 라고 한다. 일반화와 특수화 슈퍼타입과 서브타입이 존재하는 포함 관계를 의미한다. 아메리카노와 카페라떼는 모두 커피라는 공통적인 타입으로 일반화 된다. 커피의 입장에서는 아메리카노와 카페라떼..

객체지향설계의 3가지 관점 1. 개념관점: 사용자가 도메인을 바라보는 관점 2. 명세관점: 객체의 책임에 초점을 맞추는 관점 3. 구현관점: 실제 동작하는 코드를 작성하는 관점 애플리케이션을 설계할 때 먼저 개념관점으로 도메인을 떠올리고, 명세 관점으로 객체에 책임을 할당하고, 구현 관점으로 코드를 작성하는 것 같지만 실제로는 동일한 클래스를 바라보는 다른 시각을 뜻한다. 클래스가 은유하는 개념은 도메인 관점에 반영되고, 클래스의 공용인터페이스는 명세 관점에 반영되고, 클래스의 속성과 메서드는 구현 관점에 반영된다. 이렇게 한개의 클래스 내에서 여러개의 관점을 찾아볼 수 있다. 💡 결국, 클래스는 개념, 인터페이스, 구현을 모두 드러내야하며, 이 관점들을 쉽게 식별할 수 있게 분리해야한다. 객체지향설계 ..