Introduction to Programming
Week ke - 10
1. Peserta diharapkan dapat mengerti dasar dasar java programming dan konsep objek oriented
Outline Materi
2. Object
3. Class
4. Class Relationship
a. Association
b. Inheritance
6. Access modifier
ISI MATERI
1) Introduction to object oriented programming
Konsep pemrograman berbasis objek atau OOP merupakan salah satu bentuk paradigma
pemrograman. Paradigma pemrograman terbagi menjadi 2, yakni :
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.
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
Dengan adanya penerapan konsep pemrograman berbasis objek maka diperoleh beberapa
keuntungan sebagai berikut:
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.
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.
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.
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
//Constructor
Statement;
//Property
Introduction to Programming
//behavior
Statement;
return Data_To_Be_Returned;
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.
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
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.
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.
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
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:
• 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
Introduction to Programming
• Multiple inheritance dalam JAVA tidak dapat digunakan.
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.
Introduction to Programming
Gambar 1.5 Aggregation and composition
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
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.
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
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.
Introduction to Programming