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