객체지향 13

디자인 패턴 개요

객체지향 프로그래밍 파이썬의 모든 것은 객체다. → 파이썬의 클래스 인스턴스, 변수는 개별적인 메모리 공간에 저장된다. 객체 프로그램 내의 개체(entity)를 의미 개체는 다른 개체와 상호작용을 통해 목적 달성 클래스 속성(데이터)과 행동을 포함하는 객체를 정의 생성자로 객체 초기 상태 설정 일종의 템플릿으로 재사용 용이 메소드 객체의 행위를 의미 속성을 조작하고 작업을 수행 객체지향 프로그래밍의 주요 기능 캡슐화 객체의 기능과 상태를 숨김 클라이언트는 객체 구조와 상태를 직접 수정할 수 없고, 대신 수정을 요청 요청 종류에 따라 get, set 같은 특수 함수를 사용하여 내부 상태 변경 파이썬에서는 사실상 캡슐화 개념이 없지만 앞에 _를 붙여 접근 제한을 명시 다형성 객체는 함수 인자에 따라 다른 기..

객체지향의 세 가지 관점(도메인, 인터페이스, 구현)

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다.설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 07 함께 모으기 요약 정리 객체지향의 세 가지 관점 개념 관점(Conceptual Perspective) 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현 소프트웨어는 도메인에 존재하는 문제를 해결하기 위해 개발된다. 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하는 것이 핵심이다. 명세 관점(Specification Perspective) 도메인을 벗어나 개발자의 영역인 소프트웨어에 집중 객체들의 책임에 초점을 맞추며 객체의 인터페이스를 바라보는 관점이다. 구현 관점(Implementation Perspect..

도메인과 유스케이스, 유지보수하기 쉽고 유연한 객체지향 시스템

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 06 객체지도 요약 정리 설계 객체지향은 자주 변경되는 '기능'이 아니라 안정적인 '구조'를 기반으로 시스템을 구조화한다. (구조 중심 설계) 기능 측면 설계는 사용자를 위해 무엇을 할 수 있는지에 초점을 맞춘다. (충분조건) 구조 측면 설계는 서비스의 형태가 어떠해야 하는지에 초점을 맞춘다. (필요조건) 기능과 구조는 조화를 이루어야 한다. 소프트웨어는 요구사항이 항상 변경된다. 이 '변경' 때문에 설계가 필요한 것이다. 예측 불가능한 변경에 유연하게 대처할 수 있는 안정적인 구조를 설계해야한다. 좋은 설계는 나중에라도 변경할 수 있는 여지를 남겨 놓는 설계다. 즉, 설계의 목표..

객체지향의 강력함은 책임을 자율적으로 만드는 것에 달려있다

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 05 책임과 메시지 요약 정리 객체가 행동을 하는 유일한 이유는 다른 객체로부터 요청(메시지)을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 자율적인 책임은 객체가 '어떻게'해야 하는가가 아니라 '무엇'을 해야 하는가를 설명한다. 메서드 - 메시지를 처리하기 위해 내부적으로 선택하는 방법을 메서드라고 한다. 필요한 경우 메시지에는 인자가 함께 전달된다. 다형성 서로 다른 타입에 속하는 객체들이 동일한 메시지를 수신한다. 객체들은 서로 다른 메서드를 이용해 메시지를 처리할 수 있다. 즉, 동일한 메시지를 서로 다른 메서드(처리방법)를 이용해 처리..

테스트 주도 개발은 객체지향 설계도구

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 04 역할, 책임, 협력 요약 정리 협력 중요한 것은 개별 객체가 아니라 객체들 사이에 이뤄지는 협력이다. 협력의 본질은 요청과 응답으로 연결되는 네트워크다. 첵임 책임은 객체의 외부에 제공해 줄 수 있는 정보(아는 것) 개인적인 정보에 관해 아는 것 관련된 객체에 관해 아는 것 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것 외부에 제공해 줄 수 있는 서비스(하는 것)의 목록이다. 객체를 생성하거나 계산을 하는 등의 스스로 하는 것 다른 객체의 행동을 시작시키는 것 다른 객체의 활동을 제어하고 조절하는 것 역할 '왕'과 '여왕'이 객체라면 '판사'는 그들의 역할이다. 같은 ..

추상화는 복잡성을 이해하기 쉬운 수준으로 단순화하는 것

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다. 설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 03 타입과 추상화 요약 정리 이해하기 쉽고 예측 가능한 수준으로 단순화하는 전략 추상화란 불필요한 부분을 도려내가면서 본질(목적)을 드러나게 하는 과정이다. 공통점은 취하고 차이점을 버리는 일반화를 통해 단순하게 만든다. 추상화의 목적은 복잡성을 이해하기 쉬운 수준으로 단순화하는 것이다. 공통적인 특성으로 묶은 것을 '개념'이라고 한다. 개념은 세 가지 관점으로 이야기 할 수 있다. 심볼 : 개념을 가리키는 명칭(ex. 트럼프카드) -> 명칭 내연 : 개념의 완전한 정의(ex. 트럼프카드의 설명, 공통된 특징) -> ..

DRF 초기세팅 후 동료들에게 컨펌을 요청하였다.

오늘 한 것 객체의 행동과 상태, 협력 대해 코드로 구현해보고 스터디 모임에서 발표 DRF 초기세팅 후 동료들에게 깃헙 레포 컨펌요청 성장한 점 객체지향 프로그래밍이란 '상태와 행동, 식별자를 가진 객체들이 서로 협력하며 우리가 원하는 앱을 만드는 과정'이란 걸 알게되었다. 객체처럼 '초기세팅'도 깃헙으로 올려 공유하면 반복되는 작업을 줄이고 재사용성을 높일 수 있음을 알게되었다. (이것이 객체지향적 사고..?) 노력할 점 동료들의 피드백을 받아 DRF 초기세팅을 수정보완하자 주말동안 CS 공부를 빠르게 훑어보자 내일 하고 싶은 것 네트워크 입문서를 완독하고 싶다. 하기로 했던 언스플래시 한글 검색 서비스 구현해보기

Log/Today 2022.02.11

파이썬에서의 객체가 무엇인지 알게되었다.

오늘 한 것 객체지향의 사실과 오해 2장 읽고 블로그 포스팅 2022.02.10 - [Review series/객체지향의 사실과 오해] - 행동이 상태를 결정한다. 객체의 행동과 상태를 구현한 코드 작성 깃헙 링크 DRF 공식문서 1개 토픽 번역 및 포스팅 2022.02.10 - [Document translation/Django REST framework] - Class-based Views 성장한 점 객체의 특성, 그리고 파이썬에서의 객체가 무엇인지 알게되었다. (알고보니 파이썬은 모든 값이 객체였다...!) DRF를 익히기 위해 공식문서에 처음 번역해보았다. 노력할 점 객체를 이해하는데 오래걸려 다른 CS 공부가 더디게 진행되고 있다. 어느정도 이해했다면 다른 공부로 넘어가도 좋을 것 같다. DRF..

Log/Today 2022.02.11

행동이 상태를 결정한다.

* 이 글은 책을 읽고 주관적인 생각과 함께 요약 정리한 글입니다.설명을 위한 글이 아니므로 내용이 정확하지 않을 수 있습니다. 제목 : 객체지향의 사실과 오해 저자 : 조영호 범위 : 02 이상한 나라의 객체 요약 정리 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 객체는 저장된 상태와 실행 가능한 코드를 통해 구현된다. 숫자, 문자열, 양, 속도, 시간, 날짜, 참/거짓과 같은 단순한 값들은 객체가 아니다. 단순한 값들은 다른 객체의 상태를 표현하기 위해 사용한다. 객체의 상태를 구성하는 모든 특징을 객체의 프로퍼티라고 한다. 정적인 프로퍼티 사람이라면 키, 성별, 체력 등이 될 수 있고 변경되지 않고 고정되기 때문에 ‘정적’이다. (cf. key) 동적인 프로퍼티 값(va..

객체지향의 다형성에 대해서 어렴풋이 알게 되었다.

오늘 한 것 객체지향의 사실과 오해 1장 읽고 블로그 포스팅 Overload 와 Override 를 파이썬 코드로 구현 및 블로그 포스팅 2022.02.07 - [Dev/Language] - Overloding 과 Overriding 을 Python코드로 구현 파파고 API를 사용하여 코드로 한영 번역 성장한 점 오버로딩, 오버라이딩에 대한 개념과 실제 코드로 구현할 수 있게 되었다. 객체지향의 다형성에 대해서 어렴풋이 알게 되었다. 네이버 파파고 API를 활용하여 코드로 한영을 번역할 수 있게 되었다. 내일 하고 싶은 것 객체지향의 사실과 오해 책 150p 까지 읽고 포스팅하기.

Log/Today 2022.02.07