MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA GENERIC DAN IMPLEMENTASI COMPARETO()

dokumen-dokumen yang mirip
Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

Politeknik Elektronika Negeri Surabaya

MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

Objectives. Struktur Data & Algoritme (Data Structures & Algorithms) Sort. Outline. Bubble Sort: idea. Bubble Sort. Sorting

Outline STRUKTUR DATA. VII. Sorting

GENERICS. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya. Topik

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

Pemrograman Berorientasi. Array dan Collections

Tes Asisten Praktikum Alpro Lanjut

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Politeknik Elektronika Negeri Surabaya

Boxing & AutoBoxing Java Collection Framework. Collection List Map Set. Generics vs Inheritance

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

Collections. Collections Framework

03/04/2018. Collection set List Map. Pemrograman Berorientasi Object

Pemrograman Berbasis Objek. Collections. Politeknik Elektronika Negeri Surabaya

Gambar 1. Single Linked List

06/03/2018. Tidak memiliki parameter. Melakukan inisialisasi semua variabel private dengan nilai awal.

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

Algoritma Pemrograman [BS204]

Pemrograman Lanjut Class, Instance Variable dan Method PTIIK

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Pertemuan 4 Halaman 1/1. Class Inheritance

A. TUJUAN PEMBELAJARAN

Politeknik Elektronika Negeri Surabaya

Generics. Prepared by Viska Mutiawani. 1

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

Simple Sorting Techniques

Overriding, Overloading, Polymorphism. Pertemuan 10 Pemrograman Berbasis Obyek Dr. Rodiah

Operator dan Assignment

BEKERJA DENGAN JAVA CLASS LIBRARY

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

1. Pelajari program berikut,kemudian modifikasi program dengan ketentuan berikut

Gambar 1. Single Linked List

KUM 3 IMPLEMENTASI LIST

Modul Praktikum 4 Pemograman Berorientasi Objek

Bahasa Pemrograman :: Polimorfism and Abstraction

Pemrograman Berbasis Objek GENERIC. Yuliana Setiowati. Politeknik Elektronika Negeri Surabaya

9/26/2011. Tujuan. Bekerja dengan Java Class Library. Pengenalan OOP. Pengenalan OOP. Class dan Object. Enkapsulasi

Gambar 1. Single Linked List

Pemrograman Berbasis Objek Operator dan Assignment

IKG2I4 / Software Project I

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Abstract Class dan Interface. Viska Mutiawani, M.Sc

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

Gambar 1. Single Linked List

Pemrograman Berorientasi. Class dan Obyek 2

Agar lebih mudah mengerti, cobalah untuk melakukan hal-hal berikut ini: 1. Bacalah terlebih dahulu ide dasar dari masing-masing algoritma.

Algoritma dan Struktur Data

INSTITUT TEKNOLOGI SUMATERA COLLECTION: SET DAN MAP

Polymorphism (Polimorfisme)

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Gambar 1: Hirarki class

KONSEP OOP: POLYMORPHISM

Pemrograman Berorientasi. Abstract & Interface

Konsep Dasar Pemrograman Berorientasi Objek

PEMAHAMAN DASAR DASAR JAVA

B.1 Mengurutkan Obyek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami Konsep Binary Search Tree 2. Mengimplementasaikan Binary Search Tree

SORTING (BAGIAN II) Proses kelima

Object Oriented Programming (OOP) --Inheritance- Saniati STMIK Teknokrat, Bandar Lampung

Politeknik Elektronika Negeri Surabaya

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

Pemrograman Lanjut Dosen: Dr. Eng. Herman Tolle

Gambar 13.1 Ilustrasi proses algoritma sorting

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;

A. TUJUAN PEMBELAJARAN 1. Memahami konsep Class LinkedList di Collection 2. Memahami penggunaan method-method pada Class LinkedList.

Java Generic & Collection

Membuat dan Menggunakan Class

Arrays. Misalkan kita ingin menyimpan 100 buah integer Buat 100 variabel bertipe integer. Tidak efisien!

Pewarisan, Polimorfisme, dan Interface

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

Bahasa Pemrograman :: Inheritance

BAB 7 Java Array. Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier yang berbeda untuk tiap variabel.

Modul Praktikum Bahasa Pemrograman 1

Overriding Overloading Polymorphism

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

INTERAKSI ANTAR OBJECT

Design and Analysis Algorithm

OBJECT ORIENTED PROGRAMMING. Day 3 : Operator dan Assignment

Algoritma & Struktur Data. Array. Oleh : Nur Hayatin, M.Kom

Reserved words Reserved words atau keywords merupakan kata-kata spesifik digunakan oleh compiler untuk keperluan pemrograman. Contoh reserved words

Modul Pelatihan : Pembuatan Game Animasi Menggunakan Greenfoot

Grouping Object. Viska Mutiawani, M.Sc

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

BAHASA PEMROGRAMAN JAVA

Transkripsi:

Deskripsi Singkat MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA GENERIC DAN IMPLEMENTASI COMPARETO() Praktikum 1 dan 2 yang telah anda lakukan melibatkan tipe data primitif. Contohnya class ArrayTakTerurut yang menyimpan data bertipe double. Sehingga jika ingin menyimpan tipe data lain, berarti kita harus membuat class Array yang lain lagi. Padahal di dalam Java, selain delapan tipe data primitif, juga terdapat tipe data berupa object. Oleh karena itu class yang bersifat collections (koleksi) diharapkan dapat digunakan untuk menyimpan berbagai macam tipe data. Sehingga collections tersebut dapat menggunakan super class nenek moyang yaitu Object. Namun penggunaan Object sendiri menjadikan data yang disimpan menjadi sangat bebas/flexible. Sehingga saat mengakses datanya akan memerlukan operasi casting. Generic dapat menyelesaikan masalah tersebut sebab generic menyediakan abstraksi pada tipe data. Bermakna tipe data yang dibuat generic sehingga dapat menerima tipe data apapun, namun pada satu waktu hanya satu jenis tipe data saja yang dapat digunakan. Tujuan 1. Membuat class collection yang generic 2. Menggunakan method compareto() pada interface Comparable 3. Memanfaatkan method compareto() pada algoritma searching dan sorting Materi 1 : Membuat Class Collection Biasa dan yang Generic Class yang bersifat collection atau koleksi bermakna dapat digunakan untuk menyimpan data. Agar data yang disimpan bisa bermacam-macam maka digunakanlah data bertipe Object. Berikut kode programnya yang juga menyertakan method main yang mengecek class Store tersebut. public class Store // instance variables - replace the example below with your own private Object value; // data public Store () value = null; public Object getvalue() return value; // set v as the new stored value public void setvalue(object v) value = v;

public String tostring() return "value = " + value; public static void main(string []ar) Store s1 = new Store(); s1.setvalue("hello"); String msg1 = (String) s1.getvalue(); Store s2 = new Store(); s2.setvalue( new Integer(5) ); Integer t2 = (Integer) s2.getvalue(); String msg2 = s2.getvalue(); //? Integer t1 = (Integer) s1.getvalue(); Apakah error yang muncul? Mengapa error tersebut bisa muncul? Class Object memang dapat menampung semua class dalam Java. Namun tetap saja memprosesnya perlu menggunakan casting. Sehingga jika salah casting akan menimbulkan error compiler dan runtime (exception). Untuk menyelesaikan masalah tersebut, kita akan menggunakan collection yang generic. Generic ditandakan dengan simbol yang dibatasi oleh kurung siku (contoh <T>). Class generic jika digunakan haruslah dikhususkan untuk tipe data tertentu sehingga tidak perlu proses casting untuk mengakses unsur collection. Berikut contoh class Store yang telah diubah menjadi generic. public class StoreGeneric <T> // instance variables - replace the example below with your own private T value; // data of type/class T public StoreGeneric () value = null; // return the stored value as type T public T getvalue() return value; // update the stored value public void setvalue(t v) value = v; public String tostring() return "Value = " + value; public static void main (String []ar)

StoreGeneric<String> ss = new StoreGeneric<String>(); ss.setvalue("hello"); String msg = ss.getvalue(); StoreGeneric<Integer> st = new StoreGeneric<Integer>(); st.setvalue( new Integer(10) ); Integer t = st.getvalue(); String msg2 = ss.getvalue(); // akan menghasilkan warning compiler //Integer t1 = ss.getvalue(); Beberapa tipe parameter yang umum digunakan pada generic: T - Type E - Element K - Key N - Number V - Value Class StoreGeneric sama seperti class Store yaitu dapat menyimpan tipe data apapun. Namun class StoreGeneric saat digunakan haruslah dikhususkan untuk tipe data tertentu. Seperti objek ss yang telah dikhususkan hanya untuk menyimpan data String. Sedangkan objek st telah dikhususkan untuk menyimpan data Integer. Dengan menggunakan generic maka kita tidak perlu lagi melakukan casting. Pada kode program di atas, coba hilangkan simbol komen pada Integer t1 = ss.getvalue(); Compile kembali lalu perhatikant warning/error yang muncul. Mengapa muncul warning compiler? Materi 2 : Interface yang Generic Selain class, method dan interface juga dapat dibuat generic. Method yang generic telah anda gunakan secara tidak langsung pada class StoreGeneric. Membuat interface generic juga tidak terlalu jauh berbeda dengan class generic yaitu menggunakan simbol <>. Berikut kode interface Accumulator yang dibuat generic. public interface Accumulator<T> public void add(t v);

Interface Accumulator di atas akan diimplementasikan pada class berikut ini. public class AccumulatorNumber implements Accumulator<Number> private double total; public AccumulatorNumber () total = 0.0; public double gettotal() return total; // add v to total as a double public void add(number v) total = total + v.doublevalue(); Kemudian kita buat class untuk menguji interface Accumulator di atas. Kode programnya di bawah. public class UsingAccumulator public static void main(string []ar) Integer[] intarr = 7, 1, 9, 3, 8, 4; AccumulatorNumber accnumber = new AccumulatorNumber(); for (int i = 0; i < intarr.length; i++) accnumber.add(intarr[i]); System.out.println("Numeric total is " +accnumber.gettotal()); Materi 3 : Method compareto() di dalam Interface Comparable Algoritma searching dan sorting yang telah kita buat pada praktikum 1 dan 2 dikhususkan untuk tipe data primitif. Jika kita ingin membandingkan tipe data berupa class tertentu, apalagi jika menggunakan generic, maka kita perlu cara yang khusus. Salah satu cara yang dapat digunakan adalah dengan menggunakan method compareto() yang ada di dalam interface Comparable. Interface Comparable ada dalam Java API dan merupakan cara standar untuk membandingkan object. Method compareto() akan mengembalikan nilai negatif, 0 dan positif. obj.compareto(item) < 0 ketika obj < item obj.compareto(item) == 0 ketika obj == item obj.compareto(item) > 0 ketika obj > item Berikut contoh kode programnya.

public class Employee implements Comparable<Employee> protected String empname; protected String empssn; public Employee(String empname, String empssn) this.empname = empname; this.empssn = empssn; public void setname(string empname) this.empname = empname; public String tostring() return "Name: " + empname + '\n' + "SS#: " + empssn; public String payrollcheck() return ""; public int compareto(employee obj) return empssn.compareto(obj.empssn); Kemudian kita buat class SalaryEmployee yang merupakan turunan dari class Employee. import java.text.decimalformat; // salaried employee "is an" employee with a fixed weekly salary public class SalaryEmployee extends Employee // new attributes that extends attributes in Employee private double salary; public SalaryEmployee(String empname, String empssn, double salary) // call the Employee superclass constructor super(empname, empssn); this.salary = salary; // accessor method to return the salary public double getsalary() return salary; // mutator method to update the salary public void setsalary(double sal) salary = sal; // return a formated string with salaried employee information

// including name, ssn, status (salaried) and monthly pay public String tostring() DecimalFormat fmt = new DecimalFormat("#.00"); return super.tostring() + '\n' + "Status: Salary" + '\n' + "Salary: $" + fmt.format(salary); // cut a payroll check with the employee name, social security // number in parentheses, and salary public String payrollcheck() DecimalFormat fmt = new DecimalFormat("#.00"); return "Pay " + empname + " (" + empssn + ") $" + fmt.format(salary); Materi 4 : Penggunaan Method compareto() pada Algoritma Searching dan Sorting Class Arrays berikut ini merupakan versi collection yang memanfaatkan generic dan interface Comparable yang memiliki method compareto(). public class Arrays // assure that the programmer cannot instantiate // an Arrays object private Arrays() / Sorts an array of integer values in ascending order using the selection sort algorithm.<p> This algorithm has O(nn) runtime efficiency for best, worst, and average case. @param arr the array to be sorted. / public static void selectionsort(int[] arr) int smallindex; // index of smallest element in the sublist int pass, j, n = arr.length; int temp; // pass has the range 0 to n-2 for (pass = 0; pass < n-1; pass++)

// scan the sublist starting at index pass smallindex = pass; // j traverses the sublist arr[pass+1] to arr[n-1] for (j = pass+1; j < n; j++) // if smaller element found, assign smallindex // to that position if (arr[j] < arr[smallindex]) smallindex = j; // swap the next smallest element into arr[pass] temp = arr[pass]; arr[pass] = arr[smallindex]; arr[smallindex] = temp; / A generic version of the selection sort algorithm that orders an array of elements of type T in ascending order. The algorithm requires that the generic type implements the Comparable interface. This algorithm has O(nn) runtime efficiency for best, worst, and average case. @param arr the array to be sorted. / public static <T extends Comparable<? super T>> void selectionsort(t[] arr) int smallindex; // index of smallest element in the sublist int pass, j, n = arr.length; T temp; // pass has the range 0 to n-2 for (pass = 0; pass < n-1; pass++) // scan the sublist starting at index pass smallindex = pass; // j traverses the sublist arr[pass+1] to arr[n-1] for (j = pass+1; j < n; j++) // if smaller element found, assign smallindex // to that position if (arr[j].compareto(arr[smallindex]) < 0) smallindex = j; // swap the next smallest element into arr[pass] temp = arr[pass]; arr[pass] = arr[smallindex]; arr[smallindex] = temp;

/ Searches the sublist [first, last) in an integer array for the specified target value using the sequential search algorithm; the return value is the first occurrence of a match or -1 if not match is found. @param arr the integer array to be searched. @param first starting index for the sublist. @param last upper bound for the sublist. @param target the search key to locate in the sublist. @return index of the search key, if it is contained in the list; otherwise, -1. / public static int seqsearch(int[] arr, int first, int last, int target) // scan indices in the range first <= i < last; // return the index // indicating the position if a match occurs; // otherwise return -1 for (int i = first; i < last; i++) if (arr[i] == target) return i; // no return yet if match is not found; return -1 return -1; // i = last, thus no match / Searches the sublist [first, last) in a specified array of objects for the specified target value using the sequential search algorithm; comparison is made using the equals() method; the return value is the first occurrence of a match or -1 if not match is found. @param arr the array to be searched. @param first starting index for the sublist. @param last upper bound for the sublist. @param target the search key to locate in the sublist. @return index of the search key, if it is contained in the list; otherwise, -1. / public static int seqsearch(object[] arr, int first, int last, Object target) // scan indices in the range first <= i < last; // return the index // indicating the position if a match occurs;

// otherwise return -1 for (int i = first; i < last; i++) if (arr[i].equals(target)) return i; // no return yet if match is not found; return -1 return -1; // i = last, thus no match / Searches an integer array for the specified target value using the binary search algorithm. The array must be sorted into ascending order. @param arr the integer array to be searched. @param first starting index for the sublist. @param last upper bound for the sublist. @param target the search key to locate in the sublist. @return index of the search key, if it is contained in the list;otherwise, -1. / public static int binsearch( int[] arr, int first, int last, int target) int mid; // index of the midpoint int midvalue; // object that is assigned arr[mid] int origlast = last; // save original value of last while (first < last) // test for nonempty sublist mid = (first+last)/2; midvalue = arr[mid]; if (target == midvalue) return mid; // have a match // determine which sublist to search else if (target < midvalue) last = mid; // search lower sublist. reset last else first = mid+1; //search upper sublist.reset first return -1; // target not found / Searches the sublist [first, last) in a specified array of objects for the specified target value using the binary search algorithm; the generic type T must implement the Comparable interface with the array sorted in

ascending order; comparison is made using the <tt>equals()</tt> method; the return value is the first occurrence of a match or -1 if not match is found. search algorithm. @param arr the integer array to be searched. @param first starting index for the sublist. @param last upper bound for the sublist. @param target the search key to locate in the sublist. @return index of the search key, if it is contained in the list; otherwise, -1. / public static <T extends Comparable<? super T>> int binsearch(t[] arr, int first, int last, T target) int mid; // index of the midpoint T midvalue; // object that is assigned arr[mid] int origlast = last; // save original value of last while (first < last) // test for nonempty sublist mid = (first+last)/2; midvalue = arr[mid]; if (target.compareto(midvalue) == 0) return mid; // have a match // determine which sublist to search else if (target.compareto(midvalue) < 0) last = mid; // search lower sublist. reset last else first = mid+1; // search upper sublist. reset first return -1; // target not found / Returns a string that displays the elements in the array in sequential order. The description is a comma separated list of elements enclosed in brackets. @return string that contains the list of elements in the array. / // returns a string that represents an array of objects public static String tostring(object[] arr) if (arr == null) return "null"; else if (arr.length == 0) return "[]"; // start with the left bracket String str = "[" + arr[0];

// append all but the last element, separating items with a comma // polymorphism calls tostring() for the array type for (int i = 1; i < arr.length; i++) str += ", " + arr[i]; str += "]"; return str; Berikutnya kita buat class GenericSorting yang akan mengurutkan data apa saja yang ingin diurutkan, asalkan class data tersebut telah meng-implement Comparable dan override method compareto(). public class GenericSorting public static void main(string []ar) Integer[] intarr = 40, 70, 50, 30; SalaryEmployee[] emp = new SalaryEmployee("Dunn, Moira","471-23-8092",800), new SalaryEmployee("Garcia, Avey", "398-67-1298",1200), new SalaryEmployee("Ye, Don", "682-76-1298",2000); Arrays.selectionSort(intArr); System.out.println("Sorted integers: " +Arrays.toString(intArr)); Arrays.selectionSort(emp); for (int i=0; i < emp.length; i++) System.out.println(emp[i].payrollCheck()); LATIHAN 1 Buat semua class-class yang ada dalam praktikum ini. Apakah yang dapat anda simpulkan? SOAL-SOAL 1.