211108_개발자 준비하기(37일차) - Section 2 시작!! With Class

주형(Jureamer)·2022년 1월 4일
0
post-custom-banner

오늘 배운 것(끄적끄적)


  • 클래스 / 인스턴스
    • 클래스는 객체를 생성하는 부모 객체의 역할(청사진)을 한다. 그 부모 객체인 클래스로부터 나온 자식들을 인스턴스라고 부른다.

    • 이를 통해 반복적이고 중복이 될 수 있는 객체 생성 작업을 간편하게 할 수 있다.(객체 생성기, 객체 찍어내는 공장 마냥<<)

    • ES6부터는 class라는 키워드를 사용하여 정의할 수 있다. 큰 차이는 안느껴지지만 메소드를 작성하기에 훨씬 쉬워졌다는 인상이 든다.

      Untitled

  • 객체 지향 프로그래밍 특징(캡슐화, 추상화, 상속, 다형화)
    • 자바스크립트는 객체지향언어인가? 정확히는 No다! JS는 프로토타입 기반의 언어이다. 검색을 해보니 프로토타입 기반의 언어도 객체지향언어의 한 갈래라고는 한다..! 객체지향프로그래밍은 하나의 "패러다임"이라고 할 수 있다.
    • 캡슐화: 데이터와 기능의 형태를 외부에서 알 수 없게한다.(은닉) 즉 구현은 숨기고, 동작은 노출시킨다. 느슨한 결합에 유리하다.(코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아닌, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것)
    • 추상화: 안은 복잡하지만(구조) 겉은(인터페이스) 단순하게 보인다는 것이다. 메소드와 속성만을 정의한 것을 인터페이스라고 부르는데 이것이 추상화의 본질이다.
    • 상속: 부모 클래스의 특징을 자식이 물려받는 것이다. base class(부모 클래스) → derive class(자식 클래스)
    • 다형성: 같은 메소드라도 조금씩 다르게 작동하는 것을 의미함. (if/else문과 같이 분기형식의 작업이 불필요한 것)
  • Prototype, Prototype chain(__proto__)
    • 프로토타입 체인을 통해 부모의 속성(메소드)를 사용할 수 있다.

      ex) let array = [1, 2, 3]이라고 선언하고 할당했을 때, 기계는 let array = new Array(1, 2, 3)처럼

      인스턴스로 만든다. 그래서 Array라는 prototype에 접근 할 수 있고 그 원형인 Object의 메소드 (toString()) 같은 것도 사용할 수 있는 게 그 이유에서이다.

    • 이것으로 Array.prototype.함수 = function() { }을 통해 내가 만든 메소드를 만들어 모든 Array사용 시 사용할 수 있게끔 만들 수도 있다! (prototype이 유전자라고 했을 때 유전자 조작이 가능하다!)

  • 프로그래밍 방법은 사람들마다 선호도가 다르기때문에 무엇이 더 좋다고 확언하는 발언은 절대 삼가해야한다. (객체지향프로그래밍이던, 함수형프로그래밍이던,,, JS는 멀티패러다임 프로그래밍으로 두 개를 적절히 사용가능하다)

느낀점


오늘 클래스, 객체지향프로그래밍, 프로토타입 등 다양한 것들을 또 배웠다. 클래스를 통해 수 많은 객체를 어떻게 편리하게 생성할 수 있는 지 배웠고, 또 프로토타입이라는 개념을 통해 기존에 사용하던 .length나 .sort()와 같은 메소드들을 어떤 개념으로 불러와서 사용할 수 있었는 지를 깨달았다. 그것을 응용하여 내가 그런 메소드들을 추가해서 사용할 수 있다는 것도 알게 되었다. 나날이 새롭고 무궁무진한 프로그래밍 세계가 눈 앞에 펼쳐지는 것 같다~~~

내일 배울 것


  • Toy Problem 1
  • 재귀함수
  • 재귀적 사고 연습
profile
작게라도 꾸준히 성장하는게 목표입니다.
post-custom-banner

0개의 댓글