객체 지향 프로그래밍
- 컴퓨터 프로그래밍 패러다임 중 하나
- 프로그램을 객체(Object)라고 하는 독립적인 모듈로 나누고 이러한 객체들 간의 상호작용을 통해 소프트웨어를 설계하고 구현하는 방법론
객체(Object)
- 현실 세계의 개념이나 사물을 모델링한 소프트웨어 구성 요소
- 데이터와 데이터를 처리하는 메서드(함수)로 이루어져 있음
클래스(Class)
- 객체를 생성하기 위한 템플릿 또는 설계도 역할
- 객체 = 클래스 기반으로 생성된 인스턴스
- 클래스로 구분하는 이유
- 모듈화와 추상화를 통해 프로그램을 관리 가능한 작은 독립적인 단위로 분할하고 단순화 시킬 뿐 아니라 코드의 이해가 쉽고 유지보수가 용이해짐
캡슐화(Encapsulation)
- 데이터와 그 데이터를 처리하는 메서드를 하나의 단위로 묶는 것
- 객체 내부의 데이터는 외부에서 직접 접근할 수 없으며, 메서드를 통해서만 데이터에 접근 가능
- 데이터의 은닉성과 보안 강화를 위해 사용
상속(Inheritance)
- 이미 존재하는 클래스를 기반으로 새로운 클래스를 정의하는 메커니즘
- 코드의 재사용이 가능하고 부모 클래스의 특성과 메서드를 자식 클래스에서 확장하거나 수정 가능
다형성(Polymorphism)
- 같은 인터페이스를 가진 객체들이 다른 방식으로 동작할 수 있는 능력
- 여러 객체가 동일한 메서드 이름을 사용하더라도 다른 구현을 제공할 수 있으며, 코드의 유연성과 확장성을 높일 수 있음