개발일지/TIL

[TIL] 210907 오늘 공부는 인스턴스,클래스,객체

햄❤️ 2021. 9. 7. 23:59
728x90

공부 내용을 블로그에서 노션으로 적기 시작했다. 입사 동료랑 배운 내용을 회사 코드를 바탕으로 서로 알려주고(?) 공유하기로 했기 때문이다. 리액트르 공부할까 뭘 할까 하다가 회사코드 보면서 어려운거 서로 공부하거나 물어보면서 알아가자고 방향을 잡음

그래서 블로그에 글쓰는 것들이 부쩍 줄었지만 그래도 기록의 느낌으로 쓰고싶어서 퀄은 떨어졌지만(?) 그래도 쓰고 있다.

오늘은 일을 뺏??겼다?ㅠㅠ 여튼... 내가 제대로 못해서 내가 하던 일을 결국 사수님이 뒤 엎으셨다... 그것 때문에 우울했는데, 티가 나나보다 ㅠㅠ 슬프다. 나도 잘하고 싶은데 아직 안되나보다.  급 기본적인 부모 컴포넌트에서 자식 컴포로 props 넘기는것도 헷갈리기 시작했다... 리액트 지식이 너무 부족한 것 같다. 공부를 더 해야겠다.

 

자바에서 쓰는 개념이지만 객체지향 프로그래밍에 대해서 알아야하고, 또 자바스크립트까지 개념이 공유되는 느낌이라 알고가야할 것 같아서 공부했다. 

oop?

모든 데이터는 객체고, 이러한 객체가 프로그래밍의 중심인 것

 

객체 - 소프트웨어 세계? 에서 구현해야할 대상. (엥,,?)  선언한 객체는 메모리를 차지하지 않는다. 클래스의 인스턴스. 클래스에 선언된 모양 그대로 생성된 실체. 클래스의 인스턴스이다. 

인스턴스 - 클래스를 통해 구현해야할 객체가 실제로 구현된 실체, 메모리로 할당된 상태. 객체에 포함된다.어떤 원본(추상적인 개념)으로부터 생성된 복제본을 의미한다.

클래스 - 설계도. 연관되어있는 메소드와 변수의 집합. 설계도일뿐 동작하지는 않는다. 객체를 정의하고 만들기 위한 틀이다. 

인스턴스화(Instantiation) - 객체를 메모리에 할당. 클래스 → 인스턴스 (실재하는 객체를 만드는 과정) 클래스는 설계도라면, 객체는 설계도로 구현한 모든 대상을 의미한다.

 

문제는 instance in React 이건데, 리액트에서는 인스턴스의 개념을 어떻게? 였다. 내가 이해한 바가 맞는지 모르겠다. map으로 반목문을 돌릴때, 컴포넌트로 반복하는 경우가 있다. 이 컴포넌트는 어떻게 보면 메모리에 할당된 실재하는 객체가 될것이다. 즉 인스턴스화 되어 반복된 각각의 컴포넌트가 각각의 인스턴스가 되는 것.

내가 어려웠던 부분은... B라는 컴포넌트가 A에도 속해있고, C에도 속해있을때 작동하는 것인데, A(부모1)의 함수를 B한테 전달해서 테스트하고자 했다. B에서는 함수가 없다는 오류가 계속 나서 이유를 몰랐는데, C(부모2)에 똑같은 함수를 선언해야 작동되었다. ㅠ.ㅠ

내가 이해한 바는, B는 A에 속해있을때와, C에 속해있을때 다른 방식으로 다른 props를 받고 렌더링 되는데.... C에 속해서 렌더링 될때  C에서 인스턴스화 되고 있으니까 A에서 받은 함수를 인식 못할것이다. (맞는지 ㅠ 하...)


좋은 컴포넌트 구조인지 생각해 보았다. 부모한테 받는 조건이 많을 수록 의존도가 높아지고, 이를 강한 결합(tight coupling)이라고 하는 것 같다. 반댓말은 loose coupling(느슨한 결합)인데, 리액트에서만 쓰는 단어는 아닌 것 같다. (자바에서 객체의 의존 관계에서 강한 결합이란, 어떠한 객체가 다른 객체에 강한 의존성을 가지고 있음을 뜻한다.) 강한 결합의 경우 유지보수에 좋지 않다고 한다.

처음 듣는 용어인데, 알면 알수록 리액트나 자바스크립트를 넘어서 다른 언어에도 두루 쓰이는 용어들인 것 같다. 프로그래밍 전반적인 개념을 알고 가면 좋겠다는 생각을 했다. 근데 뭐부터 어떻게 공부해야할지 모르는건 아직 사실이다.

 

한달을 돌아보며 내가 얼마나 성장했나 되뇌어 봤다. 잘 모르겠다 솔직히 늘었는지 의문이다. 그래서 좀 자괴도 들지만 한편 자극도 되었다. 이거 때문에 위가 아픈건지 모르겠지만, 다음달의 내가 뒤를 돌아봤을 때는 눈에 띄게 성장한 부분이 있었으면 좋겠다. 

 

 

 

 

 

 

 

 

 

 

728x90