You are on page 1of 46

Class dan Komponennya

1. Class
2. attribute
3. method() dan constructor()
4. objek
5. modifier
6. inner class
Class
 Class adalah blue print benda atau yang dibendakan yang
masih abstrak atau umum untuk mencetak suatu objek yang
lebih khusus dan nyata, misalnya class Manusia dan
objeknya budi, bambang, joko, dsb.
 Objek-objek yang dicetak dengan class yang sama dapat

memiliki kesamaan ciri (attribute) sebagai Manusia dan


kesamaan perilaku (method) milik class Manusia pada
umumnya.
 Contoh1: class Buku
 attribute nya: ISBN, judul, harga, jumlah halaman, penulis,

penerbit?
 method() nya: diketik(), diedit(), dicetak(), diterbitkan().

 Contoh2: class Mobil


 attribute nya: noSTNK, nopol, merk, warna, tahun, harga.
 method nya: maju(), berhenti(). mundur(), belok().
Latihan buat Class
 Class Mahasiswa
 attribute nya?
 method() nya?

 makan(), minum(), tidur() adalah method()


milik class Mahasiswa?
Dua kelompok Class
 Class standard yg disediakan vendor atau
komunitas yg telah dimasukkan ke dalam
Aplication Programming Interface (API) dan
siap digunakan programmer.

 Class yg dibuat sendiri oleh programmer


disebut class non standard.
Template struktur Anatomi Class
[modifier1] [modifier2] class NamaClass [modifier3] {
classbody;
}

classbody terdiri atas:


nol atau satu atau beberapa attribute;
minimal sebuah constructor();
minimal sebuah method();

Modifier pada anatomi Class sifatnya opsional,


digunakan berdasarkan kebutuhan.
Modifier1
Modifier1 dan modifier2mengatur penggunaan Class/komponennya.

Modifier1:
Yang mengatur hak akses Class lain disebut modifier akses.

Ada dua jenis modifier1, kelompok yg membuka hak akses kelas


lain dan modifier yg menutup hak akses kelas lain.

Modifier1 pada anatomi class ditempatkan paling kiri sebelum


modifier2.

Modifier2 memberi sifat kepada Class/komponennya yang


disebut modifier sifat/non akses.

Ada 4 keyword yang digunakan sebagai modifier1.


Keyword Modifier1 dan Modifier2
 Modifier1 yg membuka hak akses class/komponen class lain:
public, protected, default
 Modifier1 yg menutup hak akses class/komponen class lain:
 private
 Modifier2 memberi sifat suatu class/komponennya:
final
static
abstract
synchronized
native
storage, transient, volatile
super
Modifier yang memberi sifat saling kontradiktif misal static dan
abstract tidak boleh digunakan bersamaan.
Keyword static tidak boleh memberi sifat pada interface.
Keyword super tdk boleh digunakan pada method() static.
Modifier1 (Hak Akses)
 Modifierini untuk menentukan
luas hubungan suatu
Class/Interface/komponen
Class yang diakses oleh Class
yang mengakses.
 Perhatikanluas wilayah modifier
akses berikut ini:
Daftar wilayah Akses
Modifier1 pada Class/Interface yang
Wilayah Class/Interface yang diakses
mengakses
public protected default private

di Class yang sama √ √ √ √

Beda Class,
√ √ √ x
di package yg sama

Beda Class,
beda package, √ √ x x
di Class turunan/implementasi

Beda Class,
beda package,
√ x x x
tidak di Class
public

 Menyatakan bahwa
class/interface/method()
/attribute/inner class yang
ditandai dengan keyword public
boleh diakses/diimplementasikan
class lain dimana pun.
protected
 Menyatakan bahwa
class/interface/method()
/attribute/inner class yang ditandai
dengan keyword protected ini boleh
diakses/diimplementasikan class
lain yang berada di dalam package
yang sama atau turunannya.
default
 Menyatakan bahwa
class/interface/method()
/attribute/inner class yang tidak
ditandai dengan keyword
modifier akses apa pun ini boleh
diakses/diimplementasikan
class lain yang berada di dalam
package yang sama.
private
 Menyatakan bahwa method()
atau attribute yang ditandai
dengan keyword private ini
boleh
diakses/diimplementasikan
method() yang berada hanya di
dalam Class yang sama.
Modifier2 (sifat)
 Setidaknya ada tujuh keyword penting
dalam modofier1 yang bertugas memberi
sifat pada suatu Class/komponen Class :
 final, static, abstract, synchronized,

native, transient, dan volatile.


 Secara Bahasa misal:
 small white home
 Rumah yang kecil dan berwarna

putih memberi sifat pada rumah.


final
 Classyang diberi keyword final, artinya
Class tersebut sudah tidak dapat
menurunkan Class lain. Dengan kata lain
sudah tidak dapat di extends Class lain.
 method() yang diberi keyword final tidak
dapat di override Class lain.
 attributeyang diberi keyword final maka
isinya tidak dapat diubah selama waktu
running.
static memberi sifat pada attribute dan method()

 Attribute dan method() ada dua jenis, yaitu milik Class atau milik
objek.
 Attribute atau method() yang tidak diberi keyword static ini adalah
non static, artinya milik objek dan diakses hanya melalui objeknya.
 Attribute atau method() yang diberi keyword static artinya milik
Class, sehingga diakses melalui Class nya tersebut, semua objek
dalam Class tersebut memiliki sifat yang sama.
 Method() yang static tidak boleh di override dan attribute yang static
boleh tidak diinisialisasi oleh programmer, namun akan diberi nilai
default oleh JVM.

 Sehingga method() yang non static tidak dapat memanggil attribute


atau method() yang static.

 Contoh panggil method() standard println(): System.out.println();


Abstract (untuk class dan method())
 Class yang diberi sifat abstract artinya Class tsb
murni tanpa objek dan tidak boleh memiiki objek,
tidak boleh diinstansiasi.
 Method yang abstract di dalam suatu Class harus
disempurnakan oleh Class turunannya melalui
override.
 Class yang abstract biasanya adalah root dari Class-
class lain dalam struktur Class.
 Konsekuensi penggunaan sifat yg abstract:
 1. Tidak boleh memiliki constructor yg abstract.
 2. Tidak boleh memiliki tambahan sifat static.
 3. Tidak boleh memiliki tambahan sifat private.
Synchronized (khusus modifier method)

 Pada lingkungan multithread,


dimungkinkan lebih dari satu jalur
eksekusi yang berjalan dalam project
yang sama, namun harus diatur bahwa
dalam selang waktu tertentu hanya ada
satu jalur eksekusi yang diijinkan di
method yang synchronized (eksekusi
dilakukan secara mutual ekslusive).
native (khusus modifier method)
 Keyword modifier1 ini untuk mengakses
method (procedure atau pun function) yang
ditulis dalam bahasa C++.

 Seperti method() yang abstract, method()


yang bersifat native hanya berupa prototype,
implementasi method() yang bersifat native
ini berada di file external namun dalam folder
yang sama.
transient (khusus modifier attribute)
 Dalam OOP ada konsep serialisasi yaitu
kemampuan untuk mentransformasikan objek
menjadi suatu stream, sehingga objek dapat
ditransfer dari suatu aplikasi ke aplikasi
lainnya. Prinsip ini digunakan dalam aplikasi
client-server.
 Salah satu ketentuan serialisasi adalah saat
objek itu sedang ditransformasikan menjadi
stream, tidak boleh ada perubahan nilai
attribute suatu objek, namun bila suatu
attribute bersifat transient artinya boleh
berubah.
volatile (khusus modifier attribute)

 Dalam manajemen thread, nilai suatu


attribute yang sering diakses thread, dapat
disimpan menjadi cache value, sehingga
tidak perlu selalu merujuk ke lokasi memori
aslinya.
 Artinya attribute tersebut bersifat volatile,
karena nilainya rentan berubah bila diakses
oleh lebih dari satu thread.
Keyword Modifier3
 Modifier3 digunakan apabila suatu Class atau Interface
memanfaatkan (extends) Class lain atau
mengimplementasikan (implements) Interface lain.

 Cara memanfaatkan Class atau Interface lain:


 1. Dengan instansiasi objek dari Class lain
 2. Dengan extends Class lain
 3. Dengan implements Interface lain
 4. Class lain menjadi tipe data attribute
pada Class yang memanfaatkan.
 5. Class lain menjadi tipe data parameter
pada Class yang memanfaatkan.
6. Class lain menjadi tipe data return value
pada Class yang memanfaatkan.
extends
 Bila terjadi pewarisan, Class yang mewariskan
method() dan attributenya disebut super Class,
sedangkan yang diwariskan disebut subclass.

 Class yang memiliki modifier2 extends artinya


subclass dari suatu super class.

import namaPackage.BidangDatar2D;
public class PersegiPanjang extends BidangDatar {

}
implements
 Class yang memiliki modifier2 implements artinya class tersebut
mengimplementasikan satu atau lebih interface. Bila yang
diimplementasikan lebih dari satu interfce, maka digunakan tanda
koma di antara nama-nama interface tersebut.
[modifier1] class Robot implements Manusia, Mesin {
 berpikir() {……?}
 menari() {……?}
 bekerjatanpakenallelah() {…?}
}
interface Manusia {
String berpikir(int x);
menari();
}
interface Mesin {
String bekerjatanpakenallelah(int x);
}
Catatan
 BilaClass yang memanfaatkan dan
menggunakan Class lain, tidak berada
dalam satu package/directory/folder
dengan Class atau Interface yang
dimanfaatkan,
 maka Class yang

memanfaatkan/menggunakan harus
mengimport Class atau Interface yang
dimanfaatkan/digunakan.
attribute
 Apa yang dapat diinformasikan mengenai identitas atau ciri khas atau kondisi khas seluruh/sebagian objek dalam sebuah Class.

 Deklarasi attribute diletakkan di dalam classbody namun di luar/di atas method().

 Bentuk umum deklarasi attribute:


 [modifier1] tipedata namaVariabel;
 [public] [static] final tipedata NAMAKONSTANTA = literal;

 Contoh:
 public class Lingkaran {
 public static final double PI = 3.14159265359;
 public float x, y, luasLingkaran; r = 5;
 public double getLuiasLingkaran() {
 luasLingkaran = PI*r*r;
 return luasLingkaran;
 }

 }
 public class Tabung extends Lingkaran (
 public double luastabung = 0;
 public doubletinggi = 0;
 //public float r = 0;

 public double hitungLuasTabung() {
 Lingkaran jj = new Lingkaran();
 //luasTabung = Lingkaran.PI*jj.r*jj.r*t;
 luasTabung = super.luasLingkaran()*t;
 }
 }
method()

 Apa saja yang dapat dilakukan atau dialami sebagian/semua objek di


dalam sebuah class, atau pekerjaan yang khas yang menjadi perilaku
semua objek dalam suatu Class.
 Jika suatu method() bersifat static berarti dapat dilakukan oleh semua
objek dalam Class tersebut.
 Method diletakkan dalam classbody, sebaiknya tidak diletakkan dalam
method lain.
 Nama method() umumnya berupa pasangan kata verb-noun, atau verb
saja. Misal: float getBalance(), doCalculation(), setCustomerName(),
hitungIPK(), display().
 Ada dua kelompok method() yaitu standard dan non standard.
 Method yang standard dibuat bersamaan dengan class standard oleh
vendor java. Misal: setter() dan getter().
Method setter() untuk memberi literal pada sekumpulan attribute.
Method getter() untuk mengambil informasi pada sekumpulan attribute.
 Method() yang non standard dibuat sendiri oleh programmer.
Template/Bentuk Umum method
 [modifier1] tipeReturnValue namaMethod([tipe] [parameter]) [throws
namaClassEksepsi] {
 methodBody;
 }

 abstract [tipeReturnValue] namaMethod([tipe] [parameter]);

 class MahlukHidup {
 abstract void makan();
}
 class Manusia extends MahlukHidup {
 makan() {
 System.out.println(“cuci tangan dahulu, berdo’a, menggunakan tangan kanan”);
 }
 }

 [modifier1] [tipeReturnValue] main(String args) {


 methodBody;
 }

 Modifier1 boleh lebih dari satu (dipisah oleh spasi).


 Pasangan tipe dan parameter juga boleh lebih dari satu (dipisah oleh koma).
Lima cara memanggil/mengakses
suatu attribute/method() milik class lain:
1. namaObjek.namaMethod([argumen]);
2. namaObjek.namaAttribute;
3. namaClass.namaMethod([argumen]);
4. namaClass.namaAttribute;

5. super.namaMethod([argumen]);
6. super.namaAttribute;

7. this.namaMethod([argumen]);
8. this.namaAtribute;

9. namaMethod([argumen]);
10. namaAttribute;
Tidak semua cara akses
dapat dilakukan

 Komponen Class yg juga disebut


“member” yaitu Class itu sendiri,
attribute, constructor(), method(),
dan inner Class dapat
diakses/dipanggil method() lain,
dengan salah-satu dari format
sebagai berikut:
Aturan Mengakses Member Class lain

method() yang mengakses


method() yang diakses
misal main()

Static:
Static atau Non static
Menggunakan class

Non static:
Static
Menggunakan objek

Non static: Non static:


Menggunakan objek Di luar class yg diakses dan di luar sub class
Menggunakan super Di sub class
Menggunakan this/langsung Di dalam class yg sama
Var-Arg
 Argument adalah literal yang dimasukkan ke mathod()
atau constructor() melalui parameter.
 Parameter adalah tempat untuk menampung argument
tersebut.
 Var-Arg digunakan sebagai parameter suatu method()
ataupun constructor() namun boleh dimasuki argument
dengan kuantitas yang bervariasi.
 Batasan-batasan pengunaan Var-Arg:
 1. Hanya boleh digunakan 1x dalam 1 method().
 2. Jika dicampur dengan parameter lain, maka hanya
 boleh digunakan pada urutan terakhir dalam
 daftar parameter.
 3. Tidak boleh digunakan sebagai tipe suatu variabel.
Contoh penggunaan argument dan parameter
 public void setData(String nama, String alamat) {
 …
 }

 Pemanggilan method() tersebut dengan cara:


 setData(”Anin”,”Yogyakarta”);

 Contoh di atas adalah suatu method() yang memiliki


dua buah parameter yaitu nama dan alamat yang
masing-masing bertipe String.
 Parameter nama dan alamat untuk menerima argument
”Anin” dan ”Yogyakarta”.
Aturan-aturan Penggunaan Var-Arg

1. Tipe Var-Arg sama dengan variabel biasa, boleh


berupa tipe apa saja, baik tipe data primitif,
class, maupun array.
2. Format sintaks harus benar, variabel yang
merupakan var-arg wajib memakai tanda ”…”
tepat di belakang tipe parameternya.
3. Penggunaan var-arg boleh dicampur dengan
paramter yang lain, ditempatkan paling belakang.

Contoh:
setData(String… x);
setArray(String[]… y);
namaMethod(int jumlah, String… z);
setTranskripNilai(int nim, String nama, int… nilai);
setTranskripNilai(int… nilai, int nim, String nama); //salah
setTranskripNilai(int… nim, int nilai…); //salah
contoh seter() dan geter()
public class Cat { public class TesCat{
public static void main(String[] args) {
private String name;
Cat jahil = new Cat();
private int weight; jahil.setWeight(9);
private int age; System.out.println(“Cat’s weight is = ”
+jahil.getWeight());
public void setWeight(int newWeight){ }
weight = newWeight; }
}
public void setAge(int newAge){
age = newAge;
}
public int getWeight() {
return weight;
}
}

setWeight() adalah method yg main() adalah method yg


dipanggil method main(). memanggil method setWeigth()
Overloading terhadap method()
 Overloading adalah membuat dua/lebih method()
dengan nama yg sama dalam class yang sama, namun
harus dengan memodifikasi deklarasi parameter.

 Method-method yg overloading wajib berada di dalam


class yg sama atau salah-satunya di dalam superclass
dan yg lain di dalam subclass.

 Overloading di OOP berbeda dengan overloading


terhadap operator di C++.

 Interpreter/compiler mampu memilih method() mana


yang dieksekusi dengan mengenali tipe parameter yg
dilewatkan ke mathod() dan mengenali return valuenya.
Contoh Overloading
 class ContohOverloading {
 pangkat(int a, int b) {

 {
 pangkat(int a, float b) {

 {
 pangkat(float a, float b) {

 {
 }
Keyword return
 Keyword ini digunakan untuk keluar dari suatu blok method().

 Baris-baris kode program setelah keyword ini yang masih di dalam


blok suatu mehod() tersebut akan diabaikan, kemudian eksekusi
dilanjutkan ke baris kode setelah penutup blok method() tersebut.

 Contoh cuplikan kode program:


 int abs(int x) {
 if (x <= 0) {
 return x;
 else {
 return (-x);
 x *= 10;
 }
 }
 Catatan: coba keyword break dan continue.
constructor()
Pada prinsipnya:
Constructor() adalah method() yang tergolong setter(()
yang dieksekusi saat instansiasi objek dan
inisialisasi yang diperlukan. Secara implisit adalah
instant dari class nya.
Nama constructor() harus sama dgn nama class-nya,
dan boleh diberi modifier akses (public, protected,
default, private) sebagaimana method() biasa.

[modifier1] NamaConstructor([type namaParameter]) {


constructorBody;
}
Deklarasi Objek
 Objek adalah instansiasi (perwujudan) suatu class.
Suatu objek terlebih dahulu harus dideklarasikan,
setelah itu dibuat/diujudkan, setelah itu objek
boleh digunakan, dan terakhir dihancurkan.

 Deklarasi dan instansiasi objek:


 Mahasiswa m; Mahasiswa

 Ditentukan vatiabel m dengan tipe Mahasiswa,
saat deklarasi, m masih berupa pointer namun
belum menunjuk ke suatu lokasi memori.
Instansiasi Objek

m = new Mahasiswa();

m Mahasiswa

-var1 : int
-var2 : String

+method1: int
+method2: void
Empat cara coding untuk
Deklarasi dan Instansiasi Objek

 Cara1:
 NamaClass namaObjek; //deklarasi
 namaObjek = new NamaConstructor([parameter]); //instansiasi
 Statement deklarasi dan instansiasi suatu objek boleh dipisah, bahkan boleh
ditempatkan di class yang berbeda.

 Cara2:
 NamaClass namaObjek = new NamaConstructor([parameter]);

 Cara 3:
 new NamaConstructor([parameter]);
 Cara ini objek diinstansiasi tanpa nama, tujuannya hanya untuk

memanggil constructor()/method().

 Cara4:
 new NamaConstructor([parameter]).namaMethod();
 Cara ini objek diinstansiasi tanpa nama dan langsung digunakan untuk
memanggil suatu method().
Penggunaan dan Penghancuran Objek
 Objek digunakan untuk memanggil suatu constructor
dan menginisialisasinya.

 Objek juga digunakan untuk memanggil suatu


method([daftarNilaiParameter]) yang non static.

 Teknik yang digunakan java untuk menangani objek


yang sudah tidak diperlukan lagi disebut garbage
collection.

 Objek yang sudah tidak diperlukan lagi akan terdeteksi


oleh JVM, kemudian secara otomatis dihancurkan oleh
garbage collector (bukan oleh programmer).
Keyword this
sebagai Objek standard

 Keyword this adalah objek standard milik class itu


sendiri, dan this() adalah constructor standard class itu
sendiri.
 this langsung digunakan tanpa didahului proses
instansiasi.
 Salah satu penggunaan objek standard ini bila ada
attribute non static dari suatu class akan diakses oleh
method() yang berada dalam class yang sama dengan
atrribute tersebut, dan nama attribute tersebut sama
dengan nama parameter yang dilewatkan dalam
method() yang mengakses.
 this juga digunakan untuk memanggil method() non
static pada class yang sama.
Inner Class
 Dalam OOP dibolehkan suatu class disisipkan ke
dalam class lainnya atau ke method main().
 Class yang disisipkan ini disebut sebagai class Inner.
 Class Inner yang tidak diberi nama disebut

Anonymous class.
 Class sebagai tempat untuk disisipi disebut class

luar.
 Class yang disisipkan ke method main() disebut juga

local class.

 Jadi ada 3 jenis class Inner, yaitu nested class, local


class, anonymous class.
Ketentuan class Inner
1. Class Luar yang mengandung class Inner, bila
dikompilasi akan menghasilkan dua file *.class, yaitu
Luar.class dan Luar$Inner.class.
2. Class Inner boleh diberi modifier akses public, atau
protected, atau default, ataupun private.
3. Untuk mengakses objek this pada class luar
digunakan format: NamaClassLuar.this.
4. Class luar ikut bertanggung-jawab dalam instansiasi objek pada
class inner yang non-static.
Contoh: misal objek class Luar adalah a. dan objek class Inner adalah b,
 maka sintaks instansiasi yang benar adalah:
 Luar a = new Luar();
 Luar.Inner b = a.new Inner();
5. Jika class Inner bersifat static, maka objek milik class Inner tsb boleh
dibuat sendiri tanpa melibatkan class Luarnya.
Inner b = new Inner();
6. Class Inner tidak boleh mengakses attribute atau method() non static
milik class Luar nya.

You might also like