Other OOP Basic Viska Mutiawani, M.Sc
1
Viska Mutiawani - Informatika FMIPA Unsyiah
Konsep penting
2
Method overloading Encapsulation this keyword final static
Viska Mutiawani - Informatika FMIPA Unsyiah
Visualisasi Class Class divisualisasikan dalam UML sebagai kotak persegi dengan 3 ruang:
3
Nama : identitas kelas Variabel (atribut, state, field): atribut kelas Method (behavior, function, operation) : perilaku kelas
Viska Mutiawani - Informatika FMIPA Unsyiah
4
Viska Mutiawani - Informatika FMIPA Unsyiah
Method Overloading Method overloading: nama methodnya sama namun beda implementasinya. Perbedaan implementasi: dibedakan oleh parameternya (jumlah parameter, tipe data parameter, urutan parameter)
5
Viska Mutiawani - Informatika FMIPA Unsyiah
Contoh
6
Viska Mutiawani - Informatika FMIPA Unsyiah
Method Overloading pada Constructor // Define the Circle class public class Circle {
// Save as "Circle.java"
// Private variables private double radius;
Kelas Circle memiliki 3 method Constructor.
private String color; // Constructors (overloaded) public Circle() {
// 1st Constructor
radius = 1.0; color = "red"; } public Circle(double r) {
// 2nd Constructor
radius = r;
Method mana yang dipilih akan disesuaikan dengan parameter yang digunakan sewaktu mencipta objek Circle.
color = "red"; } public Circle(double r, String c) { // 3rd Constructor radius = r; color = c; } }
7
Viska Mutiawani - Informatika FMIPA Unsyiah
Jika tidak ketemu padanannya akan muncul error kompilasi
public vs private public: class/variabel/method dapat diakses oleh semua objek dalam sistem. private: variabel/method dapat diakses oleh kelas itu sendiri
Pada UML: public dinotasikan dengan + private dinotasikan dengan 8
Viska Mutiawani - Informatika FMIPA Unsyiah
Encapsulation Objek tidak seharusnya membuka lebar semua informasi mengenainya. Ada informasi yang harus ditutupi dari klien.
Nasabah tidak perlu tahu proses di dalam mesin ATM sewaktu penarikan
Encapsulation adalah teknik mempaketkan informasi dengan menyembunyikan segala hal yg harus disembunyikan dan menampakkan segala hal yang bisa ditampakkan.
9
Viska Mutiawani - Informatika FMIPA Unsyiah
Encapsulation
Satu class me-encapsulate/ membungkus data (dalam variabel) dan algoritma (dalam method). Nilai dari variabel menggambarkan kondisinya (state) Method menggambarkan perilakunya (behavior)
10
Viska Mutiawani - Informatika FMIPA Unsyiah
Information Hiding
Variabel di-encapsulate dalam class dengan menggunakan akses private. Untuk mencapainya kita panggil/buat method accessor yang public. Objek saling berkomunikasi antar sesamanya dengan menggunakan antar-muka (method public). Implementasi dalam method di-encapsulate dalam class. 11
Viska Mutiawani - Informatika FMIPA Unsyiah
Keyword this
Keyword this digunakan untuk merujuk pada objek ini dalam suatu class. Kegunaannya untuk menghilangkan ambigu. this dapat digunakan untuk variabel dan method. Pada constructor, this digunakan untuk memanggil constructor lain.
12
Viska Mutiawani - Informatika FMIPA Unsyiah
Method toString()
Method toString() merupakan salah satu method dasar yang ada dalam class Object, yang akan mengembalikan String. Setiap class dalam Java, sebaiknya mengoverride method toString() dengan cara mencetak deskripsi umum dari objek tersebut.
13
Viska Mutiawani - Informatika FMIPA Unsyiah
Constant (final)
Constant pada Java menggunakan keyword final. Variabel final hanya bisa diberi nilai sekali dan tidak bisa diubah.
14
Viska Mutiawani - Informatika FMIPA Unsyiah
Static
Variabel static: variabel class Variabel static akan diinisialisasi ketika kelas diinisialisasi. Walaupun ada banyak objek hasil ciptaan suatu class yang memiliki variabel static, variabel staticnya tetaplah satu (kepunyaan class)
class Test { static int a=10; static int b =100; } Variabel static dapat diakses seperti ini: Test.a=100; Test.b=200; Cara di bawah juga valid: Test t1=new Test(); Test t2=new Test(); t1.a=100; t2.a=100;
15
Viska Mutiawani - Informatika FMIPA Unsyiah
Contoh // Public getter and setter for private variables // The Circle class definition public class Circle {
public double getRadius() {
// Save as "Circle.java"
return radius;
// Public constants
}
public static final double DEFAULT_RADIUS = 8.8;
public void setRadius(double radius) {
public static final String DEFAULT_COLOR = "red";
this.radius = radius; }
// Private variables
public String getColor() {
private double radius;
return color;
private String color;
} public void setColor(String color) {
// Constructors (overloaded) public Circle() {
this.color = color;
// 1st Constructor
}
radius = DEFAULT_RADIUS; color = DEFAULT_COLOR;
// toString() to provide a short description of this instance
}
public String toString() {
public Circle(double radius) {
// 2nd Constructor
return "Circle with radius = " + radius + " and color of " + color;
this.radius = radius; }
color = DEFAULT_COLOR; } public Circle(double radius, String color) { // 3rd Constructor this.radius = radius; this.color = color;
16
}
// Public methods public double getArea() { return radius*radius*Math.PI;
} Viska Mutiawani - Informatika FMIPA } Unsyiah
Kerjasama Objek
Pada suatu aplikasi berbasis objek, aplikasi tersebut menciptakan objek yang saling berkolaborasi di dalam memori
17
Viska Mutiawani - Informatika FMIPA Unsyiah
Latihan Permainan Daduku dimainkan oleh dua pemain. Setiap pemain yang mendapat giliran akan melempar dua dadu bersamaan. Nilai yang muncul pada kedua dadu mempunyai nilai tertentu, seperti di bawah: Kombinasi Skor * Nilai 1 muncul hanya pada satu dadu 100 * Nilai 5 muncul hanya pada satu dadu 50 * Kedua dadu menampilkan nilai 2 200 * Kedua dadu menampilkan nilai 3 150 * Kedua dadu menampilkan nilai 6 250 Salah satu pemain akan dinyatakan menang jika berhasil mengumpulkan nilai lebih dari 1000. Ada berapa class yang terlibat pada permainan ini?
18
Viska Mutiawani - Informatika FMIPA Unsyiah
Class yang terlibat pada permainan Daduku Dadu - sisi : int + Dadu () + getSisi () : int + setSisi (sisi : int) : void + lemparDadu () : void + toString () : String
19
Permainan -? -?
Pemain - nama : String - nilai : int + Pemain (nama:String) + getNama () : String + setNama (nama : String) : void + getNilai () :int + setNilai (skor : int) : void + toString () : StringViska Mutiawani - Informatika FMIPA Unsyiah
Latihan
Gender bisa : ‘l’ || ‘p’ atau ‘L’ || ‘P’ Method toString() mengembalikan "author-name (gender) at email", e.g., “Amira (p) at
[email protected]".
20
Viska Mutiawani - Informatika FMIPA Unsyiah
Latihan
Asumsi: buku dikarang oleh satu pengarang saja. Method toString() that returns "'book-name' by authorname (gender) at email". Gunakan method Author's toString(), yg mengembalikan "author-name (gender) at email".
21
Viska Mutiawani - Informatika FMIPA Unsyiah