Archive | OOP – 4th step RSS feed for this section

Input Data

16 May

Nah pembahasan ini penting buat dibahas. Kita telah mempelajari dasar-dasar pemrograman Java. Nah tapi program kita itu input nilainya masih belum dinamis. Maksudnya, waktu penginputan data kita memasukkan nilainya langsung di program kita. Kalau untuk mempelajari dasar-dasar pemrograman dan algoritmanya masih tidak apa-apa. Namun, untuk implementasi sebenarnya ini sangat tidak bagus kan? Masa kita membuat suatu aplikasi, program atau sistem informasi tapi user menginputkan nilai harus masuk ke program kita. Tidak efektif, tidak efektif di sisi programmer dan di sisi user juga. Maka lebih efektif dan praktisnya kita membuatnya secara dinamis. Banyak sekali cara untuk menangkap nilai yang diinputkan oleh user. Kita akan membahasa beberapa cara. Let’s check these out!!

  • Class Baca

Kita membaca inputan dari user dengan memanfaatkan class baca (Baca.java). sebenarnya class baca adalah suatu class yang dapat membaca inputan dari user dengan memanfaatkan method pada class inputstream yang dimiliki oleh java.

Source class baca (Baca.java)

import java.io.*;
public class Baca{
   public static String bacaString(){
      int k;
      String str = "";
      boolean selesai = false;
      while(!selesai){
         try {
            k = System.in.read();
            selesai = (k == 13);
            if(!selesai)
               str += (char) k;
         }
         catch(IOException e){
            System.err.println("Ada kesalahan");
            selesai = true;
         }
      }
      return str;
   }
}

Cukup tau tentang class ini, karena nantinya kita akan memanfaatkan class Baca ini. Lalu bagaimana penggunaannya. Penggunaannya seperti di bawah ini Contoh dibawah ini kita akan membuat program sederhana untuk menghitung luas segitiga dengan memanfaatkan class baca untuk membaca inputan user.

class LuasSegi3 {
   public static void main(String[] args) {
      String inputanAlas, inputanTinggi, nama;
      double alas,tinggi,luas;

      System.out.print("Masukkan nama: ");
      nama = Baca.bacaString();
      System.out.println();

      System.out.println("Program Luas segitiga");
      System.out.print("Masukkan alas: ");
      inputanAlas = Baca.bacaString();
      alas = Double.valueOf(inputanAlas).doubleValue();

      System.out.print("Masukkan tinggi: ");
      inputanTinggi = Baca.bacaString();
      tinggi = Double.valueOf(inputanTinggi).doubleValue();

      luas = (alas*tinggi)/2;
      System.out.println("Luasnya: "+luas+"cm2\n");
      System.out.println("Terima Kasih "+nama.toUpperCase());
   }
}

NB:

  • Kita memanfaatkan class baca, tapi kelemahannya class baca hanya menangkap nilai bertipe String. Nah, jika ingin inputannya bilangan kita harus melakukan parsing seperti di atas >> alas = Double.valueOf(inputanAlas).doubleValue();
  • Potongan program di atas artinya nilai dari variable inputanAlas di convert menjadi variable bertipe double yang ditampung di variable alas
  • Variable nama tidak perlu dikonversi karena sudah bertipe String
  • Metode toUpperCase() adalah untuk membuat karakter String menjadi huruf besar semua

Outputnya:

Masukkan nama: bernaz <enter>

Program Luas Segitiga

Masukkan alas: 12 <enter>

Masukkan tinggi: 12 <enter>

Luasnya: 72.0 cm2

Terima Kasih BERNAZ

  • Scanner

Sebenarnya Scanner adalah class yang sudah ada di java dan kita tinggal menggunakannya dengan cara meng-importnya. Langsung saja ke contoh implementasinya seperti di bawah ini

import java.util.*;
class Said {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Selamat Datang di bernaz's blog\n");

      System.out.print("Nama Anda : ");
      String nama = sc.nextLine();

      System.out.print("NIM Anda : ");
      int NIM = sc.nextInt();

      System.out.print("IPK : ");
      double IPK = sc.nextDouble();

      System.out.println(".......");
      System.out.println("Selamat "+nama.toUpperCase()+" anda telah terdaftar");
      System.out.println("NIM anda "+NIM);
      System.out.println("Indeks Prestasi anda "+IPK);
   }
}

NB:

  • Class Scanner ada di dalam paket util jadi kita harus mengimportnya sebelum kita menggunakannya dan util ada di paket java. Jadi kita harus mengimportnya dengan cara import java.util.*; atau juga bisa dengan import java.util.Scanner;
  • nextLine() untuk membaca inputan String
  • nextInt() untuk membaca inputan integer
  • nextDouble() untuk membaca inputan double

Outputnya:

Selamat Datang di bernaz’s blog

Nama Anda : Bernaz <enter>

NIM Anda : 1234567 <enter>

IPK : 4 <enter>

…….

Selamat BERNAZ anda telah terdaftar

NIM anda 1234567

Indeks Prestasi anda 4.0

Try Catch

27 Mar

Try Catch ini adalah salah satu fitur dari Java untuk menangkap eksepsi atau kesalahan. Ya mungkin kita sering melakukan kesalahan dalam membuat program. Nah, dengan menggunakan Try Catch ini kita bisa menangkap kesalahan itu.

Eksespsi bisa berupa kesalahan penulisan kode, kesalahan saat menjalankan method dan sebagainya.

Bentuk umum Try Catch

try {
   <blok_programs>;
}
catch(<parameter>) {
   <blok_yang_dijalankan_jika_terjadi_eksepsi>;
}
finally {
   <blok_yang_dijalankan_terakhir>;
}

Di blok program di dalam Try itu adalah program yang akan dijalankan dan akan ditangkap eksepsinya jika terjadi kesalahan. Dan yang di blok catch adalah blok yang dijalankan jka terjadi eksepsi, jadi pesan kesalahannya di dalam catch ini. Biasanya berupa statement. Finally sebenarnya hanya pelengkap saja dan jarang digunakan. Ini bisa dibayangkan sebagai footer, yaitu akan keluar di akhir atau dijalankan di akhir. Mungkin akan lebih jelas dengan contoh di bawah ini:

class Coba {
   public static void main(String[] args) {
      System.out.println("star program\n");
      try{
         System.out.println(10/0);
      }
      catch(Throwable b) {
         System.err.println("terjad kesalahan >> "+b.getMessage());
      }
      finally {
         System.out.println("Pembagian nol\n");
      }
      System.out.println("end of program");
   }
}

Outputnya

start program

terjadi kesalahan >> / by zero

pembagian nol

end of program

NB:

  • Program dibaca dari atas, mencetak start program terlebih dulu setelah itu baru masuk try
  • Di blok program try terjadi kesalahan. Kesalahannya, bilangan berapapun jika dibagi nol itu tidak bisa atau tidak terdefinisi.
  • Blok catch mencetak kesalahannya. Catch mempunyai parameter b yang berkelas Throwable. Throwable adalah kelas yang ada di package java.lang yang menangani eksepsi dan merupakan turunan dari kelas objek (kelas tertinggi di JAVA). Dan perlu diketahui blok ini akan dijalankan jika terjadi eksepsi saja.
  • System.err.println untuk mencetak kesalahan dan getMessage() adalah method untuk menampilkan kesalahan yang terjadi.
  • Blok finally itu bisa dikatakan seperti footer, jadi akan dijalankan di bagian terakhir saja dan akan tetap dijalankan walaupun tidak terjadi kesalahan atau eksepsi sekalipun
  • Setelah selesai akan keluar dari Try Catch dan mencetak end of program.

Package and Import

23 Jan

Package yang artinya paket biasa digunakan dalam pengorganisasian data. Memang itulah fungsi utamanya, yaitu mengorganisasikan class-class agar mudah diakses dan terorganisir. Biasa disebut juga dengan grouping.

Keuntungan membuat package atau grouping (from JEDI):

  • Kamu dan programmer lainnya dapat dengan mudah menentukan class-class dan interface-interface yang berelasi
  • Kamu dan programmer lainnya dapat mengetahui dimana untuk mencari class-class dan interface-interface yang dapat menyediakan fungsi grafis yang direlasikan
  • Nama class dan interfacemu tidak akan mengalami konflik dengan nama-nama di paket lainnya, karena paket membuat tempat nama yang baru
  • Kamu dapat membiarkan class-class di dalam paket untuk mempunyai akses tak terlarang untuk salah satu yang lain selama larangan akses untuk tipe-tipe diluar paket

Dalam penulisan paket. Harus dituliskan di baris program yang pertama.

Agar bisa diakses dari tempat lain caranya:

  • class yang akan digunakan ditempat lain harus dibuat package dibaris pertama diberi deklarasi package
    package <nama_folder_tempat_class_berada>;

    contoh:

    package ProgramJAVAku;
  • program atau class yang akan memakai class tersebut harus melakukan import dibaris ke-2 klo ada package, pertama klo ga ada package diberi deklarasi import
    import <nama_package>.<nama_class>;

    contoh:

    import ProgramJAVAku.Mahasiswa;

    NB: class Mahasiswa (programnya) disimpan di folder bernama ProgamJAVAku

atau

  • import <nama_package> .*;

    contoh:

    import ProgramJAVAku.*;
  • OS diberi tahu dengan cara mengisi variabel lingkungan classpath dengan alamat folder tempat paket-paket yang akan diimport

Contoh penggunaan package (dengan implementasinya):

class main di drive D:\Programku
class yang diakses ada di C:\Javaku\Bernaz

Bilangan.java di simpan di di C:\Javaku\Bernaz

package Bernaz;
public class Bilangan {
  private int desimal;
  public void setDesimal(int desimal) {
  if(desimal>=0) {
    this.desimal = desimal;
  }
  else {
    this.desimal = -desimal;
  }
}
  public int getDesimal() {
    return this.desimal;
  }
  public String biner() {
  String hasil="";
  int sisa = this.desimal;
  do {
    hasil = sisa % 2 == 1 ? "1" + hasil : "0" + hasil ;
    sisa /= 2;
  }
  while (sisa > 0);
  return hasil;
  }
}

Utama.java disimpan di D:\Programku

import Bernaz.Bilangan;
class Utama {
  public static void main(String[] args) 	{
  Bilangan x = new Bilangan();
  x.setDesimal(-44);
  System.out.println("Bilangan biner dari "+ x.getDesimal() + " adalah "+ x.biner());
  }
}

Jangan lupa set variabel pathna. Buat new classPath addresna diisi class yang akan diakses (C:\Javaku;.). Jangan lupa konstruktor dan methods pada class yang akan diakses harus public. Semua konstruktor dan methods pada class yang akan diakses harus public. Public baru terasa jika ada komunikasi pada paket yang berbeda-beda.

Polimorfisme

23 Jan

Polimorfisme bias diartikan seperti kemampuan suatu variable untuk mengubah perangai sesuai dengan objek hasil instansiasi yang digunakan. Polimorfisme membiarkan lebih dari 1 objek dari sub class – sub class dan diperlakukan sebagai objek dari super class tunggal

Contoh:

Mahasiswa cowok = new anakSI();
cowok.methodKU(“Bernaz”);

Mahasiswa cewek = new anakTI();
cewek.mothodKU(“Amelia”);

Outputnya:

  • Methodku dengan parameter dengan nilai Bernaz di class anakSI telah dipanggil
  • Methodku dengan parameter dengan nilai Amelia di class anakTI telah dipanggil

Masih terasa membingungkan. Prinsipnya hampir sama dengan interface, yaitu memaksa sub classnya untuk mengoverride method-methodnya. Polimorfisme juga bias dijabarkan sifat khusus dari JAVA dimana kita dapat secara otomatis memakai method yang tetap untuk semua objek tanpa memerhatikan asal dari objek sub class. Dan dengan polimorfisme kita dapat menggunakan objek dalam banyak operasi namun prosesnya bias jadi berbeda-beda

Contoh lain:

class SepakBola {
  public void showoff() {
    System.out.println(“Menangkan pertandingan”)
  }
}
class Penyerang extends SepakBola {
  public void showoff() {
    System.out.println(“Cetak GOL”);
  }
}
class Bek extends SepakBola {
  public void showoff() {
    System.out.println(“Jangan sampai GOL”);
  }
}
class Kiper extends SepakBola {
  public void showoff() {
    System.out.println(“Jaga gawang”);
  }
}
public class Tendangan {
  public static void main (String[] args) {
    SepakBola SB = new SepakBola();
    Penyerang P = new Penyerang();
    Bek B = new Bek();
    Kiper K = new Kiper()

    SB.showoff();

    SB = P;
    SB.showoff();
    SB = B;
    SB.showoff();
    SB = K;
    SB.showoff();
  }
}

Interface

23 Jan

About interface:

  • Interface adalah kumpulan method-method tanpa implementasi bahkan tidak boleh mempunyai body >> {} >> abstract
  • Tujuan dibuat interface adalah untuk memaksa kelas-kelas yang mengimplementasikan interface tersebut melakukan overide method abstrak milik interface
  • Interface adalah semacam kelas abstract tetapi hanya boleh mempunyai anggota method abstract dan variabel konstan
  • Walaupun tidak dideklarasikan sebagai public abstract, interface selalu public abstract
  • Interface hanya dapat mendeinisikan konstanta
  • Interface biasa digunakan untuk standarasiasi method atau konstanta
  • Class yang mengextends interface dipaksa untuk mengoverride semua method dan definisi konstanta pada interface
  • Modifier yang digunakan hanya public atau tidak sama sekali. Jika tidak menggunakan modifier maka interface tersebut hanya dapat diakses dalam package yang sama
  • Semua method yang diimplemetasikan harus public
  • Jika kita tidak mengimplementasikan semua method yang ada pada interface, maka class tersebut harus dideklarasikan sebagai abstract class

Bentuk umum pendeklarasian interface:

interface <nama_interface> {
  // method tanpa definisi
  // definisi konstanta
}

Contoh:

interface Motor {
  int BBM = 4500;
  void starting();
  void stopping();
}

NB:

  • Secara eksplisit tanpa menuliskannya sebenarnya int BBM sudah mempunyai penentu public static final. Jadi tidak usah dituliskan
  • Secara eksplisit tanpa menuliskannya sebenarnya method strating dan stopinh sudah mempunyai penentu public abstract. Jadi tidak usah dituliskan

Interfacepun juga bisa diwariskan

Contoh:

interface Motor {
  int BBM = 4500;
  public void starting();
  public void stopping();
}
interface motorGede extends Motor{
  int harga = 20000000;
  public void service();
}

Penggunaan interface dengan keyword implements.

// Testing.java
interface HargaBBM {
  int harga = 4500;
  public void cetak();
}
class Berita implements hargaBBM() {
  private int hargaNOW = 5000;
  public void cetak() {
    if (this.hargaNOW == harga) {
      System.out.println(“Harga tetap”);
    }
    else {
      System.out.println(“Harga naik, DEMO!!!”);
    }
  }
}
class Testing {
  public static void main (String [] args) {
    Berita news = new Berita();
    News.cetak(); 
  }
}

Outputnya:
Harga naik, DEMO!!!

Keyword abstract

23 Jan

Kelas abstract hanya berisi deklarasi method tapi tanpa mendefinisikan. Definisi method didefinisikan di sub classnya dan class abstract tidak bisa digunakan untuk membuat objek. Jadi class abstract mendefinisikan method-method atau variabel yang akan dibutuhkan sub-sub classnya (lebih dari 1 sub class).

Contoh

abstract class Bangun {
//class abstract
  public abstract double Luas();//method abstract
}

Kesimpulan:

  • Kelas abstract adalah kelas yang memakai modifier abstract
  • Di dalam kelas abstract bisa berisi variabel anggota maupun method abstract maupun kongkrit
  • Jika di dalam suatu kelas terdapat minimal 1 saja method abstract, maka kelas tersebut harus atau pasti abstract
  • Kelas abstract tidak bisa diinstansiasi, hanya bisa diextends

Contoh lain (dengam implementasinya):

// KotaWisata.java
public abstract class KotaWisata {
  String objekWisata;
  public abstract Jalan();
}

//Liburan.java
class Jogja extends KotaWisata {
  public Jogja (String objekWisata) {
    this. objekWisata = objekWisata;
}
  public void Jalan() {
    System.out.println(“di jogja objek wisatanya  itu candi ” + this.objekWisata)
  }
}
class Jakarta extends KotaWisata {
  public Jakarta (String objekWisata) {
    this. objekWisata = objekWisata;
  }
  public void Jalan() {
    System.out.println(“di jakarta objek wisata yang terkenal itu ” + this.objekWisata)
  }
}
class Liburan {
  public static void main(String [] args) {
    Jogja jgj = new Jogja(“Prambanan”);
    jgj.Jalan();
    Jakarta jkt = new Jakarta(“Monas”);
    Jkt.Jalan();
  }
}

Outputnya:
di jogja objek wisatanya itu candi Prambanan
di jakarta objek wisata yang terkenal itu Monas

Overriding

23 Jan

Berbeda dengan overloading. Kalo overloading, kita boleh menuliskan method yang sama namun dengan jumlah parameter yang berbeda dan nilai kembalian harus sama. Nah, kalau 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.

Contoh:

class Kendaraan {
  ..............
  public String getJenis() {
    System.out.println(“Harga BBM turun”);
  }
}
class Motor extends Kendaraan {
  ..............
  public String getJenis() {
    System.out.println(“Harga BBM premium 4000 rupiah”);
  }
}

NB:

  • class motor mengextends class kendaraan
  • class motor melakukan override method di kendaraan namun berbeda implementasi

Kesimpulan:

  • Override method merupakan method yang sama persis dengan method yang sudah ada di super kelasnya, biasanya perbedaannya adalah pada implementasi (program body)
  • Overidding tidak bisa dilakukan dalam kelas itu sendiri
  • Jadi Overidding kerat kaitannya dengan inheritance (pewarisan)

Contoh lain:

class Lingkaran {
  double r;

  Lingkaran(double r) {
    this.r = r;
  }
  double Luas() {
    return Math.PI*this.r*this.r;
  }
  double Luas(double r) {
    this.r = r;
    return Math.PI*this.r*this.r;
  }
}
class Tabung extends Lingkaran {
  double h;

  Tabung() {
  //konstruktor kelas turunan, ada super() dan diisi nilai awal	
    super(0);
  }
  double Luas(double r) {
  //overriding (method and parameter sama)
    this.r = r;
    return Math.PI * this.r * this.r * this.h;
  }
}

NB:

  • Class lingkaran melakukan overloading method Luas (beda signature)
  • Class tabung mengextends class lingkaran
  • Class tabung meng-override method Luas hasil dari overload. Jadi kita juga biosa mengoverride method hasil overloading juga

Keyword final

23 Jan

Kata kunci final digunakan untuk pendeklarasian yang absolut. Keyword final dapat digunakan dalam pendeklarasian variabel, class, method. Pendeklarasiannya dengan menuliskan keyword final di depan variabel, class atau method. Dan perlu diketahui, final adalah keyword bukan modifier akses.

  • Penggunaan final pada variabel
    Conoh:

    class Lingkaran {
      final double PI = 3.14;
    }

    Variabel PI bertipe double dan bernilai 3.14 tidak bisa diubah lagi secara aktual lewat mekanisme apapun. Baik lewat objek ataupun apapun. Final membuat variabel menjadi suatu konstanta yang absolut (tidak dapat diubah)

  • Penggunaan final pada class
    Contoh:

    final class Kampus {
    
    }

    Class Kampus tidak dapat diturunkan lagi (extends)

  • Penggunaan final pada method
    Contoh:

    class Kampus {
      final void tampil() {
        System.out.println(“I LOVE JAVA”)
      }
    }

    Method tampil sudah mendapatkan keyword final, dan itu berarti method tersebut tidak dapat diubah atau dioverride dan di turunkan

Modifier akses

23 Jan

Modifier akses berguna untuk memberikan hak akses kepada user.
Modifier akses class member (Variabel dan Method):

  • (default)
    Class member hanya dapat digunakan hanya pada class di paket yang sama. Tanpa penulisan modifier akses
    Contoh:

    class Mahasiswa {
      String nama;
    
      String kata() {
        return “I LOVE JAVA”;
      }
    }
  • public
    Class member dapat diakses darimana saja, baik di dalam paket maupun di luar paket
    Contoh:

    class Mahasiswa {
      public String nama;
    
      public String kata() {
        return “I LOVE JAVA”;
      }
    }
  • private
    Class member hanya dapat diakses di dalam class itu sendiri atau class yang telah didefinisikan. Sering digunakan dalam proses enkapsulasi.
    Contoh:

    class Mahasiswa {
      private String nama;
    
      private String kata() {
        return “I LOVE JAVA”;
      }
    }
  • protected
    Class member dapat diakses di dalam package yang sama dan sub classnya. Subclass dapat berada di paket yang berbeda subclassnya akan mewarisi member variabel
    Contoh:

    class Mahasiswa {
      protected String nama;
    
      protected String kata() {
        return “I LOVE JAVA”;
      }
    }

JAVA program structure – Modifier Akses (from JEDI)

modifier-akses

Modifier akses variabel:

  • modifier akses variabel: , public, protected, private, static, final
    member variabel private tidak diwariskan
  • member variabel tanpa penentu (default) tidak diwariskan tetapi dapat diakses oleh class turunannya yang berada pada paket yang sama
  • member variabel dengan modifier akses public akan diwariskan kepada kelas turunannya
  • member variabel dengan modifier akses protected akan diwariskan kepada kelas turunannya
  • member variabel protected mempunyai karakteristik sama dengan modifier akses default, yaitu dapat diakses dari class lain yang berada dalam satu paket, tapi klo beda paket tidak bisa
  • member variabel protected tidak dapat diakses melalui mekanisme instansiasi, walaupun oleh kelas turunannya

Modifier akses class:

  • modifier akses class: default, public, final
  • modifier akses default: class dapat digunakan hanya pada package yang sama
  • modifier akses public: class dapat diakses dari semua package yang berbeda – beda
  • modifier akses final: class tidak dapat diturunkan lagi (extends)

Modifier akses method:

  • modifier akses method: default, public, protected, private, static, final, abstract
  • modifier akses static, method dapat digunakan tanpa mekanisme instansiasi
  • modifier akses final, method tidak dapat diubah / dioverride pada sub class
  • modifier akses abstract, method harus dioverride / didefinisikan pada subclassnya
  • member method private tidak diwariskan. Biasanya digunakan dalam proses enkapsulasi
  • member method tanpa penentu (default) tidak diwariskan tetapi dapat diakses oleh class turunannya yang berada pada paket yang sama
  • member method dengan modifier akses public akan diwariskan kepada kelas turunannya
  • member method dengan modifier akses protected akan diwariskan kepada kelas turunannya
  • member method protected mempunyai karakteristik sama dengan modifier akses default, yaitu dapat diakses dari class lain yang berada dalam satu paket, tapi jika berbeda paket tidak bisa
  • member method protected tidak dapat diakses melalui mekanisme instansiasi, walaupun oleh kelas turunannya

Modifier akses konstruktor:

  • konstruktor dengan modifer akses private tidak dapat diinstansiasi dari luar kelas. dari dalam kelas itu sendiri saja kelas itu dapat diinstansiasi. instansiasi tidak harus dimain
  • konstruktor dengan modifier akses default hanya dapat diinstansiasi pada paket yang sama
  • konstruktor dengan modifier akses public akan diinstansiasi dari manapun
  • konstruktor tidak diwariskan
  • konstruktor protected mempunyai karakteristik sama dengan modifier akses default, yaitu dapat diinstansiasi dari class lain yang berada dalam satu paket

modifier akses: modifier yang mempengaruhi tentang pengaksesan (pembacaan dan penulisan)

Di modifier akses method telah disinggung tentang enkapsulasi. Enkapsulasi bisa diartikan seperti proteksi data dari lingkungan luar. Jadi user tidak sembarangan menginputkan data. Proses enkapsulasi dengan cara memberikan modifier akses private pada class member (variabel atau method). Dengan enkapsulasi kita bisa membuat constrain (pada setter), untuk membuat batasan-batasannya. Misalnya waktu menginputkan angka, angkat tidak boleh minus.

contoh penggunaan modifier akses (proses enkapsulasi)

class Mahasiswa {  
  private String admin;
  private int NIM;
  private String nama;

  public void setAdmin(String admin) {
    this.admin = admin;
  }
  public void setNIM(int NIM) {
    this.NIM = NIM;
  }
  public void setNama(String nama){
    this.nama = nama;
  }
  public void pesan() {
    System.out.println("Nama admin: "+admin);
  }
  public int getNIM() {
    return NIM;
  }
  public String getNama() {
    return nama;
  }
}

public class MainMahasiswa {
  public static void main(String args[]) {
    Mahasiswa m = new Mahasiswa();
    m.setAdmin("Bernaz");
    m.setNIM(23090999);
    m.setNama("Obama");
    m.pesan();
    System.out.println(“NIM ” + m.getNIM() + “ bernama ” + m.getNama());
  }
}

Outputnya:
Nama admin: Bernaz
NIM 23090999 bernama Obama

Inheritance

23 Jan

Inheritance kaitannya dengan pewarisan. Dan di proses pewarisan terdapat 2 sebutan:

  • Super
    Bisa disebut juga dengan induk.
    Misalnya class ORTU adalah super class yang mewarisi ke class ANAK
    Nah, karena mewarisi berarti ORTU bertindak sebagai super class
  • Sub
    Bisa disebut dengan anak
    Misalnya class ANAK diwarisi oleh class ORTU
    Artinya anak adalah sub class dari class ORTU (super class)

Warisan? Apa yang diwariskan? Nah, dalam peemrograman JAVA yang konsepnya adalah OOP ini. Inheritance sangat lazim digunakan. Dan apa yang diwariskan? Yang diwariskan adalah method-method, konstruktor- konstruktor dan variabel-variabel.

Jadi, misalnya class ORTU mempunyai mempunyai variabel dan method dan diturunkan ke sub classnya (misal: class ANAK). Berarti class ANAK mempunyai semua variabel dan method yang dimiliki oleh class ORTU.

Lalu bagaimana caranya? Caranya adalah dengan menggunakan kata kunci extends. Bentuk umum proses inheritance adalah

class <sub_class> extends <super_class> {
 	<program>;
}

Contoh:

class ANAK extends ORTU {

}
// class anak sebagai subclass yang mendapat warisan dari class ORTU

Contoh lain:

// Lingkaran.java
class Lingkaran {
  double r;
  double Luas() {
    return Math.PI * this.r * this.r;
  }
}

// Silinder.java
class Silinder extends Lingkaran {
  double h;
  double Volume() {
    return Math.PI * this.r * this.r * this.h ;
  }
}

inheritance

NB:

  • class Silinder mengextends class lingkaran
  • Jadi class silinder tidak usah membuat variabel “ r ” lagi karena sudah diwarisi dari class Lingkaran

Di dalam Java semua class yang kita buat sebenarnya adalah turunan atau subclass dari class Object. Class Object merupakan class tertinggi dari semua hirarki class dalam Java

Follow

Get every new post delivered to your Inbox.