본문 바로가기

내일배움캠프 Node 4기/TIL

내배캠 12/28 TIL

객체지향 프로그래밍 OOP

과거 플러터로 앱을 만들때 사용하던 프로그래밍 방식이다

사실 JS에서는 OOP용 언어는 아니지만, TS를 이용해 interface등을 사용해 구현하기도 한다.

 

객체지향이란 쉽게 말하면 객체 단위로 쪼개서 프로그램을 만든다는 뜻인데

사실 이건 단순히 글로만 배우면 무슨소린지 굉장히 난해하다. 그래서 여기서는 그냥 정말 쉽게 개념만 건드리고 실제 사용하는건 훗날 프로젝트에서 언급해볼 예정이다

 

1. 캡슐화

 

중요한 정보를 캡슐로 감싸서 외부에서 데이터에 접근하기 힘들게 한다는 뜻이다.

private로 변수를 선언한 후, Get과 Set으로 접근하게 하는것이 골자다

 

2. 추상화

 

각 기능에서 공통되는 로직이나 함수를 찾아내 그것을 공동관리(?) 하는 개념이 추상화 인데, 예를들어 우리집 주소가 서울시 동작구이고, 내 친구 주소가 서울시 송파구면, 우리 둘을 묶어 '서울시민'으로 묶은 후 주소를 서울시민이고, 동작구에 거주한다 등으로 나와 친구를 서울시민으로 '추상화' 한다고 보면 되겠다.

 

3. 상속

 

위에 든 예시로 살펴보면, 나는 서울시민이고, 동작구에 거주하며 내 친구와 나는 서울시민이란 추상화를 통해 묶여있다. 나는 동작구에 사는 서울 시민인데, 추상화로 인해 서울시민이란 속성이 동작구민인 나에게 상속된 것이다.

 

4. 다형성

 

또 위에 있는 예를 든다면, 만약에 내가 송파구로 이사를 간다면, 나는 동작구민에서 송파구민으로 내 현재의 위치가 바뀌지만, 서울시민이란 요소는 또한 그대로 상속받고 있다. 나는 서울시민이란 추상화된 객체 안에서, 동작구민도 될수 있고 송파구민도 될수 있다. 

 

5 의존성, 결합도

 

의존성은 각 객체가 서로 얼마나 의존하고 있는가의 개념이고, 결합도는 의존성의 합리성을 따지는 개념이다. 객체간의 의존성이 높으면, 수정사항이 생길때마다 의존하는 객체들이 모두 바뀌게 되므로 훗날 혼란이 올 가능성이 높다. 하지만 객체 의존성이 0으로 수렴할 가능성은 낮으므로, 결국 설계의 목표는 '결합도'를 낮춰 변경이 용이한 어플리케이션을 만드는게 제 1목표라고 하겠다

 

6. 응집도

 

책임감(?)이라고 보면 되겠다. 각 객체의 응집도가 높으면 '혼자서도 잘해요'같은 개념인데, 단위 데이터 처리가 높아지면 응집도가 높은 것이고, 이 역시 훗날 수정사항이 생길때 높을수록 유리하다

 

아마 다음 프로젝트때 실제로 oop를 구현할것 같은데

그때 다시 구체적으로 언급할 때가 있을것 같다.

'내일배움캠프 Node 4기 > TIL' 카테고리의 다른 글

내배캠 12/30 TIL  (0) 2022.12.30
내배캠 12/29 TIL  (0) 2022.12.30
내배캠 12/27 TIL  (0) 2022.12.29
내배캠 12/26 TIL  (0) 2022.12.26
내배캠 12/23 TIL  (0) 2022.12.23