Posts [JS] 생활코딩 #20: 객체지향 프로그래밍
Post
Cancel

[JS] 생활코딩 #20: 객체지향 프로그래밍

객체지향 프로그래밍

객체지향 프로그래밍

  • 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임이다.

  • 로직을 상태(state => 변수)와 행위(behave => 메서드)로 이루어진 객체로 만들고, 이 객체들을 레고 블럭처럼 조립해서 하나의 프로그램을 만드는 것이다.
  • 객체를 만드는 것이다.
  • 객체는 변수와 메서드를 그룹핑한 것이다.

문법과 설계

객체지향 프로그래밍 교육은 크게 문법과 설계로 구분된다.

문법

  • 객체지향을 편하게 할 수 있도록 언어가 제공하는 기능을 학습하는 것이다.
  • 객체를 만드는 법에 대한 학습이다.

설계

  • 좋은 객체를 만드는 법을 배운다.
  • 좋은 설계는 현실을 잘 반영해야 한다. 현실의 복잡함 전체가 필요한 것은 아니다. 복잡함 속에서 필요한 관점만을 추출하는 추상화가 필요하다.
    • ex) 실제 지도 => 지하철 노선도
  • 객체지향 프로그래밍은 좀 더 현실을 잘 반영하기 위한 노력의 산물이다. 단순히 객체 지향의 문법을 이용해서 객체를 만든다고 달성되는 것이 아니다. 고도의 추상화 능력, 즉 설계능력이 필요하다.
  • 문법이 지식이라면 설계는 지혜다. 우선 문법부터 익히고 설계는 프로그래밍을 하면서 배워나갈 수 있다.

부품화

  • 객체지향은 부품화의 정점이라고 할 수 있다.
  • 부품화의 대표적인 예) 메서드
    • 연관되어 있는 로직들을 결합해서 메서드라는 완제품을 만든다.
    • 이 메서드를 부품으로 사용하여 하나의 완제품인 독립된 프로그램을 만든다.
    • 장점: 코드의 간결화, 코드 재사용 용이, 빠른 문제 진단 가능
    • 그러나 프로그램이 커지면서 메서드를 관리하는 것이 어려워졌다.
  • 객체지향 프로그래밍의 핵심은 연관된 메서드와 그 메서드가 사용하는 변수들을 분류하고 그룹핑하는 것이다. 이렇게 그룹핑한 대상이 객체(Object)이다. 이를 통해서 더 큰 단위의 부품을 만들 수 있게 되었다.

은닉화, 캡슐화

  • 부품이라면 내부 동작 방법을 모르는 사람도 사용 방법만 알면 쓸 수 있어야 한다.
  • 내부의 동작 방법을 단단한 케이스 안으로 숨기고 사용자에게는 그 부품의 사용방법만을 노출한다. 이러한 컨셉을 정보의 은닉화(Information Hiding) 또는 캡슐화(Encapsulation)라고 부른다.
  • 사용자에게는 그 부품의 사용방법이 중요하다.

인터페이스

  • 부품이라면 다른 부품으로 교체될 수 있어야 한다.
  • 인터페이스란 이질적인 것들이 결합하는 것을 막아주는 역할도 한다.
  • ex) 모니터 입장에서는 컴퓨터가, 컴퓨터 입장에서는 모니터가 어떤 식으로 만들어졌는지는 신경 쓰지 않는다. 각각의 부품은 미리 정해진 약속에 따라서 신호를 입, 출력하고, 연결점의 모양을 표준에 맞게 만들면 된다.
  • 즉 인터페이스는 부품들 간의 약속을 프로그래밍으로 구현한 것이다.

복제와 상속

This post is licensed under CC BY 4.0 by the author.

[JS] 생활코딩 #19: 함수호출

[JS] 생활코딩 #21: 생성자와 new

Loading comments from Disqus ...