Review Konsep Dasar Java

Post on 04-Jan-2016

73 views 0 download

description

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 - PowerPoint PPT Presentation

Transcript of Review Konsep Dasar Java

REVIEWREVIEWKONSEP DASAR JAVAKONSEP DASAR JAVA

Konsep Object-Oriented

Struktur Program Java

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

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

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

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

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

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

Sintaks <classDeclaration> ::= <modifier> class <name> { <attributeDeclaration>* <constructorDeclaration>* <methodDeclaration>* } dimana Modifier

Mengacu pada access modifier atau type lain dari modifier

Name Sebuah identifier pada nama kelas

1 class SuperHero {2 String superPowers[];3 void setSuperPowers(String superPowers[])

{4 this.superPowers = superPowers;5 }6 void printSuperPowers() {7 for (int i = 0; i < superPowers.length;

i++) {8 System.out.println(superPowers[i]);9 }10 }11 }

Sintaks: <attributeDeclaration> ::= <modifier> <type> <name> [= <default_value>];

<type> ::= byte | short | int | long | char | float | double | boolean | <class>

1 public class AttributeDemo {2 private String studNum;3 public boolean graduating = false; 4 protected float unitsTaken = 0.0f;5 String college;6 }

Sintaks: <methodDeclaration> ::= <modifier> <returnType> <name>(<parameter>*) { <statement>* } <parameter> ::= <parameter_type> <parameter_name>[,]

1 class MethodDemo {2 int data;3 int getData() {4 return data;5 }6 void setData(int data) {7 this.data = data;8 }9 void setMaxData(int data1, int data2) {10 data = (data1>data2)? data1 : data2;11 }12}

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

1 class ConstructorDemo {2 private int data;3 public ConstructorDemo() {4 data = 100;5 }6 ConstructorDemo(int data) {7 this.data = data;8 }9 }

Syntax: new <constructorName>(<parameters>)

Contoh:1. class ConstructObj {2. int data;3. ConstructObj() {4. /* initialize data */5. }6. public static void main(String args[]) {7. ConstructObj obj = new ConstructObj();8. }9. }

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);

1 class ConstructObj {2 int data;3 ConstructObj() {4 /* initialize data */5 }6 void setData(int data) {7 this.data = data;8 }9 public static void main(String args[]) {10 ConstructObj obj = new ConstructObj();11 obj.setData = 10; //access setData()12 System.out.println(obj.data); //access data13 }14 }

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>+

1 package registration.reports;2 import registration.processing.*;3 import java.util.List;4 import java.lang.*; //imported by default

5 class MyClass {6 /* details of MyClass */7 }

Menyembunyikan anggota dengan membuatnya private Contoh

1. class Encapsulation {2. private int secret;3. public boolean setSecret(int secret) {4. if (secret < 1 || secret > 100)5. return false;6. this.secret = secret;7. return true;8. }9. public getSecret() {10. return secret;11. }12.}

Membuat class anak atau subkelas: Menggunakan extends dalam

mendeklarasikan class Sintaks:

class <childClassName> extends <parentClassName>

Sebuah class hanya dapat meng-extend satu class induk

1.import java.awt.*;

2.class Point {3. int x;4. int y;5.}

6.class ColoredPoint extends Point {7. Color color;8.}

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!

1. class Superclass {2. void display(int n) {3. System.out.println("super: " + n);4. }5. }

6. class Subclass extends Superclass {7. void display(int k) {8. System.out.println("sub: " + k);9. }10.}

11.// continued...

14.class OverrideDemo {15. public static void main(String args[]) {16. Subclass SubObj = new Subclass();17. Superclass SuperObj = SubObj;18. SubObj.display(3);19. ((Superclass)SubObj).display(4);20. }21.}

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

1. class Superclass {2. void overriddenMethod() {3. }4. }5. class Subclass1 extends Superclass {6. public void overriddenMethod() {7. }8. }9. class Subclass2 extends Superclass {10. void overriddenMethod() {11. }12.}13.//continued...

14./* class Superclass {15. void overriddenMethod() {16. }17.} */18.class Subclass3 extends Superclass {19. protected void overriddenMethod() {20. }21.}22.class Subclass4 extends Superclass {23. private void overriddenMethod() {24. }25.}

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 */ }

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

1. abstract class SuperHero {2. String superPowers[];3. void setSuperPowers(String superPowers[]) {4. this.superPowers = superPowers;5. }6. void printSuperPowers() {7. for (int i = 0; i < superPowers.length; i++) {8. System.out.println(superPowers[i]);9. }10. }11. abstract void displayPower();12.}13.//continued...

1. class FlyingSuperHero extends SuperHero {2. void displayPower() {3. System.out.println("Fly...");4. }5. }

6. class Spiderman extends SuperHero {7. void displayPower() {8. System.out.println("Communicate with sea" +9. " creatures...");10. System.out.println("Fast swimming ability...");11. }12.}

Sintaks: <interfaceDeclaration> ::= <modifier> interface <name> { <attributeDeclaration>* [<modifier> <returnType> <name>

(<parameter>*);]* }

Anggotanya adalah public ketika interface dideklarasikan sebagai public

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

1. interface MyInterface {2. void iMethod();3. }

4. class MyClass1 implements MyInterface {5. public void iMethod() {6. System.out.println("Interface method.");7. }8. void myMethod() {9. System.out.println("Another method.");10. }11.}12.//continued...

14.class MyClass2 implements MyInterface {15. public void iMethod() {16. System.out.println("Another implementation.");17. }18.}19.class InterfaceDemo {20. public static void main(String args[]) {21. MyClass1 mc1 = new MyClass1();22. MyClass2 mc2 = new MyClass2();23. mc1.iMethod();24. mc1.myMethod();25. mc2.iMethod();26. }27.}

mengapa this?1. Agar tidak ambigu antara attribut

lokal dan variabel lokal2. Menunjuk pada object yang meminta

method non-static3. Menunjuk pada konstruktor lain

1. Agar tidak ambigu antara attribut lokal dan variabel lokal1. class ThisDemo1 {2. int data;3. void method(int data) {4. this.data = data;5. /* 6. this.data refers to the attribute 7. while data refers to the local variable 8. */9. }10.}

1. Menunjuk pada object yang meminta method non-static1. class ThisDemo2 {2. int data;3. void method() {4. System.out.println(data); //this.data5. }6. void method2() {7. method(); //this.method();8. }9. }

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) {} }

menunjuk versi lain dari konstruktor 1.class ThisDemo3 {2. int data;3. ThisDemo3() {4. this(100);5. }6. ThisDemo3(int data) {7. this.data = data;8. }9.}

Berhubungan dengan pewarisan Digunakan untuk meminta konstruktor superclass Dapat digunakan seperti kata kunci this untuk menunjuk

pada anggota dari superclass

Memanggil konstruktor superclass1. class Person {2. String firstName;3. String lastName;4. Person(String fname, String lname) {5. firstName = fname;6. lastName = lname;7. }8. }

9. //continuation...10.class Student extends Person {11. String studNum;12. Student(String fname, String lname, String sNum) {13. super(fname, lname);14. studNum = sNum;15. }16.}

super() Menunjuk pada superclass dengan segera Harus berada pada pernyataan pertama dalam konstruktor

superclass

Menunjuk anggota superclass 1.class Superclass{2. int a;3. void display_a(){4. System.out.println("a = " + a);5. }6.}

7.//continued...

9. class Subclass extends Superclass {10. int a;11. void display_a(){12. System.out.println("a = " + a);13. }14. void set_super_a(int n){15. super.a = n;16. }17. void display_super_a(){18. super.display_a();19. }20.}

21.class SuperDemo {22. public static void main(String args[]){23. Superclass SuperObj = new Superclass();24. Subclass SubObj = new Subclass();25. SuperObj.a = 1;26. SubObj.a = 2;27. SubObj.set_super_a(3);28. SuperObj.display_a();29. SubObj.display_a();30. SubObj.display_super_a();31. System.out.println(SubObj.a);32. }33.}

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

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

1. class Demo {2. static int a = 0;3. static void staticMethod(int i) {4. System.out.println(i);5. }6. static { //static block7. System.out.println("static block");8. a += 1;9. }10.}

11.//continued...

13.class StaticDemo {14. public static void main(String args[]) {15. System.out.println(Demo.a);16. Demo.staticMethod(5);17. Demo d = new Demo();18. System.out.println(d.a);19. d.staticMethod(0);20. Demo e = new Demo();21. System.out.println(e.a);22. d.a += 3;23. System.out.println(Demo.a+", "+d.a+", "+e.a);24. }25.}

Dapat diaplikasikan pada variabel, method dan class Dibatasi apa yang kita dapat lakukan dengan

variabel, method dan class.

Variabel final Tidak dapat diubah setelah nilainya diset contoh:

final int data = 10; data++;

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 {}

Kata kunci dapat diletakkan sebelum setelah modifier lain public final static void meth() {} or final public static void meth() {} or ...

//order of modifiers is not important

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

Method-method dari inner class dapat secara langsung mengakses anggota dari outer class contoh:

1.class Out {2. int OutData;3. class In {4. void inMeth() {5. OutData = 10;6. }7. }8.}

1. class OuterClass {2. int data = 5;3. class InnerClass {4. int data2 = 10;5. void method() {6. System.out.println(data);7. System.out.println(data2);8. }9. }

10.//continued...

9. public static void main(String args[]) {10. OuterClass oc = new OuterClass();11. InnerClass ic = oc.new InnerClass();12. System.out.println(oc.data);13. System.out.println(ic.data2);14. ic.method();15. }16.}

Konsep Object-Oriented Desain Object-Oriented Class Object Attribut Method Konstruktor

Package Enkapsulasi Abstraksi Pewarisan Polymorfisme Interface

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