Sabtu, 29 September 2018

TUGAS 5 PBO - MEMBUAT JAM DIGITAL


 
 TUGAS 5 PEMROGRAMAN BERORIENTASI OBJEK




Nama    : Atika Rizki Nurakhmah
NRP      : 05111740000015
Kelas    : PBO - A

Kali ini saya mendapat tugas untuk latihan membuat jam digital. Untuk membuatnya diperlukan 3 class, yaitu :
  • NumberDisplay
  • ClockDisplay
  • TestClockDisplay
Begini tampilannya :



Berikut Source Code nya :
a. Source Code Class NumberDisplay
/**   
  * Source Code NumberDisplay  
  * @author (Atika Rizki Nurakhmah)   
  * @version (01/tugas5/29092018)   
  */   
 public class NumberDisplay {   
   private int limit;   
   private int value;  
   public NumberDisplay(int rollOverLimit)    
     {      
       limit = rollOverLimit;      
       value = 0;   
     }  
     public int getValue()   
   {   
     return value;   
   }  
   public void setValue(int replacementValue) {   
      if((replacementValue >= 0) && (replacementValue < limit))   
      {        
        value = replacementValue; }  
       }  
       public String getDisplayValue() {   
     if(value < 10) {   
       return "0" + value; }   
       else {   
       return "" + value; }   
     }  
     public void increment() {   
       value = (value + 1) % limit;   
     }  
 }  

b. Source Code Class ClockDisplay
/**   
  * Source Code ClockDisplay  
  * @author (Atika Rizki Nurakhmah)   
  * @version (02/tugas5/29092018)   
  */   
 public class ClockDisplay {   
   private NumberDisplay hours;   
   private NumberDisplay minutes;   
   private String displayString;   
   public ClockDisplay() {   
     hours = new NumberDisplay(24);   
     minutes = new NumberDisplay(60);   
     updateDisplay();   
   }    
   public ClockDisplay(int hour, int minute) {   
     hours = new NumberDisplay(24);   
     minutes = new NumberDisplay(60);   
     setTime(hour, minute);   
     }  
     public void timeTick() {  
     minutes.increment();   
     if(minutes.getValue() == 0) {   
       hours.increment();   
     }  
       updateDisplay(); }    
    public void setTime(int hour, int minute) {      
      hours.setValue(hour);      
      minutes.setValue(minute);      
      updateDisplay();    
     }    
    public String getTime() {   
      return displayString;   
     }    
    private void updateDisplay() {   
      displayString = hours.getDisplayValue() + ":" +   
      minutes.getDisplayValue();    
     }   
 }  

c. Source Code Class TestClockDisplay
/**   
  * Source Code TestClockDisplay  
  * @author (Atika Rizki Nurakhmah)   
  * @version (03/tugas5/29092018)   
  */   
  public class TestClockDisplay    
  {    
   public TestClockDisplay()    
   {    
   }    
   public void test()    
   {    
   ClockDisplay clock = new ClockDisplay();    
   clock.setTime(18,59);    
   System.out.println(clock.getTime());    
   clock.setTime(5,40);    
   System.out.println(clock.getTime());   
   clock.setTime(20,38);    
   System.out.println(clock.getTime());   
   clock.setTime(15,17);    
   System.out.println(clock.getTime());   
   }    
  }


TAMBAHAN

Saya juga diminta untuk mencoba membuat penghitung waktu dalam GUI. GUI ini display nya seperti stopwatch. Menghitung waktu yang berjalan, dengan display menit dan detik. Begini tampilannya.


Jika Tombol Start ditekan, maka waktu akan berjalan maju. 


Jika Tombol Stop diklik, maka waktu akan berhenti. 


Tombol step digunakan untuk memajukan waktu step by step, atau satu per satu.


 Berikut Source Code untuk GUI
/**   
  * Source Code GUI  
  * @author (Atika Rizki Nurakhmah)   
  * @version (04/tugas5/29092018)   
  */    
  import java.awt.*;    
  import java.awt.event.*;    
  import javax.swing.*;    
  import javax.swing.border.*;    
  public class ClockGUI    
  {    
   private JFrame frame;    
   private JLabel label;    
   private ClockDisplay clock;    
   private boolean clockOn = false;    
   private TimerThread timerThread;    
   public void Clock()    
   {    
   makeFrame();    
   clock = new ClockDisplay();    
   }    
   private void start()    
   {    
   clockOn = true;    
   timerThread = new TimerThread();    
   timerThread.start();    
   }    
   private void stop()    
   {    
   clockOn = false;    
   }    
   private void step()    
   {    
   clock.timeTick();    
   label.setText(clock.getTime());    
   }    
   private void showAbout()    
   {    
   JOptionPane.showMessageDialog (frame, "Clock Version 0.1\n" +    
   "Membuat jam digital simpel dengan Java.",    
   "About Clock",    
   JOptionPane.INFORMATION_MESSAGE);    
   }    
   private void quit()    
   {    
   System.exit(0);    
   }    
   private void makeFrame()    
   {    
   frame = new JFrame("Clock");    
   JPanel contentPane = (JPanel)frame.getContentPane();    
   contentPane.setBorder(new EmptyBorder(1,60,1,60));    
   makeMenuBar(frame);    
   contentPane.setLayout(new BorderLayout(12,12));    
   label = new JLabel("00:00", SwingConstants.CENTER);    
   Font displayFont = label.getFont().deriveFont(96.0f);    
   label.setFont(displayFont);    
   contentPane.add(label, BorderLayout.CENTER);    
   JPanel toolbar = new JPanel();    
   toolbar.setLayout(new GridLayout(1,0));    
   JButton startButton = new JButton("Start");    
   startButton.addActionListener(e->start());    
   toolbar.add(startButton);    
   JButton stopButton = new JButton("Stop");    
   stopButton.addActionListener(e->stop());    
   toolbar.add(stopButton);    
   JButton stepButton = new JButton("Step");    
   stepButton.addActionListener(e->step());    
   toolbar.add(stepButton);    
   JPanel flow = new JPanel();    
   flow.add(toolbar);    
   contentPane.add(flow, BorderLayout.SOUTH);    
   frame.pack();    
   Dimension d = Toolkit.getDefaultToolkit().getScreenSize();    
   frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);    
   frame.setVisible(true);    
   }    
   private void makeMenuBar(JFrame frame)    
   {    
   final int SHORTCUT_MASK =    
   Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();    
   JMenuBar menubar = new JMenuBar();    
   frame.setJMenuBar(menubar);    
   JMenu menu;    
   JMenuItem item;    
   menu = new JMenu("File");    
   menubar.add(menu);    
   item = new JMenuItem("About Clock...");    
   item.addActionListener(e->showAbout());    
   menu.add(item);    
   menu.addSeparator();    
   item = new JMenuItem("Quit");    
   item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,SHORTCUT_MASK));    
   item.addActionListener(e->quit());    
   menu.add(item);    
   }    
   class TimerThread extends Thread    
   {    
   public void run()    
   {    
   while(clockOn)    
   {    
    step();    
    pause();    
   }    
   }    
   private void pause()    
   {    
   try    
   {    
    Thread.sleep(900);    
   }    
   catch(InterruptedException exc)    
   {    
   }    
   }    
   }    
  }    

Sekian tugas latihan saya, sampai bertemu di ulasan selanjutnya :))))

Tidak ada komentar:

Posting Komentar

EAS PBO - Membuat Image Viewer

Membuat Image Viewer (Versi update + editor)   Nama : Atika Rizki Nurakhmah Nrp    : 05111740000015 Kelas : PBO - A ...