본문 바로가기

오브젝트 chapter 1 간단 정리

서론  - 프로그래밍 패러다임

패러다임 - 한시대의 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계.

 

프로그래밍 패러다임 - 절차형 프로그래밍에서 객체지향 패러다임으로의 변화

 

프로그래밍 언어는 해당 언어가 지향하는 패러다임을 담고 있다.

(C - 절차지향 패러다임, Java - 객체지향 패러다임, LISP - 함수형 패러다임, PROLOG - 논리형 패러다임)

 

일반적인 패러다임과, 프로그래밍 패러다임의 차이

- 일반적인 패러다임은 두가지 이상의 패러다임이 동시에 존재할 수 없다. 반면 프로그래밍 패러다임은 동시에 2개 이상의 패러다임이 공존 가능하다. 여러 패러다임을 공부하여 시의 적절하게 사용하자.

 

 

Chaper 1 - 객체, 설계

1. 이론 vs 실무

이론을 먼저 공부하고 실무를 한다. 혹은, 실무적인 일들을 관찰하여 이론을 정립한다. 이는 어떤 분야에 따라 다르다.

 

실무가 이론 보다 앞서는 대표적인 분야 - '소프트웨어 설계', '소프트웨어 유지보수'

 

설계와 유지보수에서는 복잡한 용어로 설명되는 이론보다는 코드를 통해 쉽게 배울 수 있다.. 이 책은 간단히 설계된 설계도와 코드로 객체지향에 대해 설명한다. 

 

   '오브젝트'는 객체지향적인 코드에 반하는 예시 코드를 먼저 보여주고 이후에 객체지향 패러다임에 대한 예시와 그에 맞는 코드로 변경하면서 이해가 더 쉽게 가도록 짜여져 있다. 챕터 1에서는 동작은 잘 되지만 객체지향 패러다임에 반하는 좋지 않은 예시인 '극장 티켓 판매 애플리케이션 구현'을 한 후, 이를 객체지향 패러다임에 따라 변경하는 과정을 보여준다. 오브젝트의 유명새는 이런 구조에서 나온걸지도 모르겠다. 저자분의 다른 책 '책체지향의 사실과 오해'에서는 간단하게 이론과 그림을 통해 객체지향에 대해 이해할 수 있게 만들었다면 오브젝트는 구체적인 코드와 함꼐 객체지향 설계와 구현에 발을 담글 수 있다.

 

2. 처음 작성한 코드의 나쁜 점

- 예상을 빗나가는 코드 : 관람객과 판매원이 소극장의 통제를 받는 수동적인 존재로 만듬, 현실의 상식과 맞지 않아 예상을 빗나감.

- 변경에 취약한 코드 : 객체 사이에 결합도가 높아서 하나의 객체가 변경되면 다른 객체들도 변경해야되는 상황.

(코드가 궁금하다면 책을 직접 보는 것이 좋습니다!)

 

3. 설계 개선

처음 작성한 코드를 개선 방법

객체의 자율성을 높인다.

관람객이 스스로 지갑을 열고, 판매원이 티켓을 스스로 판매하도록 변경.. 

 

휼률한 객체지향 설계를 위한 지름길 - 객체 내부 상태에 대해서는 외부에서 알 수 없지만 외부의 요청에 대해서는 처리를 할 수 있도록 만든다. 즉 메시지를 통해서만 협력하는 자율적인 객체들의 공동체를 만든다. 여기서 자율성이란 객체 스스로 책임을 질 수 있도록 만드는 것이다. 책임은 객체의 기능을 말한다.

 

절차지향 프로그래밍과 객체지향 프로그래밍의 차이점

- 절차적 프로그래밍 (Procedural Programming)  : 프로세스와 데이터를 별도의 모듈에 위치시키는 방식.

- 객체지향 프로그래밍(Object-Oriented Programming)  : 데이터와 프로세스가 동일한 모듈 내부에 위치하도록 프로그래밍하는 방식.

 

4. 객체지향 설계

좋은 설계란 ? 

오늘 완성해야하는 코드를 짜는 동시에 내일 쉽게 변경할 수 있는 코드.(유지보수성) 왜냐하면 요구사항은 계속 변하기 때문이다.

 

객체지향 설계

 

객체지향 프로그래밍은 의존성을 효율적으로 통제할 수 있는 다양한 방법을 제공하여 요구사항 변경에 더 수월하게 대응 가능하다.

객체지향 설계의 출발은 데이터와 프로세스를 하나의 덩어리로 모으는 것이지만 유연한 객체지향 설계로 가기 위해서는 객체 사이에 역할, 책임, 협력을 적절하게 조율해야한다.

 

 

블로그 정리를 하며 느낀 점

 

- 두달전에 1챕터를 읽기 시작해서 현재는 11챕터를 읽고 있는 오브젝트이다. 처음 1장을 읽었을 때, 와 하는 감탄과 함께 코드 개선하는 과정을 지켜보았던 기억이 새록새록 다시 떠오른다. 다시 1장을 읽는데 또 새롭다. 좋은 책은 여러번 읽어도 매번 새롭다는 사실이 다시 한번 느껴졌다.