객체 지향 프로그래밍 (Object-Oriented Programming)

일종의 프로그래밍 방법론으로 프로그램을 구성하는 함수와 변수를 묶어서 객체를 만들고 객체 단위로 프로그래밍 하기 위한 방법입니다.


객체 지향 프로그래밍의 장점

- 모듈간의 독립성 증대

 + 하나의 프로그램은 여러가지 기능으로 구성 -> 각각의 기능들은 모듈로 구현

 + 독립성이 높을 수록 유지보수, 개발이 쉬워짐

 + 객체 지향 프로그래밍에서는 모듈화의 단위가 객체 단위가 된다

 + 독립적인 기능을 지원하는 객체를 구현하고 객체들을 모아서 프로그램을 개발하는 것이 객체 지향 프로그래밍의 방식

 + 객체마다 고유의 기능이 정해져 있기 때문에 특정 객체에서 문제가 발생하면 그 객체만 수정하면 된다.

 + 객체의 구현이 변경되더라도 객체의 인터페이스는 변경되어서는 안된다.

- 재사용성 증대

 + 한번 만들어 둔 객체는 다른 프로그램에서 쉽게 가져다가 쓸 수 있다.

 + 대체로 객체 지향 프로그래밍 언어들은 클래스 라이브러리를 제공해 바로 사용할 수 있는 객체를 가져다가 쓸 수 있는 환경을 제공한다.

 + 상속 : 이미 개발해둔 기능에 다른 기능을 추가해야하는 경우에 상속의 개념을 통해 이미 개발한 기능과 추가된 기능을 동시에 구현할 수 있다.

- 유연성, 확장성 증대

 + 객체의 사용자는 객체의 서비스를 이용하기 위해 객체의 인터페이스로 접근하는데, 인터페이스를 변경하지 않은 상태에서 객체의 내부 구현을 얼마든지 변경할 수 있다.

 + 서로 다른 객체가 같은 인터페이스를 제공한다면 사용되는 객체를 바꾸더라도 기존의 프로그램이 그대로 동작할 수 있다. (바뀐 객체로 동작)

 + 프로그램의 규모가 커지면 커질 수록 유연성과 확장성은 더 큰 장점이 된다.



객체 지향 프로그래밍의 세 가지 특징

- 캡슐화

 + 객체를 정의하기 위해 관련된 함수들과 변수들을 하나로 묶어주는 것

 + 단순히 묶는게 아니라 객체를 사용하기 위해 필요한 부분을 제외한 나머지 부분을 숨기는 것을 의미

 + 객체 내부의 구현을 모두 이해하지 않고 필요한 부분만 알고 프로그래밍이 가능

 + 객체를 잘못된 변경으로부터 보호할 수 있음

- 상속

 + 기존의 클래스가 가진 기능을 이어받아서 새로운 클래스를 정의하는 것

 + 재사용성 증대, 비슷한 기능을 제공하는 라이브러리 클래스나 이미 구현된 클래스를 상속받아 빠르게 구현할 수 있다

- 다형성

 + 같은 방법으로 객체의 서비스를 요청해도 어떤 객체가 사용되는지에 따라 다르게 동작하는 것

 + 객체의 인터페이스가 같아도 내부적인 구현이 다르다는 의미

 + 실제 객체의 내부 구현은 다르더라도 객체의 서비스에 접근하는 인터페이스가 같기 때문에 객체를 사용하는 코드를 한번만 작성해두고 여러 객체에 적용할 수 있다.

'Basics > Programming' 카테고리의 다른 글

범용 CPU 레지스터  (0) 2015.08.23
깊은 복사와 얕은 복사 (Deep Copy, Shallow Copy)  (0) 2014.11.15
빅엔디안 리틀엔디안  (0) 2014.10.13
아키텍쳐, 프레임워크, 플랫폼  (0) 2014.09.23
Posted by 긍정왕오킹