Faza [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Bab I Pengenalan Materi      



Object orientation Objek & kelas Konstruktor & Destruktor Enkapsulasi & information hiding à access method public & private. Inheritance (single, multiple, & repeated) à access method protected Overloading & overriding (constructor & method)



Bab II



Object Oriented Programming (OOP) Pengenalan OOP Merupakan teknik membuat suatu program berdasarkan objek dan apa yang bisa dilakukan objek tersebut. OOP terdiri dari beberapa objek yang berinteraksi satu sama lain untuk menyelesaikan sebuah tugas yang diminta.



Kenapa OOP Kode-kode di-breakdown agar lebih mudah di-manage. Breakdown berdasarkan objek-objek yang ada pada program tersebut. Dianjurkan diimplementasikan untuk program dengan berbagai ukuran karena lebih mudah untuk men-debug.



Kenapa bukan Pemrograman Prosedural Pemrogaman Prosedural program diatur dalam barisan-barisan linier yang bekerja dari atas ke bawah. Kumpulan tahapan yang dijalankan setelah yang lain berjalan. Baik untuk program kecil yang berisi sedikit code. Tidak dianjurkan diimplementasikan pada program berukuran besar, karena susah untk dimanage dan di-debug.



Apa itu Objek ? 







 



Dapat diartikan sebagai instansiasi atau hasil ciptaan dari suatu class. Asumsikan cetakan kue adalah class, maka kue yang dihasilkan dari cetakan tersebut merupakan objek dari class cetakan kue. Merupakan entitas yang memiliki state, behavior, & identitiy (Booch, 2007). o State : semua “sifat” / property yang dimiliki beserta nilai yang melekat padanya. o Behavior : bagaimana obyek beraksi dan berekreasi, dalam hal perubahan property dan penyampaian pesan (message passing). o Identity : property dari obyek yang membedakannya dengan obyek lain. Dalam OOP objek dapat dimungkinkan terdiri atas beberapa objek lain. Bisa juga, objek merupakan turunan dari objek lain, sehingga mewarisi beberapa sifat dari induknya atau juga mempunyai sifat tambahan sendiri.



Message Passing (Komunikasi Antar Objek)   



Bagaimana cara objek saling berkomunikasi dan berinteraksi ? Lonely Object is Useless Proses interaksi Objek :



Object A berkomunikasi dengan Object B. Object A meminta Object B melakukab sesuatu untuknya. Object A mengirim pesan disertai informasi ke Object B. Tambahan : info yang dikirim bersama message adalah parameter message.



Apa itu Kelas     



Merupakan cetak biru atau prototype atau template dari object. Kita bisa membuat banyak object dari satu macam class. Didalam class kita dapat mendeklarasikan variable dan menciptakan class. Class mempunyai anggota yang terdiri atas atribut dan method. Kelas merupakan himpunan objek yang memiliki karakteristik (state, behavior) yang sama.



Atribut     



Atribut adalah semua field Identitas yang kita berikan pada suatu class, missal class manusia mempunyai atribut berupa nama dan umur. Atribut juga bisa diartikan sebagai segala sesuatu yang melekat pada Object. Dalam penerapan di program atribut adalah Variabel. Contoh atribut kelas Manusia adalah nama, umur. Contoh atribut kelas Lingkaran adalah jari-jari, diameter.



Method   



Method dapat diartikan sebagai semua fungsi atau procedure yang merupakan perilaku dari class. Method kelas mempresentasikan bagaimana suatu hal diselesaikan dalam sebuah object. Method merupakan suatu fungsi/ behavior, bagaimana suatu object melakukan tindakan.



 



Contoh method dari kelas Manusia adalah berjalan, berbicara. Contoh method dari kelas Lingkaran adalah mencari luas, keliling Question Bab II



1. Dibawah ini bukan merupakan bagian dari siklus hidup object ? a. Created b. Intialized c. Finalized d. Unreacheable e. Reacheable 2. Merupakan pernyataan yang paling tepat tentang Object ? a. Object merupakan semua sifat yang melekat pada benda itu. b. Object merupakan ciri pembeda antara satu object dengan object yang lain. c. Object terdiri atas state, behavior, dan Identity. d. Object hanya terdiri atas state dan behavior. e. Suatu fungsi dari program akan menghasilkan object 3. Pernyataan yang salah mengenai kelas ? a. Merupakan cetak biru atau prototype atau template dari object. b. Didalam class kita dapat mendeklarasikan variable dan menciptakan class. c. Class mempunyai anggota yang terdiri atas atribut dan method. d. Kelas merupakan himpunan objek yang memiliki karakteristik (state, behavior) yang sama. e. Kelas merupakan bagian terkecil dari sebuah object. 4. Pernyataan yang salah mengenai method ? a. Method dapat diartikan sebagai semua fungsi atau procedure yang merupakan perilaku dari class. b. Method kelas mempresentasikan bagaimana suatu hal diselesaikan dalam sebuah object. c. Method merupakan suatu fungsi/ behavior, bagaimana suatu object melakukan tindakan. d. Method dapat direalisasikan melalui fungsi/ procedure. e. Method merupakan ciri pembeda antara satu object dengan object yang lain. 5. Pernyataan yang tepat mengenai OOP ? a. Lebih ringkas dari pemrogaman procedural jika dilihat dari pengcodeanya. b. Lebih cocok untuk diagunakan dalam pemrogaman berskla kecil. c. Pilihan A benar. d. Pilihan A dan B benar. e. Hanya piihan B yang benar.



Essay 1. Jelaskan apa yang dimaksud dengan pemrogaman berorientasi Object (OOP) ? 2. Jelaskan perbedaan antara Teknik Pemrogaman Berorientasi Object dan Teknik pemrograman Prosedural ? 3. Apa yang anda ketahui tentang Method dalam teknik pemrograman OOP ?



Bab III



Mapping Class Diagram ke Java



Diagram struktur menunjukkan struktur statis dari sistem yang dimodelkan. berfokus pada elemen sistem, terlepas dari waktu. Struktur statis disampaikan dengan menunjukkan jenis dan contohnya dalam sistem. Selain menunjukkan jenis sistem dan contohnya, diagram struktur juga menunjukkan setidaknya beberapa hubungan antara dan di antara unsur-unsur ini dan bahkan berpotensi menunjukkan struktur internal mereka. Pada OOP diagram struktur/ diagram kelas memodelkan kelas dan hubungannya dengan kelas lain. Element yang ada pada struktur diagram adalah Nama Kelas, State/ Atribut, dan Behavior/ Metode. Dalam penggambarannya class diagram boleh diagambarkan secara tidak lengkap elemenya. Lihat contoh



Ketiga contoh diatas merupakan hal yang benar karena diagram kelas tidak mengharuskan semua elemennya ada dalam diagram melainkan elemen-elemen yang benar-benar di perlukan saat implementasi yang harusnya ada. Untuk contoh yang paling kiri hanya terdiri atas Nama Class, yang paling kanan terdiri atas Nama Class, Atribut, dan Method, untuk diagram yang tengah hanya terdiri atas Nama Class, dan Atribut.



Konversi diagram ke code



Object Oriented Programming (OOP) (2) Object Sebagai 



Parameter Dalam Java, objek juga dapat berperan sebagai parameter dari sebuah method. Untuk lebih lengkapnya lihat contoh







Argumen



Keanggotaan Objek sbg property/ state/ atribut 



Object (Instance Member) Atribut yang merupakan anggota dari setiap object untuk pengaksesannya diperlukan proses instanisasi, untuk lebih jelas lihat gambar.







Kelas (class Member) Atribut yang mana merupakan punya kelas itu sendiri, keyword yang digunakan untuk pembuatan class member ini adalah “static”. Contoh dibawah



Member Method 



Instance Member semua method yang ada pada suatu kelas merupakan instance member karena method-method tersebut berlaku untuk object yang dibuat disuatu kelas.







Class Member Method dapat menjadi class member ketika ditambahkan keyword “static” didepannya.



Konstruktor  



 



Prosedur khusus untuk membuat obyek. Konstruktor merupakan suatu fungsi dari anggota suatu kelas yang mempunyai nama yang sama dengan kelas tempat fungsi itu berada. Konstruktor ini digunakan untuk mengalokasikan ruang untuk suatu objek dan memberikan nilai awal. Konstrutor tidak memiliki return type, dapat memiliki parameter bisa juga tidak. Dibeberapa bahasa pemrogaman memiliki konstruktor default(otomatis ditambahkan oleh compiler)



Destruktor 



 



Merupakan suatu fungsi anggota yang dijalankan secara otomatis ketika suatu objek akan terbebas dari memori karena lingkup keberadaannya telah menyelesaikan tugasnya. Destruktor harus mempunyai nama yang sama dengan kelas. Beberapa bahasa pemrograman meniadakan destruktor & menyediakan “garbage collector” untuk membebaskan objek yang sudah tidak digunakan dalam program. Nulling reference dapat digunakan untuk mencalonkan objek yang akan dibebaskan dari memori.



Object Lifecycle



    



Created : object terbentuk Initialized : object terinitialisasi In Use : Object sedang digunakan Unreacheable : Object tak ter jangkau Finalized : object selesai melakukan tugas dan sudah tak berguna



Overloading  







sebuah kemampuan yang membolehkan sebuah class mempunyai 2 atau lebih method dengan nama yang sama, yang membedakan adalah parameternya. Pada method overloading perbedaan parameter mencakup : 1. Jumlah parameter 2. Tipe data dari parameter 3. Urutan dari tipe data parameter Method Overloading juga dikenal dengan sebutan Static Polymorphism. Berikut ini contoh Class yang melakukan Overloading.



Question Bab III 1. Berikut pernyataan yang benar tentang konstruktor pada OOP ? a. Konstruktor merupakan implementasi dari suatu Identity. b. Nama konstrutor harus sama dengan nama class. c. Dalam konstruktor dapat terjadi Overloading. d. Pilihan A, B, C benar. e. Hanya pilihan B dan C yang benar. 2. Pernyataan yang kurang tepat tentang Destruktor pada OOP ? a. Merupakan suatu fungsi anggota yang dijalankan secara otomatis ketika suatu objek akan terbebas dari memori karena lingkup keberadaannya telah menyelesaikan tugasnya. Destruktor harus mempunyai nama yang sama dengan kelas. b. Beberapa bahasa pemrograman meniadakan destruktor & menyediakan “garbage collector” untuk membebaskan objek yang sudah tidak digunakan dalam program. c. Nulling reference dapat digunakan untuk mencalonkan objek yang akan dibebaskan dari memori. d. Prosedur khusus untuk membuat obyek. e. Semua Pilihan salah. 3. Overloading terjadi ketika ? a. Nama method sama jumlah parameter berbeda. b. Nama method sama tipe data parameter berbeda. c. Nama method sama urutan tipe data parameter berbeda. d. Nama method berbeda tipe data berbeda. e. Pilihan A, B, C tepat. 4. Berikut pernyataan yang tepat mengenai class member ? a. Memiliki keyword “static” didepannya. b. Digunakan untuk membuat suatu obyek baru. c. Merupakan jenis class yang berfungsi untuk menjembatani antara class lain. d. Merupakan jenis class yang hanya terdiri atas atribut saja. e. Semua jawaban diatas benar. 5. Dibawah ini bukan merupakan bagian dari siklus hidup object ? a. Created b. Intialized c. Finalized d. Unreacheable e. Reacheable



Essay 1. Sebutkan dan jelaskan siklus hidup yang terjadi pada object ! 2. Konversikan kelas diagram dibahawah ini ke pemrograman berorientasi object dengan menggunakan bahasa pemrogaman java !



3. Dari soal nomor 2 buatlah contoh overloading menggunakan konstruktor-konstruktor yang ada !



Bab IV



Enkapsulasi Pengertian Berikut merupakan pengertian enkapsulasi menurut Booch : “The process of compartmentalizing the elements of an abstraction that constitute its structure and behavior (Booch, et.al, 2007).” Dari pengertian diatas dapat diambil kesimpulan bahwa enkapsulasi berarti penggolongan elemen dari objek itu sendiri. Hal ini membuat objek tersebut hanya bisa diakses dengan metode tertentu, ini dilakukan untuk menyembunyikan detail implementasi objek. Disini variabel dan method yang di enkapsulasi dengan mengubah hak akses(variable/method).



Metode Selektor/Mutator -



Digunakan untuk mendapatkan (selektor) dan memanipulasi (mutator) satu atau beberapa atribut. Kesepakatan secara umum, selektor menggunakan get sedangkan mutator menggunakan kata set, untuk data bertipe boolean, get diganti dengan is.



Fungsi enkapsulasi : -



-



Modularitas Modularitas disini memiliki arti objek dapat dikelola secara independen, kode bagian internal objek dikelola terpisah dari antarmuka. Hal ini dilakukan agar kita dapat melakukan modifikasi dan tidak menyebabkan masalah pada bagian lain. Data hiding Digunakan untuk menyembunyikan data yang sensitif. Bagian objek yang ingin di “hide” disembnyikan dengan memberikan akses “private”. Contoh enkapsulasi : class Akun{ private String namaAkun; private double balanceAkun; public withdraw(); public deposit(); public determine balance(); } Data yang tidak diprivate dapat diakses diluar kelas Jenis Modifier Modifier



Class dan Interface



Method dan Variabel



Default (tak ada modifier )



Dikenali di paketnya



Diwarisi subclass di paket yang sama dengan superclassnya. Dapat diakses oleh method-method di class-class yang sepaket



Public



Dikenali di manapun



Diwarisi oleh semua subclassnya. Dapat diakses dimanapun.



Protected



Tidak dapat diterapkan



Diwarisi oleh semua subclassnya. Dapat diakses oleh method-method di class-class yang sepaket.



Private



Tidak dapat diterapkan



Tidak diwarisi oleh subclassnya Tidak dapat diakses oleh class lain.



Kata kunci “this” Keyword this adalah suatu reference yang digunakan untuk menunjuk objek itu sendiri. Keyword this ini sendiri diapakai ketika nama atribut sama dengan nama variable lokal. Keyword this dapat digunakan untuk menunjuk instance member, method, dan konstruktor milik objek sendiri.



Contoh penggunaan “this” class Persegi{ double panjang; double lebar;



Titik(double panjang,double lebar){ //this menunjuk pada instance member panjang this.panjang = panjang; //this menunjuk pada instance member lebar this.lebar= lebar; } } *Pada contoh diatas this digunakan untuk menunjuk instance member pada kelas Persegi .(Penggunaan this tidak dianjurkan untuk mengakses class member. )



Question Bab IV 1. Berikut adalah modifier dalam enkapsulasi kecuali : a. private c. protected b. public d. promising 2. Berikut statement untuk akses modifier private yang benar adalah: a. Method dan atribut dapat diwariskan jika private digunakan b. Method dapat diwariskan, sedangkan atribut tidak c. Atribut dapat diwariskan, sedangkan method tidak d. Method dan atribut tidak dapat diwariskan 3. Hal yang akan dienkapsulasi pada objek adalah a. Method b. variabel c. Method dan variabel d. Tidak ada yang dienkapsulasi 4. Untuk data bertipe boolean, mutator is diganti dengan get a. True b. False 5. “private” membuat method tidak dapat diakses dari dalam kelas a. True b. False



Essay 1. 2. 3. 4.



Sebutkan dan jelaskan fungsi enkapsulasi! Jelaskan pengertian enkapsulasi! Jelaskan kesepakatan umum penggunaan selektor dan mutator! Isilah bagian yang kosong! Bagian objek yang ingin di “hide” disembnyikan dengan memberikan akses “______” 5. Buatlah contoh implementasi enkapsulasi dalam bahasa pemrograman Java!



Bab V



Inheritance (Pewarisan) Inheritance merupakan penurunan karakteristik dari kelas yang telah ada(kelas induk/superclass). Tidak semua karakteristik dapat diturunkan oleh superclass. Kharakteristik yang di “private” tidak akan diturunkan oleh superclass kepada keturunannya (kelas turunan). Kelas turunan dapat mewarisi anggota suatu kelas yang berupa data dan method. Disini perlu diperhatikan bahwa kelas tidak harus memiliki inheritance. Inheritance digunakan jika superclass memiliki hal yang dibutuhkan subclass. Note : -



Parent disebut Superclass / base class Child disebut Subclass / derived class



Hirarki : 1. Part-of Hirarki part-of merupakan hirarki uang dibentuk melalui hubungan agregat antar objek. Kata kunci dari hirarki part-of ini adalah “bagian”. Contohnya adalah -



Persegi panjang merupakan “bagian” dari balok. Persegi panjang merupakan “part-of” balok.



2. IS-A



-



Contoh dari inheritance IS-A : Ayam IS-A hewan Ayam “adalah” manusia Bebek IS-A hewan Bebek “adalah hewan



Inherintance merupakan perwujudan dari hirarki IS-A. Disini perlu diperhatikan bahwa tidak semua atribut/method dapat diwariskan. Namun, hanya atribut / method yang menggunakan akses “public” dan “protected” yang dapat diwariskan. //class Kertas class Kertas{ public String warna; protected String pemilik; } //class KertasTerbuang class KertasTerbuang extends Kertas { } Istilah dalam Hirarki o o o o o



Tiap kelas dinamakan node A(node paling atas) merupakan root D,E,F merupakan sibling dari super class B Leaf adalah node yang tidak punya keturunan Node diatas node lain disebut ancestor



Method Overriding Method overriding merupakan sebuah mekanisme dimana metode yang ada di parrent class dideklarasikan kembali oleh subclass. Method ini berguna untuk mendefinisikan ulang metode yang ada pada super class. Aturan overriding di Java : 1. Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter yang ada pada super class. 2. Aturan hak akses method overriding di subclass tidak boleh lebih ketat di bandingkan dengan hak akses method pada super class. “super” keyword Keyword “super” digunakan untuk mengakses konstruktor pada super class. Keyword ini juga dapat digunakan untuk mengakses ke konstruktor yang telah di enkapsulasi. Keyword “super” juga dapat digunakan untuk menurunkan behavior pada super class. class Book{ public int nPage; protected String writer;



Buku(int nPage,String writer){ this. nPage l = nPage; this. writer = writer; } } class BukuTulis extends Book{ BukuTulis(int nPage,String writer){ super(nPage,writer); } }



Spesialisasi & Generalisasi



Spesialiasi merupakan cara memandang kelas dengan pendekatan top-down, sedangkan generalisasi merupakan pendekatan dengan bottom up. Spesialisasi memungkinkan banyak sub-class memiliki perilaku yang spesifik daripada super-class, sedangkan generalisasi menyebabkan sub-class memiliki super-class yang berperilaku lebih umum (Generalisasi) Inheritance perlu dilakukan jika : -



Perlu penambahan fitur (metode atau atribut). Membuat perilaku yang diturunkan dari superclass berbeda pada subclass.



Inheritance jangan dilakukan jika : -



mengubah semantik (maksud / tujuan) dari feature yang diturunkan. mengubah method signature dari super class. menghilangkan feature, atau mengabaikannya. mengubah kendali akses ketika meng-override.



Keuntungan inheritance -



Mengurangi redudansi kode. Subclass jadi lebih singkat Reusing tanpa modifying Bisa menggunakan ulang kelas tanpa memiliki source codenya



Question Bab V 1. Manakah statement yang benar dari pilihan berikut a. A(node paling atas) dinamakan ancestor (walau hanya satu node) b. Sibling adalah node yang punya parent sama c. Leaf adalah node yang tidak punya keturunan d. Sibling adalah node yang punya parent berbeda 2. Berikut adalah keuntungan inheritance, kecuali a. Mengurangi redudansi kode. b. Subclass jadi lebih singkat c. Reusing tanpa modifying d. Subclass jadi lebih panjang 3. Generalisasi memandang kelas secara top-down a. True b. False 4. Keyword “super” tidak dapat menurunkan behavior pada subclass a. True b. False 5. Kita tidak boleh mengubah kendali akses saat overriding a. True b. False



Essay 1. 2. 3. 4. 5.



Jelaskan pengertian metode overriding! Sebutkan hal-hal yang tidak dianjurkan jika ingin melakukan inheritance! Jelaskan pengertian Inheritance! Sebutkan alasan dilakukannya inheritance! Jelaskan perbedaan “private” dan “protected”!



Bab VI



Multiple Inheritance Multiple Inheritance yaitu suatu komdisi dimana suatu kelas menerima pewarisan dari dua atau lebih kelas. Namun dalam hal ini, bahasa pemrograman tertentu seperti Java telah menghilangkan fitur ini, tetapi C++ masih mendukung fitur tersebut. Contoh diagram dari multiple inheritance:



Gambar. Diagram multiple inheritance



Namun multiple inheritance ini ternyata memiliki beberapa permasalahan, apa kira-kira masalahnya? Masalah ini sering disebut Diamond’s Problem. Diamond’s Problem Apakah itu? Diamond’s problem terjadi apabila suatu kelas, misalkan kelas A dan B, dimana kelas A mewarisi dari kelas bernama superkelas,(anak dari superkelas) demikian juga untuk kelas B. Dan pada hal ini kelas A dan B memiliki metode dengan nama yang sama(karena turunan kelas superkelas). Pada saat yang sama C ini memiliki 2 parents yaitu kelas A dan B. Saat kelas C ingin memanggil metode yang dimiliki di kelas A dan B, ia akan kebingungan, metode kelas mana yang akan digunakan. Solusi dari diamond’s problem yaitu kita tidak menggunakan multiple inheritance melainkan menggunakan virtual inheritance(single inheritance ke kelas yang paling umum).



Contoh Diamond’s problem program multiple inheritance : #include class LivingThing { protected: void breathe() { std::cout