Anda di halaman 1dari 22

LECTURE NOTES

Introduction to Programming
Week ke - 10

Introduction to Object Oriented


Programming
LEARNING OUTCOMES

1. Peserta diharapkan dapat mengerti dasar dasar java programming dan konsep objek oriented

Outline Materi

1. Introduction of OOP Concept

2. Object

3. Class

4. Class Relationship

a. Association

b. Inheritance

c. Aggregation and composition

5. Polymorphism and dynamic binding

6. Access modifier
ISI MATERI
1) Introduction to object oriented programming

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 :

a. 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.

b. 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.

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

Introduction to Programming
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
inginditambahkan pun cukup memanggil proses yang telah dibuat sebelumnya jika masih
terkait dengan proses yang sama.

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

Introduction to Programming
perubahan yang dibuat.

2) 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.

3) 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

Introduction to Programming
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

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

Introduction to Programming
//behavior

[Modifier] [Return_Value_Type] Method_Name ([Param1], [Param2],…)

Statement;

//optional, if Return_Value_Type is not void

return Data_To_Be_Returned;

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().

Introduction to Programming
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 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.

Introduction to Programming
Perhatikan contoh di bawah ini

Output

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.

Introduction to Programming
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.

4) Class relationship

a. 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.

Gambar 1.1 Association

b. Inheritance
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 menjadi kelas induknya.

Introduction to Programming
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.

Gambar 1.2 Inheritance

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.

Introduction to Programming
Gambar 1.3 Example Inheritance

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

Introduction to Programming
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 diwariskan ke class turunannya, maka cara satu satunya adalah
dengan menggunakan method setColor dan setFilled yang

Introduction to Programming
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.

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.

Introduction to Programming
• Multiple inheritance dalam JAVA tidak dapat digunakan.

c. Aggregation and 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 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.

Gambar 1.4 Aggregation and Composition

Introduction to Programming
Gambar 1.5 Aggregation and composition

5) 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.

Introduction to Programming
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.

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 :

Introduction to Programming
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. 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.

6) 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:

A. Private

Akses modifier ini membatasi pemberian akses sehingga komponen yang diberikan akses ini
hanya dapat diakses dari dalam kelas itu sendiri

Introduction to Programming
B. 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.

C. Public

Akses modifier ini memungkinkan komponen yang berikan akses ini untuk dapat diakses dari
luar kelas itu melalui objek dari kelas itu.

D. 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

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.

<< Nama mtk>>


DAFTAR PUSTAKA
1. Y. Daniel Liang. (2020). Introduction to Java programming and Data Structures :
comprehensive version. international edition. 12. Pearson Education. New Jersey. ISBN:
9780136520238, Chapter 12 , Chapter 6 , Chapter 7 , Chapter 8, Chapter 23, chapter 10,
chapter 11.

Introduction to Programming

Anda mungkin juga menyukai