8 Fitur Oo Lanjutan (A)

893 views

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
893
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

8 Fitur Oo Lanjutan (A)

  1. 1. Fitur OO Lanjutan Java Sufian Idris Marini Abu Bakar Jabatan Sains Komputer
  2. 2. Pengenalan <ul><li>Tajuk berikut akan dibincangkan: </li></ul><ul><ul><li>Metod pembina </li></ul></ul><ul><ul><li>Penyaratan metod </li></ul></ul><ul><ul><li>Kawalan capaian </li></ul></ul><ul><ul><li>Hubungan pewarisan </li></ul></ul><ul><ul><li>Pensubkelasan </li></ul></ul><ul><ul><li>Pembatalan metod </li></ul></ul><ul><ul><li>Polimorfisma </li></ul></ul>
  3. 3. Metod Pembina <ul><li>Pertimbangkan takrifan kelas berikut: </li></ul><ul><ul><li>class Akaun { </li></ul></ul><ul><ul><ul><li>private String nbrAkaun; </li></ul></ul></ul><ul><ul><ul><li>private boolean aktif; </li></ul></ul></ul><ul><ul><ul><li>private String pemilik; </li></ul></ul></ul><ul><ul><ul><li>public void paparInfo ( ) { </li></ul></ul></ul><ul><ul><ul><ul><li>System.out.println(“Nombor akaun: “+nbrAkaun); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>System.out.println(“Pemilik: “+pemilik); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>System.out.print(“Status: “); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>if (!aktif) </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>System.out.print(“TIDAK “); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>System.out.println(“AKTIF”); </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>} </li></ul></ul>
  4. 4. <ul><li>Apakah yang berlaku jika kod berikut dilaksanakan? </li></ul><ul><ul><ul><li>Akaun akaunBaru = new Akaun ( ); </li></ul></ul></ul><ul><ul><ul><li>akaunBaru. paparInfo ( ); </li></ul></ul></ul><ul><li>Satu teknik untuk menangani masalah ini adalah memperkenalkan suatu metod yang tujuannya untuk mengawalkan ( initialize ) atribut objek. Contoh.. </li></ul><ul><ul><ul><li>Akaun akaunBaru = new Akaun ( ); </li></ul></ul></ul><ul><ul><ul><li>akaunBaru. pengawalan (“010-99333-03”, </li></ul></ul></ul><ul><ul><ul><li>“ Nada Asyiqin”, true); </li></ul></ul></ul><ul><ul><ul><li>akaunBaru. paparInfo ( ); </li></ul></ul></ul><ul><li>Apakah kelemahan pendekatan ini? </li></ul>
  5. 5. <ul><li>Terdapat dua cara untuk melakukan pengawalan atribut pada masa penciptaan objek: </li></ul><ul><ul><li>Menspesifikasi nilai awal atribut pada pengisytiharannya dalam takrifan kelas </li></ul></ul><ul><ul><li>Metod pembina ( constructor ) </li></ul></ul>
  6. 6. <ul><li>Menspesifikasi nilai awal atribut </li></ul><ul><ul><ul><li>class Tabung { </li></ul></ul></ul><ul><ul><ul><ul><li>private int sen = 0; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>private String pemilik = null; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>public void masuk (int jumSen) { </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>sen += jumSen; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>public void keluar (int jumSen) { </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>sen -= jumSen; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  7. 7. <ul><li>Bagi setiap objek Tabung yang dicipta, nilai atribut sen objek tersebut diawalkan kepada 0. </li></ul><ul><ul><ul><li>for (int i=0; i < 3; i++) </li></ul></ul></ul><ul><ul><ul><ul><li>new Tabung ( ); </li></ul></ul></ul></ul>
  8. 8. <ul><li>Metod pembina ( constructor ) </li></ul><ul><ul><ul><li>class Tabung { </li></ul></ul></ul><ul><ul><ul><ul><li>private int sen; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>private String pemilik; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>public Tabung ( ) { </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>sen = 0; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>pemilik = null; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>public void masuk (int jumSen) { </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>sen += jumSen; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>public void keluar (int jumSen) { </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>sen -= jumSen; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>Metod pembina
  9. 9. <ul><li>Metod pembina dilaksanakan setiap kali suatu objek Tabung dicipta. Semasa perlaksanaan metod ini, nilai atribut sen objek Tabung yang dicipta diawalkan kepada 0. </li></ul><ul><li>Perhatikan sekarang perlaksanaan kod berikut: </li></ul><ul><ul><ul><li>for (int i=0; i < 3; i++) </li></ul></ul></ul><ul><ul><ul><ul><li>new Tabung ( ); </li></ul></ul></ul></ul>
  10. 10. <ul><li>Metod pembina adalah suatu metod istimewa yang sesuai untuk meletakkan kod pengawalan yang perlu dilaksanakan oleh objek pada masa ia dicipta. </li></ul><ul><li>Metod pembina tidak boleh mengembalikan apa-apa di akhir perlaksanaannya. Malah, sintaksnya tidak ada jenis kembali. </li></ul><ul><li>Satu lagi kekangan: nama metod pembina mestilah sama dengan nama kelas . </li></ul><ul><li>Metod pembina boleh juga diparameterkan . Untuk suatu objek melaksanakan metod pembina yang berparameter, nilai bagi setiap parameter metod itu perlu dihulurkan semasa penciptaan objek tersebut. </li></ul>
  11. 11. <ul><li>Contoh: </li></ul><ul><ul><ul><li>class Tabung { </li></ul></ul></ul><ul><ul><ul><ul><li>private int sen; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>private String pemilik; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>public Tabung (int nilaiSen, String nama) { </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>sen = nilaiSen; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>pemilik = nama; </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>public void masuk (int jumSen) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>sen += jumSen; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><ul><li>public void keluar (int jumSen) { </li></ul></ul></ul></ul><ul><ul><ul><ul><li>sen -= jumSen; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>} </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>parameter
  12. 12. <ul><li>Kod berikut menunjukkan satu contoh penciptaan objek Tabung . </li></ul><ul><ul><ul><li>Tabung tabungAdik = new Tabung (100, “Raziq”); </li></ul></ul></ul><ul><li>Setiap kelas mesti menakrifkan sekurang-kurangnya satu metod pembina. </li></ul><ul><li>Sekiranya pengaturcara tidak menakrifkan sebarang metod pembina untuk suatu kelas, maka pengkompil Java akan menakrifkan satu metod pembina lalai ( default constructor ) untuk kelas tersebut. </li></ul><ul><li>Metod pembina lalai ini adalah suatu metod kosong tanpa sebarang parameter. </li></ul>
  13. 13. <ul><li>Contoh: </li></ul><ul><ul><li>class Akaun { </li></ul></ul><ul><ul><ul><li>private String nbrAkaun; </li></ul></ul></ul><ul><ul><ul><li>private boolean aktif; </li></ul></ul></ul><ul><ul><ul><li>private String pemilik; </li></ul></ul></ul><ul><ul><ul><li>public Akaun (String nomborAkaun, String nama) { </li></ul></ul></ul><ul><ul><ul><ul><li>nbrAkaun = nomborAkaun; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>pemilik = nama; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>aktif = false; </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>public void paparInfo ( ) { </li></ul></ul></ul><ul><ul><ul><ul><li>System.out.println(“Nombor akaun: “+nbrAkaun); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>System.out.println(“Pemilik: “+pemilik); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>System.out.print(“Status: “); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>if (!aktif) </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>System.out.print(“TIDAK “); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><li>System.out.println(“AKTIF”); </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>public static void main(String[ ] args) { </li></ul></ul></ul><ul><ul><ul><ul><li>Akaun akaun = new Akaun (“010-99333-03”, “Nada Asyiqin”); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>akaun. paparInfo ( ); </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>} </li></ul></ul>
  14. 14. Penyaratan Metod <ul><li>Pertimbangkan segmen kod berikut: </li></ul>class Cacing { private int panjang; private char aksara; <ul><li>public Cacing(int pjg, char aks) { </li></ul><ul><ul><li>panjang = pjg; </li></ul></ul><ul><ul><li>aksara = aks; </li></ul></ul><ul><li>} </li></ul><ul><li>private void paparBadan(int aks) { </li></ul><ul><ul><li>for (int i=0; i < panjang; i++) </li></ul></ul><ul><ul><ul><li>System.out.print(aks); </li></ul></ul></ul><ul><li>} </li></ul><ul><li>private void paparKepala() { </li></ul><ul><ul><li>System.out.print(&quot;:>&quot;); </li></ul></ul><ul><li>} </li></ul>
  15. 15. Metod untuk memapar objek cacing } <ul><li>public void papar1() { </li></ul><ul><ul><li>paparBadan(aksara); </li></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul><ul><li>public void papar2(char aks) { </li></ul><ul><ul><li>paparBadan(aks); </li></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul><ul><li>public void papar3(int faktor, char aks) { </li></ul><ul><ul><li>for (int i=0; i < faktor; i++) </li></ul></ul><ul><ul><ul><li>paparBadan(aks); </li></ul></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul>
  16. 16. <ul><li>Output yang diperolehi: </li></ul><ul><ul><ul><li>xxx:> </li></ul></ul></ul><ul><ul><ul><li>***:> </li></ul></ul></ul><ul><ul><ul><li>= = = = = = = = = :> </li></ul></ul></ul><ul><li>public void papar1() { </li></ul><ul><ul><li>paparBadan(aksara); </li></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul><ul><li>public void papar2(char aks) { </li></ul><ul><ul><li>paparBadan(aks); </li></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul><ul><li>public void papar3(int faktor, char aks) { </li></ul><ul><ul><li>for (int i=0; i < faktor; i++) </li></ul></ul><ul><ul><ul><li>paparBadan(aks); </li></ul></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul>private void paparBadan(int aks) { for (int i=0; i < panjang; i++) System.out.print(aks); } <ul><li>private void paparKepala() { </li></ul><ul><ul><li>System.out.print(&quot;:>&quot;); </li></ul></ul><ul><li>} </li></ul>class Aplikasi { } <ul><li>public static void main(String[] args) { </li></ul><ul><ul><li>Cacing cacing = new Cacing(3, 'x'); </li></ul></ul><ul><ul><li>cacing.papar1(); </li></ul></ul><ul><ul><li>System.out.println(); </li></ul></ul><ul><ul><li>cacing.papar2('*'); </li></ul></ul><ul><ul><li>System.out.println(); </li></ul></ul><ul><ul><li>cacing.papar3(3, '='); </li></ul></ul><ul><li>} </li></ul>
  17. 17. <ul><li>Ketiga-tiga metod papar1() , papar2() dan papar3() sebenarnya melakukan tugas yang sama: memaparkan objek Cacing . Alangkah cantiknya jika kita boleh gunakan nama yang sama. </li></ul><ul><li>Ini boleh dilakukan dalam Java kerana adanya sokongan penyaratan metod . Menyarat metod bermaksud menggunakan nama yang sama untuk lebih daripada satu metod dalam suatu kelas. </li></ul>
  18. 18. <ul><li>Contoh 1: </li></ul><ul><ul><li>Tulis semula aturcara: </li></ul></ul>class Cacing { private int panjang; private char aksara; <ul><li>public Cacing(int pjg, char aks) { </li></ul><ul><ul><li>panjang = pjg; </li></ul></ul><ul><ul><li>aksara = aks; </li></ul></ul><ul><li>} </li></ul><ul><li>private void paparBadan(int aks) { </li></ul><ul><ul><li>for (int i=0; i < panjang; i++) </li></ul></ul><ul><ul><ul><li>System.out.print(aks); </li></ul></ul></ul><ul><li>} </li></ul><ul><li>private void paparKepala() { </li></ul><ul><ul><li>System.out.print(&quot;:>&quot;); </li></ul></ul><ul><li>} </li></ul>
  19. 19. Penyaratan metod : nama metod yang sama } <ul><li>public void papar() { </li></ul><ul><ul><li>paparBadan(aksara); </li></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul><ul><li>public void papar(char aks) { </li></ul><ul><ul><li>paparBadan(aks); </li></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul><ul><li>public void papar(int faktor, char aks) { </li></ul><ul><ul><li>for (int i=0; i < faktor; i++) </li></ul></ul><ul><ul><ul><li>paparBadan(aks); </li></ul></ul></ul><ul><ul><li>paparKepala(); </li></ul></ul><ul><li>} </li></ul>
  20. 20. class Aplikasi { } <ul><li>public static void main(String[] args) { </li></ul><ul><ul><li>Cacing cacing = new Cacing(3, 'x'); </li></ul></ul><ul><ul><li>cacing.papar(); </li></ul></ul><ul><ul><li>System.out.println(); </li></ul></ul><ul><ul><li>cacing.papar('*'); </li></ul></ul><ul><ul><li>System.out.println(); </li></ul></ul><ul><ul><li>cacing.papar(3, '='); </li></ul></ul><ul><li>} </li></ul>
  21. 21. <ul><li>Contoh 2: </li></ul><ul><li>Metod println() sebenarnya telah disaratkan dalam kelasnya. </li></ul><ul><ul><ul><li>int pbhInt; </li></ul></ul></ul><ul><ul><ul><li>double pbhDbl; </li></ul></ul></ul><ul><ul><ul><li>System.out. println (&quot;UKM&quot;); </li></ul></ul></ul><ul><ul><ul><li>System.out. println ('X'); </li></ul></ul></ul><ul><ul><ul><li>System.out. println (pbhInt); </li></ul></ul></ul><ul><ul><ul><li>System.out. println (pbhDbl); </li></ul></ul></ul><ul><li>Metod-metod yang diberikan nama yang sama dalam suatu takrifan kelas mesti dapat dibezakan oleh Java. Dalam hal ini, Java menggunakan maklumat jenis dan urutan parameternya . </li></ul>
  22. 22. versi double versi float versi float versi double, String guna pengacuan automatik char => int => float class Ujian { } <ul><li>public void output(double x) { </li></ul><ul><ul><li>System.out.println(&quot;versi double&quot;); </li></ul></ul><ul><li>} </li></ul><ul><li>public void output(float x) { </li></ul><ul><ul><li>System.out.println(&quot;versi float&quot;); </li></ul></ul><ul><li>} </li></ul><ul><li>public void output(double x, String y) { </li></ul><ul><ul><li>System.out.println(&quot;versi double, String&quot;); </li></ul></ul><ul><li>} </li></ul><ul><li>public static void main(String[] args) { </li></ul><ul><ul><li>Ujian u = new Ujian(); </li></ul></ul><ul><ul><li>u.output(3.3); </li></ul></ul><ul><ul><li>u.output(3.3f); </li></ul></ul><ul><ul><li>u.output('k'); </li></ul></ul><ul><ul><li>u.output(5.2, &quot;cuba&quot;); </li></ul></ul><ul><ul><li>//u.output (&quot;RALAT&quot;); </li></ul></ul><ul><li>} </li></ul>ralat pengkompilan
  23. 23. <ul><li>Outputnya: </li></ul><ul><ul><ul><li>versi double </li></ul></ul></ul><ul><ul><ul><li>versi float </li></ul></ul></ul><ul><ul><ul><li>versi float </li></ul></ul></ul><ul><ul><ul><li>versi double, String </li></ul></ul></ul><ul><li>Perhatikan kenyataan yang dikomenkan dalam metod main( ) di atas adalah suatu ralat kerana metod output(String) tidak ditakrifkan untuk objek Ujian . </li></ul>
  24. 24. <ul><li>Perhatikan juga bahawa </li></ul><ul><ul><li>u.output('k'); </li></ul></ul><ul><li>menyebabkan metod output( float ) dilaksanakan. </li></ul><ul><li>Oleh kerana tidak ada metod output( char ) , maka Java akan menggunakan pengacuan automatik ( automatic casting ) ke atas parameter sebenar untuk menentukan metod yang terhampir. </li></ul><ul><ul><li>output( char ) => output( int ) => output( float ) </li></ul></ul>
  25. 25. <ul><li>Metod pembina kerap di sarat kan. Dengan itu, klien boleh memilih metod pembina yang sesuai untuk dilaksanakan dalam penciptaan suatu objek. </li></ul>
  26. 26. <ul><li>Contoh 1: </li></ul>Metod pembina disaratkan class Segiempat { … } <ul><li>public Segiempat() { </li></ul><ul><ul><li>lebar = 1; </li></ul></ul><ul><ul><li>tinggi = 1; </li></ul></ul><ul><li>} </li></ul><ul><li>public Segiempat(int saiz) { </li></ul><ul><ul><li>lebar = saiz; </li></ul></ul><ul><ul><li>tinggi = saiz; </li></ul></ul><ul><li>} </li></ul><ul><li>public Segiempat(int lb, int tg) { </li></ul><ul><ul><li>lebar = lb; </li></ul></ul><ul><ul><li>tinggi = tg; </li></ul></ul><ul><li>} </li></ul>private int lebar, tinggi ;
  27. 27. Boleh pilih metod pembina yang sesuai class Aplikasi { } <ul><li>public static void main(String[] args) { </li></ul><ul><ul><li>Segiempat sg4a = new Segiempat(); </li></ul></ul><ul><ul><li>Segiempat sg4b = new Segiempat(5); </li></ul></ul><ul><ul><li>Segiempat sg4c = new Segiempat(3, 4); </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>} </li></ul>
  28. 28. <ul><li>Contoh 2: </li></ul><ul><li>Kelas pustaka Date dalam pakej java.util menakrifkan beberapa metod pembina: </li></ul><ul><ul><li>public Date (); </li></ul></ul><ul><ul><li>public Date (long milisaat); </li></ul></ul><ul><ul><li>public Date (int tahun, int bulan, int hari); </li></ul></ul><ul><ul><li>public Date (int tahun, int bulan, int hari, int jam, int minit); </li></ul></ul><ul><ul><li>public Date (int tahun, int bulan, int hari, int jam, int minit, int saat); </li></ul></ul>
  29. 29. Kawalan Capaian <ul><li>Kawalan capaian adalah berkaitan dengan skop: </li></ul><ul><ul><li>Bagi pemboleh ubah ahli , ia menentukan kawasan kod aturcara yang mana nilainya boleh dicapai. </li></ul></ul><ul><ul><li>Bagi metod ahli suatu kelas, ia menentukan kawasan kod aturcara yang mana mesej bagi metod itu boleh dihantar kepada objek daripada kelas tersebut. </li></ul></ul><ul><li>Terdapat tiga kawalan capaian yang disediakan oleh Java iaitu private , protected dan public . Kawalan capaian protected akan diterangkan kemudian. </li></ul>
  30. 30. <ul><li>Kawalan Capaian private </li></ul><ul><li>Pertimbangkan kod aturcara di bawah: </li></ul>class Wang { } <ul><li>public Wang(int r, int s) { </li></ul><ul><ul><li>ringgit = r; </li></ul></ul><ul><ul><li>sen = s; </li></ul></ul><ul><ul><li>System.out.println(&quot;Jumlah sen: &quot;+jumlahSen()); </li></ul></ul><ul><li>} </li></ul><ul><li>private int jumlahSen() { </li></ul><ul><ul><li>return 100*ringgit+sen; </li></ul></ul><ul><li>} </li></ul>private int ringgit, sen; OK!
  31. 31. <ul><li>Atribut private hanya boleh dicapai dalam kelasnya . </li></ul><ul><li>Penghantaran mesej untuk melaksanakan metod private hanya boleh dilakukan di dalam kelas metod tersebut. </li></ul>class Aplikasi { } <ul><li>public static void main(String[] args) { </li></ul><ul><ul><li>Wang wang = new Wang(5, 20); </li></ul></ul><ul><ul><li>wang.ringgit = -100; </li></ul></ul><ul><ul><li>System.out.println(&quot;Jumlah sen: &quot;+wang.jumlahSen()); </li></ul></ul><ul><li>} </li></ul>RALAT!
  32. 32. <ul><li>Kawalan Capaian public </li></ul><ul><li>Pertimbangkan pula kod aturcara di bawah: </li></ul>class Wang { } <ul><li>public Wang(int r, int s) { </li></ul><ul><ul><li>ringgit = r; </li></ul></ul><ul><ul><li>sen = s; </li></ul></ul><ul><ul><li>System.out.println(&quot;Jumlah sen: &quot;+jumlahSen()); </li></ul></ul><ul><li>} </li></ul><ul><li>public int jumlahSen() { </li></ul><ul><ul><li>return 100*ringgit+sen; </li></ul></ul><ul><li>} </li></ul>public int ringgit, sen; OK! YUK!!
  33. 33. class Aplikasi { } <ul><li>public static void main(String[] args) { </li></ul><ul><ul><li>Wang wang = new Wang(5, 20); </li></ul></ul><ul><ul><li>wang.ringgit = -100; </li></ul></ul><ul><ul><li>System.out.println(&quot;Jumlah sen: &quot;+wang.jumlahSen()); </li></ul></ul><ul><li>} </li></ul>OK! YUK!!
  34. 34. <ul><li>Atribut public boleh dicapai di dalam dan di luar kelasnya. </li></ul><ul><li>Atribut objek TIDAK digalakkan diisytiharkan sebagai public kerana ini bercanggah dengan prinsip pengkapsulan. </li></ul><ul><li>Penghantaran mesej untuk melaksanakan metod public boleh dilakukan di dalam dan di luar kelas metod tersebut. </li></ul>
  35. 35. Hubungan Pewarisan <ul><li>Hubungan pewarisan boleh dipandang sebagai hubungan diantara kategori objek dengan subkategori-subkategorinya . </li></ul><ul><ul><li>Contoh.. </li></ul></ul>
  36. 36. Pengangkutan
  37. 37. Pengangkutan Pengangkutan Udara
  38. 38. Pengangkutan Pengangkutan Udara Pengangkutan Laut
  39. 39. Pengangkutan Pengangkutan Udara Pengangkutan Darat Pengangkutan Laut
  40. 40. <ul><li>Hubungan pewarisan juga dikenali sebagai hubungan “ is-a ”. </li></ul><ul><ul><li>Contoh.. . </li></ul></ul>
  41. 41. Pengangkutan Pengangkutan Laut Pengangkutan Darat Pengangkutan Udara Hubungan pewarisan Objek Pengangkutan Laut “ is a ” Pengangkutan Objek Pengangkutan Darat “ is a ” Pengangkutan Objek Pengangkutan Udara “ is a ” Pengangkutan
  42. 42. <ul><li>Berdasarkan kepada maksud hubungan “is-a”, setiap objek daripada suatu subkategori akan memiliki atribut dan perlakuan kategori induknya disamping atribut dan perlakuan subkategori tersebut. </li></ul><ul><ul><li>Contoh... </li></ul></ul><ul><li>Suatu hirarki pewarisan boleh dibina menerusi proses pengitlakan ( generalization ) atau pengkhususan ( specialization ). </li></ul>
  43. 43. Pengangkutan kelajuan getKelajuan( ) Pengangkutan Udara ketinggian terbang( ) Atribut Perlakuan kelajuan getKelajuan() terbang() ketinggian
  44. 44. <ul><li>bersambung.... </li></ul>

×