
객체에 대해서 알고 있는 내용이 없어서, 궁금한 내용, 기본적인 개념을 정리해봤다.
시작!
프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호 작용으로 서술하는 방식이다.
인간이 정의한 추상적인 개념이다.
객체지향을 공부하면 항상 어려운 이유가 추상적인 개념이라 그런 것 아닐까 한다.
CS를 공부할 때 항상 나오는 “추상” 개념이 나오면 많이보고, 많이 접하는게 가장 빠르게 익혀지는 것 같다
절차지향 : 코드가 순서대로 실행된다
문제점
현실 세계 처럼 생각해보자!
자동차 : 상태(속도, 연료), 행동(가속, 정지)
강아지 : 특징(이름, 털 색), 행동(뛰기, 짖기)
그럼 프로그램의 세계에서도 적용해보자
기능과 데이터를 묶어서 → 객체로 관리하자
함수는 “동작”만 있다
데이터는 함수 밖에 있거나, 매개변수로 받는다
def 더하기 함수(a, b):
return a + b // -> 동작만 수행!!
print(더하기(2, 3)) # 5
객체는 “데이터(속성)”와 “동작(메서드)”를 같이 가진다
class 계산기:
def __init__(self):
self.결과 = 0 # 데이터
def 더하기(self, 값): # 동작
self.결과 += 값
calc = 계산기()
calc.더하기(3)
calc.더하기(2)
print(calc.결과) # 5
즉!! 객체는 데이터도 가지고 있다!!!
| 함수 | 객체 | |
|---|---|---|
| 데이터 보관 | 없음 | 있음 |
| 동작 | 있음 | 있음 |
| 관계 | 데이터와 분리 | 데이터와 결합 |
| 상태 유지 | X | O |
Nest.js
Nest.js를 사용해본적 있다면, 객체지향 설계를 사용한 것!!!!!
Controller, Service, Repository 등 역할을 가진 객체들로 구조를 만든다!
예를 들어
Controller의 역할은 '웹 요청을 받는 것'이고, 책임은 '요청을 분석해서 적절한 Service에 처리를 위임Service의 역할은 '핵심 비즈니스 로직을 처리하는 것'이고, 책임은 '데이터를 가공하거나 계산하는 것'각자 역할과 책임이 뚜렷한 객체들이 서로 협력하여 하나의 기능을 완성하는 구조
React
리엑트는 객체 지향 개념을 품고 있다.
nest.js 처럼 객체지향 설계라고 보기는 힘들지만 “컴포넌트”를 본다면 객체지향 개념이 녹아 있다고 볼 수 있습니다!!
React는
class문법을 사용하지 않는 함수형 컴포넌트를 주로 사용하지만, 그 기본 단위인 컴포넌트가 자율성을 가지고, 명확한 책임을 수행하며, 다른 컴포넌트와 협력한다는 점에서 객체지향의 철학을 담고 있다!!
객체지향은 말 그대로 지향이다 지향
Class 같은 키워드에 얽매이는 것이 아니라. 시스템이 각자의 역할을 가지고 부품(객체)들이 소통을 하면서 기능을 만들어가는지가 가장 중요하다!!!!
엄격하게 있는 기술, 규칙이 아니다!!!!
지향하는 설계 철학
프로그래밍 패러다임
핵심 키워드 : 협력, 책임, 역할
중요한 사실 : 이 책에서는 객체지향이 현실을 모방한 것이 아니라, 새로운 세계를 창조하는 것이다 라고 말한다.
이는 위에서 “현실 세계 처럼 생각해보자!”라고 말했던 것과 상충하는 말이다. 이게 이 책이 강조하고 있는 말인 것 같다.
수정 중...