Media corat-coret selama kuliah

  • -Quote From Me-

  • -Quote From Me-

  • -Quote From Me-

  • -Quote From Me-

  • -Quote From Me-

  • -Quote From Me-

Minggu, 18 Desember 2016

[EAS-PPLC] Implementasi Iterator Patern pada Simulasi Televisi dan Remotenya

  • Nama              : Jeffry Nasri Faruki
  • NRP                : 5114100043
  • Design Patern : Iterator
  • Studi Kasus     : Membuat Simulasi Televisi dan Remotenya
    • Latar Belakang dan Deskripsi Studi Kasus                                                                Seringkah kalin melihat televisi? Apa yang wajib ada saat menonton televisi ? Makanan,minuman,Remote TV? Remote tc adalah benda kecil yang sangat berguna bagi kita untuk bermalas-malasan. Konsepnya sangat sederhanan mengklik tombol maju, channel tv akan maju. mengklik tombol mundur channel tv akan mundur, dan mengklik tombol dengan nomor sekian, channel tv akan berpindah ke saluran dengan urutan nomor yang telah ditekan.Oleh karena itu, Di EAS PPL ini saya mengangkat topik ini, karena konsep kerjanya sangatlah cocok dengan iterator patern. Pertama - tama silahkan disimak apa itu iterator pattern.
    • Penjelasan Iterator Patern
      • Definisi                                                                                                            pattern yg mendfenisikan cara untuk mengakses objek dalam koleksi objek TANPA menghiraukan representasi dari kolek si(struktur internal) objek tersebut. Koleksi objek dapat berupa list,array,tree,dsb.
      • Kapan harus digunakan ?                                                                              Ketika mempunyai banyak macam koleksi objek, dan harus mengimplementasikan algortma tertentu. Sebgai contoh ada sebuah program yang memiliki 4 tipe struktur data (array,binary tree,linked list,hash table) dan 3 algoritma (sort,find,merge). Tanpa pendekatan iteration pattern, membutuhkan permutasi sebanyak 4 x 3 . Dengan pendekatan iteration pattern(Generic Programming-memisahkan algoritma dengan struktur data)  , hanya dibutuhkan 4 + 3 konfigurasi
    • Perancangan                                          
      • Class Diagram
                                  

                   Penjelasan :
      1. ChanelTvRemote = Kelas utama
      2. Channel = Kelas yang mendefinisikan sebuah channel tv (ada nama channel dan isi channel berupa kode)
      3. ChannelCollection = Kelas abstrak tentang kumpulan Channel
      4. ChannelIterator = Kelas abstrak tentang pengaksesan channel. Kelas ini yang menjadi kunci utama iterator patern
      5. ConcreteChannelIterator = Kelas yang mengimplementasikan ChannelIterator
      6. ConcreteChannelCollection = Kelas yang mengimplementasikan ChannelCollection. Kelas ini memiliki objek ConcreteChannelIterator. Kelas ini merupkan penyimpanan daftar channel.
    • Prototype
      • Bahas Pemrograman = Java
      • IDE yang digunakan   = Netbean V 8.2
      • Langkah Pembuatan :
        • Buat projek baru dengan men-klik File->New Project->Pilih Java->Ok
        • Tambahkan 6 file kelas (sesuai poin perancangan) ke projek yang telah dibuat. Pastikan ekstensinya (*.java) .
        • Isi ke-6 kelas dengan rincian sebagai berikut :
          • ChannelTvRemote.java diisi dengan 

import java.util.Scanner; public class ChanelTvRemote { public static void main(String[] args) { ConcreteChannelCollection tv = new ConcreteChannelCollection(); ChannelIterator remote = tv.iterator(); System.out.printf("--------------------------------------------------------------\n"); System.out.printf("---------------------------Televisi---------------------------\n"); System.out.printf("--------------------------------------------------------------\n"); System.out.printf("Tombol Remote:\n1. Tekan angka antara (1 - 12) untuk mengganti channel\n"); System.out.printf("2. Tekan n untuk berpindah ke channel selanjutnya\n"); System.out.printf("3. Tekan p untuk berpindah ke channel sebelumnya\n"); System.out.printf("4. Tekan o untuk mematikan televisi\n"); Scanner scanIn = new Scanner(System.in); Channel now_playing; while(true){ System.out.printf("Remote> "); String input; input = scanIn.next(); if ("o".equals(input)){ break; }else if ("n".equals(input)){ now_playing = remote.next(); }else if ("p".equals(input)){ now_playing = remote.previous(); }else{ try{ now_playing = remote.jump(Integer.parseInt(input)); }catch(NumberFormatException ex){ // handle your exception System.out.printf("Input Tidak Dikenali\n"); continue; } } System.out.printf("--------------------------------------------------------------\n"); System.out.printf("---------------------------Televisi---------------------------\n"); System.out.printf("--------------------------------------------------------------\n"); System.out.println(now_playing.getName()); System.out.println(now_playing.getChannelCode()); System.out.printf("--------------------------------------------------------------\n"); } scanIn.close(); } }


/

          • Channel diisi dengan 

public class Channel { private String name; private String channel_code; public Channel(String name, String code) { this.setName(name); this.setChannelCode(code); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getChannelCode() { return channel_code; } public void setChannelCode(String code) { this.channel_code = code; } }




















          • ChannelCollection diisi dengan :

public interface ChannelCollection { public void addChannel(Channel c); public void removeChannel(Channel c); public ChannelIterator iterator(); }






          • ChannelIterator diisi dengan :

public interface ChannelIterator { public boolean hasNext(); public boolean hasPrevious(); public Channel next(); public Channel previous(); public Channel currentItem(); public Channel jump(int index); }












          • Isi ConcreteChannelIterator digabung ddi isi ConcreteChannelCollection
          • ConcreteChannelCollection diisi dengan :

import java.util.ArrayList; import java.util.List; public class ConcreteChannelCollection implements ChannelCollection { private List<Channel> channelsList; public ConcreteChannelCollection() { channelsList = new ArrayList<>(); this.addChannel(new Channel("TVRI","Kodingan channel tvri.........")); this.addChannel(new Channel("TRANS TV","Kodingan channel transtv.........")); this.addChannel(new Channel("ANTV","Kodingan channel antv.........")); this.addChannel(new Channel("INDOSIAR","Kodingan channel indosiar.........")); this.addChannel(new Channel("RCTI","Kodingan channel rcti.........")); this.addChannel(new Channel("MNC TV","Kodingan channel mnc tv.........")); this.addChannel(new Channel("SCTV","Kodingan channel sctv.........")); this.addChannel(new Channel("NET TV","Kodingan channel net tv.........")); this.addChannel(new Channel("METRO TV","Kodingan channel metro tv.........")); this.addChannel(new Channel("TV ONE","Kodingan channel tv one.........")); this.addChannel(new Channel("GLOBAL TV","Kodingan channel global tv.........")); this.addChannel(new Channel("TRANS 7","Kodingan channel trans7.........")); } public void addChannel(Channel c) { this.channelsList.add(c); } public void removeChannel(Channel c) { this.channelsList.remove(c); } public ChannelIterator iterator() { return new ConcreteChannelIterator(this.channelsList); } private class ConcreteChannelIterator implements ChannelIterator { private List<Channel> channels; private int currentPos = 0; public ConcreteChannelIterator(List<Channel> channels) { this.channels = channels; } public boolean hasNext() { if (currentPos < channels.size()-1) { return true; } return false; } public boolean hasPrevious() { if (currentPos > 0) { return true; } return false; } public Channel next() { if(!this.hasNext()){ this.currentPos=0; }else{ this.currentPos++; } Channel channel = channels.get(currentPos); return channel; } public Channel previous() { if(!this.hasPrevious()){ this.currentPos=channels.size()-1; }else{ this.currentPos--; } Channel channel = channels.get(currentPos); return channel; } public Channel currentItem() { return channels.get(currentPos); } public Channel jump(int index){ this.currentPos=index-1; return channels.get(currentPos); } } }
          • /
      • Output implementasi


Share:

Menu

  • t
  • v
  • sa

    Have A Nice Day :)

    Labels