Anda di halaman 1dari 19

LECTURE NOTES

COMP6598
Introduction to Programming

Minggu 10
Sesi 14

Introduction to Object Oriented

COMP6598 – Introduction to Programming


LEARNING OUTCOMES

1. LO 5 : Peserta diharapkan dapat memahami konsep pemrograman berbasis objek pada


Java.

OUTLINE MATERI(Sub-Topic):

• Introduction to Object Oriented Programming

• Object

• Class

• Class Relationship

• Association

• Inheritance

• Aggregation and Composition

• Polymorphism and Dynamic Binding

• Access Modifier

COMP6598 – Introduction to Programming


ISI MATERI
Introduction of OOP Concept
Konsep pemrograman berbasis objek merupakan konsep yang popular dikarenakan
pembuatan sistem dengan penggambaran class dan object merupakan cara yang tepat dan
efisien dalam menggambarkan proses bisnis ke dalam sistem yang dikembangkan.
Pemorgraman berbasiskan object memungkinkan programmer untuk membuat software
dalam ukuran yang besar dan GUI secara efektif.
Konsep pemrograman berbasis objek atau OOP merupakan salah satu bentuk
paradigma pemrograman. Paradigma pemrograman terbagi menjadi 2, yakni :
1. Procedural / Structural /Modular Paradigm
Pada paradigma pemrograman ini struktur kode pada pembuatan program berupa
fungsi – fungsi atau juga biasa disebut sebagai modular programming dimana
penjalanan program melalui pemanggilan fungsi main sebagai fungsi utama dan akan
menangani pemanggilan fungsi lainnya.
2. Object Oriented Paradigm
Pada paradigma pemrograman ini struktur kode pada pembuatan program berupa
kelas dan objek dimana di dalam kelas terdapat fungsi – fungsi dan variabel – variabel
yang baru dapat diakses ketika telah dibuat objek dari kelas tersebut. Proses
berjalannya dimulai dengan pemanggilan fungsi main yang wajib bersifat static dan
public agar dapat dijalankan tanpa membuat objek dari kelas terlebih dahulu
kemudian diikuti dengan pembuatan objek – objek yang nantinya akan memanggil
fungsi – fungsi untuk dijalankan.

Dalam Pemrograman berbasiskan object maka semua data dan fungsi dibungkus dalam class
dan object. Selain itu juga object dalam dunia nyata dapat dengan mudah di identifikasi
seperti mahasiswa, mobil, dan hal lain yang bisa dilihat sebagai object.

COMP6598 – Introduction to Programming


Class Abstraction
Object dalam pemrograman harus memiliki method / behavior, properti, tipe dan identitas.
Semua data dan fungsi terbungkus dalam class dan object, sebagai contoh sebuah object
Circle (lingkaran) mempunyai data radius. Sebuah Circle dapat memiliki behavior seperti
method getArea() , getPerimeter(), dan setRadius(radius).

Class abstraction adalah pemisahan antara implementasi class dengan penggunaan sebuah
class. Detail dari implementasi di enkapsulasi dan disembunyikan dari user. Fungsi dari class
dapat diketahui oleh user tetapi implementasi rinci dari class tersebut disembunyikan dari
user, hal inilah yang disebut dengan class encapsulation

Keuntungan penggunaan Pemrograman Berbasiskan Object (PBO)


Dengan adanya penerapan konsep pemrograman berbasis objek maka diperoleh
beberapa keuntungan sebagai berikut :
1. Memungkinkan pemodelan sistem dengan bentuk objek dari dunia nyata.
Contoh objek dunia nyata adanya kelas transaksi dan akan ada objek dari kelas transaksi
yang diberi nama daftar_transaksi.
2. Mendukung penggunaan kembali kode yang sudah ada tanpa perlu membuatnya kembali.
Dengan adanya pemrograman berbasis objek maka sebuah proses dapat dinyatakan
sebagai sebuah fungsi atau method dan ketika ingin melakukan proses tersebut
pengembang tidak perlu lagi membuat kode yang sama untuk subsistem yang berbeda
namun cukup dengan pembuatan objek dari kelas tersebut dan memanggil fungsinya.
3. Meningkatkan fleksibilitas dalam tahapan modifikasi sistem.
Hal ini dikarenakan dengan adanya konsep pemrograman berbasis objek maka ketika
terjadi penambahan proses maupun perubahan dari sistem yang telah dikembangkan
semua proses terkait dengan proses yang diubah akan ikut berubah dan proses yang ingin
ditambahkan pun cukup memanggil proses yang telah dibuat sebelumnya jika masih
terkait dengan proses yang sama.

COMP6598 – Introduction to Programming


4. Membantu memudahakan dalam maintenance dari aplikasi yang telah berjalan.
Hal ini dikarenakan dengan adanya konsep pemrograman berbasis objek maka ketika
terjadi modifikasi dari suatu bagian sistem maka akan yang akan dilakukan perubahan
hanya method, kelas, dan variabel terkait perubahan dan semua proses yang depedensi
dikarenakan menggunakan objek dari kelas tersebut akan secara langsung mengikuti
perubahan yang dibuat.

Concept of Class and Object


Class
Sebuah class mendefinisikan property dan behavior dari object. Object sendiri
merepresentasikan sebuah entitas dalam dunia nyata. Class dapat digambarkan sebagai
sebuah kumpulan data dan method dalam sebuah unit untuk tujuan tertentu. Class juga
merupakan sebuah template, blueprint ataupun kontrak yang menjelaskan data dan method
yang akan dimiliki oleh sebuah object. Sebagai contoh sebuah Circle (lingkaran) mempunyai
sebuah radius (jari – jari) sebagai data dan mempunyai method getArea, getPerimeter dan
setRadius.

Berikut merupakan komponen yang terdapat pada kelas.


1. Behavior merupakan method yang terdapat di dalam kelas.
2. Property merupakan variabel yang terdapat di dalam kelas.
3. Constructor merupakan method yang pertama kali dijalankan pada saat object dari
kelas tersebut dibuat yang berguna untuk inisialisasi nilai pada property dalam kelas.
Constructor merupakan method yang tidak memiliki return value dan wajib bersifat
public agar dapat diakses dari luar kelas sehingga object dari kelas tersebut dapat
dibuat.
4. Destructor merupakan salah satu komponen yang dimiliki oleh kelas yang berupa
method yang akan dijalankan pada saat objek akan dihancurkan (destroy). Namun,
method ini tidak dapat dibuat di dalam kelas karena proses ini di kelola oleh kelas
GarbageCollector pada Java.

COMP6598 – Introduction to Programming


Object
Sebuah object menggambarkan sebuah entitas dalam dunia nyata. Sebuah object juga
merupakan sebuah produk dari sebuah lass. Object memiliki property dan behavior. Method
dan property hanya dapat diakses ketika object dari kelas telah dibuat atau didalam kelas itu
sendiri. Sebagai contoh sebuah object bernama circle1 mempunyai radius 1 dan circle2
mempunyai radius 25. Radius yang dimiliki oleh object Circle merupakan karakteristik yang
menjelaskan object circle tersebut. Adapun behavior dari sebuah object didefinisikan
dengan method.

Terdapat tiga tahapan dalam membuat object dari sebuah class :


1. Deklarasi
Proses ini terjadi ketika objek tersebut di deklarasi namun belum dibuat objeknya.
2. Instansiasi
Proses ini terjadi dengan adanya keyword “new” yang artinya membuat objek dari
kelas tersebut.
3. Inisialisasi
Proses ini terjadi dengan pemanggilan constructor yang berguna untuk
menginisialisasi nilai property pada objek dari kelas tersebut.

Syntax penulisan sebuah class dan object adalah sebagai berikut :


[Modifier] Class Class_Name
{
//Constructor
[Modifier Should be Public] Class_Name
{
Statement;
}

//Property
[Modifier] [Data_Type] Variable_Name
//behavior
[Modifier] [Return_Value_Type] Method_Name ([Param1], [Param2],…)
{
Statement;
//optional, if Return_Value_Type is not void
return Data_To_Be_Returned;
}
}

COMP6598 – Introduction to Programming


Perhatikan contoh dibawah ini :

Pada program di atas terdiri dari sebuah class yang bernama SimpleCircle dengan data yang
dimiliki radius bertipe double, serta memiliki 1 constructor dengan nama yang sama dengan
class, dan 1 method bernama getArea dengan tipe double. Pada main program
didekalarasikan sebuah object bernama circle1 dengan tipe SimpleCircle. Untuk mengakses

nilai dari data radius maka digunakan circle1.radius dan untuk menggunakan fungsi getArea
maka dipanggil dengan cara circle1.getArea().

Contructor dipanggil untuk membuat sebuah object baru. Selain itu sebuah constructor dapat
melakukan tugas apapun, namun sebenarnya constructor di desain untuk melakukan
inisialisasi awal. Constructor merupakan method yang pertama kali dipanggil saat object di
inisiasi. Constructor tidak memiliki nilai balik dan harus mempunyai nama yang sama dengan
class tersebut.

Static Variable, Constant and Method


Variabel di dalam sebuah object terikat dalam object tertentu dari class tersebut, sehingga
tidak dapat digunakan oleh object lain walaupun berada dalam class yang sama. Untuk
mengatasi hal tersebut maka dapat digunakan static variabel. Static variabel menyimpan
nilai dari

COMP6598 – Introduction to Programming


variabel pada lokasi memory yang umum. Karena lokasi umum ini, sehingga jika sebuah
object mengubah nilai dari static variabel, maka semua object pada class yang sama juga
terpengaruh.
Selain variabel static, java juga mendukung pemakaian method static. Sebelum menggunakan
variabel ataupun method static, maka perlu ditambahkan modifier static pada saat deklarasi
variabel ataupun method tersebut. Untuk constant dapat digunakan oleh semua object dalam
class tersebut. Namun constant harus di deklarasikan sebagai final static.

Perhatikan contoh di bawah ini

Output

COMP6598 – Introduction to Programming


Pada contoh program di atas terdapat sebuah class dengan nama CircleWithStaticMember.
Class tersebut memiliki dua data yaitu radius bertipe double, dan sebuah static variabel
bernama numberofObjects dengan tipe int dan diberikan nilai awal 0. Terdapat dua buah
constructor, 1 method dengan tipe double dan 1 method static.

Sebelum object di create isi numberofObject adalah 0. Saat object c1 di buat maka nilai
variabel static numberofObject menjadi 1. Dikarenakan variabel tersebut adalah variabel

static, maka nilainya tetap digunakan saat object c2 di buat, sehingga nilainya menjadi 2.
Variabel lainnya yaitu radius nilainya akan sesuai dengan nilai pada object masing masing.

Association
Salah satu hubungan antar class adalah association. Association adalah hubunugan binary
antara dua class. Sebagai contoh seorang mahasiswa mengambil sebuah matakuliah.
Association digambarkan dengan notasi sebuah garis antara dua class. Setiap hubungan dapat
memilliki segitiga hitam yang menjelaskan arah dari hubungan tersebut. Setiap class yang
terlibat dapat memiliki multiplicity. Multiplicity dapat terdiri dari sebuah bilangan ataupun
rentang bilangan yang menjelaskan berapa banyak object dalam class tersebut yang terlibat
dalam hubungan terkait.

Dari contoh di bawah ini terlihat bahwa seorang student dapat mengambil banyak course dan
seorang faculty member mengajar paling banyak 3 course (matakuliah). Sebuah course dapat
memiliki 5 sampai dengan 60 student dan diajar hanya oleh seorang faculty member.

5..60 Take ► * 0..3 Teach ◄ *


Student Course Faculty

Concept of Inheritance (Pewarisan)


Inheritance (Pewarisan) adalah sebuah mekanisme untuk mendefinisikan class baru dari class
yang sudah ada. Adapun yang diwariskan dari class induk (super class) ke class anak (sub
class) adalah property dan behavior . Pewarisan ini ditandai dengan penggunaan keyword
extends pada kelas yang diwariskan sehingga secara langsung menspesifikasikan kelas yang

COMP6598 – Introduction to Programming


menjadi kelas induknya. Metode ini bertujuan untuk mengurangi redudansi sehingga
pembuatan fungsi tersebut cukup dibuat dikelas induk dan akan diwariskan ke kelas anak.

Pada diagram dibawah ini terlihat proses pewarisan dari class induk (super class) yaitu
GeometricObject ke class turunan yaitu Circle dan Rectangle. Pada diagram di bawah
pewarisan ditandai dengan notasi segitiga yang mengarah ke class induk.

Class Diagram di bawah ini menjelaskan lebih rinci mengenai pewarisaan dari class
GeometricObject ke class turunan yaitu Circle dan Rectangle. Class Circle mendapatkan
semua data field dan method yang bisa diakses dari GeometricObject. Sebagai tambahan,
class Circle memiliki data yang baru yaitu radius dan method yang get dan set. Circle juga
memiliki method getArea(), getPerimeter() dan getDiameter() untuk mengembalikan nilai
area, perimeter dan diameter dari circle. Class turunan lainnya yaitu Rectangle juga
mendapatkan semua data field dan method dari class GeometricObject. Sebagai tambahan
class Rectangle juga memiliki data field baru yaitu width dan height serta method get dan set.
Selain itu juga memiliki method getArea() dan getPerimeter() untuk mengembalikan nilai
area dan perimeter dari Rectangle.

GeometricObject
-colour : string
-filled : Boolean
-dateCreated : Date
+GeometricObject()
+GeometricObject(in colour : string, in filled : Boolean)
+getColour() : string
+setColour(in colour : string)
+isFilled() : Boolean
+setFilled(in filled : Boolean)
+getDateCreated() : Date
+toString() : string

Circle
Rectangle
-radius : double
-width : double
+Circle()
-height : double
+Circle(in radius : double)
+Circle(in radius : double, in colour : string, in filled : Boolean) +Rectangle()
+getRadius() : double +Rectangle(in width : double, in height : double)
+setRadius(in radius : double) +Rectangle(in width : double, in height : double, in colour : string, in filled : Boolean)
+getArea() : double +getWidth() : double
+getPerimeter() : double +setWidth(in width : double)
+getDiameter() : double +getHeight() : double
+printCircle() : void +setHeight(in height : double)
+getArea() : double
+getPerimeter() : double

COMP6598 – Introduction to Programming


Untuk implementasi dari inheritance, secara umum digambarkan sebagai berikut :
public class GeometricObject{
}
public class Circle extends GeometricObject{
}
public class Rectangle extends GeometricObject{
}

Secara detail, maka bisa dilihat dari program dibawah ini :


Class GeometricObject

Berikut ini adalah Class Circle yang merupakan class turunan dari Class GeometricObject.
Keyword extends (baris 1) menjelaskan bahwa class Circle merupakan class turunan dari
class GeometricObject dan mewarisi method getColor, setColor, isFilled, setFilled dan
toString dari class GeometricObject. Constructor Circle(double radius, String color, Boolean
filled) di jalankan dengan memanggil method setColor dan setFilled untuk menentukan
property color dan filled (baris 11 – 12). Method setColor dan setFiller diwariskan oleh
GeometricObject ke class Circle. Dikarenakan data color dan filled bersifat private dan tidak

COMP6598 – Introduction to Programming


diwariskan ke class turunannya, maka cara satu satunya adalah dengan menggunakan method
setColor dan setFilled yang diturunkan.

Berikut ini adalah Class Rectangle yang merupakan class turunan dari GeometricObject.
Keyword extends (baris 1) menginformasikan kepada compiler bahwa class Rectangle
merupakan class turunan dari GeometricObject yang juga mewarisi method getColor,
setColor, isFilled, dan toString.

COMP6598 – Introduction to Programming


Berikut ini adalah main program yang membuat object Circle dan Rectangle, serta
memanggil method yang ada didalamnya. Method toString merupakan method yang
diturunkan oleh GeometricObject dan dipanggil di dalam object circle dan rectangle.

Output :

Hal – hal berikut harus diperhatikan terkait dengan Inheritance:


 Sebuah class turunan (subclass) bukan bagian dari superclass, namun sebuah subclass
biasanya memiliki informasi (data) dan method yang lebih banyak dari superclass nya
 Data field dengan modifier private pada sebuah superclass tidak dapat diakses dari luar
class, karenanya tidak bisa digunakan secara langsung oleh subclass. Namun untuk
mengakses data tersebut dapat digunakan melalui method dengan modifier public yang
didefinisikan di dalam superclass
 Tidak semua hubungan is – a (sejenis) dapat dibuat menjadi inheritance.
 Multiple inheritance dalam JAVA tidak dapat digunakan.

Aggregation – Composition
Composition adalah hubungan antara dua object dimana satu object terdiri dari object
lainnya. Composition adalah kasus khusus dalam hubungan aggregation. Model aggregation
mempunyai hubungan has-a (memiliki) dan menggambarkan hubungan kepemilikan antara

COMP6598 – Introduction to Programming


dua object. Object pemilik disebut sebagai aggregating object dan classnya disebut sebagai
aggregating class. Sedangkan object lainnya disebut sebagai aggregated object dan classnya
disebut sebagai aggregated class.

Sebuah object dapat dimiliki oleh beberapa aggregating object. Jika sebuah object secara
khusus dimiliki oleh sebuah aggregating object, maka hubungan ini disebut sebagai
composition. Sebagai contoh “seorang student (mahasiswa) memiliki nama ” adalah sebuah
hubugan composition antara class Name dan class Student. Hubungan antara class Student
dengan Address adalah aggregation karena address tersebut dapat digunakan oleh student
lain. Aggregation juga dimungkinkan antar object di dalam class yang sama
Setiap class yang terlibat dapat memiliki multiplicity. Multiplicity dapat terdiri dari sebuah
bilangan ataupun rentang bilangan yang menjelaskan berapa banyak object dalam class
tersebut yang terlibat dalam hubungan terkait.

composition aggregation

1 1
Name Student Address
1 1..3

COMP6598 – Introduction to Programming


Concept of Polymorphism and Dynamic Binding
Sebelum mempelajari polymorphism terdapat dua terminology yang akan digunakan yaitu
subtype dan supertype. Sebuah class akan mendefinisikan sebuah tipe. Sebuah tipe yang
didefinisikan oleh sebuah subclass disebut dengan subtype. Sebuah tipe yang didefinisikan
oleh superclass maka disebut dengan supertype. Dari contoh sebelumnya maka dapat
dikatakan bahwa Circle adalah subtype dari GeomettricObject dan GeometricObject adalah
supertype dari Circle.

Polymorpshim ini memungkinkan sebuah object dari sebuah class dapat digunakan oleh
object dari superclass dimanapun dibutuhkan. Secara singkat dapat dikatakan bahwa
polymorphism memiliki arti sebuah pada supertype dapat merefer pada object dari subtype.

Perhatikan contoh dibawah ini

Output

Method displayObject (baris 10) menggunakan sebuah parameter dengan tipe


GeometricObject. Method displayObject dapat dipanggil dengan mengirimkan object ke
GeometricObject (contoh sebuah object baru Circle(1, “red”, false) dan object baru
Rectangle(1,1,”black”, false) ). Sebuah object dari subclass dapat digunakan digunakan
dimanapun saat superclass digunakan. Hal ini lah yang disesbut dengan polymorphism yang
berarti sebuah variabel dari supertype dapat merefer object dari subtype.

COMP6598 – Introduction to Programming


Dynamic Binding
Sebuah method dapat diimplementasikan pada beberapa class selama masih dalam
turunannya, JVM yang akan menentukan method mana yang akan dijalankan. Sebuah method
dapat didefinisikan di superclass dan di override di subclass.

Perhatikan contoh di bawah ini :

Output

Method m (baris 9) menggunakan parameter dengan tipe object. m dapat dipanggil dengan
menggunakan object apa saja (contoh new GraduateStudent(), new Student(), newPerson(),
dan new Object() dalam baris 3 – 6) . saat method m(Object x) di jalankan, maka perintah
x.toString x dapat saja merupakan object dari GraduateStudent, Student, Person atau Object.
Masing – masing class tersebut mempunyai method toString tersendiri.

COMP6598 – Introduction to Programming


Pada saat memanggil m(new GraduateStudent) di baris ke 3 maka method toString yang ada
dalam class Student akan dipanggil. Pada saat m(new Student()) pada baris 4 dipanggil maka
method toString pada class Student yang akan dijalankan. Sedangkan pada saat m(new
Person()) di panggil maka method toString yang ada di class Person yang akan dijalankan.
Terakhir saat m(new Object()) yang dipanggil maka akan menjalankan method toString yang
ada di class Object. Compiler akan menjalankan method sesuai dengan tipe parameter,
jumlah parameter, dan urutan parameter.

Access Modifier
Access Modifier merupakan pemberian tipe akses terhadap method, class, maupun
property untuk menyatakan jenis akses yang diberikan. Terdapat 4 jenis Access Modifier
pada pemrograman Java, yakni :
1. Private
Akses modifier ini membatasi pemberian akses sehingga komponen yang diberikan akses
ini hanya dapat diakses dari dalam kelas itu sendiri
2. Protected
Akses modifier ini membatasi pemberian akses pada komponen sehingga komponen yang
diberikan akses ini hanya dapat diakses dari dalam kelas itu sendiri dan kelas turunannya.
3. Public
Akses modifier ini memungkinkan komponen yang berikan akses ini untuk dapat diakses
dari luar kelas itu melalui objek dari kelas itu.
4. Package
Akses modifier ini memungkinkan komponen yang diberikan akses ini untuk dapat
diakses dari luar kelas itu melalui objek dari kelas itu namun terbatas hanya pada package
dimana kelas tersebut di buat.

COMP6598 – Introduction to Programming


SIMPULAN
Pada bahasa pemrograman Java memungkinkan untuk pengembangan program
dengan paradigma berbasis objek dikarenakan Java merupakan bahasa pemrograman yang
murni mendukung konsep OOP.

Dengan adanya pengembangan program berbasis OOP ini dapat diperoleh beberapa
keuntungan antara lain adanya pemodelan dari objek nyata, menggunakan kembali kode
yang sudah ada, meningkatkan fleksibilitas dalam memodifikasi program, dan membantu
memudahkan dalam memperbaiki program.

Hubungan antar class terdiri atas association, inheritance dan composition.


Association sendiri adalah hubungan antar dua class yang dapat juga memiliki multiplicity.
Inheritance (Pewarisan) adalah sebuah mekanisme untuk mendefinisikan class baru dari class
yang sudah ada. Dalam hal ini maka keyword extend digunakan. Composition adalah
hubungan dimana satu object dapat terdiri dari object lainnya.

COMP6598 – Introduction to Programming


DAFTAR PUSTAKA
1. Y. Daniel Liang. (2013). Introduction to Java Programming : Comprehensive Version.
International

2. https://docs.oracle.com/javase/tutorial/java/javaOO/
3. https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html
4. https://www.tutorialspoint.com/java/java_object_classes.htm
5. http://www.javatpoint.com/inheritance-in-java
6. https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html
7. http://www.javatpoint.com/aggregation-in-java
8. http://www.javatpoint.com/encapsulation
9. http://www.javatpoint.com/static-keyword-in-java
10. https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html

COMP6598 – Introduction to Programming

Anda mungkin juga menyukai