Object dan Class di Java dan Cara Membuatnya

Ketika kita membahas Object di dunia nyata kita, object adalah benda hidup (hewan, tumbuhan, bakteri, virus, dll), benda mati (alat, patung, bangunan, dll), atau juga bisa mewakili orang atau sekumpulan orang(organisasi, instansi/bagian, dll) dan sebagainya.

Singkatnya Object adalah segalanya baik yang berbentuk ataupun dapat dinalar (logical). Karena itu disini kita tidak akan membahasnya satu persatu dari hewan itu ada harimau, elang, dll dan harimau itu ada harimau itu ada harimau sumatra,jawa, benggala, siberia, wtfront door kayaknya cukup lah 😁.

Sebuah object dikatakan object karena:

  1. Memiliki attribut/State (nama, berat, tinggi, warna dll),
  2. Memiliki Aksi / kelakuan (tumbuh, makan, minum, tidur, memperkeras suara, memotong dll),
  3. memiliki keunikan (object memiliki beberapa keadaan dan fungsi yang sama tapi tetap ada bedanya).

Untuk menerangkan keunikan object di dunia nyata memang sedikit susah, kadang keunikannya bisa memberikan pelatihan pemanasan:

A : Broh pinjem pena buat nulis

B : pena item, ijo, biru, apa merah?

A : pena item aja buat nulis biasa aja bro

B : yang wadah warna ijo, transparan, item?

A : ga penting lah wadahnya

B : yang tinggal dikit, setengah, banyak, habis?

A : dikit ga papa

B : punya C apa punya aku?

A : lah aku pinjem punya kamu 😠

B : santai kalee, ni ada yang harga 2000an sama 5000an

A : lah lu jualan?

B : ente ga nyadar? nih ada berbagai pena ane bawa buat dijual.

A : ya ampun gan kenapa ga tawarin harganya dare tadeeee, mereknya sekalian.

B : 😅 noob

Kadang juga bisa jadi solusi dan ladang bisnis, kayaknya.

Tapi nyatanya memang begitu, setiap object memiliki keunikan tersendiri walaupun namanya sama, dilahirkan kembar, dan lain lain.

Object Di Java

Kriteria object di java juga memiliki ketiga kriteria didunia nyata yang kita bahas diatas, memiliki nilai, aksi dan identitas(bisa diimplementasikan menggunakan id unik).

Object di java adalah bentuk jadi dari Class. Jadi class itu template atau cetakan untuk sekelompok objek yang memiliki properti yang sama. Class bisa terdiri dari:

  1. Fields Template dari keadaan yang bisa membedakan objek yang satu dengan yang lainnya
  2. Methods Template dari fungsi dari objek tersebut. Umumnya didalamnnya juga ada mutator atau fungsi yang bisa mengubah keadaan objek.
  3. Constructors Sesuai dengan namanya Constructor adalah pembangun objek,umumnya memberikan nilai keadaan default dari objek.
  4. Blocks kode blok seperti blok perulangan, blok percabangan dan blok lainnya
  5. Nested Class dan interface Class di dalam class, termasuk class yang didalamnya berupa fungsi abstrak (referensi type) yang disebut interface class.

Object Class di java

Object Class Adalah class utama dari primitif type yang ada di java atau bisa kita katakan Object class itu adalah leluhur dari class lainnya di java seperti String, Integer, Boolean, Float, dan banyak lainnya.

Karena Object class adalah leluhur dari class lainnya maka akan membuat class lainnya juga memiliki sifat atau fungsi yang sama yang diturunkan oleh Object class. object class

Pada bagian ini bisa kalian hitung berapa kali saya pake kata lainnya.

Membuat Class (Deklarasi Class)

Seperti yang telah dibahas sebelumnya setiap class di java adalah turunan dari Object Class. Tapi tidak semua class diturunkan secara langsung dari Object class.

Jika class yang dibuat tidak menggunakan keyword extends berarti class tersebut secara langsung turunan dari Object class jika menggunakan extends berarti turunan dari class lainnya, Tapi tetap saja class yang diatasnya tersebut alah turunan dari Object class _secara tidak langsung.

⚠️Peringatan: jangan keliru antara membuat class (Deklarasi class) dan membuat object (instansiasi object) karena umumnya setiap tutorial menggabungkan keduanya menjadi nested class(class didalam class), tapi ada benar juga karena untuk membuat object kita perlu membuat classnya dulu.
Membuat class adalah membuat cetakan atau template untuk object yang akan dibuat, sedangkan membuat object kita menggunakan cetakan tersebut dengan keyword new.

Umumnya deklarasi class contohnya seperti berikut:

public class Orang {
    // field
    private String id;
    private String nama;
    private int umur;

    //Constructor
    public Orang(String id, String nama, int umur) {
        this.id = id;
        this.nama = nama;
        this.umur = umur;
    }
    
    // deklarasi method
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public int getUmur() {
        return umur;
    }

    public void setUmur(int umur) {
        this.umur = umur;
    }
    
    public void kenalan(){
        System.out.println("Halo nama saya "+ this.nama);
    }
}

Disini kita membuat sebuah class Orang untuk mewakili orang yang secara langsung merupakan turunan dari Object class. Class tersebut terdiri dari field yang menyediakan keadaan object, Contructor dengan argumen untuk inisialisasi object, dan beberapa method yang mengimplementasikan perilaku/fungsi object tersebut.

Pada class kita bisa memiliki lebih dari satu Constructor dengan jumlah atau tipe data argumen berbeda, sama halnya dengan method overloading, tapi kalo Constructor nama fungsinya harus sama dengan nama Classnya.

Contoh lain :

public class Karyawan extends Orang{
    private String jabatan;

    public Karyawan(String id, String nama, int umur,String jabatan) {
        super(id, nama, umur);
        this.jabatan = jabatan;
    }

    public String getJabatan() {
        return jabatan;
    }

    public void setJabatan(String jabatan) {
        this.jabatan = jabatan;
    }
    
    @Override
    public void kenalan(){
        System.out.println("Halo nama saya "+ super.getNama()+ 
                "\nSaya menjabat sebagai "+ this.jabatan);
    }
}

Disini class Karyawan menggunakan keyword extends di deklarasi classnya dan menambahkan class Orang sebagai superclassnya sehingga membuatnya turunan dari class Orang. Dari situ class Karyawan merupakan turunan dari class Object secara tidak langsung.

Catatan : keyword this digunakan untuk mereferensikan object setelah class ini digunakan untuk membuat object. fungsinnya untuk mengakses field dan method object tersebut.

Membuat Object (Instansiasi Class)

Di java object dibuat pada saat runtime atau saat program dijalankan dengan mengalokasi memori dari template atau cetakan (Object class) entah itu String Integer atau dari Object class kita sendiri.

Umumnya untuk membuat object kita menggunakan operator atau keyword new. operator new menginstansiasi class dengan mengalokasi memori untuk objek baru dan mengembalikan referensi ke memori tersebut. referensi ini biasanya di tujukan ke variabel yang sesuai dengan tipe objek yang dibuat. Contoh :

Object object = new Object();

Disini kita menginisialsisai object dengan mereferesikan alokasi memori dari template class Object atau simpelnya memberikan nilai default ke variabel tersebut. Contoh diatas jika kita tidak tau object apa yang akan di tujukan kepada variabel object tersebut. biasanya di gunakan untuk mendapatkan nilai dari fungsi yang berasal dari generic class atau generic method dalam class tersebut contoh:

Object object = genericObjectVar.getObject();
// atau Object object = getObject("text string"); <-- argumen bisa string,integer, boolean dll.

Cara tersbut hanya bisa digunakan untuk tipe object primitif atau tipe object bawaan dari bahasa program java. Tapi jika tipe object-nya sudah diketahui maka cukup gunakan tipe data yang sesuai. Seperti:

String text = new String("teks string");
Integer angka = new Integer(1);
Boolean bool = new Boolean(true);
// dst ....

/* atau dengan cara yang telah biasa kita gunakan
String text = "teks string";
int angka = 1;
boolean bool = true;
*/ 

ℹ️ Catatan: Kata ”instansiasi class” sama artinya dengan ”membuat object”. ketika membuat objek, maka kita membuat sebuah sample/contoh dari class.

Referensi yang dikembalikan oleh operator new juga tidak harus di tujukan ke variabel karena juga bisa digunakan langsung menggunakan ekspresi atau fungsi didalam object class tersebut. contohnya:

int panjangText = new String().length();

Membuat Object dari Class Yang telah kita buat

Pada bagian sebelumnya kita telah membuat class Orang dan Karyawan untuk object kita sendiri, sekarang kita coba membuat object dari class yang telah kita buat tadi seperti berikut:

class Main {
  public static void main(String[] args) {

    Orang ido = new Orang("001","Ido",19);
    Orang dina = new Orang("002","dina",18);
    Orang dino = new Orang("003","dino",18);
    // dst ...
    Karyawan driona = new Karyawan("001", "Driona", 23, "supervisor");
    Karyawan tio = new Karyawan("002", "tio", 25, "manager");
    //dst ...
  }
}

Mengunakan Object yang telah dibuat

Setelah kita membuat object tentu kita ingin menggunakannya dengan mengakses nilai, mengubahnya, atau menjalankan aksi yang dapat dilakukan object tersebut. Disini kita akan mengakses,mengubah dan menjalankan aksi dari salah satu object Karyawan yang telah kita buat seperti berikut:

Karyawan driona = new Karyawan("001", "Driona", 23, "supervisor");

System.out.println(driona.getJabatan());//mengakses jabatan object menggunakan fungsi
// jabatan driona adalah "supervisor"

driona.setJabatan("manager"); // mengubah jabatan object menggunakan fungsi
// sekarang jabatan driona adalah "manager" di kantor cabang perusahaan

driona.kenalan();//memanggil aksi perkenalan yang misalnya akan dilakukan di kantor cabang

Dari contoh tersebut bisa kita ketahui kita perlu menggunakan referesi object (driona) dan diikuti dengan tanda titik (.) untuk mengakses method-nya. Sebenarnya kita juga kita bisa mengakses field dari sebuah class yang umumnya class tersebut adalah static class. untuk yang kita bahas disini adalah class dinamis.

The End

Sebenarnya masih banyak sekali hal yang belum kita bahas mengenai Object dan terutama Class seperti interface class, static class dan Generic class yang sempat kita singgung dan sama sekali tidak disangka bahasan tentang class sendiri bisa sangat panjang. Tapi semoga yang telah kita bahas di artikel ini bisa membantu teman-teman untuk sedikit memahami tentang object dan class di java.

Seperti biasa source code percobaan yang digunakan disini bisa dicoba di sini.

Referensi dan sumber

Artikel Lain

Jika teman-teman berminat untuk belajar konsep Object Oriented Programming seperti:

  • Abstraction.
  • Encapsulation.
  • Polymorphism.
  • Inheritance.
  • dsb …

Berikut ini adalah beberapa website yang membahas hal tersebut dengan mendetail dan tentunya bisa lebih mudah dimengerti:

#Java#Object#Class