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:

Selasa, 22 November 2016

Design Patern [Iterator]


  • Nama              : Jeffry Nasri Faruki
  • NRP                : 5114100043
  • Design Patern : Iterator
    • Deskripsi
      • 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
    • Contoh sederhana/implementasi                                                                         Mencetak nama yang tersimpan dalam koleksi nama

      • Gambar
                                  
      • Penjelasan
        • IteratorPatternDemo = Kelas utama
        • NemeRepository(Turunan kelas container) = Kelas yg berisi daftar nama dan memanggil kelas iterator untuk mencetak nama-nama yang ada di daftarNama
        • Iterator(Turunan kelas iterator) = Kelas yg bertanggung jawab atas navigasi objek dalam daftar nama yang ada di kelas container
        • Container = Kelas yg berisi koleksi dan memanggil kelas iterator untuk mengakses tiap-tiap elemen koleksi
        • Iterator = Kelas yg bertanggung jawab atas navigasi objek dalam koleksi yang ada di container
      • Source Code

pastebin.com/nF4s2sPp

      • Output implementasi
      • Name : Robert
        Name : John
        Name : Julie
        Name : Lora
    • Contoh Penggunaan software-industri                                                                   Dalam dunia nyata, design pattern iterator digunakan pada pencarian chanel di tv/radio. Pengguna hanya menekan 1 tombol untuk berpindah antar chanel tanp perlu tahu apa bentuk dari channel tersebut
    • Source Code/Dokumentasi

Implementasi Navigasi chanel tv dengan Java

    • Sumber
      •  https://sourcemaking.com/design_patterns/iterator
      • http://www.oodesign.com/iterator-pattern.html
      • https://www.tutorialspoint.com/design_pattern/iterator_pattern.htm
      • https://dzone.com/articles/design-patterns-iterator
      • https://ranjithabalaraman.wordpress.com/category/exploring-design-patterns/behavioral-pattern/iterator-pattern/

Share:

Kamis, 10 November 2016

Sistem Informasi IVT dan Diagram UML-nya



  • Nama Kelompok   : 
    • Jeffry Nasri Faruki                        (5114100043)                                                                 
    • Antonius Kevin Wiguna                (5114100132)                                                                 
    • Kukuh Rilo Pambudi                     (5114100178)
  • Nama Aplikasi     : IVT
  • Deskripsi              : Aplikasi manajemen barang dan transaksi di gudang
  • Link Source Code : https://github.com/jeffrynasri/IVT_Web.git
  • Screenshoot Program
  • Menu Login
    DashBoard Pegawai(Menu Penjualan Barang)
    DashBoard Manajer(Menu Pembelian Barang)

    Menu Beli Barang
    Menu Tambah Barang Rusak
    Menu Laporan Keuangan
    • Use Case

           Use case dibuat dengan creatly.com
    • Realisasi Use Case

    • CRC Card

    • Diagram Class

           Use case dibuat dengan creatly.com
    • Sequence Diagram
    Manajer

    Petugas

                      Sequence diagram dibuat dengan creatly.com

    • Activity Diagram
    Pembelian(Kanan) dan Penjualan (Kiri)

                      Sequence diagram dibuat dengan creatly.com
    • Component Diagram

           Use case dibuat dengan creatly.com
    • Deployment Diagram
           Use case dibuat dengan creatly.com
Share:

Minggu, 30 Oktober 2016

[Kelompok]Component Diagram ,Deployment Diagram Aplikasi Pergudangan IVT


  • Nama Kelompok  :
    • Jeffry Nasri Faruki (5114100043)
    • Kukuh Rilo Pambudi (5114100178)
  • Nama Aplikasi     : IVT
  • Deskripsi              : Aplikasi manajemen barang dan transaksi di gudang
  • Link Source Code : https://github.com/jeffrynasri/IVT_Web.git
  • Screenshoot Program
Menu Login
DashBoard Pegawai(Menu Penjualan Barang)
DashBoard Manajer(Menu Pembelian Barang)

Menu Beli Barang
Menu Tambah Barang Rusak
Menu Laporan Keuangan

  • Component Diagram

       Use case dibuat dengan creatly.com
  • Deployment Diagram
       Use case dibuat dengan creatly.com
Share:

Menu

  • t
  • v
  • sa

    Have A Nice Day :)

    Labels