Struktur Program Java

advertisement
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
Download