객체 지향 프로그래밍은 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고, 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장할 변수와 작업을 수행할 메서드를 서로 연관된 것들끼리 묶어서 만든 것을 객체라고 할 수 있다.
특징
- 추상화 : 객체에서 공통된 속성과 행위를 추출 하는 것
- 캡슐화 :데이터 구조와 데이터를 다루는 방법들을 결합 시켜 묶는 것 (변수와 함수를 하나로 묶는 것을 뜻함)
- 상속 : 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것
- 다형성 : 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석될 수 있는 것
장점
- 클래스 단위로 모듈화시켜서 개발하기 때문에 업무 분담이 편리하고 대규모 소프트웨어 개발에 적합하다.
- 클래스 단위로 수정이 가능하기 때문에 유지 보수가 편리하다.
- 클래스를 재사용하거나 상속을 통해 확장함으로써 코드 재사용이 용이하다.
단점
- 처리속도가 상대적으로 느리다.
- 객체의 수가 많아짐에 따라 용량이 커질 수 있다.
- 설계 시 많은 시간과 노력이 필요하게 될 수 있다.
객체지향과 절차지향의 비교
객체 지향에서는 집을 짓기 위해서 부지, 인부, 설비, 자재, 설계도 등등 어떤 것이 필요하며 이런 객체들이 필요하다는 것과 이것들이 각각 어떤 역할을 하는지를 정하고 아는 것이 중요하다. 하지만 절차 지향에서는 이 각각의 것들보다 1. 부지를 고른다 2. 설계도를 그린다 3. 자제를 주문한다 4. 인부와 설비를 부른다 등등의 순차적인 과정이 중요하다.
대부분의 글에서는 붕어빵이나 자동차에 비유했는데 참고한 블로그에서는 레고에 비유했다. 그래서 나도 이를 거의 같은 방식이지만 나만의 다른 것으로 표현하기 위해서 톱니바퀴에 비유해서 표현하려고 한다. 톱니바퀴에 비유해서 표현하면 객체가 각각의 톱니바퀴가 객체가 될 것이고 그 톱니바퀴가 맞물리게 하여 작동하도록 하는 것이 객체 지향 프로그래밍이다. 각각의 톱니바퀴는 부품화되어 있고 이를 교체하거나 재사용할 수 있는데 이것이 객체 지향 프로그래밍의 특징을 보여준다.
추가적으로 SOLID (객체 지향 설계 원칙)이란 것도 있다. 그리고 특징도 간단하게 요약해서 추가적인 공부가 필요하다.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
| 23.08.14 passport.js (0) | 2023.08.21 |
|---|---|
| 23.08.13 Access token과 Refresh token (0) | 2023.08.19 |
| 23.08.11 DI와 IoC (0) | 2023.08.15 |
| 23.08.09 HTTP와 HTTPS (0) | 2023.08.13 |
| 23.08.04 브라우저는 어떻게 주소를 찾을까? (0) | 2023.08.05 |