객체지향 프로그래밍 (OOPs)
Source: Dev.to
Class
예시: Car는 클래스이다. 서로 다른 자동차는 이름과 브랜드가 다를 수 있지만, 모두 네 개의 바퀴, 제한 속도, 연비와 같은 공통 속성을 가진다.
Object
객체는 객체‑지향 프로그래밍의 기본 요소로, 현실 세계의 실체를 나타낸다. 클래스에서 생성되며, 객체가 인스턴스화될 때 메모리가 할당된다. 모든 객체는 정체성, 상태, 행동을 가진다.
예를 들어, “Dog”는 현실 세계의 객체이며 색상, 품종, 짖음, 잠, 먹기와 같은 특성을 가진다.
Data Abstraction
예시: 자동차를 운전하는 사람은 가속 페달을 밟으면 속도가 증가하고 브레이크를 잡으면 차가 멈춘다는 것은 알지만, 내부 시스템이 어떻게 작동하는지는 모른다. 이를 추상화라고 한다.
Encapsulation
캡슐화는 데이터와 메서드를 하나의 단위로 결합하는 과정이다. 코드와 그 코드가 작동하는 데이터를 함께 묶는다. 캡슐화에서는 클래스 변수들이 다른 클래스에 숨겨지고, 클래스의 멤버 함수를 통해서만 접근할 수 있다. 데이터가 외부 접근으로부터 보호되기 때문에 캡슐화는 데이터 은닉이라고도 불린다.
Inheritance
상속은 객체‑지향 프로그래밍에서 중요한 개념이다. 한 클래스가 다른 클래스의 속성과 메서드를 사용할 수 있게 해준다. 즉, 새로운 클래스가 기존 코드를 재사용하여 모든 것을 다시 작성할 필요가 없다는 뜻이다. 결과적으로 상속은 중복을 줄이고 프로그램을 더 쉽게 유지·재사용할 수 있게 만든다.
Polymorphism
다형성은 “다양한 형태”를 의미한다. 객체‑지향 프로그래밍에서 이는 하나의 동작이나 메시지가 상황에 따라 다르게 동작할 수 있는 능력을 말한다. 예를 들어, 한 사람이 아버지, 남편, 직원 등 여러 역할을 가질 수 있으며, 상황에 따라 다른 행동을 보인다. 이 개념을 다형성이라고 한다.