620 likes | 870 Views
Review Konsep Dasar Java. Konsep Object-Oriented Struktur Program Java. Topik. Konsep Object-Oriented Terfokus pada object dan class , berdasarkan skenario pada dunia nyata Mendeskripsikan state , behavior dan interaction pada object Keuntungan : Pengembangan lebih cepat
E N D
Konsep Object-Oriented Struktur Program Java Topik
Konsep Object-Oriented • Terfokus pada object dan class, berdasarkan skenario pada dunia nyata • Mendeskripsikan state, behavior dan interaction pada object • Keuntungan : • Pengembangan lebih cepat • Meningkatkan kualitas • Penanganan lebih mudah • Dapat dimodifikasi • Meningkatkan karakter reusable pada software Class • Digunakan untuk mendefinisikan tipe data baru • Blueprint Konsep Object-Oriented
Object • Sebuah entitas yang memiliki state, behavior dan identity • Contoh nyata dari sebuah class • Dibuat pada saat class di-instantiate menggunakan keywordnew • Contoh: pada Sistem registrasi siswa Attribut • Elemen data dari sebuah object • Menyimpan informasi tentang object • Alias dari atribut : Data member, instance variable, property, data field • Contoh: pada Sistem registrasi siswa Konsep Object-Oriented
Method • Menyatakan sifat dari sebuah object • Disebut juga fungsi atau prosedur • Contoh: pada Sistem registrasi siswa Konstruktor • Menyerupai method • Untuk membuat dan menginisialisasi sebuah object baru • Bukan merupakan anggota dari sebuah object Konsep Object-Oriented
Package • Pengelompokan class atau subpackage • Fungsinya sama seperti direktori Enkapsulasi • Suatu prinsip penyembunyian desain atau pengimplementasian informasi yang tidak sesuai pada object yang ada Abstraksi • Mengabaikan aspek dari subjek yang tidak sesuai dengan tujuan yang ada supaya lebih banyak mengkonsentrasikan yang ada Konsep Object-Oriented
Pewarisan • Hubungan antara class dimana dalam satu class ada superclass atau class induk dari class yang lain • Mengarah pada properi dan sifat yang diterima dari asalnya • Dikenal juga dengan hubungan "is-a" Konsep Object-Oriented
Polymorfisme • "poly" berarti banyak sedangkan "morph" berarti bentuk • Kemampuan dari sebuah object untuk membolehkan mengambil beberapa bentuk yang berbeda • Interface • Sebuah contract dalam bentuk kumpulan method dan deklarasi konstanta • Mengimplementasikan janji pada class untuk mengikuti contract Konsep Object-Oriented
Sintaks • <classDeclaration> ::= • <modifier> class <name> { • <attributeDeclaration>* • <constructorDeclaration>* • <methodDeclaration>* • } • dimana • Modifier • Mengacu pada access modifieratau type lain dari modifier • Name • Sebuah identifier pada nama kelas Struktur Program Java : Deklarasi Class
class SuperHero { String superPowers[]; void setSuperPowers(String superPowers[]) { this.superPowers = superPowers; } void printSuperPowers() { for (int i = 0; i < superPowers.length; i++) { System.out.println(superPowers[i]); } } } Struktur Program Java : Deklarasi Class
Sintaks: • <attributeDeclaration> ::= • <modifier> <type> <name> [= <default_value>]; • <type> ::= • byte | short | int | long | char | float | double | boolean | <class> Struktur Program Java : Deklarasi Attribut
public class AttributeDemo { private String studNum; public boolean graduating = false; protected float unitsTaken = 0.0f; String college; } Struktur Program Java : Deklarasi Attribut
Sintaks: • <methodDeclaration> ::= • <modifier> <returnType> <name>(<parameter>*) { • <statement>* • } • <parameter> ::= • <parameter_type> <parameter_name>[,] Struktur Program Java : Deklarasi Method
class MethodDemo { int data; int getData() { return data; } void setData(int data) { this.data = data; } void setMaxData(int data1, int data2) { data = (data1>data2)? data1 : data2; } } Struktur Program Java : Deklarasi Method
Sintaks: • <constructorDeclaration> ::= • <modifier> <className> (<parameter>*) { • <statement>* • } • dimana • Modifier • Dapat berupa beberapa acces modifier tetapi bukan tipe modifier lainnya. • Konstruktor secara default • Tidak mempunyai argumen • Tidak memiliki isi Struktur Program Java : Deklarasi Konstruktor
class ConstructorDemo { private int data; public ConstructorDemo() { data = 100; } ConstructorDemo(int data) { this.data = data; } } Struktur Program Java : Deklarasi Method
Syntax: • new <constructorName>(<parameters>) • Contoh: • class ConstructObj { • int data; • ConstructObj() { • /* initialize data */ • } • public static void main(String args[]) { • ConstructObj obj = new ConstructObj(); • } • } Struktur Program Java : Instansiasi Kelas
Notasi titik: • <object>.<member> • Contoh: • String myString = new String(“My String”); • //Access length method • System.out.println(“Length: ” + myString.length()); • int intArr = {1, 2, 3, 4, 5}; • //Access length attribute • System.out.println(“Length: ” + intArr.length); Struktur Program Java : Mengakses Anggota Objek
class ConstructObj { int data; ConstructObj() { /* initialize data */ } void setData(int data) { this.data = data; } public static void main(String args[]) { ConstructObj obj = new ConstructObj(); obj.setData = 10; //access setData() System.out.println(obj.data); //access data } } Struktur Program Java : Mengakses Anggota Object
Sintaks untuk indikasi bahwa kode dimiliki oleh sebuah package: • <packageDeclaration> ::= • package <packageName>; • Sintaks untuk mengimpor package lainnya: • <importDeclaration> ::= • import <packageName.elementAccessed>; • Format Source code: • [<packageDeclaration>] • <importDeclaration>* • <classDeclaration>+ Struktur Program Java : Package
package registration.reports; import registration.processing.*; import java.util.List; import java.lang.*; //imported by default class MyClass { /* details of MyClass */ } Struktur Program Java : Package
Menyembunyikan anggota dengan membuatnya private • Contoh • class Encapsulation { • private int secret; • public boolean setSecret(int secret) { • if (secret < 1 || secret > 100) • return false; • this.secret = secret; • return true; • } • public getSecret() { • return secret; • } • } Struktur Program Java : Enkapsulasi
Membuat class anak atau subkelas: • Menggunakan extends dalam mendeklarasikan class • Sintaks: • class <childClassName> extends <parentClassName> • Sebuah class hanya dapat meng-extend satu class induk Struktur Program Java : Pewarisan
import java.awt.*; class Point { int x; int y; } class ColoredPoint extends Point { Color color; } Struktur Program Java : Pewarisan
subclass mendefinisikan method yang bertanda serupa ke method dalam superclass • Tanda pada sebuah method • informasi yang ditemukan dalam definisi method bagian atas • Return type • Nama method • Daftar Parameter pada method • Berbeda dengan method overloading! Struktur Program Java : Method Overriding
class Superclass { void display(int n) { System.out.println("super: " + n); } } class Subclass extends Superclass { void display(int k) { System.out.println("sub: " + k); } } // continued... Struktur Program Java : Method Overriding
class OverrideDemo { public static void main(String args[]) { Subclass SubObj = new Subclass(); Superclass SuperObj = SubObj; SubObj.display(3); ((Superclass)SubObj).display(4); } } Struktur Program Java : Method Overriding
Pemanggilan method • Ditentukan oleh tipe data sebenarnya dari object yang diminta method • Access modifier untuk method yang dibutuhkan tidak harus sama • Access modifier pada method overriding • Access modifier yang sama seperti pada method overridden • Access modifier lebih luas Struktur Program Java : Method Overriding
class Superclass { void overriddenMethod() { } } class Subclass1 extends Superclass { public void overriddenMethod() { } } class Subclass2 extends Superclass { void overriddenMethod() { } } //continued... Struktur Program Java : Method Overriding
/* class Superclass { void overriddenMethod() { } } */ class Subclass3 extends Superclass { protected void overriddenMethod() { } } class Subclass4 extends Superclass { private void overriddenMethod() { } } Struktur Program Java : Method Overriding
Sintaks: • abstract <modifier> <returnType> <name>(<parameter>*); • Sebuah class yang berisi method abstract harus dideklarasikan sebagai sebuah class abstract. • abstract class <name> { • /* constructors, fields and methods */ • } Struktur Program Java : class abstract dan method
Kata kunci abstracttidak dapat digunakan pada : • konstruktor • Method static • class abstract tidak dapat diinstansiasi • Class yang meng-extends sebuah class abstract : • harus mengimplementasikan semua method abstract • Sebaliknya, subclass sendiri harus dideklarasikan sebagai abstract Struktur Program Java : class abstract dan method
abstract class SuperHero { String superPowers[]; void setSuperPowers(String superPowers[]) { this.superPowers = superPowers; } void printSuperPowers() { for (int i = 0; i < superPowers.length; i++) { System.out.println(superPowers[i]); } } abstract void displayPower(); } //continued... Struktur Program Java : class abstract dan method
class FlyingSuperHero extends SuperHero { void displayPower() { System.out.println("Fly..."); } } class Spiderman extends SuperHero { void displayPower() { System.out.println("Communicate with sea" + " creatures..."); System.out.println("Fast swimming ability..."); } } Struktur Program Java : class abstract dan method
Sintaks: • <interfaceDeclaration> ::= • <modifier> interface <name> { • <attributeDeclaration>* • [<modifier> <returnType> <name> • (<parameter>*);]* • } • Anggotanya adalah public ketika interface dideklarasikan sebagai public Struktur Program Java : Interface
Attribut Interface: • Secara implisit static dan final • Harus diinisialisasi • Modifier: • Access modifiers: public, package • Harus diinisialisasi • Mengimplementasikan sebuah interface: • Menggunakan kata kunci implements • Harus mengimplementasikan semua method interface • Sebuah class boleh mengimplementasikan lebih dari satu interface Struktur Program Java : Interface
interface MyInterface { void iMethod(); } class MyClass1 implements MyInterface { public void iMethod() { System.out.println("Interface method."); } void myMethod() { System.out.println("Another method."); } } //continued... Struktur Program Java : Interface
class MyClass2 implements MyInterface { public void iMethod() { System.out.println("Another implementation."); } } class InterfaceDemo { public static void main(String args[]) { MyClass1 mc1 = new MyClass1(); MyClass2 mc2 = new MyClass2(); mc1.iMethod(); mc1.myMethod(); mc2.iMethod(); } } Struktur Program Java : Interface
mengapa this? • Agar tidak ambigu antara attribut lokal dan variabel lokal • Menunjuk pada object yang meminta method non-static • Menunjuk pada konstruktor lain Struktur Program Java : kata kunci this
Agar tidak ambigu antara attribut lokal dan variabel lokal • class ThisDemo1 { • int data; • void method(int data) { • this.data = data; • /* • this.data refers to the attribute • while data refers to the local variable • */ • } • } Struktur Program Java : kata kunci this
Menunjuk pada object yang meminta method non-static • class ThisDemo2 { • int data; • void method() { • System.out.println(data); //this.data • } • void method2() { • method(); //this.method(); • } • } Struktur Program Java : kata kunci this
Method Overloading • Metode berbeda dalam sebuah kelas membagi nama yang sama • Daftar parameter harus berbeda • Jumlah parameter • Tipe parameter • Konstruktor dapat juga menjadi overload • Contoh: • class MyClass { • void myMeth() {} • void myMeth(int i) {} • void myMeth(int i, int j) {} • } Struktur Program Java : kata kunci this
menunjuk versi lain dari konstruktor • class ThisDemo3 { • int data; • ThisDemo3() { • this(100); • } • ThisDemo3(int data) { • this.data = data; • } • } Struktur Program Java : kata kunci this
Berhubungan dengan pewarisan • Digunakan untuk meminta konstruktor superclass • Dapat digunakan seperti kata kunci this untuk menunjuk pada anggota dari superclass • Memanggil konstruktor superclass • class Person { • String firstName; • String lastName; • Person(String fname, String lname) { • firstName = fname; • lastName = lname; • } • } Struktur Program Java : kata kunci super
//continuation... • class Student extends Person { • String studNum; • Student(String fname, String lname, String sNum) { • super(fname, lname); • studNum = sNum; • } • } • super() • Menunjuk pada superclass dengan segera • Harus berada pada pernyataan pertama dalam konstruktor superclass Struktur Program Java : kata kunci super
Menunjuk anggota superclass • class Superclass{ • int a; • void display_a(){ • System.out.println("a = " + a); • } • } • //continued... Struktur Program Java : kata kunci super
class Subclass extends Superclass { int a; void display_a(){ System.out.println("a = " + a); } void set_super_a(int n){ super.a = n; } void display_super_a(){ super.display_a(); } } Struktur Program Java : kata kunci super
class SuperDemo { public static void main(String args[]){ Superclass SuperObj = new Superclass(); Subclass SubObj = new Subclass(); SuperObj.a = 1; SubObj.a = 2; SubObj.set_super_a(3); SuperObj.display_a(); SubObj.display_a(); SubObj.display_super_a(); System.out.println(SubObj.a); } } Struktur Program Java : kata kunci super
Digunakan untuk anggota dari sebuah class : • attribut • Method • Inner class • Mengijinkan untuk mengakses static atau anggota class tanpa instansiasi • Variabel class • Bersifat seperti variabel global • Dapat diakses oleh semua instance dari kelas Struktur Program Java : kata kunci static