07 Advanced Class Features

Slides:



Advertisements
Presentasi serupa
Pemrograman Berorientasi Objek (Project)
Advertisements

Pemrograman JAVA (TIB09)
Pemrograman Berorientasi Objek
Membuat class sendiri.
Variabel di Java Variabel merupakan sebuah tempat untuk menyimpan data. Di Java setiap pembuatan variabel harus ditentukan tipe.
Nur Hayatin, S.ST Jurusan Teknik Informatika Universitas Muhammadiyah Malang Sem Genap 2010.
// memerlukan default constructor
POLIMORFISME Imam Fahrur Rozi 01.
Abstract Class & Interface
Pemrograman JAVA (TIB09)
Workshop SCS: Java Game Programming
Pemrograman Berorientasi Objek
SLIDE OTOMATIS PINDAH DALAM WAKTU 4-5 MENIT. A:kiriB:kanan Deklarasikan sebuah variabel dengan nama ‘isi’ yang mempunyai type array of double dengan ukuran.
Overriding, Overloading, Polymorphism
Method.
Inheritance Ery Setiyawan Jullev A.
Inheritance (Pewarisan)
Overriding, Overloading, Polymorphism
Advanced Class Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
Pemrograman Berbasis Obyek Oleh Tita Karlita
Advanced Class 2 Pertemuan 11 Pemrograman Berbasis Obyek Oleh Tita Karlita.
Pemrograman Berbasis Obyek
Pertemuan 8 Pemrograman Berbasis Obyek Oleh Tita Karlita
Encapsulation, Inheritance, polymorphism, dan interface
Variabel, Method & Constructor Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
INHERITANCE, POLYMORPHISM, DAN INTERFACE
Pewarisan, Polimorfisme, dan Interface
Class, Inheritance, Encapsulation & Interface
Pemrograman Berorientasi Obyek Oleh Tita Karlita
KELAS INNER, KELAS ABSTRACT, DAN INTERFACE
METHOD Object Oriented Programming with JAVA 2011/2012.
Pertemuan : Object Oriented Programming
OBJECT ORIENTED PROGRAMMING YANES HARDIANTO SUI Politeknik Manufaktur Astra 2011.
Inheritance Nana Ramadijanti Laboratorium Computer Vision Politeknik Elekltronika Negeri Surabaya PENS-ITS 2009.
PELATIHAN JAVA FUNDAMENTAL
Object Oriented Programming with JAVA 2011/2012
Bekerja dengan Java class library
Object Oriented Programming with JAVA 2011/2012
Polymorphism (bag. 2).
Method, Array dan String
OOP Java 06 Polymorphism.
Public class RelasiDemo { public static void main(String[] args) { //beberapa nilai int i = 37; int j = 42; int k = 42; System.out.println("Nilai variabel...");
Inheritance Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 4 Tahun : 2008 Versi : 1/0.
Inheritance, polymorphism, dan interface
Advanced Class Features 2
Kelas Lanjut 2 Oleh Tita Karlita.
Class and Object Matakuliah : XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan : 2 Tahun : 2008 Versi : 1/0.
INHERITANCE (Oleh : Nur Hayatin, S.ST)
OOP Java Minggu 2b Dasar OOP. Class (1) Deklarasi class : [ *] class { [ *] } Cat : [] = optional, * = repeat 0-N.
Algoritma &Pemrograman 1
Try, Catch, Finally Throws
Pertemuan 6 PEWARISAN AND POLYMORPHISM
Kelas A dapat memiliki referensi ke obyek dari kelas- kelas lain sebagai anggota. Kadang-kadang disebut sebagai hubungan “has-a”. Sebagai contoh, sebuah.
Class & Object Disusun Oleh: Reza Budiawan Untuk:
JAVA ARRAY.
Access Modifier.
Inheritance dan Kata Kunci static
POLYMORPHISM (KEBANYAKRUPAAN)
Java array.
Constructor dan Overloading
Java array.
MODIFIER JAVA.
Java array.
MEMBUAT CLASS SENDIRI 2.
Membuat Kelas.
Java array.
PBO Lanjutan Kelas (Lanjutan).
Matakuliah : M0074/PROGRAMMING II Tahun : 2005 Versi : 1/0
Java array.
Java array.
Transcript presentasi:

07 Advanced Class Features OOP Java 07 Advanced Class Features

Materi The Object Class Static keywords Final keyword Rekursi Static Attributes Static Methods Static Initializer Final keyword Final Class Final Methods Final Attributes Rekursi Inner class Variable length argument

The Object Class (1) Deklarasi : public class Employee { private String department; // dst } Apakah Sama dengan : public class Employee extends Object {

The Object Class (2) Kelas Object merupakan induk dari semua kelas di java. Jika sebuah kelas dideklarasikan tanpa keyword extends, maka kompilator akan menambahkan ‘extends Object’ secara implisit.

Static Keywords (1) Attribut/ method/ nested class yg meng-gunakan keyword static berasosiasi dengan kelasnya bukan instance dari kelas (objek) nya. Sehingga attribut/ method/ nested class yg meng-gunakan keyword static disebut sebagai class member bukan object member. Atribut kelas bertipe static dapat digunakan sebagai atribut/variabel yang di-share oleh semua instance (objek) dari kelas tsb. Atribut bertipe static mirip dengan variabel global pada bahasa pemrograman lain, karena java tidak memiliki variabel global.

Static Keywords – Attributes (2) Sebagai contoh, atribut static dapat digunakan untuk mengcounter berapa banyak objek yg sudah dibuat dari sebuah kelas. Pada diagram kelas, atribut static ditandai dengan garis bawah. Atribut static disebut juga : class attribute

Static Keywords – Attributes (3) Count +counter : int = 0 -serialNumber : int <<instanceOf>> <<instanceOf>> obj1 : Count obj2 : Count -serialNumber = 1 -serialNumber = 2

Static Keywords – Attributes (4) Setiap kali dibuat objek dari kelas Count , maka constructor Count() akan menambah nilai variabel static counter, dan setiap objek yang dibuat akan memiliki serialNumber yang berbeda-beda public class Count { private int serialNumber; public static int counter = 0; public Count() { counter++; serialNumber = counter; } public int getSerialNumber() { return serialNumber;

Static Keywords – Attributes (5) Jika atribut static tidak bersifat private, maka atribut tersebut dapat diakses dari kelas lain dengan tanpa membuat instance (objek) nya. public class TestCount { public static void main(String[] arg) { System.out.println("Counter : " + Count.counter); Count obj1 = new Count(); System.out.println("Creating object1..."); System.out.println("Serial number : " + obj1.getSerialNumber()); Count obj2 = new Count(); System.out.println("Creating object2..."); System.out.println("Serial number : " + obj2.getSerialNumber()); }

Static Keywords – Methods (6) public class Count2 { private int serialNumber; private static int counter = 0; public Count2() { counter++; serialNumber = counter; } public static int getTotalCount() { return counter; public int getSerial() { return serialNumber; public static int getStaticSerial() { return serialNumber; //error

Static Keywords – Methods (7) public class TestCount2 { public static void main(String[] ar) { System.out.println(“Counter : ” + Count2.getTotalCount()); Count2 obj1 = new Count2(); System.out.println(“Serial number : ” + obj1.getSerial()); Count2 obj2 = new Count2(); System.out.println(“Serial number : ” + obj2.getSerial()); }

Static Keywords – Methods (8) Method static disebut juga : class method. Class method dapat diakses tanpa membuat instance (objek) nya. Class method dipanggil bukan menggunakan nama objeknya, tetapi menggunakan nama kelasnya.

Static Keywords – Methods (9) Karena static method bukan bagian dari objek, maka didalam static method tidak dapat digunakan this. Konsekuensinya static method tidak dapat mengakses variabel lain, selain variabel lokal, atribut static, dan parameternya. Jika mengakses atribut objek yg tidak static akan menyebabkan error waktu dikompilasi.

Static Keywords – Initializer (10) public class Count4 { public static int counter; static { counter = 5; } //------------------------------------------------------------ public class TestCount4 { public static void main(String[] args) { System.out.println(“Counter : ” + Count4.counter);

Static Keywords – Initializer (11) Sebuah kelas dapat memiliki static block, yang bukan merupakan bagian dari method. Static block dieksekusi satu kali pada saat kelas di-load ke memori, sehingga biasanya digunakan untuk menginisialisasi static atribut.

Final Keywords – Class (1) public final class Human { private String nama; private int umur; } //------------------------------- public class Mhs extends Human { //error

Final Keywords – Class (2) Keyword final dapat digunakan dalam mendeklarasikan : kelas, method, atribut. Keyword final mirip dengan const / konstanta pada bahasa lain. Jika kelas menggunakan keyword final, maka kelas tersebut tidak dapat diturunkan lagi.

Final Keywords – Methods (3) public class Manusia2 { private String nama; protected int umur; public final int getUmur() { return umur; } public int getUmur(int tambah) { //coba overload return (umur+tambah);

Final Keywords – Methods (4) public class Mhs2 extends Manusia2 { public int getUmur() { //coba override (error) return (umur+1); }

Final Keywords – Methods (5) Jika method menggunakan keyword final, maka method tersebut tidak dapat di-override. Ini berguna jika kita memiliki implementasi sebuah method yg kritikal dan tidak boleh diganti oleh turunannya.

Final Keywords – Attribute (6) public class Customer { private final long minimumSaving = 100000; private final long customerID; public Customer() { customerID = createID(); } private long createID() { int c = 1000; c++; return c; public String toString() { String str; str ="Min Saving : " + minimumSaving + '\n' + "Customer ID : " +customerID; minimumSaving++; //error cannot assign a value to final variable return str;

Final Keywords – Attribute (7) Jika atribut menggunakan keyword final, maka nilai atribut/variabel tersebut tidak dapat diubah (= const). Jika deklarasi final variabel tidak diinisialisasi, maka nilainya dapat diassign satu kali didalam constructornya.

Rekursi (1) public class Faktorial { //fungsi rekursif public int factorR(int n) { int hasil; if (n == 1) return 1; hasil = factorR(n - 1) * n; return hasil; } //fungsi non-rekursif (loop) public int factorL(int n) { int hasil, c; hasil = 1; for (c = 1; c <= n; c++) hasil = hasil * c; public class TestFaktorial { public static void main(String[] args) { ConsoleIn cons = new ConsoleIn(); String str; int n; Faktorial fa = new Faktorial(); System.out.print("Mencari faktorial dari : "); str = cons.bacaString(); n = Integer.parseInt(str); System.out.println("\nCara rekursif :" + n + " faktorial = " + fa.factorR(n)); System.out.println("Cara loop :" + n + " faktorial = " + fa.factorL(n)); }

Rekursi (2) Rekursi : proses mendefinisikan sesuatu dengan menggunakan dirinya sendiri Method dapat bersifat rekursif (memanggil dirinya sendiri)

Inner Class (1) public class TestInner { public class Outer { int[] bil; public Outer(int[] n) { bil = n; } public void Analisa() { Inner ino = new Inner(); System.out.println("Minimum : " + ino.min()); System.out.println("Maksimum : " + ino.max()); System.out.println("Rata-rata : " + ino.rata()); //inner class class Inner { int min() { int m = bil[0]; for (int c = 1; c < bil.length; c++) if (bil[c] < m) m = bil[c]; return m; int max() { if (bil[c] > m) int rata() { int m = 0; for (int c = 0; c < bil.length; c++) m = m + bil[c]; return (m / bil.length); } } //end inner } //end outer public class TestInner { public static void main(String[] args) { int[] dat = {3, 8, 5, 7, 2, 9, 4, 5}; Outer out = new Outer(dat); out.Analisa(); }

Inner Class (2) Inner class : kelas yg dideklarasikan didalam kelas lain Inner class hanya dapat diakses dari kelas outer-nya (kelas luarnya) Inner class dapat mengakses member dari kelas luarnya Kelas luarnya tidak dapat mengakses member dari kelas inner

Variable Length Arguments (1) public class VarArgs { public void cobaVa(int ...v) { int c; System.out.println("Banyaknya argumen : " + v.length); for (c = 0; c < v.length; c++) System.out.println("Argumen ke-" + c + " : " + v[c]); } //------------------------------------------------------------------- public class TestVarArgs { public static void main(String[] args) { VarArgs varg = new VarArgs(); varg.cobaVa(); varg.cobaVa(7); varg.cobaVa(3, 7, 5); varg.cobaVa(1, 3, 5, 7, 9, 8, 6, 4, 2, 0);

Variable Length Arguments (2) Variable argument length : argumen (parameter) method yg banyaknya bisa bervariasi Ditunjukkan dengan … (tiga tanda titik) pada parameter method Dapat diakses sebagai array

Terima Kasih Practice Builds Expertise