객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나로, 프로그램을 독립적인 객체들의 집합으로 모델링하고 객체들 간의 상호작용을 통해 프로그램을 구현하는 방법론이다.
캡슐화 (Encapsulation): 관련된 데이터와 메서드를 하나의 단위로 묶어 외부로부터의 접근을 제어하는 것을 의미한다.
객체의 내부 동작을 숨기고 외부에서는 객체와 상호작용할 수 있는 인터페이스만 제공한다.
상속 (Inheritance): 기존 클래스의 특징을 그대로 받아와 새로운 클래스를 생성하는 것을 의미한다. 상속을 통해 코드의 재사용성을 높이고 계층적인 구조를 형성할 수 있다.
다형성 (Polymorphism): 동일한 메서드 이름을 가지면서 다른 동작을 수행할 수 있는 개념이다. 서로 다른 클래스의 객체가 동일한 메서드를 호출하면, 각 객체의 특성에 따라 적절한 동작이 수행된다.
추상화(Abstraction): 객체의 필수적인 특징과 동작에 초점을 맞추고, 불필요한 세부사항을 감춤으로써 객체를 단순화한다. 이를 통해 프로그램을 이해하기 쉽고 유지보수하기 쉽도록 만들어준다.