Slt. Bonar Martinus's Blog
Kamis, 16 November 2017
Rabu, 18 Oktober 2017
Bebras.. Only Nine Keys Visualisation
Dari.. juniorukbebras 2014.
Soal
Daniel sedang mengirim pesan dengan handphone jadulnya.
Untuk setiap huruf dia harus menekan angka yang tepat sebanyak 1, 2, 3 atau 4 kali, diikuti henti sejenak.
Jika ingin mengetik 'C' ia harus menekan tombol 2 sebanyak 3 kali, karena 'C' adalah huruf ke 3 dari tombol 2.
Jika ingin mengetik 'HIM' ia harus menekan angka 4, 2kali lalu 4 lagi 3 kali dan angka 6 sekali.
Daniel menekan tepat 6 kali untuk mengetik sebuah nama temanya.
Siapa nama teman yang diketik Daniel?
a. Miriam b. Iris c. Emma d. Ina
Dibawah ini simulasi nya ..
Soal
Untuk setiap huruf dia harus menekan angka yang tepat sebanyak 1, 2, 3 atau 4 kali, diikuti henti sejenak.
Jika ingin mengetik 'C' ia harus menekan tombol 2 sebanyak 3 kali, karena 'C' adalah huruf ke 3 dari tombol 2.
Jika ingin mengetik 'HIM' ia harus menekan angka 4, 2kali lalu 4 lagi 3 kali dan angka 6 sekali.
Daniel menekan tepat 6 kali untuk mengetik sebuah nama temanya.
Siapa nama teman yang diketik Daniel?
a. Miriam b. Iris c. Emma d. Ina
Dibawah ini simulasi nya ..
Kamis, 28 September 2017
Senin, 28 November 2016
Design Pattern - Iterator Pattern
Iterator Pattern ?
Iterator pattern adalah mekanisme untuk mengakses koleksi seperti array, recordset pada database, isi directory dan isi file. Tujuan dari pola ini adalah untuk membuat interface yang berfungsi sebagai iterator yang dapat digunakan kembali (reusable). Pada dasarnya pola Iterator memungkinkan kita untuk membakukan dan menyederhanakan kode yang kita buat untuk bergerak melalui koleksi dalam kode anda.
Nih ada Video singkatnya
Mari buatt.., yang pertama kita tetapkan kontrak koleksi channelnya dan interface iteratornya
Interface ChannelCollection menetapkan kontrak dari implementasi class koleksi kita. Ingat, ada method untuk menambah dan menghapus channel tapi tidak ada method untuk me-return daftar channel.
ChannelCollection punya method me-return iterator untuk travesal(menjelajah/melintasi).ChannelIterator menentukan method berikut,
Sekarang base interface kita dan class inti sudah jadi, lanjut ke implementasi collection class dan iterator.
Nah, kalo programnya kita run, akan menghasilkan output sebagai berikut:

Referensi:
http://www.journaldev.com/1716/iterator-design-pattern-java
http://ryan-sponge.blogspot.co.id/2011/01/iterator-pattern.html
Iterator pattern adalah mekanisme untuk mengakses koleksi seperti array, recordset pada database, isi directory dan isi file. Tujuan dari pola ini adalah untuk membuat interface yang berfungsi sebagai iterator yang dapat digunakan kembali (reusable). Pada dasarnya pola Iterator memungkinkan kita untuk membakukan dan menyederhanakan kode yang kita buat untuk bergerak melalui koleksi dalam kode anda.
Nih ada Video singkatnya
Nah untuk contoh program yang akan saya tampilkan disini, misalkan kita memiliki daftar channel Radio dan program client ingin menjelajah keseluruh channel satu demi satu berdasarkan tipe channelnya. Contohnya beberapa program client hanya tertarik ke channel Inggris dan ingin memproses hanya itu saja, mereka tidak mau mengakses channel lainya.
Jadi, kita dapat menyediakan koleksi channel channel ke client dan membiarkan mereka menuliskan logika yang digunakan untuk menjelajahi channel channel dan menentukan untuk memprosesnya. Tapi solusi ini memiliki banyak masalah semisal si client harus punya logika untuk menjelajah/melintasi channelnya, dan kita tidak bisa memastikan apakah logika si client itu benar, karena itu kalau jumlah klient kita terus meningkat, akan jadi sangat sulit untuk dipertahankan
Disini kita akan menggunakan Iterator pattern dan memberikan iterasi berdasarkan tipe channelnya.
Kita harus memastikan client program bisa mengakses daftar channel dari Iterator
public enum ChannelTypeEnum { ENGLISH, HINDI, FRENCH, ALL; }
public class Channel { private double frequency; private ChannelTypeEnum TYPE; public Channel(double freq, ChannelTypeEnum type){ this.frequency=freq; this.TYPE=type; } public double getFrequency() { return frequency; } public ChannelTypeEnum getTYPE() { return TYPE; } @Override public String toString(){ return "Frequency="+this.frequency+", Type="+this.TYPE; } } }
public interface ChannelCollection { public void addChannel(Channel c); public void removeChannel(Channel c); public ChannelIterator iterator(ChannelTypeEnum type); }
Interface ChannelCollection menetapkan kontrak dari implementasi class koleksi kita. Ingat, ada method untuk menambah dan menghapus channel tapi tidak ada method untuk me-return daftar channel.
ChannelCollection punya method me-return iterator untuk travesal(menjelajah/melintasi).ChannelIterator menentukan method berikut,
public interface ChannelIterator { public boolean hasNext(); public Channel next(); }
Sekarang base interface kita dan class inti sudah jadi, lanjut ke implementasi collection class dan iterator.
import java.util.ArrayList; import java.util.List; public class ChannelCollectionImpl implements ChannelCollection { private ListchannelsList; public ChannelCollectionImpl() { channelsList = new ArrayList<>(); } public void addChannel(Channel c) { this.channelsList.add(c); } public void removeChannel(Channel c) { this.channelsList.remove(c); } @Override public ChannelIterator iterator(ChannelTypeEnum type) { return new ChannelIteratorImpl(type, this.channelsList); } private class ChannelIteratorImpl implements ChannelIterator { private ChannelTypeEnum type; private List channels; private int position; public ChannelIteratorImpl(ChannelTypeEnum ty, List channelsList) { this.type = ty; this.channels = channelsList; } @Override public boolean hasNext() { while (position < channels.size()) { Channel c = channels.get(position); if (c.getTYPE().equals(type) || type.equals(ChannelTypeEnum.ALL)) { return true; } else position++; } return false; } @Override public Channel next() { Channel c = channels.get(position); position++; return c; } } }
public class IteratorPatternTest { public static void main(String[] args) { ChannelCollection channels = populateChannels(); ChannelIterator baseIterator = channels.iterator(ChannelTypeEnum.ALL); while (baseIterator.hasNext()) { Channel c = baseIterator.next(); System.out.println(c.toString()); } System.out.println("******"); // Channel Type Iterator ChannelIterator englishIterator = channels.iterator(ChannelTypeEnum.ENGLISH); while (englishIterator.hasNext()) { Channel c = englishIterator.next(); System.out.println(c.toString()); } } private static ChannelCollection populateChannels() { ChannelCollection channels = new ChannelCollectionImpl(); channels.addChannel(new Channel(98.5, ChannelTypeEnum.ENGLISH)); channels.addChannel(new Channel(99.5, ChannelTypeEnum.HINDI)); channels.addChannel(new Channel(100.5, ChannelTypeEnum.FRENCH)); channels.addChannel(new Channel(101.5, ChannelTypeEnum.ENGLISH)); channels.addChannel(new Channel(102.5, ChannelTypeEnum.HINDI)); channels.addChannel(new Channel(103.5, ChannelTypeEnum.FRENCH)); channels.addChannel(new Channel(104.5, ChannelTypeEnum.ENGLISH)); channels.addChannel(new Channel(105.5, ChannelTypeEnum.HINDI)); channels.addChannel(new Channel(106.5, ChannelTypeEnum.FRENCH)); return channels; } }
Nah, kalo programnya kita run, akan menghasilkan output sebagai berikut:
Referensi:
http://www.journaldev.com/1716/iterator-design-pattern-java
http://ryan-sponge.blogspot.co.id/2011/01/iterator-pattern.html
Senin, 24 Oktober 2016
NEW CASE STUDY : ONLINE SHOP MANAGEMENT SYSTEM
Di post kali ini saya akan memberikan sebuah case study baru dengan use case diagram , sequence diagram dan contoh implementasi sederhananya.
CASE STUDY nya adalah ONLINE SHOP MANAGEMENT SYSTEM
1. Use Case Diagram
2. Sequence Diagram for Olshop
3. Activity Diagram
4. Implementasi code c++ sederhana
Sultan Bonar M
5114100006
PPL E
CASE STUDY nya adalah ONLINE SHOP MANAGEMENT SYSTEM
1. Use Case Diagram
2. Sequence Diagram for Olshop
4. Implementasi code c++ sederhana
Sultan Bonar M
5114100006
PPL E
Langganan:
Postingan
(
Atom
)