객체 지향 프로그래밍 (OOP)
- Object Oriented Programming
- 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
- 쉽게 말하자면; 프로그램을 작은 독립적인 부품으로 나누고, 이러한 부품들을 객체라는 단위로 취급하여 로직을 구성하는 방법
특징
- 추상화 (Abstraction)
- 객체의 공통적인 속성과 기능을 추출하여 정의하는것
- 예시) '자동차'와 '오토바이' 공통적으로 '탈 것' 이라는 공통 속성이 있다.
- 상속
- 부모 클래스의 속성과 기능을 그대로 이어서 사용할 수 있게끔 하고 자식 클래스에서 기능을 재수정 할 수 있게 하는 것
- 다형성
- 객체의 속성이나 기능이 상황에 따라 여러 형태를 가직수 있는 것
- 오버라이딩
- 오버로딩
- 캡슐화
- 관련이 있는 속성과 기능들을 하나의 캡슐 형태로 만들어 데이터를 보호하는 것
- 데이터 보호
- 데이터 하이딩 = 내부 동작을 가리고 필요한 부분만 골라서 노출 시키는것
장점
- 코드 재사용성
- 유연하고 변경이 쉬운 코드
- 유지 보수가 쉬움
- 사이즈가 큰 프로젝트에 좋음
단점
- 처리속도가 상대적으로 느리다
- 설계에 많은 수고가 들어간다