Review
Konsep Dasar Java
Materi Pembelajaran
Konsep Object-Oriented
Struktur Program Java
Konsep Object-Oriented
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 keyword new
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"
SuperHero
FlyingSuperHero
UnderwaterSuperHero
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
Struktur Program Java :
Deklarasi Class
Sintaks
<classDeclaration> ::=
<modifier> class <name> {
<attributeDeclaration>*
<constructorDeclaration>*
<methodDeclaration>*
}
dimana
Modifier
Mengacu
modifier
pada access modifier atau type lain dari
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 Attribut
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 Method
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 Konstruktor
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 Method
class ConstructorDemo {
private int data;
public ConstructorDemo() {
data = 100;
}
ConstructorDemo(int data) {
this.data = data;
}
}
Struktur Program Java :
Instansiasi Kelas
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 :
Mengakses Anggota Objek
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 Object
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 : Package
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 :
Access Modifier
Struktur Program Java :
Enkapsulasi
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 : Pewarisan
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 :
Method Overriding
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 :
class abstract dan method
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 abstract tidak 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 :
Interface
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 :
kata kunci this
mengapa this?
1. Agar tidak ambigu antara attribut lokal dan
variabel lokal
2. Menunjuk pada object yang meminta
method non-static
3. 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 super
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 static
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
Method class
Dapat diambil tanpa membuat sebuah object dari class
tersebut
Hanya dapat mengakses anggota static dari class
tidak dapat menunjuk pada this dan super
Blok static
Hanya dapat dieksekusi sekali, ketika kelas diisi
Untuk inisialisasi variabel class
Struktur Program Java :
kata kunci static
class Demo {
static int a = 0;
static void staticMethod(int i) {
System.out.println(i);
}
static { //static block
System.out.println("static block");
a += 1;
}
}
//continued...
Struktur Program Java :
kata kunci static
class StaticDemo {
public static void main(String args[]) {
System.out.println(Demo.a);
Demo.staticMethod(5);
Demo d = new Demo();
System.out.println(d.a);
d.staticMethod(0);
Demo e = new Demo();
System.out.println(e.a);
d.a += 3;
System.out.println(Demo.a+", "+d.a+", "+e.a);
}
}
Struktur Program Java :
kata kunci final
Dapat diaplikasikan pada variabel, method dan class
Dibatasi apa yang dapat lakukan dengan variabel, method
dan class.
Variabel final
Tidak dapat diubah setelah nilainya diset
contoh:
final
int data = 10;
data++;
Struktur Program Java :
kata kunci final
Method final
Tidak dapat di-override
contoh:
final void myMethod() {
//in a parent class
}
void myMethod() {
//in a child class
}
Class final
Tidak dapat diwariskan
contoh:
final public class MyClass {}
class WrongClass extends MyClass {}
Struktur Program Java :
kata kunci final
Kata kunci dapat diletakkan sebelum dan
setelah modifier lain
public
final static void meth() {}
or
final public static void meth() {}
or ...
//order of modifiers is not
important
Struktur Program Java :
Inner Classes
Dideklarasikan dalam class lain
Mengakses anggota dari inner class :
Membutuhkan sebuah instance dari inner class
Example:
innerObj.innerMember = 5;
//innerObj is an instance of the inner
class
//innerMember is a member of the inner
class
Struktur Program Java :
Inner Classes
Method-method dari inner class dapat secara langsung
mengakses anggota dari outer class contoh:
class Out {
int OutData;
class In {
void inMeth() {
OutData = 10;
}
}
}
Struktur Program Java :
Inner Classes
class OuterClass {
int data = 5;
class InnerClass {
int data2 = 10;
void method() {
System.out.println(data);
System.out.println(data2);
}
}
//continued...
Struktur Program Java :
Inner Classes
public static void main(String args[]) {
OuterClass oc = new OuterClass();
InnerClass ic = oc.new InnerClass();
System.out.println(oc.data);
System.out.println(ic.data2);
ic.method();
}
}
Kesimpulan
Konsep Object-Oriented
Desain Object-Oriented
Class
Object
Attribut
Method
Konstruktor
Package
Enkapsulasi
Abstraksi
Pewarisan
Polymorfisme
Interface
Kesimpulan
Struktur Program Java
Mendeklarasikan class Java
Mendeklarasikan Attribut
Mendeklarasikan Metode
Mendeklarasikan
konstruktor
Meng-instansiasi sebuah
class
Mengakses anggota object
Package
Access Modifier
Enkapsulasi
Pewarisan
Method Overriding
Class abstract dan method
Interface
Kata kunci this
Kata kunci super
Kata kunci static
Kata kunci final
Inner Classes