객체지향 프로그래밍
객체지향 프로그래밍
- "프로그램에서 사용되는 객체를 생성하고, 각 객체에 포함된 데이터와 기능을 상호 호출함으로써 프로그램을 구성하는 방식."
출처: Do it! 자바 완전 정복
- 클래스와 객체의 개념에 의존하는 프로그래밍 패러다임
- 프로그램을 간단하고 재사용 가능한 코드 (클래스)로 구성하기 위해 사용되는 패러다임.
출처: https://www.educative.io/blog/object-oriented-programming
객체지향의 장점
1. 복잡한 것을 간단하고 재사용 가능한 구조로 모델
2. 재사용 가능한 OOP 객체들은 프로그램 전반적으로 사용 가능함.
3. 다형성을 통해 class-specific behavior 허용
4. 캡슐화를 통화 정보 보호.
객체지향의 4대 기둥
1. 상속
- 자식 클래스는 부모 클래스로부터 자료와 행위를 상속 받음.
- 재사용성 지원
2. 캡슐화
- 객체에 정보 저장, 선택적으로 정보 노출
- 예) public, private
- 장점: 보안 강화, 개발자가 실수로 무언가를 변경하는 것을 방지, 코드 지적재산 보호 (퍼블릭 메서드만 외부 개발자가 접근 가능), 복잡성 숨김
3. 추상화
- 객체를 접근하기 위해 high level public 메서드만 노출
- 복잡성을 표현하기 위해 간단한 클래스 사용
- 사용자로부터 복잡한 디테일 숨김, 운전자는 악셀, 핸들, 브레이크만 알면 되지, 엔진 내부 사양까지 몰라도 됨.
4. 다형성
- 다양한 메서드가 같은 task 수행 가능
- 행위를 공유하도록 하기 위해 객체 설계
- 오버로딩, 오버라이딩