깊은바다거북
개발 공부 기록
깊은바다거북
전체 방문자
오늘
어제
  • 분류 전체보기 (219)
    • JAVA (9)
    • JavaScript (15)
    • 스파르타코딩클럽 (11)
      • [내일배움단] 웹개발 종합반 개발일지 (5)
      • [내일배움캠프] 프로젝트와 트러블 슈팅 (6)
    • SQL | NoSQL (4)
    • CS 등등 (0)
    • TIL | WIL (173)
    • 기타 에러 해결 (3)
    • 내 살 길 궁리 (4)

인기 글

최근 글

최근 댓글

태그

  • 자료 구조
  • 트러블 슈팅 Troubleshooting
  • Inorder Traversal(중위 순회)
  • BST(이진 탐색 트리)
  • 자바스크립트 기초 문법
  • Linked List
  • Trie
  • 점화식(Recurrence Relation)
  • DFS(깊이우선탐색)
  • TypeScript
  • 프로그래머스
  • 01. 미니 프로젝트
  • BFS(너비우선탐색)
  • 코딩테스트 연습문제
  • POST / GET 요청
  • 팀 프로젝트
  • Leetcode
  • leetcode-cli
  • 최소 힙(Min Heap)
  • Preorder Traversal(전위 순회)
  • Backtracking(백트래킹)
  • 최대 힙(Max Heap)
  • tree
  • TIT (Today I Troubleshot)
  • 자잘한 에러 해결
  • 재귀 함수
  • Binary Tree(이진 트리)
  • 시간 복잡도
  • Til
  • 혼자 공부하는 자바스크립트
hELLO · Designed By 정상우.
깊은바다거북

개발 공부 기록

TIL | WIL

12/27 (객체 지향은 회사 시스템이다, 화) TIL

2022. 12. 27. 22:14

(노드 심화 주차 강의 듣는 중)


  • 객체 지향에서 나오는 용어들(캡슐화, 상속, 추상화, 다형성, 의존성, 결합도, 응집도)과 객체 지향 프로그래밍 설계의 5가지 원칙인 “SOLID”는 어떤 차이가 있는 걸까.

    ⇒ 대략 전자를 ‘객체 지향적인 설계에서 다루어지고 활용되는 개념들’로, 후자를 거기서 더 나아가 ‘객체 지향 프로그래밍을 더 잘하기 위한 원칙’으로 이해하고 있다.

  • 내가 이해한 ‘객체 지향’: “누가 어떠한 일을 할 것인가”, 일꾼에게 일 할당하기.

    어떤 저택을 돌보는 기능이 필요하다고 할 때, 그걸 한 뭉텅이의 일거리로 만들지 않고 임의로 어떤 고용인들을 추상화해내는 것. 침대 시트와 옷가지를 빠는 ‘빨래 담당 하녀’, 마구간을 돌보는 ‘마구간지기’, 주방 담당 ‘주방장’ 등으로.

    또 어떤어떤 일을 하는 사업을 한다고 할 때 그걸 막연히 주먹구구식으로 해나가는 게 아니라, 유기적으로 자기 일을 해내는 직원들을 뽑아서 업무를 배치하는 식으로 똑똑하게 일처리를 해나가는 방식이 바로 객체 지향이라고 생각하면 되겠다. 객체 지향은 말하자면 회사 시스템인 것!

  • 내가 이해한 ‘객체 지향 프로그래밍’: SOLID에서

    S, 단일 책임 원칙: 자기가 맡은 일만. 남이 맡은 기능이 필요하면 본인이 하지 말고 남에게 시키기.

    O, 개방-폐쇄 원칙: 기존 코드를 수정하지 않고도 기능 추가가 될 수 있도록 기존 코드를 탄탄히(?) 만들어 놓는 것.

    L, 리스코프 치환 원칙: 부모와 자식 클래스를 서로 바꿔도 똑같은 기능으로 작동하도록 해야 한다(? 잘 모르겠음).

    I, 인터페이스 분리 원칙: 하나의 큰 부서가 일꾼들을 포함하기보다, 잡일꾼1이 ‘도끼날 다듬기’, ‘장작 패기’, ‘장작 나르기’와 같은 여러 작은 ‘기능 부서’를 포함하도록 하자는 것.

    D, 의존성 역전 원칙: 상위 계층은 하위 계층에 의존하면 안 된다(? 잘 모르겠음).

  • “내 코드에 추상화를 적용하겠다” = “내 코드를 함수로 묶고 뽑아내고 기능별로 모아 다른 js 파일로 나누겠다.”

오늘 공부하려고 대략적으로 가늠한 양의 반절 정도밖에 하지 못했다. 처음 생각할 때부터 좀 많다고 여기긴 했지만… 그래도 모르는 건 모르겠고 아는 건 알겠고가 확실히 나뉘도록 노트를 정리하며 이해한 것이 만족스럽다. 필요할 때 다시 돌아와서 정리한 노트를 참고하기만 하면 되겠다.


Uploaded by N2T

    'TIL | WIL' 카테고리의 다른 글
    • 12/29 (미궁에 빠진 에러, 목) TIL
    • 12/28 (3계층 아키텍처 패턴대로 기존 코드를 분리해보다, 수) TIL
    • 12/26 (Prettier와 Socket.IO, 월) TIL
    • 12/23 (Sequelize ORM 쪼끔 더 이해, 금) TIL
    깊은바다거북
    깊은바다거북

    티스토리툴바