오늘 만든 변경 사항은 다음과 같다.
드디어 추상화를 구현했다. 추상화는 컴포넌트의 집합을 하나의 컴포넌트로 만들어주는, SchBoard에서 가장 중요한 기능이다.
추상화를 구현하기 위해 새로운 클래스 IntegratedComponent를 제시했다. 통합 컴포넌트 안에는 컴포넌트를 이루는 컴포넌트들에 대한 리스트와 해당 컴포넌트들을 잇는 와이어에 대한 리스트를 저장한다.
기존의 방식대로라면 와이어나 소켓에 업데이트가 있을 때에 탭에 있는 컴포넌트/와이어 목록에서 변화 감지 대상을 찾아 계산 큐에 해당 컴포넌트를 추가했어야 했지만, 통합 컴포넌트를 사용하면 컴포넌트 속에 있는 컴포넌트와 와이어까지도 탐색해야 했기 때문에, 소켓에 연결된 컴포넌트와 와이어를 탐색하는 알고리즘을 수정해야 했다.
반추상화는 추상화된 통합 컴포넌트의 추상화를 해제하는 기능이다. SchBoard 1에는 없던 기능이다.
반추상화는 추상화에 비해 비교적 간단하다. 반추상화할 컴포넌트가 가지고 있는 컴포넌트 목록과 와이어 목록을 탭의 목록에 통합하면 되기 때문이다.
'/' 키를 눌러서 탭에 있는 컴포넌트를 화면 가운데에 오도록 할 수 있다.
추상화만으로는 아직 부족한 점이 많다. 컴포넌트의 추상화를 저장해 두었다가 나중에 다시 불러올 수도 있어야 하고, 화면에 있는 컴포넌트들을 선택하여 복사/붙여넣기 하는 기능도 있으면 좋을 것이다.
다음 개발일에는 컴포넌트 복사/붙여넣기와 저장, 불러오기 기능을 구현해야겠다.