Skip to main content

Remote AC

Pembuatan simulasi remote AC menggunakan konsep PBO dengan BlueJ

Class yang digunakan :

  • Main Class : Class utama yang berfungsi sebagai connector antara Process Class dengan Display Class.
  • Process Class : Process Class menghandle seluruh algoritma untuk simulasi remote AC seperti saat tombol remote AC ditekan. Contoh : Menaikkan temperatur, Mengubah mode, dll.
  • Display Class : Display Class menghandle seluruh komponen yang bertindak sebagai informasi yang nantinya akan dioutput ke console.

Workspace dari BlueJ


Source code Main Class

import java.util.Scanner;
/**
 * Sebagai connector Process dan Display
 *
 * @author Satria Ade Veda Karuniawan
 * @version Version 1.0
 */
public class Main
{
    public static Process pobj = new Process();
    public static Display dobj = new Display();
 
    public static void main(String args[])
    {
        Scanner reader = new Scanner(System.in);
        System.out.println("Nyalakan Remote AC? (Y/N)");
     
        //Input Yes or No
        char Input = reader.next().charAt(0);
     
        while(Input != 'Y' && Input != 'N')
        {
            System.out.print('\u000C');
            System.out.println("Error");
            System.out.println("Nyalakan Remote AC? (Y/N)");
            Input = reader.next().charAt(0);
        }
     
        //Jika Input Yes
        if(Input == 'Y')
        {
            int Choice;
            do
            {
            System.out.print('\u000C'); // CLS
         
            dobj.PrintNumber(pobj.GetTemp());
            dobj.PrintInfo(pobj.GetFan(), pobj.GetSwing(), pobj.GetMode());
         
            MenuUtama();
            Choice = reader.nextInt();
         
                switch(Choice)
                {
                    case 2:
                    pobj.UpButtonPressed();
                    break;
                 
                    case 3:
                    pobj.DownButtonPressed();
                    break;
                 
                    case 4:
                    pobj.FanButtonPressed();
                    break;
                 
                    case 5:
                    pobj.SwingButtonPressed();
                    break;
                 
                    case 6:
                    pobj.ModeButtonPressed();
                    break;
                }
         
            }
            while(Choice != 1);
        }
        System.out.print('\u000C');
        System.out.print("TURNED OFF");
        return;
     
    }
 
    public static void MenuUtama()
    {
        System.out.println("1. Turn Off");
        System.out.println("2. Increase Temperature");
        System.out.println("3. Decrease Temperature");
        System.out.println("4. Fan");
        System.out.println("5. Swing");
        System.out.println("6. Mode");
    }
}


Source code Process Class


/**
 * Class yang berisi algoritma dan logika simulasi
 *
 * @author Satria Ade Veda Karuniawan
 * @version Version 1.0
 */
public class Process
{
    private boolean isOn;
    private int temp;
    private int fanspeed;
    private int swing;
    private int mode;
 
    //Default Value
    public Process()
    {
        isOn = false;
        temp = 23;
        fanspeed = 1;
        swing = 30;
        mode = 1;
    }
 
    //Menekan tombol Power
    public void PowerButtonPressed()
    {
        if(isOn)
        {
            isOn = false;
        }
        else
        {
            isOn = true;
        }
    }
 
    //Menekan Up Temperature
    public void UpButtonPressed()
    {
        if(temp < 28)
        {
            temp++;
        }
    }
 
    //Menekan Down Temperature
    public void DownButtonPressed()
    {
        if(temp > 18)
        {
            temp--;
        }
    }
 
    //Menekan Tombol Fan
    public void FanButtonPressed()
    {
        if(fanspeed != 4)
        {
            fanspeed++;
        }
        else
        {
            fanspeed = 1;
        }
    }
 
    //Menekan Tombol Swing
    public void SwingButtonPressed()
    {
        if(swing != 90)
        {
            swing+=30;
        }
        else
        {
            swing = 30;
        }
    }
 
    //Menekan Tombol Mode
    public void ModeButtonPressed()
    {
        if(mode < 3)
        {
            mode++;
        }
        else
        {
            mode = 1;
        }
    }

 
    //Fungsi-Fungsi di bawah untuk mendapatkan value dari tiap variable
    public boolean GetPower()
    {
        return isOn;
    }
 
    public int GetTemp()
    {
        return temp;
    }
 
    public int GetFan()
    {
        return fanspeed;
    }
 
    public int GetSwing()
    {
        return swing;
    }
 
    public int GetMode()
    {
        return mode;
    }
}


Source code Display Class


/**
 * Class yang berisi estetika untuk display output
 *
 * @author Satria Ade Veda Karuniawan
 * @version Version 1.0
 */
public class Display
{
    //Display Temperature
    //Pallet ░▒▓█
    public void PrintNumber(int temp)
    {
        switch(temp)
        {
            case 18:
         
            System.out.println("▓        ░░░░█ █████");
            System.out.println("▓        ░░░░█ █░░░█");
            System.out.println("▓        ░░░░█ █████");
            System.out.println("▓        ░░░░█ █░░░█");
            System.out.println("▓        ░░░░█ █████");
         
            break;
            case 19:
         
            System.out.println("▓        ░░░░█ █████");
            System.out.println("▓        ░░░░█ █░░░█");
            System.out.println("▓        ░░░░█ █████");
            System.out.println("▓        ░░░░█ ░░░░█");
            System.out.println("▓        ░░░░█ █████");
         
         
            break;
         
            case 20:
         
            System.out.println("▓        █████ █████");
            System.out.println("▓        ░░░░█ █░░░█");
            System.out.println("▓        █████ █░░░█");
            System.out.println("▓        █░░░░ █░░░█");
            System.out.println("▓        █████ █████");
         
            break;
         
            case 21:
         
            System.out.println("▓        █████ ░░░░█");
            System.out.println("▓        ░░░░█ ░░░░█");
            System.out.println("▓        █████ ░░░░█");
            System.out.println("▓        █░░░░ ░░░░█");
            System.out.println("▓        █████ ░░░░█");
         
            break;
            case 22:
         
            System.out.println("▓        █████ █████");
            System.out.println("▓        ░░░░█ ░░░░█");
            System.out.println("▓        █████ █████");
            System.out.println("▓        █░░░░ █░░░░");
            System.out.println("▓        █████ █████");
         
            break;
            case 23:
         
            System.out.println("▓        █████ █████");
            System.out.println("▓        ░░░░█ ░░░░█");
            System.out.println("▓        █████ █████");
            System.out.println("▓        █░░░░ ░░░░█");
            System.out.println("▓        █████ █████");
         
            break;
            case 24:
         
            System.out.println("▓        █████ █░░░█");
            System.out.println("▓        ░░░░█ █░░░█");
            System.out.println("▓        █████ █████");
            System.out.println("▓        █░░░░ ░░░░█");
            System.out.println("▓        █████ ░░░░█");
         
            break;
         
            case 25:
         
            System.out.println("▓        █████ █████");
            System.out.println("▓        ░░░░█ █░░░░");
            System.out.println("▓        █████ █████");
            System.out.println("▓        █░░░░ ░░░░█");
            System.out.println("▓        █████ █████");
         
            break;
            case 26:
         
            System.out.println("▓        █████ █████");
            System.out.println("▓        ░░░░█ █░░░░");
            System.out.println("▓        █████ █████");
            System.out.println("▓        █░░░░ █░░░█");
            System.out.println("▓        █████ █████");
         
            break;
         
            case 27:
         
            System.out.println("▓        █████ █████");
            System.out.println("▓        ░░░░█ ░░░░█");
            System.out.println("▓        █████ ░░░░█");
            System.out.println("▓        █░░░░ ░░░░█");
            System.out.println("▓        █████ ░░░░█");
         
            break;
            case 28:
         
            System.out.println("▓        █████ █████");
            System.out.println("▓        ░░░░█ █░░░█");
            System.out.println("▓        █████ █████");
            System.out.println("▓        █░░░░ █░░░█");
            System.out.println("▓        █████ █████");
         
            break;
         
         
        }
    }
 
    //Menu
    public void PrintInfo(int fan, int swing, int mode)
    {
        System.out.println("░░░░░░░░░░░░░░░░░░░░░░░░░░░░░");
        System.out.println("░░░░░░░░░░░░░░░░░░░░░░░░░░░░░");
        System.out.println("FAN SPEED");
        switch(fan)
        {
            case 1:
            System.out.println("████");
            System.out.println("████");
            System.out.println("████");
            break;
         
            case 2:
            System.out.println("████████");
            System.out.println("████████");
            System.out.println("████████");
            break;
         
            case 3:
            System.out.println("████████████");
            System.out.println("████████████");
            System.out.println("████████████");
            break;
         
            case 4:
            System.out.println("████████████████");
            System.out.println("████████████████");
            System.out.println("████████████████");
            break;
        }
     
        System.out.println("");
     
        System.out.println("SWING");
        System.out.println(swing + " Degrees");
        System.out.println("");
     
        switch(mode)
        {
            case 1:
            System.out.println("COOL MODE");
            break;
            case 2:
            System.out.println("DRY MODE");
            break;
            case 3:
            System.out.println("POWERSAVER MODE");
            break;
        }
     
        System.out.println("░░░░░░░░░░░░░░░░░░░░░░░░░░░░░");
        System.out.println("░░░░░░░░░░░░░░░░░░░░░░░░░░░░░");
    }
}


SIMULASI

  • Saat program dijalankan
  • Saat Y diinputkan
  • Saat angka 1 diinputkan
  • Saat angka 2 diinputkan
  • Saat angka 3 diinputkan
  • Saat angka 4 diinputkan
  • Saat angka 5 diinputkan
  • Saat angka 6 diinputkan


















Comments

Popular posts from this blog

House Drawing

Dalam pembuatan gambar Rumah digunakan beberapa library Java sebagai penunjang pemrograman grafis seperti : import javax.swing.* import java.awt.* import java.util.List import java.util.* Lalu class - class yang digunakan dalam pembuatan gambar Rumah ini terbagi menjadi : Shape class, digunakan untuk mengatur bentuk yang ingin ditampilkan. Terdiri atas: Circle Square Triangle Rectangles Library class, bernama Canvas, berfungsi sebagai utility yang memungkinkan untuk memunculkan gambar. Main class, bernama HousePicture, berfungsi untuk menyatukan class-class yang ada dan melakukan function serta variable control seperti ukuran, warna, dan posisi yang ingin dimunculkan pada Canvas. Tampilan workspace : Source code Class Circle import java.awt.*; import java.awt.geom.*; /**  * Write a description of class Circle here.  *  * @author Satria Ade Veda Karuniawan  * @version version 1.0  */ public class Circle {   ...

Image Viewer GUI 4.0 (Final Exam Project)

Rancangan Interface (Workspace) Project lanjutan dari Image Viewer GUI 3.0 dengan implementasi menggunakan BlueJ, hal yang telah selesai diimplementasikan adalah : Frame Panel Button Label dll Dengan daftar class utama sebagai berikut : ImageViewer : merupakan class utama yang berfungsi untuk menampilkan dan menginisialisasi GUI (main class) OFImage : merupakan class yang mendefinisikan objek dari gambar ImagePanel : merupakan class yang salah satunya bertindak sebagai canvas gambar (berbeda dengan ImageViewer, ImagePanel hanya mengatur bagian panel foto saja) ImageFileManager : merupakan class yang bertindak sebagai file handler Dengan daftar inherited class ( Filter ) sebagai berikut : DarkerFilter : class Filter yang berfungsi untuk menggelapkan foto LighterFilter : class Filter yang berfungsi untuk menerangkan foto ThresholdFilter : class Filter yang berfungsi untuk merubah warna foto menjadi 3 tingkatan warna dari grayscale InvertFilter : class Fil...

Image Viewer GUI 3.0

Implementasi Object-Oriented Programming dari Image Viewer, merupakan modifikasi dari postingan Image Viewer GUI yang sebelumnya, library yang dibutuhkan : Awt (Event, Image, Color, Event) Swing File IO Class yang diimplementasikan antara lain : ImageViewer (Sebagai main class yang melakukan display image pada aplikasi GUI) ImagePanel (Sebagai class yang menampilkan OFImage serta menambah functionality) ImageFileManager (Sebagai class utility untuk melakukan load image) OFImage (Sebagai class yang mendefinisikan image sebagai object) Abstract Class   Filter (Sebagai class yang mengatur fungsional filter yang berguna untuk memanipulasi gambar) dioverride oleh : DarkerFilter (Sebagai class yang berfungsi untuk mengubah gambar menjadi lebih gelap) LighterFilter (Sebagai class yang berfungsi untuk mengubah gambar menjadi lebih terang) ThresholdFilter (Sebagai class yang berfungsi untuk mengubah gambar dari warna menjadi gambar grayscale) FishEyeFilter (Sebagai class ...