Sunday, January 15, 2017

Java - Inheritance, Interface, Encapsulation, Polymorphism, Casting (PBO 2 Week 9 & 10)

Week 9
Inheritance: konsep fundamental dlm bhs pemrograman Java yang memungkinkan class-class tertentu untuk inherit methods & instance dari sebuah general class.
- class yang meng-inherit abstract class dapat meng-override methods yang ada.
- sebuah class hanya bisa meng-extend satu class lainnya.

Abstract Class: class yang tdk bisa di instantiate dan harus di extend.
- abstract class dpt memiliki abstract methods dan dapat meng-extend abstract class lain tanpa mengimplementasikan method yang ada.

Interfaces: digunakan untuk mendefinisikan fungsionalitas untuk class-class yang meng-implement interface tersebut.
- sebuah class dapat meng-implement > 1 interface.

Encapsulation: konsep menyimpan data bersamaan dengan methods untuk mengolah data tersebut dalam satu discrete class.
- memungkinkan data & method hiding (disebut juga information hiding).

Access Modifier: keyword yang menandakan apa saja yang dapat mengakses methods & instance variables.
- public, protected, private

Information Hiding: konsep untuk menyembunyikan detil implementasi dari sebuah class dengan menggunakan restrictive access modifiers.  

Setter & Getter: final concept dari information hiding. Sebaiknya instance variable dibuat private. Dengan demikian, tdk ada class external yang mampu mengakses variables secara langsung. Jika dibutuhkan, dapat mengakses setter & getternya saja.

LAB SESSION
- JavaDB
- Java Data Object
- Java Database Connectivity
- PreparedStatement
- Transactions

Week10
Polymorphism: sebuah object dapat berperan sebagai object lain dengan tipe yang berbeda dari original type-nya.
- dapat terjadi jika sebuah class meng-inherit class lain.
- Polymorphism juga dapat terjadi ketika sebuah class meng-implements interface, karena class tersebut harus memiliki methods yang sama seperti interface-nya, sehingga class tersebut dapat dianggap sebagai instance dari interface.

Casting: memungkinkan sebuah object untuk di-convert kembali menjadi original runtime type atau  type dari superclass nya.
- untuk melakukan casting, type diletakkan didalam tanda kurung ().
   double avg = 3.79;
   float gpa = (float) avg;

A. Casting Primitives: harus secara eksplisit agar tidak kehilangan precision saat konversi.
- Precision dapat hilang ketika: larger primitive di cast ke smaller primitives; floating point decimal di cast ke whole number primitive types.

B. Casting between primitives & Objects: dengan auto boxing & auto unboxing.
- Auto Boxing: wrap primitive value kedalam wrapper class yang bersangkutan.
- Auto Unboxing: unwrap value dari wrapper class kedalam primitive value.

C. Casting Objects
- sebuah object dapat berperan menjadi object superclass nya.
- untuk dapat mengakses fitur spesifik dari specific class, sebuah general class harus di cast kembali dengan specific class tersebut.
- contoh:
class Bank(){
  public bankMethod(){ return "Bank";};
}
class Account extends Bank{
  public bankMethod(){ return "Account";};
  public accountMethod(){ return "AccMethod";};
}

public class TestCast{
  public static void main (String args[]){
    Bank a = new Bank();
    Bank b = new Account();
    Account c = new Account();

    sout(a.bankMethod()); //Bank
    sout(b.bankMethod()); //Account
    sout(c.bankMethod()); //Account

    sout(b.accountMethod()); //invalid
    sout((Account)b.accountMethod()); //Account
  }
}

LAB SESSION
- Polymorphism via Interface & Inheritance
- Casting between primitives & objects

0 comments: