Dokumen tersebut membahas konsep dasar pemrograman berorientasi objek dalam bahasa Java, meliputi konsep class, object, atribut, method, konstruktor, paket, enkapsulasi, pewarisan, overriding, interface, abstract class, dan penggunaan kata kunci this.
3. Konsep Object-Oriented
Konsep Object-Oriented
◦ Terfokus pada object dan class, berdasarkan skenario
pada dunia nyata
◦ Mendeskripsikan state, behavior dan interaction pada
object
◦ Keuntungan :
Pengembangan lebih cepat
Meningkatkan kualitas
Penanganan lebih mudah
Dapat dimodifikasi
Meningkatkan karakter reusable pada software
Class
◦ Digunakan untuk mendefinisikan tipe data baru
◦ Blueprint
4. Konsep Object-Oriented
Object
◦ Sebuah entitas yang memiliki state, behavior dan
identity
◦ Contoh nyata dari sebuah class
◦ Dibuat pada saat class di-instantiate menggunakan keyword
new
◦ Contoh: pada Sistem registrasi siswa
Attribut
◦ Elemen data dari sebuah object
◦ Menyimpan informasi tentang object
◦ Alias dari atribut : Data member, instance variable,
property, data field
◦ Contoh: pada Sistem registrasi siswa
5. Konsep Object-Oriented
Method
Menyatakan sifat dari sebuah object
◦
Disebut juga fungsi atau prosedur
◦
Contoh: pada Sistem registrasi siswa
◦
Konstruktor
Menyerupai method
◦
Untuk membuat dan menginisialisasi sebuah object baru
◦
Bukan merupakan anggota dari sebuah object
◦
6. Konsep Object-Oriented
Package
Pengelompokan class atau subpackage
◦
Fungsinya sama seperti direktori
◦
Enkapsulasi
Suatu prinsip penyembunyian desain atau pengimplementasian informasi yang tidak sesuai pada object yang ada
◦
Abstraksi
Mengabaikan aspek dari subjek yang tidak sesuai dengan tujuan yang ada supaya lebih banyak
◦
mengkonsentrasikan yang ada
7. Konsep Object-Oriented
Pewarisan
◦ Hubungan antara class dimana dalam satu class ada
superclass atau class induk dari class yang lain
◦ Mengarah pada properi dan sifat yang diterima dari asalnya
◦ Dikenal juga dengan hubungan "is-a"
SuperHero
FlyingSuperHero UnderwaterSuperHero
8. Konsep Object-Oriented
Polymorfisme
◦ "poly" berarti banyak sedangkan "morph" berarti
bentuk
◦ Kemampuan dari sebuah object untuk membolehkan
mengambil beberapa bentuk yang berbeda
Interface
◦ Sebuah contract dalam bentuk kumpulan method
dan deklarasi konstanta
◦ Mengimplementasikan janji pada class untuk
mengikuti contract
9. Struktur Program Java :
Deklarasi Class
Sintaks
◦ <classDeclaration> ::=
◦ <modifier> class <name> {
◦ <attributeDeclaration>*
◦ <constructorDeclaration>*
◦ <methodDeclaration>*
◦ }
◦ dimana
◦ Modifier
Mengacu pada access modifier atau type lain dari
modifier
◦ Name
Sebuah identifier pada nama kelas
10. Struktur Program Java :
Deklarasi Class
1 class SuperHero {
2 String superPowers[];
3 void setSuperPowers(String superPowers[])
{
4 this.superPowers = superPowers;
5 }
6 void printSuperPowers() {
7 for (int i = 0; i <
superPowers.length; i++) {
8 System.out.println(superPowers[i]);
9 }
10 }
11 }
11. Struktur Program Java :
Deklarasi Attribut
Sintaks:
◦ <attributeDeclaration> ::=
◦ <modifier> <type> <name> [=
<default_value>];
◦ <type> ::=
◦ byte | short | int | long | char |
float | double | boolean | <class>
12. Struktur Program Java :
Deklarasi Attribut
1 public class AttributeDemo {
2 private String studNum;
3 public boolean graduating = false;
4 protected float unitsTaken = 0.0f;
5 String college;
6 }
14. Struktur Program Java :
Deklarasi Method
1 class MethodDemo {
2 int data;
3 int getData() {
4 return data;
5 }
6 void setData(int data) {
7 this.data = data;
8 }
9 void setMaxData(int data1, int data2) {
10 data = (data1>data2)? data1 : data2;
11 }
12 }
15. Struktur Program Java :
Deklarasi Konstruktor
Sintaks:
◦ <constructorDeclaration> ::=
◦ <modifier> <className> (<parameter>*) {
◦ <statement>*
◦ }
◦ dimana
◦ Modifier
Dapat berupa beberapa acces modifier tetapi
bukan tipe modifier lainnya.
Konstruktor secara default
◦ Tidak mempunyai argumen
◦ Tidak memiliki isi
16. Struktur Program Java :
Deklarasi Method
1 class ConstructorDemo {
2 private int data;
3 public ConstructorDemo() {
4 data = 100;
5 }
6 ConstructorDemo(int data) {
7 this.data = data;
8 }
9 }
17. Struktur Program Java :
Instansiasi Kelas
Syntax:
◦ new <constructorName>(<parameters>)
Contoh:
1.class ConstructObj {
2. int data;
3. ConstructObj() {
4. /* initialize data */
5. }
6. public static void main(String args[]) {
7. ConstructObj obj = new ConstructObj();
8. }
9.}
18. Struktur Program Java :
Mengakses Anggota Objek
Notasi titik:
◦ <object>.<member>
Contoh:
◦ String myString = new String(“My String”);
◦ //Access length method
◦ System.out.println(“Length: ” + myString.length());
◦ int intArr = {1, 2, 3, 4, 5};
◦ //Access length attribute
◦ System.out.println(“Length: ” + intArr.length);
19. Struktur Program Java :
Mengakses Anggota Object
1 class ConstructObj {
2 int data;
3 ConstructObj() {
4 /* initialize data */
5 }
6 void setData(int data) {
7 this.data = data;
8 }
9 public static void main(String args[]) {
10 ConstructObj obj = new ConstructObj();
11 obj.setData = 10; //access setData()
12 System.out.println(obj.data);//access data
13 }
14 }
20. Struktur Program Java :
Package
Sintaks untuk indikasi bahwa kode dimiliki oleh sebuah
package:
◦ <packageDeclaration> ::=
◦ package <packageName>;
Sintaks untuk mengimpor package lainnya:
◦ <importDeclaration> ::=
◦ import <packageName.elementAccessed>;
Format Source code:
◦ [<packageDeclaration>]
◦ <importDeclaration>*
◦ <classDeclaration>+
21. Struktur Program Java :
Package
1 package registration.reports;
2 import registration.processing.*;
3 import java.util.List;
4 import java.lang.*; //imported by default
5 class MyClass {
6 /* details of MyClass */
7 }
23. Struktur Program Java :
Enkapsulasi
Menyembunyikan anggota dengan membuatnya private
Contoh
1. class Encapsulation {
2. private int secret;
3. public boolean setSecret(int secret) {
4. if (secret < 1 || secret > 100)
5. return false;
6. this.secret = secret;
7. return true;
8. }
9. public getSecret() {
10. return secret;
11. }
12.}
24. Struktur Program Java :
Pewarisan
Membuat class anak atau subkelas:
◦ Menggunakan extends dalam mendeklarasikan
class
◦ Sintaks:
class <childClassName> extends
<parentClassName>
Sebuah class hanya dapat meng-extend
satu class induk
25. Struktur Program Java :
Pewarisan
1.import java.awt.*;
2.class Point {
3. int x;
4. int y;
5.}
6.class ColoredPoint extends Point {
7. Color color;
8.}
26. Struktur Program Java :
Method Overriding
subclass mendefinisikan method yang bertanda
serupa ke method dalam superclass
Tanda pada sebuah method
◦ informasi yang ditemukan dalam definisi
method bagian atas
Return type
Nama method
Daftar Parameter pada method
Berbeda dengan method overloading!
28. Struktur Program Java :
Method Overriding
14.class OverrideDemo {
15. public static void main(String args[]) {
16. Subclass SubObj = new Subclass();
17. Superclass SuperObj = SubObj;
18. SubObj.display(3);
19. ((Superclass)SubObj).display(4);
20. }
21.}
29. Struktur Program Java :
Method Overriding
Pemanggilan method
◦ Ditentukan oleh tipe data sebenarnya dari object
yang diminta method
Access modifier untuk method yang
dibutuhkan tidak harus sama
◦ Access modifier pada method overriding
Access modifier yang sama seperti pada
method overridden
Access modifier lebih luas
30. Struktur Program Java :
Method Overriding
1. class Superclass {
2. void overriddenMethod() {
3. }
4. }
5. class Subclass1 extends Superclass {
6. public void overriddenMethod() {
7. }
8. }
9. class Subclass2 extends Superclass {
10. void overriddenMethod() {
11. }
12.}
13.//continued...
32. Struktur Program Java :
class abstract dan method
Sintaks:
◦ abstract <modifier> <returnType>
<name>(<parameter>*);
Sebuah class yang berisi method abstract harus
dideklarasikan sebagai sebuah class abstract.
◦ abstract class <name> {
◦ /* constructors, fields and methods */
◦}
33. Struktur Program Java :
class abstract dan method
Kata kunci abstract tidak dapat digunakan pada :
◦ konstruktor
◦ Method static
class abstract tidak dapat diinstansiasi
Class yang meng-extends sebuah class abstract :
◦ harus mengimplementasikan semua method abstract
◦ Sebaliknya, subclass sendiri harus dideklarasikan
sebagai abstract
34. Struktur Program Java :
class abstract dan method
1. abstract class SuperHero {
2. String superPowers[];
3. void setSuperPowers(String superPowers[]) {
4. this.superPowers = superPowers;
5. }
6. void printSuperPowers() {
7. for (int i = 0; i < superPowers.length; i++) {
8. System.out.println(superPowers[i]);
9. }
10. }
11. abstract void displayPower();
12.}
13.//continued...
35. Struktur Program Java :
class abstract dan method
1. class FlyingSuperHero extends SuperHero {
2. void displayPower() {
3. System.out.println("Fly...");
4. }
5. }
6. class Spiderman extends SuperHero {
7. void displayPower() {
8. System.out.println("Communicate with sea" +
9. " creatures...");
10. System.out.println("Fast swimming ability...");
11. }
12.}
36. Struktur Program Java :
Interface
Sintaks:
◦ <interfaceDeclaration> ::=
◦ <modifier> interface <name> {
◦ <attributeDeclaration>*
◦ [<modifier> <returnType> <name>
(<parameter>*);]*
◦ }
Anggotanya adalah public ketika interface dideklarasikan
sebagai public
37. Struktur Program Java :
Interface
Attribut Interface:
◦ Secara implisit static dan final
◦ Harus diinisialisasi
Modifier:
◦ Access modifiers: public, package
◦ Harus diinisialisasi
Mengimplementasikan sebuah interface:
◦ Menggunakan kata kunci implements
◦ Harus mengimplementasikan semua method interface
◦ Sebuah class boleh mengimplementasikan lebih dari satu
interface
39. Struktur Program Java :
Interface
14.class MyClass2 implements MyInterface {
15. public void iMethod() {
16. System.out.println("Another implementation.");
17. }
18.}
19.class InterfaceDemo {
20. public static void main(String args[]) {
21. MyClass1 mc1 = new MyClass1();
22. MyClass2 mc2 = new MyClass2();
23. mc1.iMethod();
24. mc1.myMethod();
25. mc2.iMethod();
26. }
27.}
40. Struktur Program Java :
kata kunci this
mengapa this?
1. Agar tidak ambigu antara attribut lokal dan
variabel lokal
2. Menunjuk pada object yang meminta
method non-static
3. Menunjuk pada konstruktor lain
41. Struktur Program Java :
kata kunci this
1. Agar tidak ambigu antara attribut lokal dan variabel lokal
1. class ThisDemo1 {
2. int data;
3. void method(int data) {
4. this.data = data;
5. /*
6. this.data refers to the attribute
7. while data refers to the local variable
8. */
9. }
10.}
42. Struktur Program Java :
kata kunci this
1. Menunjuk pada object yang meminta method non-static
1. class ThisDemo2 {
2. int data;
3. void method() {
4. System.out.println(data); //this.data
5. }
6. void method2() {
7. method(); //this.method();
8. }
9. }
43. Struktur Program Java :
kata kunci this
Method Overloading
◦ Metode berbeda dalam sebuah kelas membagi nama yang
sama
◦ Daftar parameter harus berbeda
Jumlah parameter
Tipe parameter
◦ Konstruktor dapat juga menjadi overload
◦ Contoh:
class MyClass {
void myMeth() {}
void myMeth(int i) {}
void myMeth(int i, int j) {}
}
44. Struktur Program Java :
kata kunci this
menunjuk versi lain dari konstruktor
1. class ThisDemo3 {
2. int data;
3. ThisDemo3() {
4. this(100);
5. }
6. ThisDemo3(int data) {
7. this.data = data;
8. }
9. }
45. Struktur Program Java :
kata kunci super
Berhubungan dengan pewarisan
◦ Digunakan untuk meminta konstruktor superclass
◦ Dapat digunakan seperti kata kunci this untuk menunjuk
pada anggota dari superclass
Memanggil konstruktor superclass
1. class Person {
2. String firstName;
3. String lastName;
4. Person(String fname, String lname) {
5. firstName = fname;
6. lastName = lname;
7. }
8. }
46. Struktur Program Java :
kata kunci super
9. //continuation...
10.class Student extends Person {
11. String studNum;
12. Student(String fname, String lname, String sNum) {
13. super(fname, lname);
14. studNum = sNum;
15. }
16.}
super()
◦ Menunjuk pada superclass dengan segera
◦ Harus berada pada pernyataan pertama dalam konstruktor
superclass
47. Struktur Program Java :
kata kunci super
Menunjuk anggota superclass
1. class Superclass{
2. int a;
3. void display_a(){
4. System.out.println("a = " + a);
5. }
6. }
7. //continued...
48. Struktur Program Java :
kata kunci super
9. class Subclass extends Superclass {
10. int a;
11. void display_a(){
12. System.out.println("a = " + a);
13. }
14. void set_super_a(int n){
15. super.a = n;
16. }
17. void display_super_a(){
18. super.display_a();
19. }
20.}
49. Struktur Program Java :
kata kunci super
21.class SuperDemo {
22. public static void main(String args[]){
23. Superclass SuperObj = new Superclass();
24. Subclass SubObj = new Subclass();
25. SuperObj.a = 1;
26. SubObj.a = 2;
27. SubObj.set_super_a(3);
28. SuperObj.display_a();
29. SubObj.display_a();
30. SubObj.display_super_a();
31. System.out.println(SubObj.a);
32. }
33.}
50. Struktur Program Java :
kata kunci static
Digunakan untuk anggota dari sebuah class :
◦ attribut
◦ Method
◦ Inner class
Mengijinkan untuk mengakses static atau anggota
class tanpa instansiasi
Variabel class
◦ Bersifat seperti variabel global
◦ Dapat diakses oleh semua instance dari kelas
51. Struktur Program Java :
kata kunci static
Method class
◦ Dapat diambil tanpa membuat sebuah object dari
class tersebut
◦ Hanya dapat mengakses anggota static dari class
◦ tidak dapat menunjuk pada this dan super
Blok static
◦ Hanya dapat dieksekusi sekali, ketika kelas diisi
◦ Untuk inisialisasi variabel class
52. Struktur Program Java :
kata kunci static
1. class Demo {
2. static int a = 0;
3. static void staticMethod(int i) {
4. System.out.println(i);
5. }
6. static { //static block
7. System.out.println("static block");
8. a += 1;
9. }
10.}
11.//continued...
53. Struktur Program Java :
kata kunci static
13.class StaticDemo {
14. public static void main(String args[]) {
15. System.out.println(Demo.a);
16. Demo.staticMethod(5);
17. Demo d = new Demo();
18. System.out.println(d.a);
19. d.staticMethod(0);
20. Demo e = new Demo();
21. System.out.println(e.a);
22. d.a += 3;
23. System.out.println(Demo.a+", "+d.a+", "+e.a);
24. }
25.}
54. Struktur Program Java :
kata kunci final
Dapat diaplikasikan pada variabel, method dan class
Dibatasi apa yang kita dapat lakukan dengan
variabel, method dan class.
Variabel final
◦ Tidak dapat diubah setelah nilainya diset
◦ contoh:
final int data = 10;
data++;
55. Struktur Program Java :
kata kunci final
Method final
◦ Tidak dapat di-override
◦ contoh:
final void myMethod() { //in a parent class
}
void myMethod() { //in a child class
}
Class final
◦ Tidak dapat diwariskan
◦ contoh:
final public class MyClass {}
class WrongClass extends MyClass {}
56. Struktur Program Java :
kata kunci final
Katakunci dapat diletakkan sebelum
setelah modifier lain
◦ public final static void meth() {} or
◦ final public static void meth() {}
or ...
◦ //order of modifiers is not important
57. Struktur Program Java :
Inner Classes
Dideklarasikan dalam class lain
Mengakses anggota dari inner class :
◦ Membutuhkan sebuah instance dari inner class
◦ Example:
innerObj.innerMember = 5;
//innerObj is an instance of the inner
class
//innerMember is a member of the inner
class
58. Struktur Program Java :
Inner Classes
Method-method dari inner class dapat secara
langsung mengakses anggota dari outer class
contoh:
1.class Out {
2. int OutData;
3. class In {
4. void inMeth() {
5. OutData = 10;
6. }
7. }
8.}
59. Struktur Program Java :
Inner Classes
1. class OuterClass {
2. int data = 5;
3. class InnerClass {
4. int data2 = 10;
5. void method() {
6. System.out.println(data);
7. System.out.println(data2);
8. }
9. }
10.//continued...
60. Struktur Program Java :
Inner Classes
9. public static void main(String args[]) {
10. OuterClass oc = new OuterClass();
11. InnerClass ic = oc.new InnerClass();
12. System.out.println(oc.data);
13. System.out.println(ic.data2);
14. ic.method();
15. }
16.}
62. Kesimpulan
Struktur Program Java
◦ Mendeklarasikan class Java
◦ Mendeklarasikan Attribut
◦ Mendeklarasikan Metode −
Pewarisan
◦ Mendeklarasikan konstruktor
◦ Meng-instansiasi sebuah class
◦ Mengakses anggota object
−
Method Overriding
◦ Package
◦ Access Modifier
◦ Enkapsulasi
−
Class abstract dan method
−
Interface
−
Kata kunci this
−
Kata kunci super
−
Kata kunci static
−
Kata kunci final
−
Inner Classes