Minggu, 16 Oktober 2016

Program, Sequence Diagram, Activity Diagram, Use Case, Class Diagramm dan CRC untuk Sensor pada AC

1. Use Case
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

 b. Cek Kelembaban Ruangan

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

Tidak ada komentar:

Posting Komentar