Selasa, 16 Mei 2017

View & View Group

Views and View Groups

Every item in a user interface is a subclass of the Android View class (to be precise android.view.View). The Android SDK provides a set of pre-built views that can be used to construct a user interface. Typical examples include standard items such as Button, CheckBox, ProgressBar and TextView classes. Such views are also as referred to as widgets. For requirements that are not updated by the SDK, new views may be created by subclassing and extending an existing class, or creating an entirely new component by building directly on top of the View class.

A view can also be comprised of some other views (otherwise known as a composite view). Such views are subclassed from the Android ViewGroup class (android.view.ViewGroup) which is itself a subclass of View. An example of such a view is the RadioGroup, which is meant to contain multiple RadioButton objects such as the one that can be in the "on" position at any one time. In terms of structure, composite views consist of a single view parent view (derived from the ViewGroup class and otherwise known as a container view or root element) that is capable of containing other views (known as child views). Another category of ViewGroup based container view is that of the layout manager.

Kamis, 04 Mei 2017

Generik

Pengertian Generics
Generics merupakan cara Java dalam melakukan generalisasi terhadap tipe data tanpa

mengurangi kemampuan Java dalam menjaga keamanan penggunaan tipe data. Pada object Box, kita bisa memasukkan sembarang object karena parameter pada method add() adalah Class Object, tapi pada saat mengambil object tersebut harus diubah sesuai dengan tipe dari object tersebut.


Cara mendeklarasikan Class Generics
Ubah class Box Non Generics menjadi class Box Generic. Pendeklarasian type generics
dengan mengubah public class Box() menjadi public class Box <T>
– T biasanya disebut parameter type formal (formal type parameter)
– T adalah type parameter yang akan diganti dengan tipe sebenarnya (Type dari T bisa berupa class, interface atau tipe variabel lainnya).
– T adalah nama dari type parameter.


Aturan Penamaan Type Parameter
Nama type parameter biasanya satu huruf dan huruf besar. Jenis nama tipe parameter
yang sering digunakan :
– E - Element (biasanya digunakan untuk Collection Framework)
– K – Key
– N – Number
– T - Type
– V - Value
– S,U,V dll. - 2nd, 3rd, 4th types


Generics pada Method
Pada contoh sebelumnya, kita mendefinisikan type parameter pada level class. Sebenarnya tipe variable ini juga dapat didefinisikan pada level method.
Contoh :
public class GenericMethodTest {
      public static<E> void printArray(E[] inputArray){
             for(E element : inputArray)
                   System.out.printf("%s",element);
                   System.out.println("");
     }
      public static void main(String[] args) {
            Integer[] intArray = {1,2,3,4,5} ;
            Double[] doubleArray = {1.1,2.2,3.3,4.4,5.5};
            Character[] charArray = {'J','A','V','A'};
            printArray(intArray);
            printArray(doubleArray);
            printArray(charArray);
      }
}


Subtyping
Jika B adalah suatu subtype dari A dan G adalah suatu tipe data generics, maka tidak berarti G<B> adalah subtype dari G<A>.


Generics pada Collection
•   List <E> myList ;
E disebut type variabel, variabel yang diganti dengan type. Jika E adalah class, maka kita
bisa melewatkan subclass E. Jika E adalah interface maka kita bisa melewatkan class yang mengimplementasikan E.



Type Parameter yang dibatasi
Jika kita ingin memberikan batasan type yang diperbolehkan untuk dilewatkan ke type
parameter. Contoh method dengan parameter number, hanya menerima object dari class
Number dan subclass. Hal ini yang disebut bounded type parameter.
•    Cara
<U extends Number>
•   Jika terdapat interface yang harus diimplementasikan gunakan &
<U extends Number & MyInterface>



Menggunakan Wildcard
Jika kita mendeklarasikan sebuah List<aType>, isi List adalah object dengan tipe aType,
maka kita bisa menyimpan di List object dengan tipe :
– Object dari aType
– Object dari subclass aType, jika aType adalah class
– Object dari class yang mengimplementasikan aType, jika aType adalah interface
Sedangkan List<?> berarti semua tipe data bisa masuk, terlalu luas bentuk lain :
List<? extends Number>

List<? extends T>

Rabu, 03 Mei 2017

Comparable dan Comparator

Pada kehidupan nyata, object-object sering dibandingkan, misal : • Mobil Andi lebih mahal dibandingkan dengan mobil Budi • Buku A lebih tebal dibandingkan dengan Buku B • Usia Andi lebih muda dibandingkan dengan usia Intan Dalam pemrograman object oriented, sering sekali ada kebutuhan untuk membandingkan object-object dari class yang sama, misalkan membandingkan object untuk mengurutkan data, pencarian data yang diurutkan berdasarkan umur. Pada kesempatan kali ini saya akan membahas bagaimana merancang object dari class agar bisa dibandingkan menggunakan interface java.lang.Comparable & java.util.Comparator. Mengurutkan Object String Untuk mengurutkan data String pada array gunakan Array.sort(). import java.util.Arrays; public class ArrayString { public static void main(String args[]){ String animals[] = new String[6]; animals[0] = "snake"; animals[1] = "kangaroo"; animals[2] = "wombat"; animals[3] = "bird"; System.out.println("\nSEBELUM DISORTING"); for (int i = 0; i < 4; i++) { System.out.println("animal " + i + " : " + animals[i]); } Arrays.sort(animals,0,4); System.out.println("\nSETELAH DISORTING"); for (int i = 0; i < 4; i++) { System.out.println("animal " + i + " : " + animals[i]); } } } Output : SEBELUM DISORTING animal 0 : snake animal 1 : kangaroo animal 2 : wombat animal 3 : bird SETELAH DISORTING animal 0 : bird animal 1 : kangaroo animal 2 : snake animal 3 : wombat Untuk mengurutkan data dalam ArrayList gunakan Collections.sort() import java.util.ArrayList; import java.util.Collections; public class SortList { public static void main(String args[]){ ArrayList insects = new ArrayList(); insects.add("mosquito"); insects.add("butterfly"); insects.add("dragonfly"); insects.add("fly"); System.out.println("\nSEBELUM DISORTING"); int size = insects.size(); for (int i = 0; i < size; i++) { System.out.println("insect " + i + " : " + (String) insects.get(i)); } Collections.sort(insects); System.out.println("\nSETELAH DISORTING"); for (int i = 0; i < size; i++) { System.out.println("insect " + i + " : " + (String) insects.get(i)); } } } Output : SEBELUM DISORTING insect 0 : mosquito insect 1 : butterfly insect 2 : dragonfly insect 3 : fly SETELAH DISORTING insect 0 : butterfly insect 1 : dragonfly insect 2 : fly insect 3 : mosquito Membuat Object yang Kita Definisikan Sendiri String dapat diurutkan, karena String mengimplementasikan interface Comparable. public final class String extends Object implements Serializable, Comparable, CharSequence Interface ini mempunyai sebuah method compareTo() yang menentukan bagaimana cara membandingkan antara dua object dari class tersebut. Bentuk methodnya: public int compareTo(Object o) Mehod compareTo() menerima Object, sehingga kita bisa memasukkan sembarang object, tapi harus mempunyai tipe yang sama. Kalau object yang kita masukkan adalah object yang berbeda maka melemparkan exception java.lang.ClassCastException. Return value dari method compareTo() • 0 jika dua object yang dibandingkan sama. • Bilangan positif, jika object 1 lebih besar dibandingkan dengan object 2 • Bilangan negatif, jika object 1 lebih kecil dibandingkan dengan object 2 Bagaimana caranya supaya bisa menggunakan Array.sort() pada contoh kasus diatas. Pada class Mahasiswa implementasikan interface Comparable, berarti harus mengimplementasikan method compareTo(). Isilah method ini dengan tujuan untuk membandingkan object dari class Mahasiswa berdasarkan umur. Jangan lupa untuk mengcasting object menjadi object dari class Mahasiswa terlebih dahulu. public class Mahasiswa implements Comparable { private String nrp ; private String nama ; public Mahasiswa(String nrp, String nama) { this.nrp = nrp; this.nama = nama; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public String getNrp() { return nrp; } public void setNrp(String nrp) { this.nrp = nrp; } @Override public String toString() { return "Mahasiswa{" + "nrp=" + nrp + " nama=" + nama + '}'; } public int compareTo(Object o) { Mahasiswa m2 = (Mahasiswa) o ; return this.nrp.compareTo(m2.nrp); } } Output : SEBELUM SORTING [Mahasiswa{nrp=05 nama=Cahya}, Mahasiswa{nrp=04 nama=Rudi}, Mahasiswa{nrp=01 nama=Endah}, Mahasiswa{nrp=03 nama=Rita}, Mahasiswa{nrp=02 nama=Tika}] SESUDAH SORTING [Mahasiswa{nrp=01 nama=Endah}, Mahasiswa{nrp=02 nama=Tika}, Mahasiswa{nrp=03 nama=Rita}, Mahasiswa{nrp=04 nama=Rudi}, Mahasiswa{nrp=05 nama=Cahya}] Penggunaan Class Comparator Dengan mengimplementasikan interface Comparable kita hanya bisa menentukan satu cara saja untuk membandingkan object. Kita masih memerlukan satu cara lagi untuk membandingkan object-object dari suatu class. Kita memerlukan comparator. Untuk membuat comparator, buat class yang mengimplementasikan interface java.util.Comparator, dan method compare(). public int compare(Object o1, Object o2) Return value dari method compare() • 0 jika dua object yang dibandingkan sama. • Bilangan positif, jika object 1 lebih besar dibandingkan dengan object 2 • Bilangan negatif, jika object 1 lebih kecil dibandingkan dengan object 2 Class Comparator public class NamaComparator implements Comparator { public int compare(Object o1, Object o2) { Mahasiswa m1 = (Mahasiswa) o1; Mahasiswa m2 = (Mahasiswa) o2; return m1.getNama().compareTo(m2.getNama()); } } Penggunaan Comparator pada Array.sort() public class TestMahasiswa2 { public static void main(String[] args) { Mahasiswa dataMhs[] = {new Mahasiswa("05", "Cahya"),new\ Mahasiswa("04", "Rudi"), new Mahasiswa("01", "Endah"),new Mahasiswa("03", "Rita"),new Mahasiswa("02", "Tika")}; System.out.println("SEBELUMSORTING"); System.out.println(Arrays.toString(dataMhs)); Arrays.sort(dataMhs, new NamaComparator()); System.out.println("\nSESUDAH SORTING"); System.out.println(Arrays.toString(dataMhs)); } } Output : Mengurutkan data mahasiswa berdasarkan Nama SEBELUM SORTING [Mahasiswa{nrp=05 nama=Cahya}, Mahasiswa{nrp=04 nama=Rudi}, Mahasiswa{nrp=01 nama=Endah}, Mahasiswa{nrp=03 nama=Rita}, Mahasiswa{nrp=02 nama=Tika}] SESUDAH SORTING [Mahasiswa{nrp=05 nama=Cahya}, Mahasiswa{nrp=01 nama=Endah}, Mahasiswa{nrp=03 nama=Rita}, Mahasiswa{nrp=04 nama=Rudi}, Mahasiswa{nrp=02 nama=Tika}]

Map Collection


Selasa, 02 Mei 2017

Collection

Collection merupakan istilah umum yang dipakai untuk setiap objek yang berfungsi untuk mengelompokkan beberapa objek tertentu menggunakan suatu teknik tertentu pula.

Set merupakan pengelompokan mengikuti model himpunan dimana setiap anggota-nya harus unik. Urutan maupun letak dari anggotanya tidaklah penting, hanya keberadaan anggotanya saja yang penting.
Contoh dalam Program:

import java.util.*;

public class setCollection {
    public static void main(String[] args) {
    Set<String> set1 = new HashSet<String>();

    Collections.addAll(set1, "A B C D E ".split(" "));
    set1.add("M");
    System.out.println("B: " + set1.contains("B"));//ada H
    System.out.println("H: " + set1.contains("H"));//ada N
   
    Set<String> set2 = new HashSet<String>();
    Collections.addAll(set2, "E F G H".split(" "));

    //Apakah huruf2 di set2 ada di set 1 ?? -> true
    System.out.println("set2 in set1: " + set1.containsAll(set2));

    set1.remove("H");
    System.out.println("set1: " + set1);
    System.out.println("set2 in set1: " + set1.containsAll(set2));

    set1.removeAll(set2);
    System.out.println("set2 dihapus dari set1: " + set1);

    Collections.addAll(set1, "X Y Z".split(" "));
    System.out.println("‘X Y Z’ ditambahkan ke set1: " + set1);
  }
}
 
List merupakan pengelompokan berdasarkan urutan seperti layaknya array, karena itu  ia memiliki posisi awal dan juga posisi akhir. Dengan list kita bisa menyimpan suatu objek pada awal atau akhir list, menyisipkan, mengakses serta menghapus isi list pada posisi index tertentu dimana semua proses ini selalu didasarkan pada urutannya. Selain itu isi list tidak harus unik. Beberapa Class java yang mengimplementasi kelas ini antara lain : Vector, Stack, LinkedList, dan ArrayList.


Contoh dalam Program :
 
Vector

import java.util.Scanner;
import java.util.Vector;

public class VektorJava{
    public static void main(String[] args) {
        String data = "";
        Vector<String> V = new Vector<String>();
        Scanner input = new Scanner(System.in);
        for(int i=0;i<=3;i++){
        System.out.print("Masukan Data "+i+": ");
        data = input.next();
        V.add(data);
        }

        System.out.println(V);

        String nama = (String) V.get(0);
        System.out.println(nama);

    }

}


Stack

import java.io.*;
import java.util.*;

public class StackImplement {
    Stack<Integer> stack = new Stack<Integer>();
    String str;
    int num, n;

    public static void main(String[] args) {
        StackImplement q = new StackImplement();
    }

    public StackImplement() {
        try {
            BufferedReader bf = new BufferedReader(
            new InputStreamReader(System.in));
            System.out.print("Banyak Data : ");
            str = bf.readLine();
            num = Integer.parseInt(str);
            for (int i = 1; i <= num; i++) {
                System.out.print("Masukan Elemen " + i + " : ");
                str = bf.readLine();
                n = Integer.parseInt(str);
                stack.push(n);
            }
        } catch (IOException e) {
        }


        System.out.println("Stack : ");
        while (!stack.empty()) {
            System.out.print(stack.pop() + "  ");
        }
        System.out.println();
    }
}


LinkedList

import java.util.LinkedList;

public class LinkListCollection {
    public static void main(String[] args) {
        LinkedList<String> A = new LinkedList<String>();
        String[] nama = {"David","Alfa","Benny"};

        //Tambah data data diambil dari array nama;
        for(int nList = 0;nList<nama.length;nList++){
            A.add(nama[nList]);
        }

        //Tampil Data
        System.out.println("Data Asli : ");
        for(int nList = 0;nList<nama.length;nList++){
            System.out.println("Indeks "+nList+": "+A.get(nList));
        }
       
        System.out.println("\nTambah data di Index ke-3 : ");
        A.add(3, "Danni");

        for(int nList = 0;nList<=nama.length;nList++){
            System.out.println("Indeks "+nList+": "+A.get(nList));
        }

        System.out.println("\nDelete data di Index ke-2 : ");
        A.remove(2);
        for(int nList = 0;nList<nama.length;nList++){
            System.out.println("Indeks "+nList+": "+A.get(nList));
        }

        System.out.println("\nTambah data di Awal list : ");
          A.addFirst("Marcelo");
          for(int nList = 0;nList<=nama.length;nList++){
            System.out.println("Indeks "+nList+": "+A.get(nList));
        }
         
        System.out.println("\nTambah data di Akhir list : ");
          A.addLast("Ferdi");
           for(int nList = 0;nList<=nama.length+1;nList++){
           System.out.println("Indeks "+nList+": "+A.get(nList));
        }

          System.out.println("\nTambah data di Akhir list : ");
          A.remove(4);
           for(int nList = 0;nList<=nama.length;nList++){
           System.out.println("Indeks "+nList+": "+A.get(nList));
    }

  }
 }






ArrayList

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListCollection {
    public static void main(String[] args) {
        String str = "";
        ArrayList<String> senerai = new ArrayList<String>();
        Scanner scan = new Scanner(System.in);
        while (true) {
            try {
                System.out.println("\n1. Tambah Data");
                System.out.println("2. Lihat Data");
                System.out.println("3. Delete Data");
                System.out.println("4. Exit");
                System.out.print("Masukan pilihan : ");
                int pilihan = scan.nextInt();

                switch (pilihan) {
                    case 1:
                        int jmlDt = 0;
                        System.out.print("Tambah data : ");
                        str = scan.next();
                        senerai.add(str);
                        jmlDt++;
                        break;
                    case 2:
                        System.out.println("\nIsi senerai sekarang : ");
                        System.out.println("Jumlah Element : " + senerai.size());
                        for (int i = 0; i < senerai.size(); i++) {
                            System.out.println("Index " + i + ". " + senerai.get(i));
                        }
                        System.out.println("");
                        break;
                    case 3:
                        int indeks;
                        try {
                            System.out.print("Masukan Index list yang akan di hapus: ");
                            indeks = scan.nextInt();
                            senerai.remove(indeks);
                            System.out.println(">remove data sukses<");
                        } catch (IndexOutOfBoundsException a) {
                            System.out.println("Indeks Array melebihi batas");
                        }
                        break;
                    case 4:
                        System.out.println("Terima kasih");
                        System.exit(0);

                    default:
                        System.out.println("Inputan Tidak tersedia \n");
                }


            } catch (Exception e) {
                System.err.println("Salah Input");
                System.exit(1);
            }
        }
    }
}
 
 
 

Map menampung satu set key dan value (nilai) yang saling berasosiasi. Anda bisa membayangkannya seperti membaca kamus: Anda mencari sebuah kata (keyword) dan melihat artinya (value). Jika Anda pernah melakukan pemrograman dengan bahasa lain, mungkin Anda pernah melihat sesuatu seperti map, mungkin namanya dictionaries, hash, atau associative array.
Kita menulis map dengan menutup key dan value menggunakan kurung kurawal { }, seperti:

{:firstname "Pete" :lastname "Green"}

{:a 1 :b "pete"}

{  }

Map berguna karena dapat menampung data secara normal seperti yang kita pikirkan. Kita ambil contoh, Pete Green. Map dapat menampung nama depan, nama belakang, alamat, makanan favorit, atau apa pun. Menggunakan map adalah salah satu cara termudah untuh mengumpulkan dan membaca data. Contoh di baris terakhir adalah map kosong. Sebuah map yang sudah siap menampung data, tapi belum ada apa-apa di dalamnya.

Senin, 01 Mei 2017

Excetion

Exception merupakan subkelas dari kelas java.lang.Throwable. Exception adalah sebuah kelas maka hakikatnya ketika program berjalan dan muncul sebuah bug atau kesalahan maka bug tersebut dapat dianggap sebuah object. Sehingga ketika object ini di tampilkan di layar maka java akan secara otomatis memanggil method toString yang terdapat dalam object bertipe Exception ini. Java memberikan akses kepada developer untuk mengambil object bug yang terjadi ini dengan mekanisme yang dikenal Exception Handling. Exception handling merupakan fasilitas di java yang memberikan flexibilitas kepada developer untuk menangkap bug atau kesalahan yang terjadi ketika program berjalan. Selain Exception, java.lang. Throwable juga memiliki subclass yaitu class Error.

Class Error dan Class Exception

Pada dasarnya error dan exception itu berbeda. Error merupakan masalah yang muncul tapi tidak ada alasan yang kuat untuk menangkapnya. Sedangkan Exception merupakan kesalahan kecil yang muncul dan ingin diperlakukan sesuai keinginan developer.

Keyword Penting pada exception handling

1.try

Keyword ini biasanya digunakan dalam suatu block program. keyword ini digunakan untuk mencoba menjalankan block program kemudian mengenai dimana munculnya kesalahan yang ingin diproses. Keyword ini juga harus dipasangkan dengan keyword catch atau keyword finally yang akan dibahas pada point kedua dan ketiga.

 
2. catch
Jika anda sudah melihat contoh try maka secara tidak langsung anda sudah memahami kegunaan dari keyword ini. Dalam java, keyword catch harus dipasangkan dengan try. Kegunaan keyword ini adalah menangkap kesalahan atau bug yang terjadi dalam block try. Setelah menangkap kesalahan yang terjadi maka developer dapat melakukan hal apapun pada block catch sesuai keinginan developer.

3. finally
Keyword ini merupakan keyword yang menunjukan bahwa block program tersebut akan selalu dieksekusi meskipun adanya kesalahan yang muncul atau pun tidak ada.

4. throw
Keyword ini digunakan untuk melemparkan suatu bug yang dibuat secara manual.

5. throws

Keyword throws digunakan dalam suatu method yang mungkin menghasilkan suatu kesalahan sehingga perlu ditangkap errornya.

  • Checked Exception 
     Adalah eksepsi yang diantisipasi oleh programmer untuk dihandle dalam program dan terjadi dikarenakan oleh kondisi luar yang siap muncul saat program berjalan. Misalnya membuka file yang tidak ada atau gangguan jaringan.
     Yang termasuk checked exception adalah class java.lang.Throwable dan semua subclassnya, kecuali class dan subclass dari java.lang.Error dan java.lang.RuntimeError
  • Unchecked Exception
bisa muncul dari kondisi yang merepresentasikan adanya bug atau situasi yang secara umum dianggap terlalu sulit bagi program untuk menghandlenya. Disebut sebagai unchecked karena kita tidak perlu mengeceknya atau melakukan sesuatu jika kondisi ini terjadi. Eksepsi yang muncul dari kategori situasi yang merepresentasikan bug ini disebut sebagai runtime exception. Misalnya mengakses array melebihi size yang dimilikinya.
      Yang termasuk Unchecked exception
1.      java.lang.Error dan subclassnya
2.      java.lang.RuntimeException dan subclassnya.
  • Sedangkan eksepsi yang muncul sebagai akibat dari isu environment software – yang ini jarang sekali atau sulit sekali untuk dihandle- disebut sebagai error, misalnya running out memory.
 Jadi, class Exception mendefinisikan kondisi error yang ringan yang dijumpai oleh program. Sedangkan untuk kondisi error yang berat didefinisikan dengan Error.

Latihan