Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- flask
- mongoose
- MySQL
- 공룡게임
- nodejs
- jest
- GIT
- 게임
- 정렬
- TypeScript
- Python
- Express
- Queue
- MongoDB
- typeORM
- dfs
- 자료구조
- JavaScript
- game
- class
- Dinosaur
- OCR
- Bull
- Nest.js
- Sequelize
- AWS
- cookie
- nestjs
- react
Archives
- Today
- Total
포시코딩
객체 지향 프로그래밍 (Object-Oriented Programming, OOP) 본문
728x90
프로그래밍 패러다임
프로그래밍 패러다임은 무엇을 해야 할지를 말하기보다 무엇을 해서는 안되는지를 말해준다.
프로그래밍 패러다임 대표적 3가지
- 구조적 프로그래밍 (Structured Programming)
- 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)
- 함수형 프로그래밍 (Functional Programming)
구조적 프로그래밍
제어 흐름의 직접적인 전환에 대한 규칙을 제시한다.
- 기능을 중심적으로 개발을 진행한다.
- 프로그래밍이라는 기술이 시작되면서 가장 처음으로 적용된 패러다임이다.
객체 지향 프로그래밍
제어 흐름의 간접적인 전환에 대한 규칙을 제시한다.
- 프로그램의 처리 단위가 객체인 프로그래밍 방법이다.
- '현실 세계를 모델링'하는 대표적인 프로그래밍 패러다임이다.
함수형 프로그래밍
할당문에 대한 규칙을 제시한다.
- 함수를 중심적으로 개발을 진행한다.
- 3가지의 패러다임 중 가장 처음 만들어졌지만 최근들어 겨우 도입되기 시작한 패러다임이다.
객체 지향 프로그래밍
데이터와 프로세스가 동일한 모듈 내부에 위치하도록 프로그래밍하는 방식을 객체 지향 프로그래밍이라고 부른다.
- 코드를 추상화해 직관적으로 사고할 수 있기 때문에, 대표적인 프로그래밍 방법론으로 적용되고 있다.
- 자동차, 동물, 사람 등과 같은 현실 세계의 객체를 유연하게 표현할 수 있다.
- 객체는 어떠한 특성을 가지고 있으며 특정 기능을 수행할 수 있다.
- 자동차는 객체이고 출발, 정지, 운행 및 제동과 같은 기능을 수행할 수 있다.
객체 지향 프로그래밍은 데이터와 프로세스를 하나의 단위로 처리하는 특성을 가지고 있기 때문에
코드를 수정해야할 때 어떤 코드에서 문제가 발생했는지 직관적으로 인지할 수 있으며
여러곳에 분산된 모든 코드를 수정하는 것이 아닌 해당 로직을 수행하는 코드만 수정하더라도 문제가 해결될 수 있다.
장점
- 의존성을 효율적으로 통제할 수 있는 다양한 방법을 제공함으로서
요구사항 변경에 좀 더 수월하게 대응할 수 있는 가능성을 높여준다. - 동작을 기준으로 프로그래밍을 진행하는 것보다 데이터를 중심으로 프로그래밍을 하게 되면
코드의 덩치가 커지더라도 일관성을 유지하기 좋다. - 객체 지향 코드는 자신의 문제를 스스로 처리해야 한다는 우리의 예상을 만족시켜주기 때문에 이해하기 쉽고,
객체 내부의 변경이 객체 외부에 파급되지 않도록 제어할 수 있기 때문에 변경하기 수월하다. - 흔히 데이터와 프로세스를 하나의 단위로 통합해놓은 방식으로 표현하기도 한다.
- 데이터와 데이터를 사용하는 프로세스가 동일한 객체 안에 위치한다면 객체 지향 프로그래밍 방식을 따르고 있을 확률이 높다.
설계
- 좋은 설계란 요구하는 기능을 온전히 수행하면서 추후의 변경을 매끄럽게 수용할 수 있는 설계다.
- 변경 가능한 코드란 이해하기 쉬운 코드다.
- 변경하기 쉬운 설계는 한 번에 하나의 클래스만 변경할 수 있는 설계다.
- 훌륭한 객체 지향 설계의 핵심은 캡슐화를 이용해 의존성을 적절히 관리함으로서 객체 사이의 결합도를 낮추는 것이다.
728x90
'Node.js' 카테고리의 다른 글
추상화(Abstraction) (0) | 2022.12.28 |
---|---|
객체 지향 설계 5원칙 (SOLID) (0) | 2022.12.28 |
객체지향(Object-Oriented) (0) | 2022.12.26 |
Redis (0) | 2022.12.24 |
[Sequelize] SQL 쿼리(Raw Query) 그대로 사용하기 - Sequelize.query (0) | 2022.12.23 |