객체 지향 프로그래밍(Object-Oriented Programming, OOP)
소프트웨어 개발에서 널리 사용되는 프로그래밍 패러다임 중 하나
이 접근 방식은 프로그램을 객체들의 모임으로 보고,
객체 간의 상호작용을 통해 애플리케이션을 구축하는 것을 목표로 한다
객체는 데이터와 이 데이터를 조작할 수 있는 메서드(함수)를 캡슐화한 것으로 정의된다
OOP의 핵심 개념
- 클래스(Class)와 객체(Object)
- 클래스
- 객체를 생성하기 위한 템플릿 또는 블루프린트
- 클래스는 객체의 구조와 행동을 정의
- 객체
- 클래스에 정의된 속성(상태)과 행동(메서드)을 실제로 가지고 있는 인스턴스
- 클래스
- 상속(Inheritance)
- 한 클래스(부모 클래스)의 속성과 메서드를 다른 클래스(자식 클래스)가 상속받아 사용할 수 있게 하는 메커니즘
- 코드 재사용성을 높이고, 중복을 줄일 수 있음
- 캡슐화(Encapsulation)
- 객체의 데이터(속성)와 그 데이터를 조작하는 메서드를 하나로 묶고, 객체의 일부 구현 세부 사항을 외부로부터 숨기는 기법
- 데이터의 직접적인 접근을 제한함으로써 데이터 무결성을 보장할 수 있음
- 다형성(Polymorphism)
- 같은 이름의 메서드가 다른 클래스에서 다른 동작을 할 수 있게 하는 능력
- 컴파일 시간(정적) 다형성과 실행 시간(동적) 다형성이 있으며, 오버로딩과 오버라이딩을 통해 구현됨
- 추상화(Abstraction)
- 복잡한 내부 구현 세부 사항을 숨기고, 필요한 부분만을 간략화하여 표현하는 과정
- 사용자에게는 인터페이스만을 제공하여 사용의 단순화를 추구
OOP의 장점
- 재사용성
- 코드의 재사용이 용이하여 개발 시간과 비용을 절약할 수 있다
- 확장성
- 시스템의 일부를 변경해야 할 때, 해당 부분만을 수정하거나 확장함으로써 전체 시스템에 미치는 영향을 최소화할 수 있다
- 유지보수성
- 캡슐화와 추상화를 통해 시스템의 복잡성을 관리할 수 있으며, 이로 인해 유지보수가 용이해진다
- 명확한 구조
- 객체 지향 프로그래밍은 사람이 세계를 인식하는 방식과 유사하게 시스템을 여러 객체로 나누어 설계하기 때문에, 프로그램의 구조가 명확해진다
객체 지향 프로그래밍은 소프트웨어 개발에 있어 강력하고 유연한 설계를 가능하게 하는 중요한 패러다임이다
Java, C++, Python, JavaScript 등 다양한 프로그래밍 언어가 OOP의 원칙을 지원한다
'Frontend' 카테고리의 다른 글
웹 표준 및 접근성 (0) | 2024.03.06 |
---|---|
프로세스와 스레드 (0) | 2024.03.06 |
bundle 사이즈 줄이려면? (0) | 2024.03.06 |
이벤트 루프와 태스크 큐 설명 (0) | 2024.03.06 |
로그인 처리 시 쿠키와 세션 어떻게 사용하는가 (0) | 2024.03.06 |