객체지향(OOP;Object-oriented Programming)

  1. 오리엔테이션

객체지향 프로그래밍은 프로그래밍의 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것이다. 이 객체들을 마치 레고 블럭처럼 조립해서 하나의 프로그램을 만드는 것이 객체지향 프로그래밍이다. 객체들을 부품처럼 사용하면 재사용성이 높아진다. 여기서 말하는 로직(Logic) 이라함은 변수와 메소드라고 할 수 있다. 서로 연관되어 있는 로직들을 언어적 차원에서 그룹핑하고 분류는 것이라고 할 수 있겠다.

2. 추상화

복잡한 것을 소프트웨어적으로 단순하게 만드는 것을 말한다. 현실을 프로그래밍적으로 잘 추상화하여 설계하는 것이 중요한데, 이것은 지식보다는 지혜가 필요하다. 지식은 주고 받고 내가 얻을 수 있지만, 지혜는 스스로 추구해야하는 것이기에 처한 상황에서 문제를 스스로 해결하는 지루하고 긴 시간을 거쳐서 좋은 엔지니어가 될 수 있다.

3. 부품화

메소드는 부품화의 예라고 할 수 있다. 그리고 이 메소드들을 부품으로 해서 하나의 완제품인 독립된 프로그램을 만드는 것이다. 메소드를 사용하면 코드의 양을 극적으로 줄일 수 있고, 메소드 별로 기능이 분류되어 있기 때문에 코드를 찾기도 쉽고 문제의 진단도 빨라진다.

4. 은닉화와 캡슐화

부품이 어떻게 만들어졌는지 모르는 사람도 그 부품을 사용하는 방법만 알면 쓸 수 있어야 한다. 여기서 부품은 객체라고 할 수 있다. 즉, 내부의 동작 방법을 객체 안으로 숨기고, 사용자에게는 그 부품(객체)의 사용방법(메소드의 사용법)만을 노출하는 것이다. 이러한 컨셉을 정보의 은닉화 또는 캡슐화라고 부른다.

5. 인터페이스

인터페이스는 이질적인 것들이 결합하는 것을 막아주는 역할도 하고, 부품들 간의 규격, 약속이다.이러한 약속을 프로그래밍적으로는 어떻게 구현하는가도 살펴본다.

소프트웨어는 하드웨어가 할 수 없는 것을 할 수 있다. 그 중의 하나가 복제와 상속이다.

Last updated