1. 컨트랙트 설명
(1) MathLibrary (라이브러리)

- 덧셈, 뺄셈, 곱셈, 나눗셈 기능만 따로 분리해 둔 라이브러리.
- 별도 라이브러리로 만들면 다른 컨트랙트도 공통으로 사용 가능.
- using for 문법으로 uint256에 붙여 씀.
(2) 인터페이스

- 인터페이스를 사용하면 개발자가 필수로 구현해야 할 함수 명확히 알 수 있음.
- 유지보수 및 팀 협업에 좋음.
(3) 추상 컨트랙트

- 공통 기능(사칙연산)을 미리 만들어 제공.
- 상속받는 컨트랙트는 calculate 구현만 하면 됨.
- 중복 방지.
(4) 계산기(구현) 컨트랙트

- 최종 사용자에게 필요한 기능만 구현.
- 추상 컨트랙트에서 로직은 상속받음, 여기서 추가 작성 필요 없음.