객체지향프로그래밍이란?
프로그램의 각 기능들을 일종의 부품으로 바라보고 그것들을 조합하여 프로그램을 설계하는 방법이다. 여기서 부품이 객체에 해당하고, 객체들은 상호작용하며 프로그램의 기능을 수행한다. 이러한 객체를 생성하기위한 설계도를 '클래스'라고 부른다. 객체지향프로그래밍을 줄여서 OOP(Object-Oriented Programming)라고도 한다.
클래스와 객체
- 클래스는 객체의 속성과 기능을 정의해 놓은 일종의 객체 설계도다.
- 하나의 클래스로 여러 개의 객체를 생성할 수 있다.
- 클래스에서 정의한 속성과 기능을 사용하려면 반드시 객체를 생성해야 한다.
특징
-
추상화 (Abstraciton)
- 객체들의 공통된 속성과 기능을 추출하여 클래스로 정의하는 것.
-
상속 (Inheritance)
- 새로운 클래스(하위 클래스)가 기존 클래스(상위 클래스)의 속성과 기능을 이용할 수 있게 하는 것.
- 상위 클래스를 재사용하기 때문에 하위 클래스를 빠르게 개발할 수 있다.
- 상위 클래스와 하위 클래스는 종속관계를 형성함으로서 클래스들을 조직화 할수 있다.
-
캡슐화 (Encapsulation)
- 객체의 실제 구현내용을 외부에서 볼 수 없도록 하는 것.
- 잘못된 사용으로 인한 객체의 손상을 방지한다.
- 접근제한자를 사용해서 공개할 것인지, 숨길 것인지 결정할 수 있다.
-
다형성 (Polymorphism)
- 같은 종류의 객체지만, 실행결과가 다양한 객체를 이용할 수 있는 성질.
- 사용방법은 동일하지만, 실제 사용하는 객체가 바뀌면 실행결과가 다르게 나타나는 것.
- 예시)
컴퓨터의 출력기능 사용하기
흑백 프린터 사용 중: 흑백 인쇄물 출력
컬러 프린터 사용 중: 컬러 인쇄물 출력
장점
- 코드의 재사용성이 높다.
- 새로운 코드를 작성할 때, 기존 코드를 이용해서 쉽게 작성할 수 있다.
(상속)
- 코드의 관리가 용이하다.
- 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
(조립, 디자인패턴)
- 신뢰성이 높은 프로그래밍이 가능하다.
- 접근제한자와 메소드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 한다. (캡슐화)
- 코드의 중복을 제거하여 코드 불일치로 인한 오동작을 방지할 수 있다.
(중복제거, 리팩토링)