객체 지향(Object-Oriented Programming, OOP)
OOP는 소프트웨어를 객체 라는 기본 단위로 구성하고, 객체들이 상호작용하도록 설계하는 프로그래밍 방식
클래스와 객체
•
현실 세계의 실제 사물을 모델링한 클래스를 사용하여 객체를 생성함.
•
클래스는 객체를 만들기 위한 틀이며, 객체는 클래스의 인스턴스이다.
•
각 객체는 데이터와 해당 데이터를 처리하는 메서드를 가지고 있음.
주요 특징
1.
캡슐화(Encapsulation)
•
관련된 데이터와 메서드를 하나의 단위로 묶어서 객체를 생성하는 것.
•
캡슐화를 통해 객체의 내부 구현을 외부에 숨기고 객체 간의 인터페이스를 통해서만 상호작용할 수 있다.
•
안정성과 유지보수성이 향상.
2.
상속(Inheritance)
•
상속은 부모 클래스의 속성과 메서드를 하위 클래스가 물려받는 것을 의미.
•
코드의 재사용성을 높이고 클래스 간의 계층 구조를 형성.
3.
다형성(Polymorphism)
•
같은 이름의 메서드가 서로 다른 동작을 수행할 수 있는 능력을 의미.
•
같은 인터페이스를 가진 객체들이 서로 다른 방식으로 동작할 수 있음.
4.
추상화(Abstraction)
•
복잡한 것을 단순하게 표현하는 것. 현실 세계에서 중요한 부분만을 간추려서 나타내는 것.
•
자동차를 추상화한다면 바퀴, 엔진, 핸들과 같은 중요한 특징만을 고려하여 모델링.
◦
자동차의 복잡한 내부 동작이나 세부 구현 내용을 숨길 수 있고, 우리가 필요한 기능에만 집중할 수 있다.
◦
이러한 추상화를 통해 프로그램을 간결하게 만들고, 코드를 이해하기 쉽게 할 수 있음.
•
코드의 가독성을 높이고, 유지보수를 용이하게 할 수 있음.
객체 지향 프로그래밍의 장점
•
코드의 재사용성이 높아진다.
•
코드의 가독성과 유지보수성이 향상.
•
소프트웨어의 개발 및 유지보수 비용이 감소.
•
대규모 프로젝트의 개발과 관리가 용이.
•
협업이 용이하고 팀원 간의 코드의 충돌이 줄어듬.
객체 지향 프로그래밍은 Java, C++, Python 등의 프로그래밍 언어에서 기본적으로 지원.
이러한 특징과 장점들로 개발자들에게 선호되는 프로그래밍 방법론 중 하나이다.