🧐 객체지향이란?
객체 지향은 소프트웨어 개발에서 주요 구성 요소를 기능이 아닌 객체(Object)로 삼으며 어떤 객체가 어떤 일을 할 것인가에 초점을 맞춘다.
책임과 권한을 가진 객체들이 서로 메시지를 주고 받아 협력하여 필요한 기능을 수행하는 방법론이다.
그렇기에 복잡한 시스템도 효과적으로 분해하고 구성하며 개발자 손쉽게 이해하고 효율적으로 관리할 수 있게 도와준다.
🧐 객체 지향 프로그래밍(Object-Oriented Programming, OOP)
프로그래밍 패러다임은 프로그래밍의 방식이나 관점을 바탕으로 효율적이고 명확한 코드를 작성하는 방법을 나타낸다.
대표적인 세가지 프로그래밍 패러다임
- 구조적 프로그래밍(Structure Programming)
- 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)
- 함수형 프로그래밍 (Functional Programming)
개발자에게 코드를 적게 수정하고 많은 시간을 세이브 시키는 것은 매우 중요하다. 그런데 코드를 작성해야할 때, 동일한 코드를 여러군데 분산 시킨다면, 해당 로직을 수정할 때 동일한 코드를 일일히 찾아가며 수정해야하는 상황이 발생한다.
객체 지향 프로그래밍은 데이터와 기능이 밀접하게 연결되어 있기 때문에, 코드의 구조와 동작을 직관적으로 파악할 수 있다.
어떤 기능을 하는 매서드를 만들어서 사용하고 있는데 문제가 발생했다면 해당 객체 내부만 살펴보면 되는 것이다.
또한 하나의 객체에서 정의된 기능이나 데이터 구조는 다른 객체에서도 쉽게 재사용할 수 있다.
🧐 객체 지향 프로그래밍의 핵심 원칙
1. 캡슐화(Encapsulation)
객체 내부의 세부적인 사항을 감추는 것, 중요한 정보를 외부로 노출 시키지 않도록 만드는 일
자바스크립트에서도 변수앞에 언더바(_)를 붙여 번수를 숨긴것 처럼 나타내는 규칙을 따르곤하지만 완벽한 캡슐화라고 할 수 없다.
2. 상속(Inheritance)
상속은 하나의 클래스가 가진 특징(함수, 변수 및 데이터)을 다른 클래스가 그대로 물려 받는 것을 말한다.
이미 정의된 상위 클래스의 특징을 하위 클래스에서 물려받아 코드의 중복을 제거하고 코드 재사용성을 증대시킨다.
3. 추상화(Abstraction)
객체에서 공통된 부분을 모아 상위 개념으로 새롭게 정의하는 것을 추상화라고 한다. 즉, 불필요한 세부 사항을 생략하고 중요한 특징만을 강조함으로 코드를 더욱 간결하고 관리하기 쉽게 만드는 원칙이다.
4. 다형성(Polymorphism)
다형성은 하나의 객체(클래스)가 다양한 형태로 동작하는 것을 의미한다. 이는 객체가 가진 특성에 따라 같은 기능이 다르게 재구성되는 것을 의미한다. 즉, 동일한 매서드나 함수 명을 사용하더라도, 클래스마다 그 메서드가 다르게 동작하는 덧이 다양성의 핵심이다.
'TIL' 카테고리의 다른 글
[TIL] 3-Layered Architecture (0) | 2024.02.21 |
---|---|
[TIL] 객체 지향 설계 5원칙 (SOLID) (0) | 2024.02.19 |
[TIL] 편메추 프로젝트 마무리 및 회고 (1) | 2024.02.15 |
[TIL] bcrypt.hash와 bcrypt.compare (0) | 2024.02.15 |
[TIL] prisma schema ondelete의 noaction, cascade차이 (0) | 2024.02.14 |
댓글