컴퓨터 사이언스 부트캠프 with 파이썬

6장 객체 지향 프로그래밍

1. 프로그래밍 패러다임

절차 지향 (procedural programming), 객체지향 프로그래밍 (object-oriented programming), 함수형 프로그래밍(functional programming)등은 모두 프로그래밍 패러다임의 한 종류이다. 패러다임은 어떠한 사물을 바라보는 사고의 틀이나 체계를 의미한다. 즉, 프로그래밍 패러다임은 프로그래밍을 어떻게 바라보고 어떻게 할 것인지에 대한 인식, 혹은 체계라고 말할 수 있겠다.

2. 절차 지향 프로그래밍

절차를 의미하는 프로시저(procedure)는 서브 루틴, 메서드, 함수라고도 불린다. 한번 정의해두면 어디서든 다시 호출해 사용할 수 있고, 이 함수가 어떤 일을 하는지 쉽게 알 수 있다. 그리고 사용하는 사람이 다르더라도, 함수 내부 코드를 이해할 필요없이, 사용법만 알면 쉽게 사용 가능하며, 다른 프로그래머도, 함수를 기능별로 정의하고, 호출을 사용해 코드를 작성할 수 있어, 쉽게 유지, 보수가 가능하다.

즉 이 프로그램은 어떤 일을 하는가? 에 대한 질문에 쉽게 답할 수 있도록 함수를 사용해 프로그래밍하는것을, 절차 지향 프로그래밍이라고한다.

절차지향 코드 구조에 대한 실습은 아래 링크에서 확인 할 수 있다.

link

3. 객체 지향 프로그래밍

객체지향 프로그래밍은 간단히 말해 ‘어떠한 객체(object)를 어떻게 모델링(modeling)할 것인가?’에 대한 답변이다. 절차지향의 ‘이 프로그램은 무슨 기능을 하는가?’에 대한 질문과는 상이하다.

3.1 캡슐화

주변의 모든 사물은 각각의 특성을 가지고있다. 그 특성을 기준으로 객체들을 분류하고, 정리하면, 계층을 만들 수 있다. 이처럼 변수와 함수를 가진 객체를 이용하는 패러다임을 ‘객체 지향 프로그래밍’이라고 하며, 변수(데이터)와 함수를 하나의 단위(클래스)로 묶는 것을 캡슐화(encapsulation)라고 한다. 이것을통해 어떠한 목적을 가진 객채를 만들어 각 세부 기능을 캡슐화하여 모델링 한것이 바로 객체 지향 프로그래밍이다.