BAB 3 - Kelas (Class), Objek (Object), dan Class Diagram - TeachMeSoft

BAB 3 - Kelas (Class), Objek (Object), dan Class Diagram

BAB 3 - Kelas (Class), Objek (Object), dan Class Diagram

Capaian dan Indikator


1. Capaian Pembelajaran

Setelah mempelajari bab ini, mahasiswa diharapkan:
  1. Mengetahui konsep kelas dan objek
  2. Mengetahui class diagram

2. Indikator

  1. Mampu menjelaskan kelas dan objek
  2. Mampu membuat class diagram

Uraian Materi


A. Kelas (class)
Bahasa Java merupakan bahasa pemrograman yang  berorientasi obyek sehingga konsep obyek dan  kelas (class) menjadi penting. Dalam dunia nyata, ada banyak obyek misalnya obyek orang, obyek  mobil, obyek pohon dsb. Bagaimana  memindahkan obyek yang ada dalam dunia nyata menjadi obyek dalam pemrograman khususnya Java ?

Misalkan obyek dalam dunia nyata adalah obyek orang. Obyek tersebut dapat diceritakan tentang ciri-cirinya, yaitu tinggi badan, berat badan, warna rambut, warna kulit, jenis kelami, menggunakan kacamata dll. Dalam pemrograman, obyek didunia nyata akan menjadi CLASS, dan ciri-ciri obyek akan menjadi variabel class yang disebut sebagai DATA MEMBER.

Berdasarkan contoh diatas, pendefinisian pada pemrograman adalah :


Struktur pembuatan class, adalah sebagai berikut:
class NamaClass{
 
 //Isi Class

}

Keterangan:
  • Nama_Kelas harus sesuai dengan nama file.
  • Contoh: class Handphone, maka nama filenya harus diberi nama dengan Handphone.java.

B. Atribut
Atribut merupakan ciri-ciri yang melekat pada suatu objek. Berikut adalah contoh syntax atribut.
[access_modifier] [tipe_data] [nama_variabel] = [value]; 

Keterangan:
  • [access_modifier]  digunakan untuk memberi batasan hak class maupun method. Access modifier akan dijelaskan pada sub bab berikutn ya
  • [tipe_data] menjelaskan apakah variabel tersebut berti pe String, int, double, dan sebagainya
  • [nama_variabel] merupakan sebutan (definisi) variabel tersebut
  • [value] merupakan nilai dari variable tersebut
    Contoh: private String warna = "merah";


C. Method
"Method merupakan tindakan aksi yang bisa dikerjakan oleh CLASS. Method merupakan fungsi-fungsi yang digunakan untuk memaipulasi nilai-nilai pada atribut dan atau untuk melakukan hal-hal yang dapat dilakukan oleh objek itu sendiri. Dalam hal ini method dapat berisi sekumpulan program yang telah terbungkus. Dengan method, kita bisa memanggil kumpulan program tersebut hanya dengan memanggil nama methodnya sehingga pekerjaan jadi lebih singkat dan tidak boros menuliskan program. Selain itu, program menjadi lebih terstruktur, praktis, dan efisien. Contoh :



Method yang mengembalikan nilai biasanya berupa sub program berjenis fungsi. Sedangkan method yang tidak mengembalikan nilai biasanya berupa sub program berjenis prosedur.
Berikut adalah contoh syntax pembuatan method.

[access_modifier] [tipe_data] nama_method( ......)       
Keterangan:
  • [access_modifier] digunakan untuk memberi batasan hak class maupun method. Access modifier akan dijelaskan pada sub bab berikutnya
  • [tipe_data] menjelaskan apakah variabel tersebut bertipe String, int, double, dan sebagainya
  • [nama_method] merupakan sebutan (definisi) method tersebut. Umumnya method selalu diakhiri dengan tanda kurung ()
  • (.......) berisi parameter apabi la d iperl ukan.

Contoh
public void masuk info mobil (int mrk , String nm){
 this.merek = mrk ;       

Implementasi method dalam pemrograman adalah:
public void menangis ()
{

public void tertawa ()
{


D. Objek
Dalam pemrograman, suatu class dapat mempunyai banyak objek dan objek akan mewarisi data member dan method  yang sama dari suatu class. Objek disebut juga  instance of Class merupakan objek yang diinstan atau dibuat dari class.

Untuk membuat obyek dari class Orang, digunakan keyword 'new'. Contoh :
Orang org1 = new Orang ("Samuel") ;

Orang org2  = new Orang ("Ari");"  

Sehingga class Orang, saat ini mempunyai 2 obyek.

E. Kata Kunci 'this' 
kata kunci bdigunakan untuk membedakan variabel yang dideklarasikan pada parameter di dalam method dengan variabel yang dideklarasikan pada class. Untuk penggunaan bdapat anda lihat pada soallatihan.


F. Class Diagram
Class Diagram adalah sebuah diagram yang  menggambarkan hubungan aplikasi perancangan (CASE),seperti StarUML.



Sebuah class digambarkan dengan sebuah tabel 1 kolom dan 3 baris. Baris pertama berisi nama class; Baris kedua berisi atribut; dan Baris ketiga berisi method.



itu, terdapat garis yang menggambarkan hubungan antar class.



Class Diagram biasanya digunakan oleh software engineer untuk merancang software denganparadigma OOP.


Latihan


Berdasarkan contoh di atas tentang handphone, buatlah 2 buah class yang terdiri dari class hand phone dan class utama. Class utama digunakan untuk memanggil class handphone. Ketika class utama dijalankan, hasilnya akan tampak seperti di bawah ini:




Sedangkan pada class handphone harus memiliki beberapa ketentuan sebagai berikut:

Atribut berisi merk, tipe, warna, dan harga
  • Terdapat method setter dan getter untuk mengeset dan mengambil nilai dari merk, tipe, warna, dan harga.
  • Terdapat method HargaDiskon() untuk menghitung harga handphone sesudah diskon. Diskon yang diperoleh adalah 10%
  • Terdapat method keterangan() untuk mencetak statement tentang harga handphone sesudah diskon.


Jawab:
Langkah 1: Membuat skema
Skema diagram digunakan untuk membantu anda dalam membantu logika anda untuk pembuatan program.Tanda "-" dilambangkan sebagai private.

Sedangkan tanda "+" dilambangkan sebagai public. Berikut adalah skema diagramnya.


Langkah 2: class Hand phone (ketikkan script berikut)
a. Membuat kerangka class Hand phone
Setelah anda membuat class Hand phone, simpan Handphone.java. Di dalam class Hand phone, juga mendeklarasikan variabel,setter dan getter.

b. Mendeklarasi variabel yang dibutuhkan
Setelah kita membuat kerangka class, maka diperlukan pendeklarasian variabel yang nantinya digunakan sebagai tempat menyimpan data yang bersifat sementara (temporary). Gambar di bawah ini menunjukkan pendeklarasian variabel.

class Handphone                     
{ 
 //deklarasi
 private String merk, tipe , warna;
 private double harga;
 
 //setter
 
 //getter
 
 //method tambahan                  

}

c.   Membuat method setter
Setelah membuat variabel yang d ibutuhkan pada class  Handphone, langkah selanjutnya anda buat method setter untuk masi ng-masi ng variabel. Hal in i bertujuan untuk mengeset nilai yang diperoleh dari class Utama yang nantinya akan kita gunakan ke dalam class Handphone. Perlu diketahui pula, bahwa dalam pembuatan variabel pada parameter di method setter, harus sesuai dengan tipe data pada variabel yang dideklarasikan di kelas.
Gambar di bawah ini menunjukkan deklarasi setter.

Code
class Handphone                     
{ 
 //deklarasi
 private String merk, tipe , warna;
 private double harga;
 
 //setter
 public void setMerk(String merk)
 {
  this.merk=merk;
 } 
 public void setTipe(String tipe)
 {
  this.tipe=tipe;
 }                  
 public void setWarna(String colour)
 {
  warna=colour;
 }
 public void setHarga(double harga)
 {
  this.harga=harga;
 }
 
 //getter
 
 //method tambahan 
}        


Sebagai tambahan informasi, dalam pembuatan method setter,kita menggunakan sub program berjenis prosedur. Hal ini dikarenakan data yang akan kita set, tidak terdapat umpan balik ke dalam program. Hand phone (lihat script yang diberi kotak berwarna biru). Apabila variabel tersebut tersebut tidak diberi keyword this, maka variabel tersebut akan mengacu kepada variabel yang dideklarasikan pada parameter method setter (lihat script yang diberi kotak berwarna  hijau).  Anda  bisa menggunakan  keyword  this atau tidak apabila ada perbedaan deklarasi nama variabel pada class Handphone dengan parameter pada method setter (lihat script yang diberi kotak berwarna ungu)."

d. Membuat method getter
Setelah membuat method setter,anda tinggal membuat method getter untuk mengambil nilai dari masing-ma sing variabel. Hal ini bertujuan untuk mengambil nilai dari variabel pada class Handphone yang nantinya akan kita kembalikan ke dalam class Utama. Perlu diketahui pula, bahwa dalam pembuatan variabel pada parameter di method getter, harus sesuai dengan tipe data pada  variabel yang dideklarasikan  di kelas.Gambar di bawah ini menunjukkan deklarasi getter.

class Handphone                     
{ 
 //deklarasi
 private String merk, tipe , warna;
 private double harga;
 
 //setter
 public void setMerk(String merk)
 {
  this.merk=merk;
 } 
 public void setTipe(String tipe)
 {
  this.tipe=tipe;
 }                  
 public void setWarna(String colour)
 {
  warna=colour;
 }
 public void setHarga(double harga)
 {
  this.harga=harga;
 }
 
 //getter
 public String getMerk()
 {
  return merk;
 }
 public String getTipe()
 {
  return tipe;
 }
 public String getWarna()
 {
  return warna;
 }
 public double getHarga()
 {
  return harga;
 }
 //method tambahan 
} 




Sebagai tambahan informasi, dalam pembuatan method getter, kita menggunakan sub
program berjenis fungsi karena dibutuhkan umpan bali k dalam pengambilan data.

d. Membuat method tambahan
Seperti namanya, method ini hanya sebagai tambahan apabila ada permintaan soal untuk mengolah data-data yang telah kita set dan get ke dalam bentuk informasi. Seperti soal yang diminta, anda diminta untuk menghitung dan mencetak harga handphone sesudah diskon. Gambar di bawah ini men unjukkan pembuatan method HargaDiskon() dan method keterangan().

class Handphone                     
{ 
 //deklarasi
 private String merk, tipe , warna;
 private double harga;
 
 //setter
 public void setMerk(String merk)
 {
  this.merk=merk;
 } 
 public void setTipe(String tipe)
 {
  this.tipe=tipe;
 }                  
 public void setWarna(String colour)
 {
  warna=colour;
 }
 public void setHarga(double harga)
 {
  this.harga=harga;
 }
 
 //getter
 public String getMerk()
 {
  return merk;
 }
 public String getTipe()
 {
  return tipe;
 }
 public String getWarna()
 {
  return warna;
 }
 public double getHarga()
 {
  return harga;
 }
 
 //method tambahan 
 public double HargaDiskon()
 {
  double diskon = 0.1*getHarga();
  double total = getHarga()-diskon;
  
  return total;
 }
 public void keterangan()
 {
  System.out.println("Harga HP sesudah diskon (10) = Rp "+HargaDiskon());
 }
} 





Langkah 3: class Utama (ketikkan script berikut)
a. Membuat kerangka class Utama
Setelah anda membuat class Utama, simpan file tersebut dengan nama Utama.java. Di dalam class inilah, program anda akan dijalankan.

class Utama
{
 public static void main (String[] args)
 {
  //instance of class
  
  //input
  
  //output
 }
}


b. Membuat instance of class
Setelah anda membuat class Utama, langkah berikutnya yang anda lakukan adalah membuat sebuah objek yang bertipe class Handphone. Itulah yang dinamakan instance of class (untuk penjelasan nya, dapat anda lihat pada sub bab sebelumnya). Misalkan, objek yang saya buat adalah hp, maka penulisan script-nya adalah sebagai berikut.
class Utama
{
 public static void main (String[] args)
 {
  //instance of class
  Handphone hp = new Handphone();
  
  //input
  
  //output
 }
}

c. Membuat inputan yang diisi user
Sebelum anda membuat inputan yang nantinya akan diisi oleh user, anda-dapat menggunakan class yang dapat digunakan untuk menerima inputan, salah satunya adalah class BufferedReader yang terdapat pada package java.io. Untuk mengakses class BufferedReader, anda harus mengimport class tersebut. (boleh juga menggunakan class Scanner). Berikut adalah contoh script-nya.

import java.io.*;

class Utama
{
 public static void main (String[] args) throws Exception
 {
  BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
  //instance of class
  Handphone hp = new Handphone();
  
  //input
  
  //output
 }
}



Setelah itu , buatlah sebuah perintah yang akan dicetak olehprogram, yang nantinya user dapat mengetahui apa saja yang harus ia lakukan ketika program dijalankan. Setiap inputan dari user, kemudian akan ditampung ke dalam variabel (lihat script yang diberi kotak berwarna merah). Setelah ditam pung ke dalam variabel, maka data tersebut akan di set satu per satu ke dalam class Handphone (lihat script yang diberi kotak berwarna biru). Berikut adalah contoh script-nya.

import java.io.*;
class Utama
{
 public static void main (String [] args) throws Exception
 {
  BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
  //instance of class                     
  Handphone hp = new Handphone ();
  
  //input
  System.out.print("Masukkan merk handphone : "); 
  String merk_hp = br.readLine();
  System.out.print("Masukkan tipe handphone : "); 
  String tipe_hp = br.readLine();
  System.out.print("Masukkan warna handphone : "); 
  String warna_hp = br.readLine ();
  System.out.print("Masukkan harga handphone : "); 
  double harga_hp = Double.parseDouble (br.readLine());    
  
  hp.setMerk(merk_hp); 
  hp.setTipe(tipe_hp); 
  hp.setWarna(warna_hp);
  hp.setHarga(harga_hp) ;
  //output 
 }                    
}                     



Catatan:
Cara menge-set data ke dalam class Handphone dengan format sebagai berikut:

Nama_Objek.Nama_.Method
Cara ini berlaku juga untuk method get()  maupun method lainnya

d. Membuat output
Ini adalah langkah terakhir. Ketika data sudah di input semua, maka diperlukan output dari hasil tampilan program tersebut. Untuk mengam bil data-datanya, anda cukup menggunakan method get() dalam hal pengambilan data. Berikut adalah contoh script-nya.

import java.io.*;
class Utama
{
 public static void main (String [] args) throws Exception
 {
  BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
  //instance of class                     
  Handphone hp = new Handphone ();
  
  //input
  System.out.print("Masukkan merk handphone : "); 
  String merk_hp = br.readLine();
  System.out.print("Masukkan tipe handphone : "); 
  String tipe_hp = br.readLine();
  System.out.print("Masukkan warna handphone : "); 
  String warna_hp = br.readLine ();
  System.out.print("Masukkan harga handphone : "); 
  double harga_hp = Double.parseDouble (br.readLine());    
  
  hp.setMerk(merk_hp); 
  hp.setTipe(tipe_hp); 
  hp.setWarna(warna_hp);
  hp.setHarga(harga_hp) ;
  
  //output 
  System.out.println("======================================");
  System.out.println("DAFTAR HARGA PONSEL DAN SPESIFIKASINYA");
  System.out.println("======================================");
  System.out.println("Merk HP = "+hp.getMerk());
  System.out.println("Tipe HP = "+hp.getTipe());
  System.out.println("Warna HP = "+hp.getWarna());
  System.out.println("Harga HP sebelum diskon = Rp."+hp.getHarga());
  hp.keterangan();
 }                    
}                     



Coba anda perhatikan script pada line 34! Pada script di atas, anda cukup memanggil nama" ethodnya saja, tanpa perlu mengetik lagi. Hal ini menunjukkan bahwa penulisan hp.keterangan() sama hal nya dengan anda mengetikkan System.out.println ("Harga HP sesudah diskon (10%) = Rp " + HargaDiskon());  pada class Handphone.




Full coding
import java.io.*;

class Handphone                     
{ 
 //deklarasi
 private String merk, tipe , warna;
 private double harga;
 
 //setter
 public void setMerk(String merk)
 {
  this.merk=merk;
 } 
 public void setTipe(String tipe)
 {
  this.tipe=tipe;
 }                  
 public void setWarna(String colour)
 {
  warna=colour;
 }
 public void setHarga(double harga)
 {
  this.harga=harga;
 }
 
 //getter
 public String getMerk()
 {
  return merk;
 }
 public String getTipe()
 {
  return tipe;
 }
 public String getWarna()
 {
  return warna;
 }
 public double getHarga()
 {
  return harga;
 }
 
 //method tambahan 
 public double HargaDiskon()
 {
  double diskon = 0.1*getHarga();
  double total = getHarga()-diskon;
  
  return total;
 }
 public void keterangan()
 {
  System.out.println("Harga HP sesudah diskon (10) = Rp "+HargaDiskon());
 }
} 

class Utama
{
 public static void main (String [] args) throws Exception
 {
  BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
  //instance of class                     
  Handphone hp = new Handphone ();
  
  //input
  System.out.print("Masukkan merk handphone : "); 
  String merk_hp = br.readLine();
  System.out.print("Masukkan tipe handphone : "); 
  String tipe_hp = br.readLine();
  System.out.print("Masukkan warna handphone : "); 
  String warna_hp = br.readLine ();
  System.out.print("Masukkan harga handphone : "); 
  double harga_hp = Double.parseDouble (br.readLine());    
  
  hp.setMerk(merk_hp); 
  hp.setTipe(tipe_hp); 
  hp.setWarna(warna_hp);
  hp.setHarga(harga_hp) ;
  
  //output 
  System.out.println("======================================");
  System.out.println("DAFTAR HARGA PONSEL DAN SPESIFIKASINYA");
  System.out.println("======================================");
  System.out.println("Merk HP = "+hp.getMerk());
  System.out.println("Tipe HP = "+hp.getTipe());
  System.out.println("Warna HP = "+hp.getWarna());
  System.out.println("Harga HP sebelum diskon = Rp."+hp.getHarga());
  hp.keterangan();
 }                    
}  


Keterangan program :



Output
Masukkan merk handphone : Samsung
Masukkan tipe handphone : Galaxy S12
Masukkan warna handphone : Silver
Masukkan harga handphone : 120000
======================================
DAFTAR HARGA PONSEL DAN SPESIFIKASINYA
======================================
Merk HP = Samsung
Tipe HP = Galaxy S12
Warna HP = Silver
Harga HP sebelum diskon = Rp.120000.0
Harga HP sesudah diskon (10) = Rp 108000.0


Tugas


  1. Ketiklah program berikut dan lakukan kompilasi
    // MEMBUAT KELAS MOBILKU
    class Mobilku
    {
     //Variabel class 
     private int merek; 
     private String nama;
     
     //informasi mobil --> METHOD
     public void masuk_info (int mrk , String nm )
     {
      this.merek = mrk; 
      this.nama = nm;
     }
     public void info()
     {
      System.out.println("No    = "+this.merek ); 
      System.out.println("Nama  = "+this.nama);
     }
    }
     
    // MEMBUAT KELAS MOBIL YANG MEMAKAI KELAS MOBILKU
    public class Utama
    {
     public static void main( String args[])
     {
      // buat 2 buah obyek mobilku yaitu mobill dan mobil2 
      Mobilku mobil1 = new Mobilku(); //obyek 1 bernama mobil1
      Mobilku mobil2 = new Mobilku(); //obyek 2 bernama mobil2
      
      // memberi nomor dan nama obyek mobil1 dan mobil2 
      mobil1.masuk_info(1, "HONDA ");
      mobil2.masuk_info(2, "TOYOTA ");
      
      // Panggil method 
      mobil1.info(); 
      mobil2.info();
     }
    } 
  2. Buat skema class Mobilku
  3. Apa nama file untuk menyimpan program tersebut?
  4. Apa keluaran program tersebut?
    No    = 1
    Nama  = HONDA
    No    = 2
    Nama  = TOYOTA
    
  5. Tambahkan method supaya mobil bisa di identifikasi jenisnya
  6. Tambahkan method lain supaya mobil 1 dan mobil 2 mem punyai warna yang berbeda
  7. Buatlah program untuk menggunakan class Orang seperti di atas.










Disqus comments