Package dan Java Kelas


PACKAGE
Package adalah suatu cara untuk memanage class-class yang kita buat. Package akan sangat bermanfaat jika class-class yang kita buat sangat banyak sehingga perlu dikelompokkan berdasarkan kategori tertentu.


Ketentuan

- 1 package adalah 1 subfolder di file system
- Package sangat berguna untuk mengorganisir file dalam suatu Project atau library
- Nama package menggunakan lowercase
- Keyword: package name;


Import class

Suatu class dapat meng-import class lainnya sesuai dengan nama package yang dipunyainya.

Satu hal yang perlu kita ketahui, pada saat kita ingin mengimport suatu class dalam suatu package, pastikan letak package tersebut satu direktori dengan class yang ingin mengimport. Jika letak package tersebut tidak satu direktori dengan class yang ingin mengimport, maka letak direktori package itu haruslah terdaftar dalam CLASSPATH.


JAVA KELAS

Kelas String
Nilai suatu String adalah objek. Objek ini berisi rangkaian huruf yang membentuk string. Objek tersebut juga berisi subrutin. Misalnya length adalah fungsi yang menghitung panjang suatu string, atau jumlah karakter dalam suatu string. Untuk menghitung jumlah karakter dalam string str, panggil fungsi str.length() yang keluarannya bertipe int. Fungsi ini tidak membutuhkan parameter. Fungsi length merupakan anggota kelas String dan dapat digunakan oleh semua data yang bertipe String. Dan juga bisa digunakan oleh literal string.

Kelas String memiliki beberapa fungsi di antaranya :

  • s1.equals(s2) adalah fungsi yang mengembalikan nilai boolean (true atau false). Fungsi ini akan menghasilkan true jika s2 sama dengan s1, dan salah jika tidak. Kesamaan yang diuji adalah kesamaan persis baik kapitalnya maupun urutan huruf-hurufnya.
  • s1.equalsIgnoreCase(s2) juga menghasilkan nilai boolean yang menguji apakah string s2 sama dengan s1 dengan tidakmembandingkan kapitalnya. "Kucing".equalsIgnoreCase("kucing") menghasilkan true.
  • s1.length(). Seperti diulas sebelumnya, fungsi ini menghitung jumlah karakter dalam string s1.
  • s1.charAt(N). N adalah integer (bilangan bulat). Fungsi ini mengembalikan karakter ke-N dari string s1. Karakter pertama dihitung sebagai posisi ke-0. s1.charAt(0) berarti mengambil karakter pertama, sedangkan s1.charAt(1) berarti mengambil karakter ke-2, dan seterusnya. Karakter terakhir memiliki indeks s1.length() - 1. Fungsi ini akan mengeluarkan pesan kesalahan apabila N bernilai negatif atau lebih besar dari s1.length() - 1.
  • s1.substring(N,M), di mana N dan M bilangan bulat. Fungsi ini mengambil potongan string antara karakter ke-N hingga karakter M-1. Catatan bahwa karakter ke-M tidak ikut diambil. Misalnya, "jalan layang".substring(1,4) menghasilkan "ala".
  • s1.indexOf(s2) mengembalikan nilai integer. Fungsi ini mencari string s2 di dalam string s1, dan apabila ditemukan mengembalikan posisi awal s2 di dalam s1. Jika tidak ditemukan, fungsi ini akan mengembalikan -1. Fungsi ini bisa juga digunakan untuk mencari string s2 dalam s1 setelah posisi ke-N dalam string s1. Misalnya, "kelapa muda".indexOf("a")menghasilkan 3, sedangkan "kelapa muda".indexOf("a",6) menghasilkan 10.
  • s1.compareTo(s2) membandingkan s2 dan s1. Jika s1 dan s2 sama, hasilnya 0. Jika s1 kurang dari s2, hasilnya bilangan negatif , dan jika s1 lebih besar dari s2, hasilnya bilangan positif. "Kurang dari" atau "lebih dari" mengacu pada urutannya dalam abjad jika keduanya huruf kecil atau keduanya huruf besar. Jika kapitalnya berbeda, perbandingannya bergantung pada nilai ASCII-nya.
  • s1.toUpperCase() adalah fungsi untuk mengubah seluruh huruf dalam s1 menjadi huruf besar.
  • s1.toLowerCase() berfungsi untuk mengubah huruf dalam s1 menjadi hurug kecil.
  • s1.trim() adalah berfungsi menghapus karakter yang tak bisa dicetak, misalnya spasi, baris baru, enter, yang ada sebelum atau sesudah suatu kalimat. Misalnya "  selamat pagi bu  ".trim() menghasilkan "selamat pagi bu".
  • Math.abs(x), menghitung nilai mutlak (absolut) dari x. Nilai mutlak bilangan negatif adalah bilangan positif, dan bilangan positif tetap bilangan positif.
  • Fungsi trigonometri Math.sin(x)Math.cos(x), and Math.tan(x). (Untuk semua fungsi trigonometri, sudut memiliki satuan radian, bukan derajat)
  • Fungsi trigonometri inverse, yang mencari sudut dari suatu nilai trigonometric, kebalikan dari fungsi trigonometri, seperti arcus sin, arcus cos, dan arcus tangen. Math.asin(x)Math.acos(x), and Math.atan(x).
  • Math.exp(x), menghitung pangkat dari bilangan natural e, atau ex. Dan logaritma natural loge x atau ln x bisa dihitung dengan menggunakan fungsi Math.log(x).
  • Math.pow(x,y) menghitung xy atau x pangkat y
  • Math.floor(x) menghitung pembulatan ke bawah dari suatu bilangan riil, misalnya 3.84 akan dibulatkan ke bawah menjadi 3.0
  • Math.random() memilih bilangan acak di antara 0.0 dan 1.0. Komputer memiliki algoritma perhitungan tertentu yang hasilnya bilangan acak (meskipun bulan bilangan yang betul-betul acak, tetapi cukup untuk kebanyakan fungsi)

Untuk s1.toUpperCase()s1.toLowerCase()s1.trim() nilai s1 tidak berubah. Fungsi ini melakukan perhitungan kemudian mengembalikan string baru hasil perhitungan tersebut.
Kelas Math
Kelas Math memiliki banyak fungsi statik. Beberapa yang penting di antaranya:
Paremeter (nilai di dalam kurung) fungsi-fungsi di atas bisa bertipe numerik apa saja (misalnya double, int, dll), tetapi keluarannya bertipe double, kecuali abs(x) yang tipe keluarannya sama dengan tipe parameternya.
Math.random() tidak memiliki parameter, tetapi tanda kurungnya harus tetap ditulis untuk membedakan fungsi dan variabel. Contoh fungsi lain yang tidak memiliki parameter adalah System.currentTimeMillis() yang berguna untuk mengambil waktu saat ini dalam satuan milidetik, dihitung sejak 1 Januri 1970 waktu GMT. Satu milidetik sama dengan 1 per 1000 detik. Keluarannya bertipe long.
Untuk menghitung waktu yang diperlukan untuk menjalankan suatu perintah, jalankan fungsi System.currentTimeMillis()sebelum dan sesudah suatu instruksi dijalankan. Perbedaannya adalah waktu yang diperlukan untuk menjalankan suatu instruksi.

Membuat direktori Meet6\makhlukhidup\hewan
Membuat program Manusia.java
file Manusia harus berada dalam folder makhlukhidup

Membuat program Tumbuhan.java
file Tumbuhan harus berada dalam folder makhlukhidup

Membuat program Burung.java
file Burung harus berada dalam folder makhlukhidup/hewan

Membuat program MainMakhlukHidup.java
file MainMakhlukHidup harus berada dalam folder Meet6


Membuat program MainMakhlukHidupPakeImport.java
file MainMakhlukHidupPakeImport harus berada dalam folder Meet6



Membuat program ContohString.java










Overloading dan Overriding

Overloading

Adalah suatu cara untuk memberikan nama yang sama kepada dua method yang berbeda meski dua method tersebut berada dalam class yang sama. Hal ini dapat dilakukan dengan cara membedakan tipe parameter, jumlah parameter dan susunan parameter. Jadi, nama Method Boleh Sama, namun Jumlah Parameter Harus Berbeda. Nilai yang di Return harus memiliki tipe yang sama juga.

Membuat program SegiTiga.java
Membuat program MainSegiTiga.java


Overriding
Menuliskan method yang sama namun dengan jumlah parameter yang berbeda dan nilai kembalian harus sama. Overriding konsepnya sama dengan overloading yaitu menulis kembali method. Namun, caranya overriding menulis kembali method sama persis. Sama mulai dari nama method dan isinya dan mengimplementasi kembali di sub classnya. Overriding dipakai saat kita menggunakan method yang sama tapi berbeda implementasinya. Jadi overriding method mempunyai nama method yang sama, jumlah parameter dan tipe parameter serta nilai kembalian (return) method yang di override. Jika method memiliki modifier akses public, method overridenya juga harus public.

Membuat program OverRiding.java

Membuat program SubOverRiding.java






Information Hiding, Inheritance, Encapsulation dan Polymorphism


Information Hiding dan Encapsulation 
Information Hiding adalah menyembunyikan attribute suatu objek dari objek lain. Encapsulation adalah menyembunyikan method suatu objek dari objek lain. Attribute maupun method disembunyikan dengan
cara memberikan modifier private. Method dalam kelas yang sama, yang memberikan nilai pada attribute private disebut method setter, sedangkan method masih dalam kelas yang sama, yang mengambil nilai dari attribute private disebut getter.

Pewarisan (inheritance)
Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.
Contoh dari hierarki class :
Superclass
Adalah class yang letaknya di atas class tertentu di dalam hierarki.
Subclass
Adalah class yang letaknya di bawah class tertentu        di dalam hierarki.
 Untuk mengambil sebuah class, gunakan keyword extends.

Polymorphism
Kemampuan sebuah variabel reference untuk merubah behavior sesuai dengan apa yang dipunyai object. Polymorphism membuat objek-objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek-objek dari satu superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan. Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya.

Membuat program SuperClass.java
public class SuperClass {
  public SuperClass () {
       System.out.println ("Ini konstruktor milik SuperClass");
  }
  
  public void methodSuperClass () {
       System.out.println ("Ini method milik SuperClass");
  }
}

SuperClass.java

Membuat program SubClass.java
public class SubClass extends SuperClass {
  public SubClass () {
         super();
  }
  public void methodSubClass () {
         super.methodSuperClass ();
  }
}


SubClass.java

Membuat program DemoInheritance.java
public class DemoInheritance {
  public static void main (String[] args) {
       SubClass sc = new SubClass();
       sc.methodSubClass();
  }
}

hasil compile

DemoInheritance.java

Membuat program Persegi.java
public class Persegi {

private double panjang;
private double lebar;
private double tinggi;

public Persegi() {
       panjang = 0 ;
       lebar = 0 ;
}

private double luas(double p, double l) {
       return p*l;
}

public void setPanjang(double panjang1) {
       this.panjang = panjang1;
}

public void setLebar(double lebar1) {
       this.lebar = lebar1;
}

public double getPanjang() {
       return panjang;
}

public double getLebar() {
       return lebar;
}

public double getLuas() {
       return luas(panjang,lebar);
}
}


Persegi.java

Membuat program MainPersegi.java
public class MainPersegi{
  public static void main(String[] args) {
     Persegi pg = new Persegi();
     pg.setPanjang(10);
     pg.setLebar(20);

     System.out.println("Panjang : "+pg.getPanjang());
     System.out.println("Lebar : "+pg.getLebar());
     System.out.println("Luas : "+pg.getLuas());
  }
}

hasil compile

MainPersegi.java

Membuat program Karyawan.java

abstract class Karyawan {
  int gaji;
  Karyawan() {
       gaji = 1000000;
  }
 
  int getGaji() {
       return gaji;
  }
  abstract void naikGaji();
}

Karyawan.java

Membuat program Manager.java

class Manager extends Karyawan {
   Manager() {
        gaji += 2000000;
   }

   void naikGaji() { gaji+=3000000; }
}

Manager.java

Membuat program Receptionist.java
class Receptionist extends Karyawan {
   Receptionist() {
        gaji +=1000000;
   }
  
   void naikGaji() { gaji+=1000000; }
}

Receptionist.java

Membuat program Polymorphisme.java
class Polymorphisme {
  public static void main(String[] args) {
        Karyawan K[] = new Karyawan[3];

        K[0] = new Manager();
        K[1] = new Receptionist();
        K[2] = new Manager();

        for (int i=0;i<3;i++)
            System.out.println("Gaji karyawan "+i+" adalah"+K[i].getGaji());

        for (int i=0;i<3;i++)
            K[i].naikGaji();

        for (int i=0;i<3;i++)
            System.out.println("Gaji sekarang "+i+" adalah"+K[i].getGaji());
}
}

hasil compile

Polymorphisme.java

Class, Method, Constructor, Modifier dan Object pada JAVA


  • CLASS
         Class merupakan suatu blueprint atau cetakan untuk menciptakan suatu instant dari object. class juga merupakan grup suatu object dengan kemiripan attributes/properties, behaviour dan relasi ke object lain.
  •  METHOD
           Method merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggil melalui object.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
Metode memiliki 4 (empat) bagian dasar :
  1. Nama metode
  2. Tipe Objek atau tipe primitive yang dikembalikan metode.
  3. Daftar parameter.
  4. Badan atau isi metode.
  •  CONSTRUCTOR
Constructor merupakan method khusus yang digunakan untuk menginisialisasi objek, dan tiap class boleh memiliki lebih dari satu constructor.
Perbedaan method biasa dengan constructor adalah bahwa constructor harus  memiliki nama yang sama dengan nama class-nya dan tidak memiliki nilai  kembalian.

Constructor dijalankan pada saat sebuah objek diinisialisasi  (menggunakan kata new). Pada constructor juga berlaku overloading, artinya  boleh mendeklarasikan lebih dari satu constructor, asalkan memiliki parameter yang berbeda.
  • MODIFIER
Modifier adalah sifat yang dimiliki oleh setiap atribut, method maupun kelas dalam java. Modifier akses adalah modifier yang selalu digunakan, modifier akses terdiri dari private, default, protected dan public.
Wilayah Akses
Public
Protected
default
Private
Kelas  yang  sama
Ya
Ya
Ya
Ya
Antar kelas dalam package yangsama
Ya
Ya
Ya
Tidak
Subkelas di package yang berbeda
Ya
Ya
Tidak
Tidak
Bukan Subkelas, package yang berbeda
Ya
Tidak
Tidak
Tidak
beberapa modifier penting lainnya :
  1. Static yaitu modifier yang digunakan agar suatu atribut maupun method dapat diakses oleh objeck atau kelas lain mesti tanpa dilakukan instansiasi terhadap kelas dimana atribut maupun method itu berbeda, method main adalah salah satu contoh method modifier static yang sering digunakan.
  2. Final yaitu modifier yang digunakan untuk mencegah kemungkinan modifikasi terhadap atribut maupun method, dengan modifier ini suatu atribut akan berlaku sebagai konstanta
  • OBJECT
           sebuah kelas dapat digunakan untuk membuat banyak objek, setiap objek dapat dilakukan secara berbeda oleh objek-objek lain yang menggunakannya. di butuhkan operator NEW untuk membuat objek dari suatu kelas.
           objek dibuat dengan cara menuliskan :
  1. NamaKelas NamaObjek = new NamaConstractor();
  2. NamaKelas Namaobjek;
    NamaObjek = new NamaConstractor();
           proses di atas disebut instansiasi. ketika objek selesai dibuat, objek tersebut disimpan didalam memori dan dapat diakses oleh objek-objek lain melalui nama objeknya. 

Membuat program Disket.java

public class Disket {
  int panjang = 10;
  final int LEBAR = 10;
  String warna = "kuning";
  String bentuk = "segiempat";
  String data = "";
  Disket() {
      panjang= 100 ;
  }
  Disket(int panjang1) {
      this.panjang = panjang1;
  }
  void simpanData(String data1) {
         this.data += data1;
  }

  void hapusData() {
         data = "";
  }

  String bacaData() {
         return data;
  }
}
 

Disket.java

Membuat program MainDisket.java

class MainDisket{
    public static void main (String[] args) {
          Disket disk1 = new Disket(50);
          System.out.println("Panjang Disket = "+ disk1.panjang);
          System.out.println("Lebar Disket = "+ disk1.LEBAR);
          System.out.println("Warna Disket = "+ disk1.warna);
          System.out.println("Bentuk Disket = "+ disk1.bentuk);

          System.out.println("data mula-mula = "+ disk1.bacaData());
          disk1.simpanData("Belajar java");
          System.out.println("Setelah SimpanData = "+ disk1.bacaData());
          disk1.hapusData();
          System.out.println("Setelah hapusData = "+ disk1.bacaData());
    }
}


MainDisket.java