본문 바로가기

OOP12

[일일 회고] 22.01.13.목 - 초보의 OOP 설계와 구현기(다형성과 추상화, 정적 팩터리 메서드 적용) 📚 개발 생각 오늘은 특정 주제에 대한 콘솔 프로젝트를 했다. 프로그램 실행부터 사용자 입, 출력과 데이터, 핵심 로직에 대한 요구사항이 있었다. 이를 절차 지향적으로 구현하는 것이 아니라 직접 OOP로 설계하고 구현하는 것이다. 예전에 C로 개발한 습관이 남아있어서 항상 어떤 문제를 볼 때 데이터를 중앙에 꺼내 쓰는 방식으로 개발했다. 이를 탈피하고자 특정 객체 안에 데이터와 프로시저로 묶어 정말 OOP 패러다임을 머릿속에 넣고 몸으로 익히고 싶었다. 사실 이전에 '객체지향의 사실과 오해 책'도 읽고 OOP 적용을 하려 했지만 역시나 어려웠다. 오늘의 회고는 프로젝트에서 겪었던 고민과 의문점을 남긴다. OOP ..ing ✅ 설계를 고민하고 구현하다 보니 다형성과 추상화가 된다고? 주어진 문제를 설계, .. 2022. 1. 13.
📔 역할, 책임, 협력 (객사오 4장) 객체지향을 설계의 핵심은 협력, 책임, 역할이다. 협력 협력이란 객체들 사이에 요청과 응답으로 이루어진 네트워크이다. 그 네트워크는 어떤 목적이 있다. 1장의 예처럼 "커피 주문"의 협력이 있다고 한다면 손님, 캐시어, 바리스타 객체들 간에 커피를 위해 서로 수많은 요청과 응답이 필요하다. 책임 책임은 어떤 객체가 다른 객체에게 받은 요청 메시지를 수신하고, 이에 대해 응답하고 처리해야 하는 것을 말한다. 손님이 캐시어에게 '커피 한 잔 주세요'라고 요청한다면, 캐시어는 손님의 요청에 대한 응답을 해야 할 책임을 갖느다. 협력을 위해 객체가 다른 객체에게 요청을 보내고, 수신한 객체에게 책임을 수행하게 만드는 것을 메시지 전송이라고 한다. 객체지향의 설계는 클래스, 상속의 관계를 먼저 생각하는 것이 아닌.. 2021. 11. 25.
📓 은총알은 없다. (오브젝트 0장) 현대의 '패러다임(paradigm)'이라는 단어는 '한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계'를 의미한다. 1962년 토마스 쿤은 의 책에서 과학이 단순히 계단식 발전의 형태를 이루는 것이 아니라 새로운 발견이 기존의 과학적 견해를 붕괴시키는 혁명적인 과정을 거쳐 발전해왔다고, 이를 '과학혁명', '패러다임 전환' 이라고 주장했다. 예를 들어 천동설에서 지동설로 변화한 사건처럼 말이다. 이 책(오브젝트)은 절차형 패러다임에서 객체지향 패러다임의 변화를 이야기한다. 하지만 과학혁명과는 다르게 프로그래밍 패러다임은 절차지향 패러다임을 붕괴시키고 객체지향 패러다임이 바뀐 혁명적인 패러다임이 아닌 서로 상호 보완, 발전적인 패러다임을 이야기한다. 객체지향 프로그래밍을 하는 개발자들이 .. 2021. 11. 23.
책 '오브젝트(Object)' 소개 📓 오브젝트 - YES24 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 조영호 님의 '객체지향 프로그래밍' 관련된 책은 두 권이 있고 4가지 주제를 이야기한다.(2021년 기준) 객체지향은 클래스 중심이 아닌 객체를 바라보는 것이다. 객체는 독립적인 존재가 아니라 기능 구현을 위해 협력하는 공동체의 존재이다. 객체들에게 적절한 역할과 책임을 부여할 수 있어야 한다. 1,2,3의 내용을 요구사항에 맞게 설계하고 프로그래밍 언어로 담아내야 한다. 책 "오브젝트" 는 4가지 주제 중 3,4번을 이야기한다. 객체에 적절한 역할과 책임을 부여하는 방법과 유연하.. 2021. 11. 23.
📔 타입과 추상화 (객사오 3장) 추상화를 통한 복잡성 극복 과거 지하철 노선도는 실제 지도와 1:1 매칭 되었지만 이해하기 어려웠다. 하지만 해리 벡은 승객이 알아야 할 사실(열차 타는 곳)의 정보만 추상화하여 현실의 복잡성을 단순화했다. 실제 역의 거리와 위치는 달랐지만 목적지와 방향을 쉽게 알 수 있었고 이는 현대의 대표적인 지하철 노선도가 되었다. 객체지향과 추상화 객체지향 패러다임도 마찬가지이다. 객체라는 추상화를 통해 현실의 복잡성을 극복한다. 객체 간의 공통점을 일반화하고, 불필요한 세부 사항을 제거해 단순화한다. 타입 컴퓨터는 0,1 비트로 되어있다. 얼핏 보면 랜덤 한 숫자 같지만 데이터를 목적에 따라 분류하고 타입 시스템이 시작됐다. 1) 어떤 데이터에 어떤 연산자를 적용하느냐에 따라 그 데이터 타입이 결정되고, 2) .. 2021. 11. 21.