패스트캠퍼스 데브캠프

김민태의 데브캠프 2기 - 실시간 강의(11/25)

vitamin3000 2024. 11. 27. 19:46

강의 내용 요약

  • 프로그래밍 패러다임
    • 필요한 동작을 수행하기 위한 명령들을 순서에 맞게 배치하는 것을 목표로 함
  • OOP(Object Oriented Programming) - 객체지향 프로그래밍
    • object
      • 프레임 설정
        • 설정되는 프레임(틀)은 1개
        • 객체지향에서는 생성자에 비규 가능
      • 고유값 설정(현실화, 개별화)
        • 프레임을 바탕으로 생성된 객체는 여러 개
        • 프레임을 바탕으로 현실화된 객체를 인스턴스 라고 부름
      • method
        • 객체가 어떤 기능이 가능한지에 대한 것
    • ⇒ 디자인(표현 / 설계 / 묘사)이 중요
    • 상속
      • 객체와 객체 간의 주종관계 형성(부모자식관계)
      • Q. 부모가 사라져버리거나 상속이 불가능하게 설정된다면?
        • 해당 부모로부터 상속받은 값들을 사용하지 못한다.
    • interface
      • 객체와 객체 간의 메세지를 주고받는 규격
      • typescript에서 사용,
      • implements키워드 사용
  • class
    • 일반
    • 추상(abstract)
      • 자식 속성에 제한을 걸 수 있음
      • 필수적인 값이나, 변경 불가능한 값, 상속 여부 등등 설정 가능
      • 접근 제어 가능(public/private/protected)
  • 리액트는 기본적으로 객체지향을 추구하지 않음.
  • Type alias vs interface 중 어느 방법으로 객체를 정의하는 것이 맞는가?
    • 리액트의 방향성도 함수형 프로그래밍에 많이 치중되어 있어 OOP 개념과는 충돌하는 부분이 존재하기 때문에, 컴포넌트의 데이터 유형으로 정의하는 것이 좀 더 낫다고 생각하여 type alias를 쓰는 것이 맞다.
    • 컴포넌트들 간의 메세지를 주고받는 관점에서는 protocol을 규정한다는 점에서 oop의 개념과 유사하다고 생각하여 interface를 쓰는 것이 맞다
  • 게터 & 세터 함수
    • 멤버 변수(private 변수)가 존재할때, 함수로써 값을 받아오거나 변경할수 있는 방법
  • 참고 - blueprint
    • 리액트에서 객체지향을 아주 잘 설계해 놓은 코드 예시
  • 다형성(polymorphism)
    • 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등등)이 다양한 자료형에 속하는 것이 허가되는 성질
    • ⇒ 기존과 다른 방식으로 진행 가능
    • cf) 단형성 : 각 요소들이 하나의 자료형만 가지는 것
  • if / switch 문을 상황에 따라서 지양해야 하는 경우가 꽤나 존재
    • 조건을 판단하는 데에 있어 버그가 존재할 수 있음
    • 코드 확장성에 있어서 그다지 좋지 않음
    • 코드를 확장하는데 장애물이 될 수 있다.