ControllerClass Collection Class Rancangan SoftwareControler

38 Board -services -devices -sensors +initialize +automate Service -interval +service Device -pin +behavior Sensor -pin +readMeasurementValue HttpClient +service PingLogger +service TemperatureLogger +service Lampu +behavior AirConditioner +behavior Ds18B20 +readMeasurementValue PirSensor +readMeasurementValue Controller +setup +loop -memberName ServiceContract +getId +service +setLogger +getLogger DeviceContract +turnOn +turnOff +toggle +behavior +getId +setLogger +getLogger SensorContract +getId +readMeasurementValue +setLogger +getLogger Gambar 3.11 Diagram hubungan antar class program controller

3.5.1 ControllerClass

ControllerClass merupakanclassutama dimana fungsi setup dan fungsi dari class ini akan menjadi fungsi setup dan fungsi loop yang akan dijalankan oleh Wemos D1. Class ini meng-extendsclass BaseController yang merupakan sebuah classcontract untuk seluruh classController, dimana class Base Controller mempunyai fungsi virtual yang harus diimplementasikan oleh setiap anak class yang meng-extends class ini. Isi dari class Base Controller adalah seperti yang terlihat pada Gambar 3.12. Universitas Sumatera Utara 39 1 c l as s Bas eCont r ol l er 2 { 3 publ i c : 4 Boar dCont r ac t boar d; 5 v i r t ual v oi d s et up = ; 6 v i r t ual v oi d l oop = ; 7 } ; Gambar 3.12 Kode Program class BaseController ClassController sendiri berisi implementasi dari fungsi virtual yang ada di class Base Controller. Fungsi – fungsi virtual tersebut adalah fungsi setup dan fungsi loop. Pada fungsi setup berisi statement untuk inisialisasi Wemos D1 serta inisialisasi modul Wi-Fi. Pada fungsi loop berisi perintah untuk melakukan eksekusi untuk setiap event yang didaftarkan pada classScheduler. Isi dari classController tersebut seperti yang ditunjukkan pada Gambar 3.13. 1 c l as s Cont r ol l er : publ i c v i r t ual Bas eCont r ol l er 2 { 3 publ i c : 4 v oi d s et up 5 { 6 Debug: : i s DebugMode = t r ue ; 7 Wi Fi . c onf i g env : : wi f i : : i p, env : : wi f i : : gat eway , env : : wi f i : : s ubnet , env : : wi f i : : dns 1, env : : wi f i : : dns 2 ; 8 boar d- i ni t i al i z e ; 9 boar d- aut omat e ; 10 } 11 12 v oi d l oop 13 { 14 Sc hedul er : : handl eEv ent s ; 15 } 16 } ; Gambar 3.13 Kode program classController

3.5.2 Collection Class

CollectionClass merupakan sebuah class yang bertanggung jawab untuk manajemen kumpulan beberapa object. ClassCollectionyang digunakan pada Universitas Sumatera Utara 40 Sistem Home Automation yang dirancang pada dasarnya adalah sebuah wrapper untuk Class std::vector. ClassCollection harus meng-extends classCollection Contract dengan kode seperti yang ditunjukkan pada Gambar 3.14. 1 names pac e Nugr aha { names pac e Cont r ac t s { names pac e Col l ec t i ons { 2 3 t empl at e c l as s Member s Ty pe 4 c l as s Col l ec t i onCont r ac t 5 { 6 publ i c : 7 v i r t ual v oi d add Member s Ty pe newMember = ; 8 v i r t ual v oi d r emov eAt i nt i ndex = ; 9 v i r t ual i nt c ount = ; 10 v i r t ual Member s Ty pe get Member At i nt i ndex = ; 11 } ; 12 13 } } } Gambar 3.14 Kode program classCollectionContract Terdapat empat fungsi virtual yang harus diimplementasikan oleh Class yang meng-extends classCollectionContract yaitu: fungsi add yang merupakan fungsi untuk menambahkan anggota baru ke koleksi; fungsi removeAt yang merupakan fungsi untuk menghapus anggoa koleksi pada indeks tertentu; fungsi count yang merupakan fungsi untuk mendapatkan total jumlah anggota yang ada di dalam koleksi;fungsi getMemberAt yang merupakan sebuah fungsi untuk mendapatkan anggota koleksi pada indeks tertentu. ClassCollectionContract diimplementasikan pada classCollection seperti yang terlihat pada Gambar 3.15. Universitas Sumatera Utara 41 1 c l as s Col l ec t i on : publ i c v i r t ual Col l ec t i onMember s Ty pe { 2 pr ot ec t ed : 3 s t d: : v ec t or Member s Ty pe member s ; 4 5 publ i c : 6 i nt c ount 7 { 8 r et ur n member s . s i z e ; 9 } 10 11 v oi d add Member s Ty pe newMember 12 { 13 member s . pus h_bac k newMember ; 14 } 15 16 v oi d r emov eAt i nt i ndex 17 { 18 member s . er as e member s . begi n + i ndex ; 19 } 20 21 Member s Ty pe get Member At i nt i ndex 22 { 23 i f i ndex = i ndex member s . s i z e { 24 r et ur n member s [ i ndex ] ; 25 } 26 r et ur n NULL ; 27 } 28 } ; Gambar 3.15 Kode program class koleksi Vector

3.5.3 SchedulerClass