COMP6598
Introduction to Programming
Minggu 10
Sesi 14
OUTLINE MATERI(Sub-Topic):
• Object
• Class
• Class Relationship
• Association
• Inheritance
• Access Modifier
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.
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
//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;
}
}
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.
Output
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.
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
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
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.
Output :
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
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
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.
Output
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.
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.
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.
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