Anda di halaman 1dari 19

BAB 1

Pembuatan Class

A. Pengenalan Class
Sebetulnya, sejak awal praktek pembuatan program, Anda selalu
memanfaatkan sebuah class dalam setiap programnya. Class tersebut merupakan class
utama yang digunakan untuk memulai program.
Class adalah template untuk pembuatan obyek.
• Class memiliki anggota :
–Atribut
–Method

1. Mendefinisikan Class Anda dan Pendeklarasian Class


Sebelum menulis class Anda, pertama pertimbangkan dimana Anda akan
menggunakan class dan bagaimana class tersebut akan digunakan. Pertimbangkan
pula nama yang tepat dan tuliskan seluruh informasi atau properti yang ingin Anda isi
pada class. Jangan sampai terlupa untuk menuliskan secara urut method yang akan
Anda gunakan dalam class.
Dalam pendefinisian class, dituliskan :

<modifier> class <name> {


<attributeDeclaration>*
<constructorDeclaration>*
<methodDeclaration>*
}

dimana : <modifier> adalah sebuah access modifier, yang dapat dikombinasikan


dengan tipe modifier lain.

Pada bagian ini, kita akan membuat sebuah class yang berisi record dari siswa. Jika
kita
telah mengidentifikasikan tujuan dari pembuatan class, maka dapat dilakukan
pemberian nama yang sesuai. Nama yang tepat pada class ini adalah
StudentRecord.

Untuk mendefinisikan class, kita tuliskan :

public class StudentRecord


{
//area penulisan kode selanjutnya
}
dimana,
Public - Class ini dapat diakses dari luar package
Class - Keyword yang digunakan untuk pembuatan class dalam Java
StudentRecord - Identifier yang menjelaskan class
Deklarasi class dapat dilakukan dengan sintak :
<modifier> class <namaclass> {
<class body>
Contoh sederhana dari deklarasi sebuah class:
Contoh 1:

Output:

Contoh 2:

Output:
2. Deklarasi Atribut

Dalam pendeklarasian atribut, kita tuliskan :


<modifier> <type> <name> [= <default_value>];
Langkah selanjutnya adalah mengurutkan atribut yang akan diisikan pada class.
Untuk setiap informasi, urutkan juga tipe data yang yang tepat untuk digunakan.
Contohnya, Anda tidak mungkin menginginkan untuk menggunakan tipe data integer
untuk nama siswa, atau tipe data string pada nilai siswa.
Berikut ini adalah contoh informasi yang akan diisikan pada class StudentRecord :

name - String
address - String
age - Int
math grade - double
english grade - double
science grade - double
average grade - double
Anda dapat menambahkan informasi lain jika diperlukan.
Contoh:
Public class CricleClass{
Public static fibal double PI= .141592653658979323846;
Public double x,y,r;
//dan seterusnya
}

2.1 Instance Variable


Jika kita telah menuliskan seluruh atribut yang akan diisikan pada class,
selanjutnya kita akan menuliskannya pada kode. Jika kita menginginkan bahwa atribut
– atribut tersebut adalah unik untuk setiap object (dalam hal ini untuk setiap siswa),
maka kita harus mendeklarasikannya sebagai instance variable.
Deklarasi variabel disusun oleh tiga komponen:
 Tidak ada atau lebih dari satu modifier.
Public, private,Static, Final
 Tipe Data
Primitive, Rerence
 Nama variabel
Bentuk umum:
[modifier]<tipe_data><nama_varaibel>=[nilai_default];

Contoh:

Public double tinngi;


Private int berat =70;
Sebagai contoh :

Output:

2.2 Class Variable atau Static Variables


Disamping instance variable, kita juga dapat mendeklarasikan class variable
atau variabel yang dimiliki class sepenuhnya. Nilai pada variabel ini sama pada semua
object di class yang sama. Anggaplah kita menginginkan jumlah dari siswa yang
dimiliki dari seluruh class, kita dapat mendeklarasikan satu static variable yang akan
menampung nilai tersebut. Kita beri nama variabel tersebut dengan nama
studentCount.

Berikut penulisan static variable :


public class StudentRecord
{
//area deklarasi instance variables
private static int studentCount;
//area penulisan kode selanjutnya
}
Kita gunakan keyword : ’static’ untuk mendeklarasikan bahwa variabel tersebut adalah
static.
Maka keseluruhan kode yang dibuat terlihat sebagai berikut :

public class StudentRecord


{
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
private static int studentCount;
//area penulisan kode selanjutnya
}

3. Deklarasi Methods
Sebelum kita membahas method apa yang akan dipakai pada class, mari kita
perhatikan penulisan method secara umum.
Dalam pendeklarasian method, kita tuliskan :

<modifier> <returnType> <name>(<parameter>*) {


<statement>*
}
dimana,
<modifier> dapat menggunakan beberapa modifier yang berbeda
<returnType> dapat berupa seluruh tipe data, termasuk void
<name> identifier atas class
<parameter> ::= <tipe_parameter> <nama_parameter>[,]

3.1 Accessor Methods


Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang
object dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari class
sebagai private. Namun, ada kalanya dimana kita menginginkan object lain untuk
dapat mengakses data private. Dalam hal ini kita gunakan accessor methods.
Accessor Methods digunakan untuk membaca nilai variabel pada class, baik
berupa instance maupun static. Sebuah accessor method umumnya dimulai dengan
penulisan get<namaInstanceVariable>. Method ini juga mempunyai sebuah return
value. Sebagai contoh, kita ingin menggunakan accessor method untuk dapat
membaca nama, alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa.
Mari kita perhatikan salah satu contoh implementasi accessor method.

dimana,
public - Menjelaskan bahwa method tersebut dapat diakses dari object luar class
String - Tipe data return value dari method tersebut bertipe String
getName - Nama dari method
() - Menjelaskan bahwa method tidak memiliki parameter apapun
Pernyataan berikut,
return name;
dalam program kita menandakan akan ada pengembalian nilai dari nama instance
variable
ke pemanggilan method. Perhatikan bahwa return type dari method harus sama dengan
tipe data seperti data pada pernyataan return. Anda akan mendapatkan pesan
kesalahan
sebagai berikut bila tipe data yang digunakan tidak sama :

StudentRecord.java:14: incompatible types


found : int
required: java.lang.String
return age;
^
1 error

Contoh lain dari penggunaan accessor method adalah getAverage,

public class StudentRecord


{
private String name;
:
:
public double getAverage(){
double result = 0;
result = ( mathGrade+englishGrade+scienceGrade )/3;
return result;
}
}

Method getAverage() menghitung rata – rata dari 3 nilai siswa dan menghasilkan nilai
return value dengan nama result.
3.2 Mutator Methods
Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang
dapat kita lakukan adalah membuat method yang dapat memberi atau mengubah nilai
variable dalam class, baik itu berupa instance maupun static. Method semacam ini
disebut dengan mutator methods. Sebuah mutator method umumnya tertulis
set<namaInstanceVariabel>.

Mari kita perhatikan salah satu dari implementasi mutator method :

public class StudentRecord


{
private String name;
:
:
public void setName( String temp ){
name = temp;
}
}
dimana,
public - Menjelaskan bahwa method ini dapat dipanggil object luar class
void - Method ini tidak menghasilkan return value
setName - Nama dari method
(String temp) - Parameter yang akan digunakan pada method
Pernyataan berikut :
name = temp;
mengidentifikasi nilai dari temp sama dengan name dan mengubah data pada instance
variable name.
Perlu diingat bahwa mutator methods tidak menghasilkan return value. Namun berisi
beberapa argumen dari program yang akan digunakan oleh method.

3.3 Static Methods


Kita menggunakan static method untuk mengakses static variable studentCount.

public class StudentRecord


{
private static int studentCount;
public static int getStudentCount(){
return studentCount;
}}
dimana,
public - Menjelaskan bahwa method ini dapat diakses dari object luar class
static - Method ini adalah static dan pemanggilannya menggunakan
[namaclass].[namaMethod]. Sebagai contoh :
studentRecord.getStudentCount
Int - Tipe return dari method. Mengindikasikan method tersebut harus
mempunyai return value berupa integer
4. Access Modifiers
Pada saat membuat, mengatur properties dan class methods, kita ingin untuk
mengimplementasikan beberapa macam larangan untuk mengakses data. Sebagai
contoh, jika Anda ingin beberapa atribut hanya dapat diubah hanya dengan method
tertentu, tentu Anda ingin menyembunyikannya dari object lain pada class. Di JAVA,
implementasi tersebut disebut dengan access modifiers.
Terdapat 4 macam access modifiers di JAVA, yaitu :
public, private, protected dan default. 3 tipe akses pertama tertulis secara ekplisit pada
kode untuk mengindikasikan tipe akses, sedangkan yang keempat yang merupakan
tipe default, tidak diperlukan penulisan keyword atas tipe.

4.1 Akses Default (Package Accessibility)


Tipe ini mensyaratkan bahwa hanya class dalam package yang sama yang memiliki
hak akses terhadap variabel dan methods dalam class. Tidak terdapat keyword pada
tipe ini.
Sebagai contoh :
public class StudentRecord
{
//akses dasar terhadap variabel
int name;
//akses dasar terhadap metode
String getName(){
return name;
}
}
Pada contoh diatas, variabel nama dan method getName() dapat diakses dari object
lain selama object tersebut berada pada package yang sama dengan letak dari file
StudentRecord.

4.2 Akses Public


Tipe ini mengijinkan seluruh class member untuk diakses baik dari dalam dan luar
class. Object apapun yang memiliki interaksi pada class memiliki akses penuh
terhadap member.

dari tipe ini. Sebagai contoh :


public class StudentRecord
{
//akses dasar terhadap variabel
public int name;
//akses dasar terhadap metode
public String getName(){
return name;
}
}
Dalam contoh ini, variabel name dan method getName() dapat diakses dari object lain.
4.3 Akses Protected
Tipe ini hanya mengijinkan class member untuk diakses oleh method dalam class
tersebut
dan elemen – elemen subclass. Sebagai contoh :

public class StudentRecord


{
//akses pada variabel
protected int name;
//akses pada metode
protected String getName(){
return name;
}
}

Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh
method internal class dan subclass dari class StudentRecord. Definisi subclass akan
dibahas pada bab selanjutnya.

4.4 Akses Private


Tipe ini mengijinkan pengaksesan class hanya dapat diakses oleh class dimana tipe ini
dibuat. Sebagai contoh :

public class StudentRecord


{
//akses dasar terhadap variabel
private int name;
//akses dasar terhadap metode
private String getName(){
return name;
}
}

Pada contoh diatas, variabel name dan method getName() hanya dapat diakses oleh
method internal class tersebut.
BAB 2
Dasar-Dasar Pemograman OOP

A. Pengertian OOP

OOP adalah sebuah metodologi atau cara berpikir dalam melakukan pemrograman
dimana pendefinisian tipe data disertai dengan pendefinisian fungsi. Struktur data
yang seperti ini disebut dengan istilah object. Paradigma pemrograman OOP dapat
dilihat sebagai interaksi sebuah object dalam melakukan tugasnya.

Segelas teh tentunya memiliki berbagai spesifikasi seperti volume air, rasa, temperatur
dan sebagainya. Pada pemrograman, spesifikasi-spesifikasi tersebut merupakan
variabel yang dideklarasikan beserta tipe data. Pada OOP, sebuah object Teh juga
memiliki method berupa fungsi yang dapat dipanggil untuk merubah kelakuan atau
spesifikasi teh tersebut. Method minumTeh dapat dideklarasikan sebagai fungsi yang
dapat dipanggil untuk mengurangi nilai variabel Volume.

Di samping itu, sebuah object dapat memiliki relasi terhadap object lainnya. Sebagai
contoh, sebuah object dapat berupa keturunan dari object lain.

Object–Oriented Programming (OOP) adalah sebuah pendekatan untuk


pengembangan / development suatu software dimana dalam struktur software tersebut
didasarkan kepada interaksi object dalam penyelesaian suatu proses / tugas. Interaksi
tersebut mengambil form dari pesan-pesan dan mengirimkannya kembali antar object
tersebut. Object akan merespon pesan tersebut menjadi sebuah tindakan / action atau
metode. Jika kita mencoba melihat bagaimana tugas disekitar kita diselesaikan, kita
akan mengetahui bahwa kita berinteraksi dalam sebuah object–oriented world. Jika
akan bepergian kita pasti berinteraksi dengan object mobil. Sebagai sebuah object,
mobil berisi object-object lain yang berinteraksi untuk melakukan tugasnya membawa
kita.

B. Istilah-istilah pada OOP antara lain :

 Kelas(Class)
Kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan
tertentu. Sebagai contoh ‘class of dog‘ adalah suatu unit yang terdiri atas definisi-
definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan
dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam
pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali
oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang
ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri
dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan
OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-
aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti
ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun
sebaliknya.
 Objek (Object)

Membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program
komputer, objekmerupakan dasar dari modularitas dalam sebuah program komputer
berorientasi objek.

 Abtraksi (Abstraction)

Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya,
yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani
sebagai model dari “pelaku” abstrak yang dapat melakukan kerja, laporan dan
perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa
mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode
dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan
sebuah pengabstrakan.

 Enkapsulasi (Encapsulation)

Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari
sebuah objek dengan cara yang tidak layak, hanya metode dalam objek tersebut yang
diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang
menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya
tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.

 Polimorfisme (Polymorphism)

Melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa


orientasi objek dapat mengirim pesan, metode tertentu yang berhubungan dengan
sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut
dikirim. Contohnya, bila sebuah burung menerima pesan “gerak cepat”, dia akan
menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia
akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang
sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut
polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai
jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat
memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan
yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai
polimorfisme melalui penggunaan fungsi kelas-pertama.

 Inheritas (inheritance)

Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan


diciptakan dengan jenis khusus dari objek yang sudah ada objek-objek ini dapat
membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang
perilaku tersebut (bahasa berbasis objek tidak selalu memiliki inheritas.)
1. Encapsulation

Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk


menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau
di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan
untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus
menjaga program tersebut.

Dalam JAVA, dasar enkapsulasi adalah class. anda membuat suatu class
yang menyatakan bahwa variable atau method sebuah class tidak dapat diakses
oleh class lain dengan menjadikan class tersebut private, atau dengan
menjadikan class tersebut protected, yaitu hanya bisa diakses oleh turunannya.

lain hal jika anda menggunakan class public, dalam hal ini dapat diakses oleh
sembarang class karena bersifat umum.

Contoh program sederhana ENKAPSULASI :

Output:
2. Information Hiding dan Encapsulation
Information Hiding adalah menyembunyikan attribute dan method suatu objek
dari objek lain. Encapsulation adalah menyembunyikan attribute suatu objek dari
objek lain. Attribute maupun method disembunyikan dengan cara memberikan
modifier private.

method setter : method dalam kelas yang sama, yang memberikan nilai pada
attribute private.
method getter : method masih dalam kelas yang sama, yang mengambil nilai
dari attribute private.
Contoh:
PersegiPanjang.java

MainPersegiPanjang.java
public class MainPersegiPanjang {
public static void main(String[] srgs) {
PersegiPanjang pp = new PersegiPanjang();
pp.setPanjang(10);
pp.setLebar(20);
System.out.println("Panjang : "+ pp.getPanjang());
System.out.println("Lebar : "+ pp.getLebar());
System.out.println("Luas : "+ pp.getLuas());
}
}
Outputnya adalah :

3. Deklaring Construktor
Telah tersirat pada pembahasan sebelumnya, Constructor sangatlah penting
pada pembentukan sebuah object. Constructor adalah method dimana seluruh
inisialisasi object ditempatkan.
Berikut ini adalah property dari Constructor :
1. Constructor memiliki nama yang sama dengan class
2. Sebuah Constructor mirip dengan method pada umumnya, namun hanya
informasi –informasi berikut yang dapat ditempatkan pada header sebuah
constructor, scope atau identifikasi pengaksesan (misal: public), nama dari
konstuktor dan parameter.
3. Constructor tidak memiliki return value
4. Constructor tidak dapat dipanggil secara langsung, namun harus dipanggil
dengan menggunakan operator new pada pembentukan sebuah class.

Untuk mendeklarasikan constructor, kita tulis,

<modifier> <className> (<parameter>*) {


<statement>*
}

Contoh:
4. Overloading Construktor
Seperti telah kita bahas sebelumnya, sebuah constructor juga dapat dibentuk
menjadi
overloaded. Dapat dilihat pada 4 contoh sebagai berikut :
public StudentRecord(){
//area inisialisasi kode;
}
public StudentRecord(String temp){
this.name = temp;
}
public StudentRecord(String name, String address){
this.name = name;
this.address = address;
}
public StudentRecord(double mGrade, double eGrade,
double sGrade){
mathGrade = mGrade;
englishGrade = eGrade;
scienceGrade = sGrade;
}

5. Package Keyword
Package adalah sarana/cara pengelompokkan dan pengorganisasian
kelaskelas dan interface yang sekelompok menjadi suatu unit tunggal dalam
library.

Mendeklarasikan dan Memberi Nama Package


Dekalrasi package harus diletakkan pada bagian paling awal (sebelum
deklarasi import) dari source code setiap kelas yang dibungkus package tersebut.
Bentuk umum deklarasi package :
package namaPackage;
Deklarasi tersebut akan memberitahukan kompilator, ke library manakah
suatu kelas dikompilasi dan dirujuk.
Syarat nama package :
1. Diawali huruf kecil
2. Menggambarkan kelas-kelas yang dibungkusnya
3. Harus unik (berbeda dengan nama package standard)
32
4. Merepresentasikan path dari package tersebut.
5. Harus sama dengan nama direktorinya.
Contoh package standard :
java.lang (berisi kelas-kelas fundamental yang sering digunakan).
java.awt dan javax.swing (berisi kelas-kelas untuk membangun aplikasi GUI)
java.io (berisi kelas-kelas untuk proses input output)
Membuat Package
Untuk membuat package, dapat dilakukan dengan menuliskan :
package <packageName>;
Anggaplah kita ingin membuat package dimana class StudentRecord akan
ditempatkan
bersama dengan class – class yang lain dengan nama package schoolClasses.
Langkah pertama yang harus dilakukan adalah membuat folder dengan nama
schoolClasses. Salin seluruh class yang ingin diletakkan pada package dalam folder
ini.
Kemudian tambahkan kode deklarasi package pada awal file. Sebagai contoh :

package schoolClasses;
public class StudentRecord
{
private String name;
private String address;
private int age;
}

Package juga dapat dibuat secara bersarang. Dalam hal ini Java Interpreter
menghendaki
struktur direktori yang mengandung class eksekusi untuk disesuaikan dengan struktur
package.

6. Mengimport class
Suatu class dapat mengimport class lainnya sesuai dengan nama package yang
dipumyainya.
Misalnya saja kita dapat mengimpot class pagi.java dalam pacekage menupagi
dengan deklarasi kata kunci import.
Import menupagi.pagi;
Public class RestoranBekasi{
...
}

jika kita ingin mengimport semua class yang ada pada pacekage menu pagi, maka
kita dapat mendeklarasikannya dengan menuliskan tanda *.
Import menupagi.*;
7. This Keyword
This adalah keyword pada Java yang digunakan sebagai referensi ke objek yang
dimaksud dari class saat ini , dengan method contoh atau konstruktor. Menggunakan
this kita dapat merujuk anggota class seperti konstruktor, variabel, dan method.
This keyword hanya digunakan dalam method, instance atau konstruktor.

Secara umum this keyword digunakan untuk:

 Membedakan variabel instances dengan variabel lokal jike mereka memiliki nama
yang sama, dalam konstruktor atau method.

classMurid{

int umur;

Murid(int umur){

this.umur=umur;

}}

 Memanggil satu jenis konstruktor (parameterized konstruktor atau default) dari


lainnya pada class, ini dikenal sebagai eksplisit konstruktor invocation.

classMurid{

int umur

Murid(){

this(20);

Murid(int umur){

this.umur=umur; }}
Contoh :

Berikut adalah contoh penggunaan this keyword untuk mengakses anggota dari
sebuah class.

publicclassThis_Test{ //Instance variable num

int num=10;

This_Test(){

System.out.println("Berikut adalah contoh program keyword this "); }

This_Test(int num){

//Invoking default konstruktor

this();

//Menyamakan local variable num keinstance variable num

this.num=num; }

publicvoid greet(){

System.out.println("Selamat datang di programmergalaulagi.blogspot.com"); }

publicvoidprint(){

//Local variable num

int num=20;

//Mencetak instance variable

System.out.println("nilai dari local variable num adalah : "+num);

//Mencetak local variable

System.out.println("nilai dari instance variable num adalah : "+this.num);

//Memanggil greet method dari sebuah class

this.greet();

publicstaticvoid main(String[] args){

//Class
This_Test obj1=newThis_Test();

//Memanggil print method

obj1.print();

//nilai baru dari num variable melalui parametrized constructor

This_Test obj2=newThis_Test(30);

//Memanggil print method lagi

obj2.print();

}}

Berikut adalah hasil dari kode diatas:

Berikut adalah contoh program keyword this

nilai dari local variable num adalah : 20

niliai dari instance variable num adalah : 10

Selamat datang di programmergalaulagi.blogspot.com

Berikut adalah contoh program keyword this

nilai dari local variable num adalah : 20

nilai dari instance variable num adalah : 30

Selamat datang di programmergalalulagi.blogspot.com