0% menganggap dokumen ini bermanfaat (0 suara)
115 tayangan34 halaman

Encapsulation, Access Modifier, Package, Importing

Dokumen tersebut membahas tentang encapsulation, access modifier, package dan import di Java. Secara ringkas, dokumen menjelaskan tentang pengaturan akses di level kelas dan level member, serta penggunaan package dan import untuk mengelompokkan dan mengakses kelas-kelas.

Diunggah oleh

Rahmat Nur Effendi
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
115 tayangan34 halaman

Encapsulation, Access Modifier, Package, Importing

Dokumen tersebut membahas tentang encapsulation, access modifier, package dan import di Java. Secara ringkas, dokumen menjelaskan tentang pengaturan akses di level kelas dan level member, serta penggunaan package dan import untuk mengelompokkan dan mengakses kelas-kelas.

Diunggah oleh

Rahmat Nur Effendi
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 34

ENCAPSULATION,

ACCESS MODIFIER,
PACKAGE, IMPORTING
DHANY INDRA GUNAWAN
ACCESS MODIFIER

• Pengaturan akses terbagi menjadi 2 level,


 Di level kelas
• Pengaturan akses di level kelas terdiri dari 2 cara yaitu
1. Tanpa menuliskan keyword apa pun (default/package-private)
2. Menuliskan keyword public
 Di level member
• Pengaturan akses di level member terdiri dari 4 cara yaitu :
1. Tanpa menulis keyword apa pun (default/package-private)
2. Menuliskan keyword public
3. Menuliskan keyword private
4. Menuliskan keyword protected
LANJUTAN

• Pengaturan akses di level kelas hanya memiliki 2 kemungkinan


yaitu :
 Default/Package-Private :
• Jika sebuah class dibuat dengan menggunakan akses ini maka class tersebut hanya akan dikenal di
class-class pada package yang sama saja.
 Public
• Jika sebuah class dibuat dengan menggunakan akses public maka class tersebut dapat dikenal di
mana pun, baik dari dalam package yang sama atau dari luar package (world).
MODIFIER

• Modifier adalah suatu kata kunci yang diberikan untuk mendefinisikanmakna dari suatu
variable, method, atau class. Terdapat dua jenis modifier pada java yaitu Access Control
Modifier dan Non Access Control Modifier
• Access Control Modifier
• Access Control Modifier merupakan visibilitas yang ada dalam suatuobyek. Terdapat 4
tipe level akses, antara lain :
• Akses Default
• Akses Default adalah access control modifier yang tidak ada pendeklarasian suatu
modifier sehingga variable, method, atau class dapatlangsung diakses didalam package
yang sama
CONTOH

public class manusia { • Penjelasan


String nama = "dhany";
double ipk = 3.5; • Tidak ada Access Control Modifier manapun
yang digunakan pada classManusia, maka dari itu
public static void main (String[] args){
// ini mainclas dapat dikatakan bahwa contoh diatas memiliki
AccessControl Modifier berjenis Akses Default.
manusia man = new manusia();
Karenanya, variabel pada classManusia dapat
System.out.println("Tampilkan Nama : " + langsung digunakan pada Mainclass
man.nama);
System.out.println("Tampilkan IPK : " + man.ipk); Hasil kode program:
}
Tampilkan Nama : dhany
}
Tampilkan IPK : 3.5
PENGATURAN AKSES DI LEVEL KELAS

• Akses : Default/Package –Private


// Nama File : package1/Titik.java
package package1;
class Titik {
public Titik(){
System.out.println("Ti
tik di package 1");
} Kedua kelas berada pada
}
// Nama File : package1/Tester.java package package1; package yang sama
class Tester {
public static void main(String[] args) { Titik t1=new Titik();
}
}
PENGATURAN AKSES DI LEVEL KELAS
•>>Akses : Defaul t/Pack age -Private
• // Nama File : package1/Titik.java
package package1;
• class Titik {
• public Titik(){
• System.out.println("T
itik di package 1");
• }
• } Class Titik berada di package
// Nama File : Tester.java
bernama package1, Class
import package1.Titik; Tester tidak memiliki package
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
PENGATURAN AKSES DI LEVEL KELAS

>>Akses : public
// Nama File : package1/Titik.java
package package1;
public class Titik {
public Titik(){
System.out.println(
"Titik di package
1");
}
}
// Nama File : package1/Tester.java package yang sama
package package1; Kedua kelas berada pada
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
PENGATURAN AKSES DI LEVEL KELAS

} Class Titik berada di package


bernama package1, Class
// Nama File : Tester.java
import package1.Titik; Tester tidak memiliki package
class Tester {
public static void main(String[] args) {
Titik t1=new Titik();
}
}
PENGATURAN AKSES DI LEVEL MEMBER

• Pengaturan akses di level member memiliki 4 kemungkinan yaitu :


 Public
• Jika member memiliki access modifier ini, maka member ini bisa diakses dari mana saja
(world) yaitu dari class sendiri atau dari class-class lain (walaupun berada di package yang
berbeda). Member ini dikenal di subclassnya
 Protected
• Jika member memiliki access modifier ini, maka member ini bisa diakses dari class sendiri atau
dari class-class lain yang se-package. Member ini bisa diakses di subclassnya (class turunannya)
 Default/Package-Private :
• Jika member memiliki access modifier ini, maka member ini hanya bisa diakses dari class sendiri
dan dari class-class pada package yang sama. Member ini
• tidak dikenal di subclassnya (class turunan).
 Private
• Jika member memiliki access modifier ini, maka member ini bisa diakses dari class sendiri saja.
Member ini tidak bisa diakses dari class lain walaupun se- package ataupun dari subclassnya
(class turunannya)
PENGATURAN AKSES DI LEVEL MEMBER

Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y T
tanpa modifier Y Y T T
private Y T T T

Keterangan :
Y : Bisa diakses
T : Tidak bisa
diakses
PENGATURAN AKSES DI LEVEL MEMBER

>>Visibilitas member-member class Adari class lain.


Modifier Member A A1 B A2 C
A
public Y Y Y Y Y
protected Y Y Y Y T
tanpa modifier Y Y Y T T
private Y T T T T
NON ACCESS CONTROL MODIFIER

• Modifier yang mengontrol level akses pada suatu method, class danvariabel. Non Access
Control Modifier memiliki 3 level akses yaitu:
• STATIC
• Salah satu jenis modifier di Java yang digunakan agar suatu atribut ataupun method dapat
diakses oleh kelas atau objek tanpa harus melakukaninstansiasi terhadap kelas tersebut.
• FINAL
• Proses finalisasi pada method, class dan variabel agar nilai didalamnyatidak dapat berubah
• ABSTRACT
• Pendeklarasian terhadap suatu class dan method yang bersifat abstract.
LANJUTAN

Alasannya adalah
Membatasi hak akses. Ini dilakukan agar sebuah member
tidak sembarangan dibaca atau diisi
Menyembunyikan informasi. Pengguna class tidak harus tahu apa
yang ada/terjadi di dalam class (Information Hiding)
PACKAGE

Package adalah sekumpulan class/inter face/enumerasi yang berelasi.


Package menyediakan mekanisme untuk mengatur class dan inter face dalam
jumlah banyak dan menghindari konflik pada penamaan
2 buah class yang mempunyai nama yang sama (tetapi isinya beda) dapat
digunakan sekaligus jika berada di masing-
masing package.
Jika anda membuat class tanpa dimasukkan ke dalam package, maka
secara default akan dianggap sebagai
unnamed package (package tanpa nama). Package tanpa nama tidak bisa
diimpor t oleh class dari package yang
mempunyai nama.
MEMBUAT PACKAGE

Jika kita ingin sebuah class berada dalam suatu package, maka didalam file classnya
tambahkan baris berikut
package <namapackage >
Penamaan package sebaiknya menggunakan huruf kecil semua.
Nama package harus disesuaikan dengan nama folder tempat menyimpan class tersebut.
package mylib ; class Titik {
double x; double y;
}
ATURAN PENAMAAN PACKAGE

Nama package sebaiknya ditulis dengan huruf kecil.


Nama package harus sama dengan nama folder.
Suatu file kode sumber hanya boleh menuliskan 1 statement package.
Perusahaan besar pengembang software biasanya
memberikan nama class sesuai dengan nama domainnya.
Contoh :
 Facebook : package com.facebook.android
 Twitter : package com.twitter.interop
 Google maps : package com.google.android.maps
IMPORT PACKAGE

Import package berarti anda ingin menggunakan member/isi dari sebuah package.
Impor t suatu package dilakukan dengan keyword impor t. import

n a m a p a c k a g e . n a m a c l a s s ; // import 1 class atau import


namapackage.*; // import seluruh isi package

>>Contoh :
import mylib.Titik;

Atau
import
>>Secara mylib.*
default, jika kita tidak mengimpor t satu package -pun maka sebenarnya anda
mengimport package java.lang.* yang contoh class yang ada di dalamnya adalah class String
dan Math.
Inilah yang membuat anda tidak usah import package apa pun ketika akan menggunakan
class String atau Math.
IMPORT PACKAGE

Jika aplikasi yang kita buat menggunakan 2 buah class yang


namanya sama tetapi berpada package yang berbeda maka
sebagai pembeda anda harus menuliskan nama packagenya.
 Contoh berikut akan menampilkan cara pembuatan 2 objek yang
mempunyai nama class yang sama.

package1.Titik t1=new package1.Titik();


package2.Titik t2=new package2.Titik();
CONTOH KASUS ACCESSMODIFIER

• Buatlah sebuah class bernama Nilai yang akan menampung nilai Quis, UTS, UAS.
Nilai yang dapat diterima adalah antara 0 sampai 100. Setiap nilai dapat diubah
nilainya. Class ini harus dapat diakses dari class mana pun.
public class nilai {
public double Quis;
public double UTS;
public double UAS;
public double getNA(){
return 0.20*Quis+0.30*UTS+0.5*UAS;
}
}
CONTOH PEMANGGILAN CLASS NILAI

public class nilaitester { •Jika aplikasi di atas dan disamping dieksekusi


public static void main (String [] args){ maka menghasilkan nilai akhir sebesar 117.0.
Apakah ini legal???????. Hal ini terjadi karena
nilai n = new nilai(); atribut UAS bersifat public sehingga bisa diisi
n.Quis = 90; secara bebas dari luas class.
n.UTS = 80;
n.UAS = 150; •Solusinya adalah dengan membuat atribut Quis,
System.out.println(" Na ; "+n.getNA()); UTS dan UAS tidak bisa diisi secara langsung
(misalnya dengan private atau protected.
}
}
LANJUTAN

public class nilai { •Apakah Cukup?


private double Quis;
private double UTS; • Tidak, dengan hanya mengubah public menjadi private,
private double UAS; maka pengisian nilai Quis, UTS dan UAS tidak bisa
public double getNA(){ dilakukan. Solusinya adalah dengan METHOD SETTER
return DAN GETTER
0.20*Quis+0.30*UTS+0.5*UAS;
}
}
CONTOH KASUS ACCESS MODIFIER
(METHOD SETTER DAN GETTER)
• Karena atribut Quis, UTS, dan UAS mempunyai akses private, maka class harus menyediakan
suatu cara agar bisa mengakses (mengisi/membaca) nilai atribut tersebut.
•Solusinya adalah method setter dan getter.
 Method getter adalah method yang digunakan sebagai perantara untuk mengambil nilai atribut
yang tidak bisa diakses (karena private atau protected). Method getter biasanya berupa function
yang mereturnkan tipe data sesuai atribut yang diambil.
 Method setter adalah method yang digunakan sebagai perantara untuk mengisi nilai atribut
yang tidak bisa diakses (karena private atau protected). Method setter biasanya berupa
procedure (void function) yang mempunyai parameter input yang bertipe data sama dengan
tipe data atributnya
•Method setter dan getter seharusnya mempunyai access modifier public ( karena harus bisa
diakses oleh semua class)
public class nilai {
CONTOH private double Quis;
private double UTS;
private double UAS;
public void setQuis(double x){
Quis = x;
}
public void setUTS (double x){
UTS = x;
}
public void setUAS (double x){
UAS = x;
}

public double getQuis(){


return Quis;
}
public double getUTS(){
return UTS;
}
public double getUAS(){
return UAS;
}
public double getNA(){
return 0.20*Quis+0.30*UTS+0.5*UAS;
}
}
CONTOH NILAI TESTER

public class nilaitester { • Contoh pemanggilan class Nilai berubah, karena


public static void main (String [] args){
nilai n = new nilai(); pengisian atribut dilakukan melalui function
n.setQuis(90);
n.setUTS(70);
n.setUAS(150); • Beres? Belum, ternyata walau pun atribut telah diberi
System.out.println(" Na ; "+n.getNA());
} akses private, ternyata nilai atribut bisa diberi nilai
} yang tidak seharusnya. Padahal nilai hanya boleh
antara 0 s.d 100.
SOLUSINYA public class nilai {
private double Quis;
private double UTS;
private double UAS;
•Solusinya adalah dengan membuat validasi public void setQuis(double x){
pada method getter. Nilai atribut hanya akan if (x>=0 && x<= 100)
berubah jika nilai yang diinput valid. Quis = x;
•Perubahan method setter. }
public void setUTS (double x){
•Contoh pemanggilan class Nilai setelah ada
if (x>=0 && x<= 100)
validasi di method setter UTS = x;
}
public void setUAS (double x){
if (x>=0 && x<= 100)
UAS = x;
}
CONTOHNYA

public class nilaitester { • Pada perintah n.setUAS(150), pengisian UAS menjadi


public static void main (String [] args){
nilai n = new nilai(); 150 tidak dilakukan karena nilainya tidak valid.
n.setQuis(90); • Jika dieksekusi akan menghasilkan NA : 39.0 karena
n.setUTS(70);
n.setUAS(150); atribut UAS bernilai 0
System.out.println(" Na ; "+n.getNA());
}
}
Hasil program
Na ; 39.0
METHOD

• Method adalah implementasi operasi yang bisa dilakukan olehClass dan Objek. Dengan
kata lain method dapat dikatakan sebagai polatingkah atau prilaku yang dimiliki oleh
objek. Misalnya pada objek Manusia,Manusia memiliki prilaku diantaranya berjalan,
berbicara, dll.
• Dalam java, terdapat 2 jenis method :
• Setter
• Getter
SETTER

• Setter adalah method yang digunakan untuk memberikan public class manusia {
String nama;
nilai pada suatuattribute, object, dll. Method setter ini String umur;
tidak memiliki pengembalian nilai,cirinya method ini String Jenis_kelamin;
adalah berisi kata void pada awal penulisan String alamat;
method.Terdapat juga kata kunci this yang berfungsi public void setnama(String nama){
untuk menunjukan suatumember dalam classnya sendiri. this.nama = nama;
Contoh : }
public void setumur(String umur){
Pada contoh tersebut, variable boleh ditulis secara global (tidak this.umur = umur;
harusdidalam method). Method setter memiliki parameter dalam }
constructornya,sebagai acuan value yang boleh dimasukan. Pada }
contoh diatas ‘(Stringnama)’ dan ‘(String umur)’ menggunakan
tipe data String
public class manusia {
String nama;
GETTER String umur;
String Jenis_kelamin;
String alamat;

• Getter adalah pengembalian nilai dari suatu objek atau attribute public void setnama(String nama){
this.nama = nama;
yangsudah berisi nilai. Method getter menjadikan dirinya
}
sebagai nilai dari sebuahobjek / tipe data. Untuk public void setumur(String umur){
menjadikannya sebagai value, maka tipe method ini tidak boleh this.umur = umur;
menggunakan‘void’ melainkan harus mempunyai type data }
tertentu. Contoh
public String getnama(){
return nama;
}
• Pada contoh tersebut, method getter mempunyai type data public String getumur(){
String, dia akanmengambil nilai dari suatu attribute / return umur;
objek untuk dijadikan nilai dirinya sendiri. Pada kasus ini, }
method getnama() mengambil nilai dari attributeglobal‘nama’ }
sebagai nilai method itu sendiri
ENKAPSULASI

• Enkapsulasi (encapsulation) merupakan cara untuk melindungi property (atribut) /method


tertentu dari sebuah kelas agar tidak sembarangan diakses dan dimodifikasi oleh suatu
bagian program. Cara untuk melindungi datanya itu dengan menggunakan access
modifiers (hak akses). Ada 4hak akses yang tersedia, yaitu default, public, protected,
private.
• Untuk lebih jelasnya, silahkan lihat pada table berikut ini :
TABLE

No Modifier Pada class dan interface Pada method dan variabel


1 Default (tidak ada modifier) Dapat diakses oleh yang sepaket Diwarisi oleh subkelas dipaket yang sama,
dapat diakses oleh method- method yang
sepaket
2 Public Dapat diakses dimanapun Diwarisi oleh subkelasnya, dapat diakses
dimanapun
3 Protected Tidak bisa diterapkan Diwarisi oleh subkelasnya, dapat diakses oleh
method-method yang sepaket
4 private Tidak bisa diterapkan Tidak dapat dikases dimanapun kecuali oleh
method-method yang ada dalam kelas itu
sendiri
LANJUTAN

• Encapsulation merupakan suatu cara bagaimana menyembunyikan sedemikian rupa suatu


proses kedalam system, hal ini berguna untuk menghindari interferensi dari luar
system. Sebagai contoh, pada saat seseorang menekan tombol pada LIFT, apakah orang
tersebut mengetahui proses yang terjadi didalam mesin LIFT? Maka jawabannya tidak,
dan sebagai pengguna LIFTpun tidak mau dipusingkan dengan proses yang terjadi. Maka
hal tersebut dapat dikatakan proses menyederhanakan system.
• Pada encapsulation, segala jenis pengaksesan property class, harus melalui method, inilah
cara kerja encapsulation, sehingga proses yang mencegah class variable-class variable
yang sedang dibaca, dimodifikasi oleh class lainnya
CONTOH :
• Sebelum Encapsulation :

Manusia
+nama : String
-hobi :String
+ manusia (String nama, String hobi)
• Sesudah Encapsulation :
Manusia
+nama : String
-hobi :String
+ manusia (String nama, String hobi)
+ setnama (nama : String)
+ sethobi (hobi : String)
+ getnama () : String
+ gethobi () : String

Anda mungkin juga menyukai