210 likes | 298 Views
Other OOP Basic. Viska Mutiawani , M.Sc. Konsep penting. Method overloading Encapsulation this keyword final static. Visualisasi Class. Class divisualisasikan dalam UML sebagai kotak persegi dengan 3 ruang : Nama : identitas kelas
E N D
Other OOP Basic ViskaMutiawani, M.Sc
Konseppenting • Method overloading • Encapsulation • this keyword • final • static
Visualisasi Class • Class divisualisasikandalam UML sebagaikotakpersegidengan 3 ruang: • Nama : identitaskelas • Variabel (atribut, state, field): atributkelas • Method (behavior, function, operation) : perilakukelas
Method Overloading • Method overloading: namamethodnyasamanamunbedaimplementasinya. • Perbedaanimplementasi: dibedakanolehparameternya (jumlah parameter, tipe data parameter, urutan parameter)
Method Overloading pada Constructor // Define the Circle class public class Circle { // Save as "Circle.java" // Private variables private double radius; private String color; // Constructors (overloaded) public Circle() { // 1st Constructor radius = 1.0; color = "red"; } public Circle(double r) { // 2nd Constructor radius = r; color = "red"; } public Circle(double r, String c) { // 3rd Constructor radius = r; color = c; } } Kelas Circle memiliki 3 method Constructor. Method mana yang dipilihakandisesuaikandengan parameter yang digunakansewaktumenciptaobjek Circle. Jikatidakketemupadanannyaakanmuncul error kompilasi
public vs private • public: class/variabel/method dapatdiaksesolehsemuaobjekdalamsistem. • private: variabel/method dapatdiaksesolehkelasitusendiri Pada UML: public dinotasikandengan + private dinotasikandengan -
Encapsulation • Objektidakseharusnyamembukalebarsemuainformasimengenainya. Adainformasi yang harusditutupidariklien. • Nasabahtidakperlutahuprosesdidalammesin ATM sewaktupenarikan • Encapsulationadalahteknikmempaketkaninformasidenganmenyembunyikansegalahalygharusdisembunyikandanmenampakkansegalahal yang bisaditampakkan.
Encapsulation • Satu class me-encapsulate/ membungkus data (dalamvariabel) danalgoritma (dalam method). • Nilaidarivariabelmenggambarkankondisinya (state) • Method menggambarkanperilakunya (behavior)
Information Hiding • Variabeldi-encapsulate dalam class denganmenggunakanaksesprivate. • Untukmencapainyakitapanggil/buat method accessor yang public. • Objeksalingberkomunikasiantarsesamanyadenganmenggunakanantar-muka (method public). • Implementasidalam method di-encapsulate dalam class.
Keyword this • Keyword thisdigunakanuntukmerujukpadaobjekinidalamsuatu class. • Kegunaannyauntukmenghilangkanambigu. • thisdapatdigunakanuntukvariabeldan method. • Pada constructor, this digunakanuntukmemanggil constructor lain.
Method toString() • Method toString() merupakansalahsatu method dasar yang adadalam class Object, yang akanmengembalikan String. • Setiap class dalam Java, sebaiknyamengoverride method toString() dengancaramencetakdeskripsiumumdariobjektersebut.
Constant (final) • Constant pada Java menggunakan keyword final. • Variabelfinalhanyabisadiberinilaisekalidantidakbisadiubah.
Static • Variabel static: variabel class • Variabel static akandiinisialisasiketikakelasdiinisialisasi. Walaupunadabanyakobjekhasilciptaansuatu class yang memilikivariabel static, variabelstaticnyatetaplahsatu (kepunyaan class) class Test { static int a=10; static int b =100; } Variabel static dapatdiaksessepertiini: Test.a=100; Test.b=200; Cara dibawahjuga valid: Test t1=new Test(); Test t2=new Test(); t1.a=100; t2.a=100;
Contoh // The Circle class definition public class Circle { // Save as "Circle.java" // Public constants public static final double DEFAULT_RADIUS = 8.8; public static final String DEFAULT_COLOR = "red"; // Private variables private double radius; private String color; // Constructors (overloaded) public Circle() { // 1st Constructor radius = DEFAULT_RADIUS; color = DEFAULT_COLOR; } public Circle(double radius) { // 2nd Constructor this.radius = radius; color = DEFAULT_COLOR; } public Circle(double radius, String color) { // 3rd Constructor this.radius = radius; this.color = color; } // Public getter and setter for private variables public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } // toString() to provide a short description of this instance public String toString() { return "Circle with radius = " + radius + " and color of " + color; } // Public methods public double getArea() { return radius*radius*Math.PI; } }
KerjasamaObjek • Padasuatuaplikasiberbasisobjek, aplikasitersebutmenciptakanobjek yang salingberkolaborasididalammemori
Latihan PermainanDadukudimainkanolehduapemain. Setiappemain yang mendapatgiliranakanmelemparduadadubersamaan. Nilaiyang munculpadakeduadadumempunyainilaitertentu, sepertidibawah: KombinasiSkor * Nilai 1 munculhanyapadasatudadu 100 * Nilai 5 munculhanyapadasatudadu 50 * Keduadadumenampilkannilai 2 200 * Keduadadumenampilkannilai 3 150 * Keduadadumenampilkannilai 6 250 Salahsatupemainakandinyatakanmenangjikaberhasilmengumpulkannilailebihdari 1000. Adaberapa class yang terlibatpadapermainanini?
Class yang terlibatpadapermainanDaduku • Dadu • sisi : int • + Dadu () • + getSisi () : int • + setSisi (sisi : int) : void • + lemparDadu () : void • + toString () : String • Permainan • ? • ? • Pemain • nama : String • nilai: int • + Pemain (nama:String) • + getNama () : String • + setNama (nama : String) : void • + getNilai () :int • + setNilai (skor : int) : void • + toString () : String
Latihan • Gender bisa : ‘l’ || ‘p’ atau ‘L’ || ‘P’ • Method toString() mengembalikan "author-name (gender) at email", e.g., “Amira (p) at amira@somewhere.com".
Latihan • Asumsi: bukudikarangolehsatupengarangsaja. • Method toString() that returns "'book-name' by author-name (gender) at email".Gunakan method Author's toString(), ygmengembalikan "author-name (gender) at email".