Kamis, 06 Januari 2011

0

Iterator Pattern


1. Deskripsi 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. Koleksi kelas cenderung dibuat berdasarkan pada penyimpanan dari pada persyaratan traversal. Keuntungan dari pola Iterator adalah bahwa ia menyediakan cara yang konsisten untuk menangani navigasi dalam koleksi. terlepas dari struktur yang mendasarinya. Iterator dalam bahasa pemrograman Java ("Java") biasanya menggunakan antarmuka untuk mendefinisikan operasi intinya, kemudian menyediakan satu atau lebih implementasi yang melink ke agregat yang mendasari.
Iterasia dalah sifat tertentu dari algoritma atau program komputer di mana suatu urutan atau lebih dari langkah algoritmik dilakukan di loop program. Di dalam matematika, iterasi dapat diartikan sebagai suatu proses atau metode yang digunakan secara berulang-ulang (pengulangan) dalam menyelesaikan suatu permasalahan matematik.
Iterasi adalah proses mendapatkan kembali (retrieve) elemen yang terdapat dalam collection. Iterator merupakan interface yang bisa digunakan untuk meretrieve elemen collection.Iterator mengakses unsur-unsur dari sekumpulan obyek secara berurutan.
Dalam pemrograman berorientasi objek, pola Iterator adalah pola desain di mana iterator digunakan untuk mengakses elemen dari suatu objek agregat berurutan tanpa memperlihatkan implementasi yang mendasarinya. Sebuah objek Iterator mengenkapsulasi struktur internal tentang bagaimana iterasi terjadi.
Tujuan Iterator pattern adalah menyediakan cara untuk mengakses elemen objek agregat berurutan tanpa memperlihatkan representasi yang mendasarinya. Sebuah objek agregat adalah objek yang berisi objek lain untuk tujuan pengelompokan objek yang sama sebagai sebuah unit. Hal ini disebut wadah atau koleksi. Contohnya adalah sebuah linked list. Iterator pattern juga dikenal sebagai cursor.

2. Alasan menggunakan Iterator pattern
1.Sebuah objek agregat seperti daftar / list harus memungkinkan cara untuk melintasi elemennya tanpa memperlihatkan strukturinternal
2.Memungkinkan metode traversal (penelusuran) berbeda
3.Memungkinkan terjadinya multiple traversal dalam proses bersamaan
4.Tidak perlu membuat fungsi-fungsi baru lagi, karena untu kmenggunakan fungsi yang sama hanya dengan menggunakan interface iterator patternnya.







3. Contohnya :

1. List aggregate with iterator:
Typical client code:
...
List list = new List();
...
ListIterator iterator = new ListIterator(list);
iterator.First();
while (!iterator.IsDone()) {
Object item = iterator.CurrentItem();
// Code here to process item.
iterator.Next();
}
...

2. Polymorphic Iterator

Typical client code:
List list = new List();
SkipListskipList = new SkipList();
Iterator listIterator = list.CreateIterator();
Iterator skipListIterator = skipList.CreateIterator();
handleList(listIterator);
handleList(skipListIterator);
...
public void handleList(Iterator iterator) {
iterator.First();
while (!iterator.IsDone()) {
Object item = iterator.CurrentItem();
// Code here to process item.
iterator.Next();
}
}

4. Penerapan penggunaan Iterator pattern
1.Untuk mendukung penelusuran objek agregat tanpa mengeksposinternal representasinya
2.Untuk mendukung beberapa penelusuran objek agregat secara bersamaan
3.Menyediakan antarmuka yang seragam untuk melintasi struktur aggregate yang berbeda

5.Penggunaan Iterator pattern
Iterator digunakan untuk mengakses isi sebuah container secara urut tanpa harus mengetahui isi container tersebut. Container yang dimaksud adalah collection of data. Di java, Iterator dapat diterapkan dengan implement java.util.Iterator. Ada dua macam iterator yaitu internal dan eksternal.
Misalkan kita memiliki sebuah container, maka internal iterator adalah iterator yang dimaintain oleh container tersebut. Container bertanggung jawab terhadap state dari iterator dan hanya bisa ada satu iterator dalam satu container. Sedangkan eksternal iterator adalah iterator yang diletakkan dalam object terpisah dari container. Jadi sekarang ada dua object, container dan iterator, di mana container mengembalikan sebuah object bertipe iterator dalam sebuah methodnya,

6. Struktur iterator pattern
Iterator
Mendefinisikan sebuah antarmuka untuk mengakses dan melintasi elemen
ConcreteIterator
Mengimplementasikan antarmuka iterator dan melacak posisi yang sedang terjadi pada saat penelusuran (traversal)
Agregat
Mendefinisikan sebuah antar muka untuk menciptakan sebuah objek Iterator (factory method)
Concrete Aggregate
Mengimplementasikan antarmuka Iterator yang dibuat untuk mengembalikan sebuah instance dari ConcreteI terator

Kelebihan dan kekurangan
•Kelebihan :
1.Menyederhanakan antarmuka dari Agregat dengan tidak merusaknya dengan metode
traversal (memindahkan focus dari satu kontrol kekontrol lain)
2.Mendukung banyak penelusuran (traversal) yang terjadi bersamaan
3.Mendukung varian teknik traversal

•Kekurangan :
Salah satu kelemahan iterators adalah bahwa mereka memberikan ilusi untuk unordered struktur. Misalnya Iterator akan menyediakan unsur-unsur dalam suatu urutan tidak tetap yang dapat berubah dari waktu ke waktu. Jika Anda tidak menyadari hal ini, Anda bisa menulis kode yang diasumsikan konsistensi dalam struktur dasarnya, yang akan mengakibatkan masalah di kemudian hari

0 Comments:

Posting Komentar