MINGGU 5 Java Programming (MKB614C) Pokok Bahasan: OOP: Objects & Classes Tujuan Instruksional Khusus: Siswa memahami konsep pemrograman OOP di Java Java Programming (MKB614C) Minggu 5 Page 1
Java Programming (MKB614C) Agenda Pengantar OOP di Java Class & Object Menggunakan konstruktor Mengakses objek melalui variabel reference Menggunakan kelas dari Java Library Static variable, konstan & method Visibility modifer Data encapsulation Passing object ke method Immutable object & class Referensi “this” Java Programming (MKB614C) Minggu 5 Page 2
Java Programming (MKB614C) Pengantar OOP di Java Object-oriented programming (OOP) memungkinkan pengembangan aplikasi/software berskala besar & GUI dengan efektif. Karakteristik OOP (www.java.net): Encapsulation: kemampuan untuk menyembunyikan data/ & instruksi didalam suatu object. Inheritance: Kemampuan membuat suatu object dari object lain. Polymorphism: desain suatu kelas baru berdasarkan kelas lain. Message Passing: cara komunikasi suatu objek dengan objek lain. Garbage Collection: pengaturan manajemen memory yang akan menghapus objek yang tidak lagi digunakan dari memory. Java Programming (MKB614C) Minggu 5 Page 3
Kelebihan & kekurangan OOP Kelebihan (www.java.net): Re-usability: kode program dapat di gunakan berulang Code sharing: dapat dibuat suatu standar dari cara pemrograman dengan teman kerja atau dalam suatu tim Rapid modeling: prototype class dan interaksinya dapat dibuat dengan cepat melalui diagram Kekurangan (www.java.net): Ukuran: program menjadi besar, sehingga memakan/membutuhkan memory dan space yang besar Effort: membutuhkan banyak hal yang harus dibuat, termasuk diagram pada tahap perencanaan dan koding pada tahap pelaksanaan/pembangunan
Interaksi antar objek di OOP
Class & Object Class: template yang mendefinisikan property & behaviour dari suatu object. Object: merupakan entitas dalam dunia nyata yang dapat diidentifikasi dengan jelas. Contoh: siswa, meja, komputer, pinjaman, dan lain-lain Object memiliki: Identitas yang unik State: properti/attribut dari object yang berupa data field dengan nilainya. Contoh: siswa memiliki state (property): kulit, warna, dll. Behavior: action dari object berupa method/function. Contoh: siswa memiliki behavior (method/function) melihat, bergerak, berpikir dll.
Class & Object Class: template yang mendefinisikan property & behaviour dari suatu object. Object: merupakan entitas dalam dunia nyata yang dapat diidentifikasi dengan jelas, instance dari class. Contoh: siswa, meja, komputer, pinjaman, dan lain-lain Object memiliki: Identitas yang unik State: properti/attribut dari object yang berupa data field dengan nilainya. Contoh: siswa memiliki state (property): kulit, warna, dll. Behavior: action dari object berupa method/function. Contoh: siswa memiliki behavior (method/function) melihat, bergerak, berpikir dll.
Class adalah template dari object
Class Circle
UML dari class Circle Kerjakan latihan halaman 324 (TestSimpleCircle.java)
Coding java Catatan: Sebuah file Java dapat terdiri dari beberapa class, tetapi hanya 1 yang public Class public harus sama dengan nama file.
Membuat object dengan contructor Constructor adalah method/function khusus untuk membuat suatu object Method constructor memiliki kekhasan/karakter sebagai berikut: Nama constructor harus sama dengan class Constructor tidak memiliki return dan juga tidak void Constructor dipanggil dengan menggunakan operator new untuk membuat suatu object Contoh: public Circle() { } … Circle circle1 = new Circle();
Variable reference & reference type object Variable reference adalah variable yang berisi reference ke suatu object. Reference type dari suatu object adalah class. Variable Reference syntax: ClassName objectRefVar; Assigning object reference syntax: objectRefVar = new ClassName(); ClassName objectRefVar = new ClassName(); Contoh: Circle myCircle; myCircle = new Circle(); atau Circle myCircle = new Circle(); Catatan: array diperlakukan sebagai object di Java.
Mengakses data & method suatu object Data dan method pada object dapat diakses menggunakan operator dot “.” Syntax: objectRefVar.dataField reference data di object objectRefVar.method(arguments) mengakses method pada object Contoh: new Circle(5).getArea(); atau Circle myCircle = new Circle(5); myCircle.getArea();
Null data field Jika suatu data field dari suatu object tidak mereference pada object, maka data field tersebut memiliki nilai null. Null merupakan tipe data reference. Contoh: class Student { String name; // name has the default value null int age; // age has the default value 0 boolean isScienceMajor; // isScienceMajor has default value false char gender; // gender has default value '\u0000' } Catatan: mengakses data null akan memicu NullPointerException pada saat dijalankan.
Perbedaan variable tipe primitive vs tipe reference Setiap variable merupakan lokasi di memory yang memiliki suatu nilai.
Assigning variable tipe primitive vs tipe reference Catatan: setelah reference c1 di assign ke c2, object c1 tidak lagi digunakan dan disebut garbage. Java akan secara otomatis mendetect garabe dan menghapusnya dari memory
Menggunakan class dari Java Library (API) Class Date (java.util.Date)
Static variables, constants & methods Static variables (class variables): variable yang dishare kesemua object dari sebuah class. Variables static disimpan dimemory bersama, sehingga dapat diakses oleh semua instance. Perubahan nilai pada static variables akan terlihat oleh semua instances. Static methods: method yang dishare ke semua object. Static methods tidak dpat mengakses member dari instance suatu class. Static methods dapat dipanggil tanpa membutuhkan instance dari class Static constants: variables yang nilainya tetap dan dishare kesemua object. Static constants harus dideklarasi sebagai final static. Contoh: final static double PI = 3.14159265358979323846;
Contoh static variable pada class Circle Kerjakan latihan halaman 338 (CircleWithStaticMembers.java)
Visibility modifier Visibility modifers digunakan untuk menentukan visibility suatu class dan anggotanya (method & data field) Jika visibility modifier tidak digunakan, maka secara default class, method, & data field hanya dapat diakses oleh class dari package yang sama (package-private / package-access). Level access level modifers
Package Package digunakan untuk mengatur class. Nama package harus ditulis dibaris pertama. Jika suatu class didefinisikan tanpa statement package, maka class akan digunakan default package. Java merekomendasikan meletakan class kedalam packages.
Data field encapsulation Data field encapsulation: data field yang bersifat private. Membuat data field menjadi private, akan melindungi data dan memudahkan pengelolaan class.
Visibility data & method Visibility data & method ditentukan oleh modifer visibility/accessibility.
Contoh visibility data & method
UML Circle dengan encapsulation Kerjakan latihan halaman 345 (CircleWithPrivateDataFields.java)
Passing object ke method Passing sebuah object ke method dilakukan dengan memparsing reference dari object tersebut.
Immutable objects & class Suatu class & object dapat didefinisikan immutable, yaitu tidak dapat dirubah. Contoh immutable class adalah class String Class immutable memiliki persyaratan: Semua data field harus private Tidak memiliki method untuk merubah data fields. Tidak memiliki accessor method yang memiliki returnn value berupa reference ke data field yang mutable.
Contoh class Student public class Student { private int id; private String name; public Student(int ssn, String newName) { id = ssn; name = newName; } public int getId() { return id; public String getName() { return name;
Reference “this” “this” merefer ke object itu sendiri. “this” dapat digunakan dalam constructor untuk memanggil constructor lain di class yang sama.
Class relationship Untuk mendesain class, harus dilakukan penyeledikan hubungan antar class. Hubungan antar class: Association: hubungan yang mendeskripsikan activity antara 2 class. Aggregation & composition: spesial form dari association yang merepresentasikan kepemilikan (bagian) antara 2 class. Kepemilikan pada composition lebih kuat, sehingga object tidak dapat berdiri (exist) sendiri-sendiri.
Association
Aggregation & Composition Student memiliki: Name (Composition) Address (Aggregation) Person memiliki: Supervisor
Class String Object String adalah immutable (tidak dapat dirubah) Contoh: String s = "Java"; s = "HTML";
Interned string Interned string: instance dari string yang memiliki karakter yang sama.
StringBuilder & StringBuffer StringBuilder & StringBuffer: adalah class string yang bersifat tidak immutable seperti String StringBuilder vs StringBuffer: method pada StringBuffer adalah synchronized, artinya hanya 1 task yang diijinkan untuk mengeksekusi methods. Kerjakan latihan halaman 396 (PalindromeIgnoreNonAlphanumeric.java)