티스토리 뷰
CH2 - 기상 모니터링 2편 / 시스템 설계 및 구현
이 글은 Excel VBA 에서 객체지향 디자인 패턴을 사용하는 것을 학습하며 정리하기 위한 글입니다.
내용은 책 "헤드 퍼스트 디자인 패턴 : 14가지 GoF 필살 패턴! 유지 관리가 편리한 객체지향 소프트웨어를 만드는 법"을 변형하여 적용하였습니다.
모든 코드는 GitHub의 Commit History에서 변경된 내용을 볼 수 있습니다.
Excel Office 365 with RubberDuck Add-In
GitMind - UML-클래스 다이어그램
GitHub with Visual Studio Code
기상 모니터링 시스템 설계하기
GitHub Commit History / VBA OOP / CH2 - 기상 모니터링 2편 / 시스템 설계 및 구현
해당 설계 다이어그램을 기준으로, 기상 모니터링 시스템을 코딩하겠습니다.
기상 모니터링 시스템 구현하기
인터페이스 클래스
ISubject
: 주제 인터페이스 클래스에서 register()과 remove() 메소드는 Observer를 인자로 받습니다. notify() 메소드는 모든 옵저버에게 변경 내용을 알리기 위한 메소드입니다.IObserver
: 옵저버 인터페이스는 모든 옵저버 클래스에서 구현해야하므로, update() 메소드를 구현해야 합니다.IDisplayElement
: 이 인터페이스에는 display() 메소드가 있습니다.
WeatherData 구상 클래스
WeatherData 구상(Concrete) 클래스는 ISubject 인터페이스 클래스로 구현합니다.Class_Initialize()
: 클래스 실행시, 실행할 코드를 입력합니다. Collection 개체를 생성하여, Observer 객체를 저장할 것입니다.ISubject_registerObserver()
: 옵저버 등록 요청시, Collection 객체에 추가합니다.ISubject_removeObserver()
: 옵저버 탈퇴 요청시, Collection 객체에서 삭제합니다.ISubject_notifyObservers()
: 중요한 부분입니다.
모든 옵저버에게 상태 변화를 알립니다. Collection 객체 요소는 모두 IObserver 인터페이스를 구현하여 update() 메소드를 가지고 있으므로, 간편하게 상태 변화를 알릴 수 있습니다.measurementsChanged()
: 기상 스테이션에서 얻은 측정값을 받으면, 옵저버들에게 알립니다.setMeasurements()
: 임시 기상 스테이션입니다. 날씨 데이터를 수동으로 전달합니다.
디스플레이 구상 클래스
현재의 날씨 디스플레이 클래스
현재의 온도와 습도를 알려주는 디스플레이 클래스입니다.
날씨 통계 디스플레이 클래스
지금까지 모인 데이터에서 온도의 평균, 최고 온도, 최저 온도를 알려주는 디스플레이 클래스입니다.
날씨 예상 디스플레이 클래스
압력 조건을 기반으로 날씨를 예상하는 디스플레이 클래스입니다.
기상 모니터링 테스트
setMeasurements() 메소드로 기상 조건을 입력할때마다, 각 디스플레이에서 날씨 데이터를 출력하며 잘 작동하는 것을 볼 수 있습니다!
INDEX
'VBA > OOP' 카테고리의 다른 글
VBA OOP / INDEX (0) | 2022.09.22 |
---|---|
CH2 - 기상 모니터링 3편 / 옵저버 패턴 방식 변경 (1) | 2022.09.22 |
CH2 - 기상 모니터링 1편 / 옵저버 패턴의 이해 및 구조 파악 (1) | 2022.09.22 |
CH1 - 오리 시뮬레이션 게임 3편 / 인터페이스 동적 활용 및 정리 (0) | 2022.09.14 |
CH1 - 오리 시뮬레이션 게임 2편 / 인터페이스 확장 (0) | 2022.09.13 |
CH1 - 오리 시뮬레이션 게임 1편 / VBA 객체지향 사용방법 예시 (0) | 2022.09.12 |