객체 지향 프로그래밍

객체지향 프로그래밍(Object-Oriented Programming)은 좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임으로 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것이다.

이 객체들을 마치 레고 블럭처럼 조립해서 하나의 프로그램을 만드는 것이 객체지향 프로그래밍이라고 할 수 있다. 다시 말해서 객체지향 프로그래밍은 객체를 만드는 것이다.

따라서 객체지향 프로그래밍의 시작은 객체란 무엇인가를 이해하는 것이라고 할 수 있다.

문법과 설계

문법

: 하나는 객체지향을 편하게 할 수 있도록 언어가 제공하는 기능을 익히는 것이다.

이러한 기능들은 if, for문처럼 문법적인 구성을 가지고 있다.

이 문법을 이해하고, 숙지해야 객체를 만들 수 있다. 객체를 만드는 법에 대한 학습이라고 할 수 있다.

설계

: 좋은 객체를 만드는 것. 좀 더 현실을 잘 반영하기 위한 노력의 산물. 소프트웨어의 추상화.

부품화

: 객체 지향은 부품화의 정점이라고 할 수 있다.

이것의 핵심은 연관된 메소드와 그 메소드가 사용하는 변수들을 분류하고 그룹핑하는 것이다.

바로 그렇게 그룹핑 한 대상이 객체(Object)다.

은닉화, 캡슐화

: 그런데 부품화라고 하는 목표는 단순히 동일한 기능을 하는 메소드와 변수를 그룹핑한다고 달성되는 것은 아니다.

제대로된 부품이라면 그것이 어떻게 만들어졌는지 모르는 사람도 그 부품을 사용하는 방법만 알면 쓸 수 있어야 한다.

이를테면 모니터가 어떻게 동작하는지 몰라도 컴퓨터와 모니터를 연결하는 방법만 알면 화면을 표시 할 수 있는 것과 같은 이치다.

즉 내부의 동작 방법을 단단한 케이스 안으로 숨기고 사용자에게는 그 부품의 사용방법만을 노출하고 있는 것이다.

이러한 컨셉을 정보의 은닉화(Information Hiding), 또는 캡슐화(Encapsulation)라고 부른다.

자연스럽게 사용자에게는 그 부품을 사용하는 방법이 중요한 것이 된다.

인터페이스

: 잘 만들어진 부품이라면 부품과 부품을 서로 교환 할 수 있어야 한다.

각각의 부품은 미리 정해진 약속에 따라서 신호를 입, 출력하고, 연결점의 모양을 표준에 맞게 만들면 된다.

이러한 연결점을 인터페이스(interface)라고 한다.

Discussion and feedback