추상화 종류 분류와 인스턴스화 일반화와 특수화 집합과 분해 1. 분류와 인스턴스화 * 개념과 범주 객체들의 특정집합에 공통의 개념을 적용하는 것 바퀴를 이용해 사람들을 운반하는 운송수단 -> 자동차 푸른 잎과 갈색의 줄기를 가진 다년생 식물 -> 나무 분류는 세상에 존재하는 객체에 개념을 적용하는 과정이다. 우리는 무수히 많은 자동차와 나무를 개별적으로 다루지않고 하나의 범주로 묶어 복잡성을 낮춘다. 분류를 통해 개별현상을 하나의 개념으로 다룬다. 수많은 개별적인 현상들은 객체이다. 하나의 개념은 타입이다. 객체들을 동일한 타입 또는 범주로 묶는 과정을 의미하므로 객체를 타입의 인스턴스라고 한다. * 타입 타입으로 객체를 분류할때 적용하는 세가지 관점 심볼 : 간략한 이름이나 명칭 내연 : 타입의 완전한..
객체지향 설계 안에 존재하는 세가지 상호 연관된 관점 개념관점 실제 도메인의 규칙과 제약을 최대한 유사하게 반영하라. => 도메인 설계를 잘해라. 명세관점 소프트웨어 관점에서 객체가 다른 객체와의 협력을 위해 '무엇'을 할 수 있는가에 초점을 맞춰라 => 인터페이스와 구현체를 하나의 클래스 혹은 생략하지말고 분리하여 생각하자. 구현관점 객체들이 책임을 수행하는데 필요한 코드를 작성한다. => 즉, 인터페이스는 객체들간의 책임과 협력에서의 명세서로써 분리하고 그 인터페이스에 메서드와 속성들을 구현하자. 커피 전문점 도메인 객체 손님 바리스타 메뉴판 메뉴 커피 연관관계 메뉴판
안정적인 구조를 기반으로 시스템을 분할하는 객체지향적인 접근법은 역할, 책임, 협력을 기반으로 시스템의 기능을 구현하는 책임-주도 설계의 본질을 이해하는 것에 도움이 된다. 자주 변경되는 기능이 아닌 구조를 따라 역할, 책임, 협력을 구성하라. 기능 설계 대 구조 설계 불행하게도 요구사항은 변경된다.설계라는 행위를 중요하게 만드는 것은 변경에 대한 필요성이다. (성능 보단 유지보수를 생각하라는 말이 사실인것 같다.) 우리는 변경을 예지하는 것이 아닌 변경을 수용할 수 있는 선택의 여지의 설계를 마련해 놓는 것이다. 자주 변경되는 기능을 중심으로 설계한 후 구조가 기능을 따르게 하는 '전통적인 기능분해'는 변경에 취약하다. 객체지향은 자주 변경되지 않는 안정적인 객체 구조를 바탕으로 시스템 ..
Ch.4 역할, 책임, 협력 객체가 가져야 할 행동 혹은 상태를 먼저 생각하지 말자. 객체간의 협력이 우선이다. 즉, 책임을 어떻게 구현할 것인가? (no) 객체간의 협력에서 올바른 객체가 책임을 가져야 한다. 객체의 책임 분류 하는것(doing) 객체를 생성, 계산하는 등 스스로 하는것 다른 객체의 행동을 시작시키는것 다른 객체의 활동을 제어하고 조절하는것 아는것(knowing) 개인적인 정보에 관해 아는것 관련된 객체에 관해 아는것 자신이 유도하거나 계산할 수 있는것에 관해 아는것 아는것의 경우 책에서의 재판의 관한 예를 보았지만 프로그래밍 내의 예시를 생각하여 이해하기는 힘들었다. 역할 역할을 대체할 수 있는 객체란, 동일한 메세지를 이해할 수 있는 객체역할의 개념을 사용한다면 다양한 객체들이 협력..
소프트웨어 내의 객체의 특성은 크게 상태, 행동, 식별자로 나뉜다. 상태 : 단순한 값(속성)과 객체의 조합으로 결정 행동 : 객체의 상태를 변경하는 메서드(?) 식별자 : 객체를 구별할 수 있는 특정한 속성 예) @Entity public class Korean //속성1 @Id //식별자 private Long juminBunho; //속성2 private String name; //속성3 private String male; 캡슐화는 객체 내부의 상태를 노출하지 않는것 객체의 상태에 접근하지 않고 객체의 행동만을 전달해 협력한다. 상태를 외부에 노출하지 않는 것은 객체의 자율성을 높여준다. 객체를 설계할때 상태를 결정하고 행동을 결정하는 방법은 좋지않다. 상태를 먼저 결정할 경우 캡슐화가 저해된다...
.. 일상에서의 객체지향 모닝커피를 주문하는 손님과 주문을 받는 캐시어, 주문 후 커피를 제조하는 바리스타 이 3명이 각각 행하는 커피를 주문하고 주문을 받고 제조를 하는 과정안에서 일어나는 역할과 책임 또 협력을 소개하며 객체지향의 가장 중요한 3가지 개념이라고 소개한다. .. 객체지향의 특징 커피를 제조하는 바리스타는 커피머신을 이용해 커피를 제조할 수도 있지만 수작업만으로 커피를 제조할 수 있다. => 다형성 주문에 따라 캐시어는 바리스타의 커피 제조과정에 관여하지 않는다. 물론 바리스타도 캐시어의 주문받는 방식에 관여하지 않는다. => 캡슐화 .. 그래서 객체지향이란 시스템을 상호작용하는 자율적인 객체들의 공동체, 객체를 이용해 시스템을 분할하는 방법 주문을 하는 손님, 주문을 받는 캐시어, 제조..
- CompositionAPI
- 객체지향의 사실과 오해
- java 플레이그라운드
- 정수형으로 변환
- 맥 error
- mybatis구현
- springboot
- vue.js
- JWT
- 함께모으기
- 토스페이먼츠
- 스프링부트
- Vue.js3
- 책리뷰
- for
- 객체지향
- 객체 지도
- pinia
- script setup
- 프로그래머스
- 알고리즘
- 짝지어제거하기
- 리눅스마스터2급
- LEVEL2
- 한권으로끝내기리눅스마스터2급
- 타임리프
- 다음 큰 숫자
- vuex
- SpringSecurity
- it책 리뷰
- Total
- Today
- Yesterday