Sunday, October 19, 2014

Tutorial 46 - Object Casting

Tutorial ini merupakan permintaan salah seorang yang mengikuti blog ini.

Dalam tutorial polymorphism, ada dua cara untuk declare subclass:
KucingSiam mykucing = new KucingSiam();

dan
Kucing mykucing = new KucingSiam();

Katakanlah kita ada tambah method lompat() pada subclass, iaitu, KucingSiam.

Maknanya, sekarang method yang ada adalah macam ni:
Kucing (superclass) -> makan()
KucingSiam (subclass) -> makan(), lompat()

Apabila kita guna superclass sebagai type (istilah sebenarnya ialah reference), kita hanya boleh guna method yang hanya ada pada superclass sahaja.

Dalam erti kata lain, class Kucing tak boleh guna method lompat().

Jadi, kalau kita nak jugak guna method pada subclass walaupun type yang kita guna adalah superclass, kita kena buat casting.
Kucing mykucing = new KucingSiam();
KucingSiam mykucing2 = (KucingSiam) mykucing;
mykucing2.lompat();

atau secara ringkasnya,
Kucing mykucing = new KucingSiam();
((KucingSiam) mykucing).lompat();



Itu sahaja. Sekian.

Monday, June 23, 2014

Tutorial 45 - Exception Handling

Sebelum kita masuk ke bab File I/O, ada satu benda kita kena ambik tahu dulu, iaitu Exception Handling.

Jadi, tutorial ni kita akan berkenal-kenalan dengan Exception.

Exception ni lebih kurang macam error yang berlaku sewaktu kita run program.

Exception handling pulak bermaksud macam mana kita nak handle exception tersebut.

Disebabkan kita guna Java, secara automatik dia dah handle exception, yay!

Kalau tak percaya, cuba run code ni:

bahagi kosong


Dalam matematik, kita tak boleh bahagi dengan kosong, kalau tak percaya pakai kalkulator.

Bila kita tulis code macam tu, secara automatik Java dah nampak silap, lalu dia pun bagitau:

Exception in thread "main" java.lang.ArithmeticException: / by zero


Sekarang baru kita tahu cara Java handle exception adalah dengan bagitau kita apa exception yang berlaku kemudian tutup program tersebut.

Tapi, boleh tak kalau kita sendiri yang nak handle exception?

Contoh la bila kita ada buat software lepas tu terjadi exception takkan nak tutup terus, ye tak? Dengan tak save bagai, bikin sakit hati je.

Jadi, sekarang kita akan handle exception sendiri, iaitu dengan menggunakan try...catch.

Code... code...:

try catch block


Dalam try kita letak code yang kita nak check, kemudian letak exception apa yang kita nak handle depan catch.

Dalam kes ni kita nak handle ArithmeticException(bahagi kosong), jadi kita letak:

catch (ArithmeticException e)


Kalau taktau exception apa yang akan keluar, kita tulis saja:

catch (Exception e)


dia akan handle semua exception.

Lepas dah tulis catch, kita tulis macam mana kita nak handle exception tersebut.

Contoh kat sini kita tulis "takleh bahagi kosong", kemudian tutup program.


KUIZ!!!

Kalau kita tukar

int a = 5 / 0;


kepada

int a = 5 / 1;


apa yang akan jadi?


Itu saja tutorial kali ni, sekian.

Thursday, June 12, 2014

Tutorial 44 - abstract

Tutorial sebelum ni kita ada class MakananKucing, kita ada class Whiskas.

Kita tau paket Whiskas warna ungu dan ada harga tertentu, maksudnya dia ada ciri-ciri yang spesifik.

Bila kita cakap makanan kucing, kadang-kadang kita tertanya-tanya, makanan kucing yang mana satu? Ada Whiskas, Friskies, tulang ayam tulang ikan pun boleh jadi makanan kucing.

Maksudnya makanan kucing ni terlalu umum.

Bila sesuatu benda terlalu umum, kita tak boleh nak tentukan ciri-ciri dia.

Whiskas --> RM 1.50, warna ungu
Makanan kucing --> ???, ???


Jadi, itulah tutorial kali ni iaitu abstract.

Cara nak buat class abstract senang saja, tambah je keyword abstract depan class, macam ni:

public abstract class MakananKucing


Bila kita letak abstract, Java takkan bagi kita guna class ni.

Kalau nak guna jugak, kita kena guna class yang extends class abstract ni, contoh Whiskas.

// yang ni akan bagi error
MakananKucing makanan = new MakananKucing();


MakananKucing makanan = new Whiskas(); // yang ni ok Whiskas makanan = new Whiskas(); // yang ni pun ok



Satu lagi kegunaan keyword abstract adalah untuk buat abstract method, sebelum ni abstract class.

Cara nak buat abstract method, tambah saje keyword abstract dekat method tu kemudian tambah semicolon(;) kat hujung, contoh:

public abstract String toString();


Method abstract bermaksud kita WAJIB tulis balik(overwrite) method tersebut dekat subclass(dalam kes ni Whiskas).

Coding penuh dua-dua class tu akan jadi macam ni:

abstract class MakananKucing


class Whiskas



Itu saja, sekian.

Tuesday, June 10, 2014

Tutorial 43 - Polymorphism (part 2)

Kita dah belajar parameter, inheritance, dan polymorphism.

Sekarang kita akan guna tiga-tiga konsep ni.

Tengok class Kucing ni:

class Kucing


Method makan() ada MakananKucing sebagai parameter.

Ni pulak class MakananKucing:

class MakananKucing


Tutorial ni kita akan tengok walaupun kita letak MakananKucing sebagai parameter, kita masih boleh letak subclass kepada MakananKucing untuk parameter tersebut.

Yang ni class Whiskas, subclass kepada MakananKucing sebab kita ada letak keyword extends:

class Whiskas extends MakananKucing


Kalau tak percaya, kita boleh test macam ni:

test polymorphic argument


Nampak kan?

Walaupun kita letak Whiskas untuk parameter MakananKucing, dia still boleh run, sebab Whiskas extends MakananKucing.


Sekian.

Monday, June 9, 2014

Tutorial 42 - Polymorphism

Katakanlah kita buat class KucingSiam dan KucingParsi, dan dua-dua class ni inherit(mewarisi) class Kucing:

class Kucing

class KucingSiam

class KucingParsi


Rujuk Tutorial Inheritance kalau tak paham.

Kalau kita nak guna class KucingSiam, kita akan buat macam ni kan:
KucingSiam kucingsaya = new KucingSiam();

Selain tu, kita boleh jugak tulis macam ni:
Kucing kucingsaya = new KucingSiam();

So, apa guna tulis macam tu?

Ok, katakanlah kita nak simpan semua kucing tu dalam satu array.

Kalau kita buat array macam ni:
KucingSiam[] kucingsaya = new KucingSiam[2];
kucingsaya[0] = new KucingSiam();
kucingsaya[1] = new KucingParsi(); // yang ni akan bagi error

kita hanya boleh letak KucingSiam saje, KucingParsi tak boleh.

Jadi, kita buat macam ni:
Kucing[] kucingsaya = new Kucing[2];
kucingsaya[0] = new KucingSiam();
kucingsaya[1] = new KucingParsi();

Sekarang kita cuba test array tersebut guna loop, macam ni:

test loop untuk polymorphism


dan kita akan nampak, bila dia jumpa KucingSiam, dia akan guna method dalam class KucingSiam, bila jumpa KucingParsi, dia guna method dalam class KucingParsi.

Dia berubah-ubah.

Itulah yang dinamakan polymorphism.

POLY(banyak)     MORPH(berubah-ubah)


Ingat Poligami, ingat Mighty Morphin Power Rangers.

gambar ustaz azhar and familygambar mighty morphin power rangers


Poligami - kawin banyak.

Power Rangers - bila diorang cakap "It's morphin time!", diorang pun bertukar jadi power rangers.


Sekian.

Saturday, June 7, 2014

Tutorial 41 - Inheritance

Katakanlah kita buat dua class untuk adik-beradik lelaki dan perempuan, macam ni:

class Daughter

class Son


Lepas dah siap semua, tiba-tiba kita rasa nak tukar dari emoticon
:)

ke
:D

Kita pun tukarlah satu-satu code tu.

Hmmm, macam leceh pulak kena tukar satu-satu. Yang ni takpe lagi untuk senyum saje, macam mana kalau nanti nak buat untuk makan, mandi, tidur pulak?


Jadi, kita gunalah konsep inheritance.

Sekarang kita buat class untuk ibu, macam ni:

class Mother


Untuk buat inheritance, kita tambah keyword extends kat class Daughter dan Son, macam ni:

class Daughter guna inheritance

class Son guna inheritance


Inheritance bermaksud warisan.

Contoh, kadang-kadang kita ada dengar orang cakap, "Eh, muka dia macam mak dia la!", maksudnya dia ada mewarisi sifat ibu dia.

Bila kita letak extends macam ni,
public class Daughter extends Mother

Java pun paham:
"Oh ok, class Daughter ni mewarisi class Mother"

lalu Java secara automatik letak sifat-sifat dari class Mother kat class Daughter.

Kalau perasan, kita tak letak apa-apa pun dalam class Daughter dan Son, tapi sebenarnya ada method senyum().

Kalau tak percaya, kita test class Daughter dan Son, kita tengok boleh tak diorang senyum, macam ni:

test class Daughter dan class Son


Oh, sebelum terlupa. Bila Daughter atau Son extends Mother, kita akan panggil Mother sebagai superclass, dan Daughter/Son sebagai subclass.

Mother    ---> superclass

Daughter ---> subclass
Son          ---> subclass



Sekian saja tutorial kali ini.

Kalau tengah belajar Java, bila orang tanya inheritance, cepat-cepat ingat extends!
inheritance: extends
inheritance: extends
inheritance: extends

Friday, June 6, 2014

Tutorial 40 - Composition

Sebelum-sebelum ni class yang kita buat ada instance variable, contoh macam ni:

class Date untuk simpan tarikh


Perhatikan kat sini,
private int day;
private int month;
private int year;

yang biasa kita letak int, double, String, dan lain-lain kan?

Apa kata kalau kita nak buat class 'Kawan', dalamnya ada simpan nama dan birthday, boleh tak?

Nama boleh disimpan sebagai String, tapi macam mana dengan birthday?

Jadi, itulah tutorial kali ni iaitu Composition (cara sebut: Kom Po Zi Syen).


Kita dah ada class 'Date' untuk simpan tarikh, dan kita akan guna class ni untuk simpan tarikh lahir.

Sekarang kita buat class 'Kawan', contoh macam ni:

class Kawan dengan penggunaan composition


Perhatikan yang ni,
private Date birthDay;

itulah yang dipanggil Composition.

Kita letak class sebagai instance variable.


Nak test class ni, kita boleh run macam ni:

class untuk test composition


Sekian, terima kasih.

Thursday, June 5, 2014

Tutorial 39 - toString()

Kita tengok balik code dari Tutorial 37.

Bila kita nak display time, kita akan tulis macam ni:

call class Time objek subuh


Katakanlah kita rasa malas pulak nak tulis .getTime() tu, kita nak tulis macam ni saje:
System.out.println(subuh);


Caranya tambah saja method toString(),

class Time ditambah method tostring


Kita boleh return apa-apa saja string, dan bila kita tulis,
System.out.println(subuh);
kita akan dapat string seperti dalam method toString() tersebut.

Dalam kes ni kita nak tulis sama macam method getTime(), jadi kita guna balik getTime(),
return getTime();



Itu saja, sekian.

Tutorial 38 - Constructor Overloading (part 2)

Tutorial ni adalah sambungan dari Tutorial 37.

Kalau perasan dalam class Time ada satu benda yang nampak leceh, setiap constructor tu kita kena tulis balik isi yang sama:

hour = h;
minute = m;
second = s;


Kalau macam ni takpe lagi ada tiga baris je, nanti macam mana kalau ada berpuluh-puluh baris? Naya dibuatnya.

Untuk selesaikan masalah ni kita akan guna keyword this, macam ni:

class Time selepas diringkaskan


Ingat lagi dari Tutorial 36?

Kat Tutorial 36 keyword this merujuk 'this class', ataupun 'class ini'.

Kan nama untuk constructor sama dengan nama class, jadi bila kita tulis this dengan kurungan,

this();


secara automatik dia akan panggil constructor.

Dekat sini kita tulis,

this(0, 0, 0);


maksudnya kita akan guna constructor yang ada tiga parameter, iaitu

public Time(int h, int m, int s)


dan h akan jadi 0, m jadi 0, s pun jadi 0.


Sekian. Kalau kurang faham, bukak dua-dua tutorial, Tutorial 37 dan 38, dan bandingkan.

Tutorial 37 - Constructor Overloading

Katakanlah kita buat satu class yang ada constructor, macam ni:

class Time yang asal


Dan untuk guna class Time, kita akan tulis macam ni:

main class yang asal untuk run class Time


Untuk guna class Time, Java akan paksa kita untuk letak tiga argument(contoh: 3, 45, 30), baru kita boleh guna class tersebut.

Tapi, macam mana kalau ada satu hari nanti kita jadi malas sikit, kita nak letak satu je argument ataupun takmau letak langsung! Dan kita masih nak guna class Time.

Jadi, itulah tujuan tutorial ini, iaitu dengan menggunakan constructor overloading. Istilah ni tak payah ingat pun takpe, saje kabor kot-kot nanti exam tanya.

Kat bawah ni adalah contoh penggunaan constructor overloading:

class Time dengan constructor overloading


Simple je kan?

Kita tambah saje constructor baru dengan parameter yang lain-lain.

Nak tau jadi ke tak, kita run ni:

main class untuk run class Time lepas tambah constructor overloading


dan akan dapat output:

03:45:30
02:30:00
20:00:00
00:00:00



Tutorial akan datang kita akan tengok macam mana nak ringkaskan lagi class Time ni.

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Hot Sonakshi Sinha, Car Price in India