Berikut adalah Use Case untuk sistem sensor pada AC
2. Activity Diagram
Berikut adalah Activity Diagram untuk sistem sensor pada AC
a. cek jumlah orang
b. cek kelembaban
c. sistem fan
d. sistem swing
e. sistem temperatur
3. Class Diagram
Berikut adalah Class Diagram untuk sistem sensor pada AC
4. CRC
Berikut adalah CRC untuk sistem sensor pada AC
5. Sequence Diagram
Berikut adalah Sequence Diagram untuk sistem sensor pada AC
a. Cek Jumlah Orang
c. Mengatur Fan
d. Mengatur Swing
e. Mengatur Temperatur
6. Program sensor pada AC. Terdapat 3 bagian untuk program ini
Sistem.cpp
#include<iostream>
#include<math.h>
#include<string>
#include<stdlib.h>
#include "AC.h"
#include "Sensor.h"
using namespace std;
int checkJumlahOrang(int jumlahOrang){
int hasil;
if(jumlahOrang>=0 && jumlahOrang<=14)
hasil=0;
else if(jumlahOrang>=15 && jumlahOrang<=25)
hasil=1;
else
hasil=2;
return hasil;
}
int checkKelembaban(float kelembaban){
int hasil;
if(kelembaban>=20 && kelembaban<=25)
hasil=0;
else if(kelembaban>=26 && kelembaban<=69)
hasil=1;
else
hasil=2;
return hasil;
}
void setAturan(AC *objekAC, Sensor *objekSensor, string tableAturan[3][3], int rangeSuhu[3][2]){
cout << "\nmasuk setAturan\n" << endl;
string aturan = tableAturan[objekSensor->getTingkatJumlahOrang()][objekSensor->getTingkatKelembaban()];
int koma[2], ubahTemperatur, indeksRangeSuhu, ubahFanSpeed;
koma[0] = aturan.find_first_of(",");
koma[1] = aturan.find_last_of(",");
//ganti temperatur
ubahTemperatur = atoi(aturan.substr(0,koma[0]).c_str());
cout << "ubah temperatur : " << ubahTemperatur << endl;
indeksRangeSuhu = objekSensor->getTingkatJumlahOrang();
if(objekAC->getTemperatur()+ubahTemperatur>=rangeSuhu[indeksRangeSuhu][0] && objekAC->getTemperatur()+ubahTemperatur<=rangeSuhu[indeksRangeSuhu][1])
objekAC->setTemperatur(objekAC->getTemperatur()+ubahTemperatur);
//cout << "temperatur in setAturan : " << objekAC->getTemperatur() << endl;
//set swing
if(aturan.substr(koma[1]+1,1).compare("0")==0)
objekAC->setSwing(false);
else
objekAC->setSwing(true);
//set fan speen
ubahFanSpeed = atoi(aturan.substr(koma[0]+1,koma[1]-koma[0]-1).c_str());
objekAC->setFanSpeend(ubahFanSpeed);
return;
//cout << aturan << endl;
//cout << aturan.substr(0,koma[0]) << endl;
//cout << aturan.substr(koma[0]+1,koma[1]-koma[0]-1) << endl;
//cout << aturan.substr(koma[1]+1,1) << endl;
//cout << atoi(aturan.substr(0,1).c_str())+atoi(aturan.substr(2,1).c_str()) << endl;
}
int main(){
string tableAturan[3][3] = { {"0,1,0","0,1,0","1,1,0"},
{"0,2,1","-1,2,1","-1,1,0"},
{"-2,3,1","-1,2,1","0,1,1"}};
//rangeSuhu digunakan untuk membatasi perubahan suhu berdasarkan jumlah orang, rendah sedang tinggi
int rangeSuhu[3][2] = { {24,27},
{19,23},
{15,18}};
int indeksRangeSuhu, nilaiTengahRangeSuhu, tingkatJumlahOrangSebelum;
Sensor objekSensor(-1);
AC objekAC;
int jumlahOrang, tingkatKelembaban, tingkatJumlahOrang;
float kelembaban;
while(true){
cout << "Program akan berjalan terus, tekan CTRL+C untuk exit" << endl;
cout << "Jumlah orang : " << endl;
cin >> jumlahOrang;
cout << "Kelembaban : " << endl;
cin >> kelembaban;
cout << endl;
if(objekSensor.getTingkatJumlahOrang()==-1){
objekAC.setPower(true, 0, false);
}
if(jumlahOrang==0){
objekAC.setPower(false, 0, false);
objekSensor.setTingkatJumlahOrangKelembaban(-1, -1);
break;
}
objekSensor.setJumlahOrangKelembaban(jumlahOrang, kelembaban);
tingkatJumlahOrangSebelum = objekSensor.getTingkatJumlahOrang();
objekSensor.setTingkatJumlahOrangKelembaban(checkJumlahOrang(objekSensor.getJumlahOrang()), checkKelembaban(objekSensor.getKelembaban()));
//objek baru terbentuk
if(tingkatJumlahOrangSebelum == -1 || tingkatJumlahOrangSebelum!=objekSensor.getTingkatJumlahOrang()){
indeksRangeSuhu = objekSensor.getTingkatJumlahOrang();
cout << "indeks range suhu : " << indeksRangeSuhu << endl;
nilaiTengahRangeSuhu = floor((rangeSuhu[indeksRangeSuhu][1]-rangeSuhu[indeksRangeSuhu][0])/2);
cout << "nilai tengah range suhu : " << nilaiTengahRangeSuhu << endl;
objekAC.setTemperatur(nilaiTengahRangeSuhu+rangeSuhu[indeksRangeSuhu][0]);
cout << "temperatur kemungkinan : " << objekAC.getTemperatur() << endl;
}
setAturan(&objekAC, &objekSensor, tableAturan, rangeSuhu);
cout << "\nTemperatur sekarang : " << objekAC.getTemperatur() << endl;
cout << "Fan Speed sekarang : " << objekAC.getFanSpeen() << endl;
cout << "Swing sekarang : " << objekAC.getSwing() << endl;
cout << endl << endl;
}
return 0;
}
Sensor.h
#ifndef Sensor_H_
#define Sensor_H_
class Sensor{
int jumlahOrang, tingkatJumlahOrang, tingkatKelembaban;
float kelembaban;
public:
Sensor(int);
void setTingkatJumlahOrangKelembaban(int,int);
void setJumlahOrangKelembaban(int, float);
int getJumlahOrang(){ return jumlahOrang; };
float getKelembaban(){ return kelembaban; };
int getTingkatJumlahOrang(){ return tingkatJumlahOrang;};
int getTingkatKelembaban(){ return tingkatKelembaban;};
};
void Sensor::setJumlahOrangKelembaban(int jumlahOrang, float kelembaban){
this->jumlahOrang = jumlahOrang;
this->kelembaban = kelembaban;
}
void Sensor::setTingkatJumlahOrangKelembaban(int tingkatJumlahOrang, int tingkatKelembaban){
this->tingkatJumlahOrang = tingkatJumlahOrang;
this->tingkatKelembaban = tingkatKelembaban;
}
Sensor::Sensor(int tingkatJumlahOrang){
this->tingkatJumlahOrang = tingkatJumlahOrang;
}
#endif
AC.h
#ifndef AC_H_
#define AC_H_
class AC{
int temperatur, fanSpeed;
bool swing, power;
public:
void setTemperatur(int);
void setSwing(bool);
void setPower(bool, int, bool);
void setFanSpeend(int);
int getTemperatur(){ return temperatur; };
int getFanSpeen(){ return fanSpeed; };
int getSwing(){ return swing; };
};
void AC::setTemperatur(int temperatur){
this->temperatur = temperatur;
}
void AC::setSwing(bool swing){
this->swing = swing;
}
void AC::setFanSpeend(int fanSpeed){
this->fanSpeed = fanSpeed;
}
void AC::setPower(bool power, int fanSpeed, bool swing){
this->power = power;
this->fanSpeed = fanSpeed;
this->swing = swing;
}
#endif
source code: pelajaranc.blogspot.com