여러 개의 기능 함수를 단일 표준 인터페이스로 묶어 줌으로써 컴포넌트 단위로 재사용하는 기술. 여러 가지 시뮬레이션 중에서 사용 목적에 따라 필요한 요소를 상호 조합식으로 구성하여 다양한 모의 실험을 할 수 있는 솔루션을 제공한다.
출처 : [네이버 지식백과] 컴포넌트 기술 [component技術] (국방과학기술용어사전, 2021. 05. 31.)
-> 이해는 했는데 컴포넌트 개념을 적고 가기위해 용어정리글을 남긴다.
컴포넌트는 여러 기능을 묶은 일종의 집합 단위이다.
아래는 컴포넌트 예시에 대한 내용이다.
출처: MekeMeke is Good(네이버 블로그),용어 : 모듈, 컴포넌트|작성자 P
ex) 캐릭터 이동 컴포넌트 (예외사항을 모듈에서 해주는 경우)
장애물이 있든, 바닥에 구멍이 있든 관계 없이 캐릭터가 이동할 수 있는 기능
예외사항과 관계 없이 항상 '캐릭터 이동' 을 수행시킨다.
장애물 피하기, 점프, 앉기 등의 예외사항은 모듈에서 제공함
ex) 캐릭터 이동 컴포넌트 (컴포넌트가 자체적으로 충분한 예외사항을 갖고 있는 경우)
'캐릭터 이동 모듈'이 필요하지 않을 수 있음
이러한 단일 기능의 특징 때문에 컴포넌트를 조합하여 다양한 기능을 수행할 수 있게 활용함
컴포넌트가 자체적으로 예외사항을 갖고 있을 때도 있고, 모듈에서 예외사항을 갖고 있을 때도 있지만 유지보수나 확장성 측면에서 컴포넌트가 그 기능의 예외사항을 포함하고 있는 것이 좋을 수 있음
즉, 모듈에 예외사항을 줄지 컴포넌트에 예외사항을 줄지는 프로그래머 마음
하나의 기능일 때도 있고, 여러 기능일 때도 있음
위의 캐릭터 이동 컴포넌트 예시는 하나의 기능을 담당함
여러 기능을 담당하는 컴포넌트 예시는 아래와 같음
ex) 캐릭터 조작 컴포넌트
캐릭터 이동/공격/점프/상호작용 컴포넌트 등을 조합하여 구성되어 있음
각각 이동/공격/점프/상호작용만 수행함
'캐릭터 조작 모듈' 이 있다면 아래 같은 동작을 수행할 수 있음
이동하면서 공격
점프하면서 상호작용
단일 기능을 수행하는 것이 원칙
여러 개의 컴포넌트를 조합하더라도 동시에 수행될 수 없다
'이동 컴포넌트'와 '공격 컴포넌트'를 조합해서 '이동과 공격을 동시에 수행하는 컴포넌트'를 만들어도 이 컴포넌트는 실제로는 '이동 컴포넌트'와 '공격 컴포넌트'가 각각 실행되는 순서로 작동한다.
따라서 여러 컴포넌트를 조합해서 하나의 컴포넌트를 만들 수는 있지만, 그 컴포넌트가 여러 기능을 동시에 수행할 수는 없다.
그렇다면 이전에 배웠던 모듈과 컴포넌트는 둘 다 묶는 개념인데 어떤 차이가 있을까?
모듈(Module)과 컴포넌트(Component)의 차이
개념적 차이점:
모듈은 단일 기능을 수행하는 코드의 묶음
모듈은 코드의 조직화와 재사용성을 증가시키는 데 사용
컴포넌트는 여러 모듈의 집합으로, 다른 컴포넌트와 결합하여 더 큰 시스템을 구성하는 데 사용됨
1.단위 크기 차이점
모듈은 일반적으로 작은 크기의 코드 단위로 구성됨
컴포넌트는 일반적으로 모듈보다 큰 단위로 구성됨
2.구현 차이점
모듈은 일반적으로 언어 수준에서 구현됨 (C++/C#/파이썬 등에서)
컴포넌트는 일반적으로 프레임워크나 라이브러리 수준에서 구현됨
3.재사용성 차이점
모듈은 다른 모듈에서 사용될 수 있다
모듈은 일반적으로 연관된 한정적인 범위에서만 재사용됨
컴포넌트는 재사용성이 높으며, 다른 컴포넌트에서 사용될 수 있음