KONSEP DASAR PEMROGRAMAN BERORIENTASI OBJEK

dokumen-dokumen yang mirip
Pengantar Pemrograman

Mengenal Object Oriented Programming (OOP)

PertemuanI. Object Oriented

PERANCANGAN BERORIENTASI OBJEK

Konsep Pemrograman Berbasis Obyek

PERANCANGAN BERORIENTASI OBJEK

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

KONSEP Pemrograman Berorientasi Objek KARMILASARI

MINGGU IV : PEMROGRAMAN BERORIENTASI OBJEK

Object Oriented Programming LOGO

Review Bahasa Pemrograman Java Konsep OOP N I K O I B R A H I M, M I T F A K U L T A S T E K N O L O G I I N F O R M A S I

DASAR PEMROGRAMAN. Konsep Pemrograman Berorientasi Objek. Yoannita

Paradigma Pemrograman Berorientasi Objek

Praktikum Pemograman Berorientasi Objek

Object OrientedProgramming

Pengenalan Obyek. Arna Fariza. Materi

Konsep Pemrograman Berorientasi Obyek. Maria Ulfah S Nurochman

BAHASA PEMROGRAMAN. Merupakan prosedur/tata cara penulisan program.

PEMROGRAMAN JAVA. Yoannita. Konsep Pemrograman Berorientasi Objek. Company LOGO

1. Analisis Desain 2. UML Sebagai Tools OOA

PENDAHULUAN. A. Berorientasi Objek. 1. Karakteristik dari Objek

BAB 2 LANDASAN TEORI

Class. Object. Object Oriented Programming (OOP) Object Oriented Programming (OOP)

PEMROGRAMAN JAVA. Yoannita, S.Kom. Class & Method sederhana Konsep Pemrograman Berorientasi Objek. Company LOGO

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

MODUL PRAKTIKUM I PEMOGRAMAN BERORIENTASI OBJEK DENGAN PHP

Kebutuhan dan Spesifikasi Perangkat Lunak

DEVAL GUSRION, S.KOM, M.KOM MATAKULIAH BAHASA PEMOGRAMAN JAVA LANJUTAN III

Bahasa Pemograman II. Object Oriented Programming

Object Oriented Programming 1

Pemograman Berorientasi Objek

Konsep Pemrograman Berorientasi Obyek

Pengenalan Pemrograman

Konsep Pemrograman Berorientasi Obyek. Pertemuan 1

Pemrograman Web Berbasis Framework. Pertemuan 2 : OOP Dalam Pemrograman Web. Hasanuddin, S.T., M.Cs. Prodi Teknik Informatika UAD

BAB 1 PENGENALAN PEMROGRAMAN BERORIENTASI OBJEK

OBJECT ORIENTED PROGRAMMING

BAB 3 ANALISIS DAN PERANCANGAN PROGRAM. Perancangan program aplikasi dalam skripsi ini menggunakan aturan linear sequential

Konsep Pemrograman Berorientasi Obyek

Teori Algoritma Pertemuan 2 (11 Maret 2014) Object Oriented Programming (OOP) Functionally Terstruktur Modular Visual & Even Driven Programming

Fungsi Bahasa pemrograman adalah sebagai media untuk menyusun dan memahami serta sebagai alat komunikasi antara pemrogram dengan computer.

Pewarisan atau Inheritance

Pemrograman Berorientasi Obyek. Konsep OOP

MODUL 1 PRAKTIKUM PEMROGRAMAN BERORIENTASI OBYEK(PBO) KELAS DAN OBJEK. TGL PRAKTIKUM : 24 September 2012 :ACHMAD FAJAR NORULLAH NRP :

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

PERTEMUAN 11 KONSEP PEMROGRAMAN BERORIENTASI OBJEK

1. ARRAY, RECORD DAN OBJECT ORIENTED PROGRAMMING (OOP)

BAB III PERANCANGAN PROGRAM

VISUAL BASIC Pengenalan VB NET

( MAKALAH ) Inheritance, Polymorphism, Enkapsulasi. Mata Kuliah Object Oriented Programming (OOP) Dosen Pembina Agung Darmawan.

BAB 1 PEMROGRAMAN BERORIENTASI OBJEK

PERTEMUAN 1 PEMOGRAMAN BERORIENTASI OBJEK L/O/G/O

APLIKASI PERHITUNGAN GAJI PEGAWAI DENGAN JAVA Disusun untuk memenuhi tugas matakuliah Pemrograman JavaIII

PEMROGRAMAN BERORIENTASI OBJEK

Object Oriented Programming (Class, Inheritance, Encapsulation dan Interface)

Pertemuan 11 Object Oriented Program

OBJECT ORIENTED PROGRAMMING DENGAN PHP. Janitra Panji

Modul Bahasa Pemrograman 1

BAB II TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT

Bahasa Pemrograman 2.

Kualitas bahasa pemrograman: Ekspresivitas : secara jelas menggambarkan algoritma yang dibuat oleh programmer

PRAKTIKUM OBJECT ORIENTED PROGRAMING

Pemrograman Berbasis Objek (Polimorfisme)

Bahasa Pemrograman 2.

BAB 1 PENDAHULUAN. Dalam pengembangan perangkat lunak, tim developer membangun cetak

Pemrograman Berorientasi Objek. Beni Suranto, S.T.

Pemrograman Berorientasi Obyek. Ramos Somya

Tahap pengembangan program

PERTEMUAN 13 PERANCANGAN BERORIENTASI OBJEK UNTUK MULTI KELAS

Sekilas C DAN C++ DISUSUN OLEH. Sebuah bahasa, yaitu: 1. Bahasaa tingkat tinggi. High. dapat. lunak

Algoritma Pemrograman 2C

ALGORITMA PEMROGRAMAN 1C PENDAHULUAN KONSEP BAHASA PEMROGRAMAN

Pemrograman Berbasis Objek 2. Java Programming Fery Updi,M.Kom

Sanksi Pelanggaran Pasal 72 Undang-undang Nomor 19 Tahun 2002 Tentang Hak Cipta 1. Barangsiapa dengan sengaja melanggar dan tanpa hak melakukan

BAB II LANDASAN TEORI

BAB III ANALISA MASALAH DAN PERANCANGAN SISTEM

KONSEP OBJEK ORIENTASI PROGRAM

1. Penggunaan Pemodelan

Pemrograman Berorientasi Objek Danu Wira Pangestu

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

SISTEM INFORMASI. Apakah Sistem Informasi Itu?

Pemrograman. Fery Updi,M.Kom

PEMROGRAMAN BERORIENTASI OBJEK

UML Class Diagram 1 UML??? 2 UML Diagram

BAB V Abstraksi dan Generalisasi

PEMBUATAN APLIKASI PERHITUNGAN TRANSAKSI DENGAN JAVA

BAB II LANDASAN TEORI. Suatu sistem merupakan suatu jaringan kerja dari prosedur-prosedur yang

Bab 2 Array, Record dan Object Oriented Programming (OOP) 3 BAB 2 TUJUAN PRAKTIKUM

Pemrograman Lanjut. Class dan Object. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

MATERI KULIAH ALGORITMA DAN PEMROGRAMAN I (2 SKS)

ENKAPSULASI Data Hiding

TUGAS DASAR PEMROGRAMAN KELAS C DOSEN PENGAMPU : IKA ATSARI DEWI, STP, MP

1 BAB I PENDAHULUAN. khususnya sepeda motor yang berada di jalan. Dengan angka pertumbuhan ratarata

BAB III ANALISA MASALAH DAN PERANCANGAN SISTEM

SYSTEM PEMESANAN TIKET KERETA API ON-LINE

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

PEMROGRAMAN BERORIENTASI OBJEK KONSEP PBO

ENKAPSULASI. 1. Kompetensi Setelah kegiatan perkuliahan selesai, mahasiswa diharapkan dapat:

BAB III LANDASAN TEORI. yang mempunyai jenjang jabatan manajer, pegawai administrasi, supervisor dan lainlain.

Transkripsi:

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBJEK A. KONSEP BERORIENTASI OBJEK SEKILAS Bagian ini menjelaskan yang dimaksud objek dalam bidang teknologi objek (object technology/ot). Bagian ini juga menguji karakteristikkarakteristik kunci untuk objek, bagaimana objek-objek berinteraksi, dan bagaimana mereka dikelompokkan. TOPIK BAHASAN TUJUAN 1. Objek ada di mana-mana 2. Konsep dan karakteristik kelas 3. Kelas (class) dan karakteristiknya. Setelah akhir pelatihan sesi ini, peserta pelatihan akan dapat: 1. Menerangkan bagaimana objek-objek berhubungan dalam dunia nyata. 2. Mengenal bagaimana objek-objek dapat didefinisikan dalam model komputasi bisnis. 3. Mendeskripsikan suatu kelas. 4. Mendeskripsikan konsep berorientasi objek, seperti enkapsulasi, komposisi, asosiasi, dan pesan. 5. Memahami bagaimana objek-objek diorganisasikan ke dalam kelas-kelas. 6. Menjelaskan implikasi dari pewarisan/penurunan (inheritance). 7. Mendeskripsikan karakteristik kohesi dan polimorfisme. OBJEK ADA DI MANA-MANA Bagian ini mendiskusikan bagaimana objek-objek ada di manamana dalam dunia nyata dan bagaimana mereka dikonsepsualisasi dalam model komputasi bisnis. Java Pengenalan PBO 5

Objek dalam Dunia Nyata Teknologi objek memerlukan paradigma yang membedakannya dengan sudut pandang tradisional dari pemrograman terstruktur. Dunia, selain dapat dipandang sebagai sekumpulan fungsi, dapat pula dipandang sebagai sekumpulan kelas. Orang-orang, tempat, bendabenda, dan sebagainya, semuanya merupakan kelas. Contohnya, suatu bandara terdiri atas ratusan kelas yang nampak, termasuk: a. pesawat terbang b. penumpang c. bagasi Abstraksi dapat pula merupakan kelas: a. pemesanan tiket b. penundaan c. cek keamanan Meskipun tampaknya konsep ini sangat dasar, ia memberikan fondasi yang penting bagi pemahaman kelas dalam konteks komputasi. Objek dalam Model Komputasi Bisnis Objek-objek dari dunia komputasi bisnis merupakan sesuatu yang berguna secara nyata dalam lingkungan bisnis. Sebagai contoh, objek dalam perangkat lunak komputasi bisnis pada suatu bandara bisa berupa penumpang, penerbangan, landas-pacu, pemesanan, dan jadwal. B. KONSEP DAN KARAKTERISTIK KELAS DAN OBJEK Pengembangan berorientasi objek sangat berbeda dari pemrograman tradisional. Ia mencakup penerjemahan dari penggambaran dunia nyata beserta objek-objek yang ada di dalamnya ke dalam model-model konseptual dari masalah-masalah tersebut. Model konseptual ini kemudian dapat diciptakan menggunakan perangkat dan bahasa berorientasi-objek untuk menjalankan suatu sistem komputasi sebagai aplikasinya. Retooling Java Pengenalan PBO 6

Definisi Objek Suatu objek adalah unik. Ia mewakili suatu objek dunia-nyata, seperti orang (contohnya seorang penumpang atau kedatangan pesawat), mobil, rekening bank. Objek mirip dengan suatu rekaman (record) dalam suatu sistem berkas (misalnya rekaman karyawan). Suatu objek didefinisikan berdasarkan namanya, sebuah kata benda seperti: karyawan, rekening bank, ataupun kartu kredit. Objek juga memiliki atribut dan metode. Yang menjadi pertanyaan berikutnya, apa sebenarnya perbedaan antara kelas dengan objek? Dalam konteks pemrograman berorientasi objek, kelas adalah suatu struktur dalam program yang berisi satu atau beberapa metode (dapat berupa fungsi dan/atau prosedur) dan atribut (dapat berupa data ataupun variabel yang akan dipoerasikan dalam metode). Dengan demikian atribut merupakan anggota kelas yang bersifat statis, sedangkan metode merupakan anggota kelas yang bersifat dinamis. Dalam pemroraman, metode dan atribut biasanya dapat dibedakan dari format penulisannya, yaitu nama_metode(tipe_parameter daftar_parameter, ( )) untuk format metode (parameter dan tipe parameter bisa lebih dari satu) dan tipe parameter nama_atribut untuk format atribut. Jadi Berbicara (int Suara) dan Jumlahkan (double Bil1,double Bil2) merupakan metode, sedangkan int Suara, double Bil1 dan double Bil2 merupakan atribut. Sedangkan objek merupakan contoh-langsung atau contoh-nyata dari kelas. Misal: dari kelas Guru dapat dibuat objek Umar_Bakrie. Artinya, Umar_Bakrie merupakan contoh-langsung dari kelas Guru. Secara definisi, dapat dijelaskan bahwa: An object is an instance of class. TIP: Suatu objek kadangkala direferensikan sebagai suatu contoh langsung (instance) atau suatu kejadian (occurrence). Atribut Suatu objek memiliki atribut-atribut. Atribut merupakan deskripsi (data) yang berhubungan dengan objek. Sebagai contoh, seorang karyawan dapat mencakup nama, alamat, tanggal lahir, nomor Retooling Java Pengenalan PBO 7

jaminan sosial, dan tanggal awal kerja. Atribut mirip dengan elemenelemen data. TIP: Hal yang paling penting mengenai objek adalah bahwa objek memiliki data (atribut) dan fungsi (metode). C. KONSEP DASAR PBO Pemrograman berorientasi objek sering sekali disebut sebagai PBO/OOP (Object Oriented Programming). Bahasa pemrograman yang lazim digunakan dalam PBO adalah C++ ( Keluaran Borland disebut Borland C++, sedangkan dari Microsoft disebut Ms C++. Namun yang terakhir kurang poluler ). Demikian pula, jka ada bahasa pemrograman yang menggunakan C++ sebagai landasan utama bagi pengembangannya, maka bahasa tersebut bisa dipakai untuk PBO, seperti Java, yang menjadi perhatian utama dalam pelatihan ini (bahasa ini sangat populer pada jaringan komputer, dalam hal ini adalah: Internet). D. ALASAN DIGUNAKANNYA PBO PBO diciptakan karena masih dirasakan adanya keterbatasan pada bahasa pemrograman tradisional yang dikenal dengan istilah procedural language seperti C, Pascal dan yang sejenisnya. Padahal, pemrograman prosedural sendiri pada awalnya merupakan perbaikan atas bahasa pemrograman sekuensial (sequential programming language), seperti BASIC ataupun Fortran. Konsep procedural programming language yaitu bahwa semua masalah dibagi ke dalam fungsi atau prosedur. Selain itu dalam procedural programming, fungsi dan data terpisah dan tidak menjadi satu kesatuan. Contoh kelemahan dari procedural programming adalah bila sebuah perusahaan membuat program General Ledger (Buku kas besar) menggunakan variabel yang bisa diakses oleh fungsi-fungsi lainnya, maka harus dideklarasikan variabel tersebut sebagai variabel global yang letaknya di luar semua fungsi sehingga bisa diakses oleh semua fungsi. Jika suatu saat perusahaan tadi memperkerjakan programmer baru yang belum mengetahui seluk-beluk program general ledger tadi, Retooling Java Pengenalan PBO 8

maka sangat dimungkinkan terjadinya kerusakan data. Anda juga akan menemukan kesulitan bila Anda ingin membuat tipe data baru dengan bahasa pemrograman tradisional. Konsep PBO adalah bahwa semua pemecahan masalah dibagi ke dalam kelas (class). Dalam PBO data dan fungsi-fungsi yang akan mengoperasikan data digabungkan menjadi satu kesatuan yang bisa disebut sebagai kelas. Fungsi kelas terletak pada fungsi anggota (member function) dalam Java. Jika Anda ingin membaca data dalam objek maka Anda harus memanggil fungsi anggota (member function) dalam objek. hanya dengan cara ini Anda bisa mengakses data. Jadi Anda tidak bisa mengakses data secara langsung seperti dalam konsep pemrograman tradisional. Pengaksesan data seperti pada PBO ini dikenal sebagai pengkapsulan data. Pengkapsulan data (data encapsulation) dan penyembunyian data merupakan kunci pengertian pemrograman berorientasi objek. Jika Anda ingin mengubah data dalam objek tentunya Anda harus tahu fungsi-fungsi apa saja yang berinteraksi dengan objek itu, jadi tidak ada fungsi-fungsi lain yang bisa mengakses data sehingga penulisan dan penelusuran kesalahan program (debugging) akan dapat dilakukan dengan mudah. Untuk mempermudah pengertian mengenai objek, dimisalkan objek sebagai departemen-departemen dalam perusahaan, seperti pemasaran, keuangan, produksi, personalia, pengadaan maupun warehouse. Setiap departemen memiliki fungsi, tugas dan tanggung jawab yang berbeda. Jika menginginkan data laporan keuangan maka yang harus diminta adalah departemen keuangan, bukan yang lainnya. E. PARADIGMA DALAM PERUSAHAAN Sebagai sebuah organisasi bisnis, sebuah perusahaan dapat dipandang sebagai kesatuan dari beberapa kelas yang berbeda, atau yang biasanya disebut sebagai departemen. Departemen-departemen tersebut antara lain adalah: Departemen Keuangan, Departemen Pemasaran, Departemen Personalia, Departemen Pengadaan, dan sebagainya. Setiap departemen memiliki fungsi dan perannya sendirisendiri. Dalam hal ini suatu departemen memiliki metode dalam menjalankan operasi departemennya. Namun demikian, masing-masing Retooling Java Pengenalan PBO 9

departemen mengolah data dan informasi yang berbeda-beda pula (memang, dimungkinkan untuk memiliki data bersama antardepartemen). Dengan demikian, dapat diartikan bahwa tiap-tiap departemen memiliki atribut-nya masing-masing. Hal ini dapat dijelaskan pada Gambar 2.1. Departemen Keuangan Departemen Pemasaran Data Keuangan Manajer Keuangan Staf Keuangan Data Pemasaran Manajer Pemasaran Staf Pemasaran Departemen Personalia Departemen Pengadaan Data Personalia Manajer Personalia Staf Personalia Data Pengadaan Manajer Pengadaan Staf Pengadaan dan lain-lain. dan lain-lain. Gambar 2.1 Organisasi kelas-kelas departemen dalam suatu perusahaan. Setiap kotak (elips) menggambarkan objek, dan objek-objek tersebut, di-link menjadi bangunan utuh perusahaan. Retooling Java Pengenalan PBO 10

Terdapat 3 (tiga) metodologi dasar PBO yaitu : 1. Pemodulan/pengkapsulan (encapsulation) 2. Penurunan/pewarisan (Inheritance) 3. Polimorfisme (Polimorphism) F. PEMODULAN (ENCAPSULATION) Pemodulan adalah metode untuk menggabungkan data dengan fungsi. Dalam konsep ini data dan fungsi digabung menjadi satu kesatuan yaitu kelas. Konsep ini erat kaitannya dengan konsep penyembunyian informasi (information hiding). Untuk menjelaskan konsep ini diberikan contoh sebagai berikut. Contoh 1: Mobil adalah sebuah kelas. Seorang pengendara mobil tidak harus tahu bagaimana proses kerja mesin mobilnya, pembakaran bahan bakar, proses pemindahan transmisi gigi, dan seterusnya. Yang dia tahu adalah bahwa setir untuk mengendalikan jalannya mobil, pedal gas untuk menambah kecepatan, pedal rem untuk mengurangi kecepatan, dan seterusnya. Singkatnya dia hanya tahu bahwa mobilnya berjalan dengan baik. Contoh 2: Kelas rice cooker (penanak nasi). Seorang ibu rumah tangga tidak tahu mengapat rice cooker bisa bekerja seperti itu. Barangkali seorang ibu rumah tangga tidak menyadari bahwa rice cooker modern memiliki sebuah mikroposesor setara Z80. Dari dua contoh di atas jelaslah bagaimana proses dalam metode suatu kelas selalu disembunyikan sedemikian rupa sehingga seseorang hanya tahu kelas tersebut dapat berfungsi, bukannya apa yang menyebabkan kelas itu bisa berbuat demikian. Hal di atas cukup penting dalam PBO membangun aplikasi kompleks yang melibatkan beberapa pemrograman. Misalnya sebuah kelompok pemrograman akan membuat aplikasi akuntansi (aplikasi ini biasanya membutuhkan ilmu yang sangat kompleks). Pemrogram I menangani masalah struktur data, Pemrogram II menangani masalah akuntansi dan Pemrogram III menangani masalah tampilan layar, dan sebagainya. Sebelum dikenal PBO, setiap pemrogram harus membuat suatu fungsi yang memiliki argumen masukan dan keluaran. Jadi bila Pemrogram I ingin mengolah program dari Pemrogram II, dia harus memberikan masukan dan menerima keluarannya. Cara ini sudah banyak Retooling Java Pengenalan PBO 11

digunakan dan mempunyai kelemahan yang antara lain tidak adanya kesatuan antara data dan fungsinya. G. PENURUNAN (INHERITANCE) Dari konsep penurunan ini suatu kelas bisa diturunkan menjadi kelas baru yang masih mewarisi sifat-sifat kelas orangtuanya. Hal ini dapat dianalogikan dengan kelas manusia. Manusia merupakan turunan dari orang tuanya dan sifat-sifat orang tua diwarisi olehnya. Bisa ditarik kesimpulan bahwa semua kelas di dunia selalu memiliki hirarki yang menggambarkan silsilah kelas tersebut. Contoh: Dari kelas kendaraan bermotor dapat diturunkan beberapa kelas baru, misalnya: sepeda motor, sedan, pick-up, mini-bus, dan kendaraan roda banyak (Gambar 2.2) Sepeda motor Kendaraan Bermotor Minibus Kendaraan roda banyak Sedan Pick_up Gambar 2.2 Hirarki kelas kendaraan bermotor. Masing-masing kendaraan bermotor ini memiliki beberapa data yang sama, seperti posisi gigi persnelling, kecepatan putaran mesin, kecepatan linear kendaraan, dan sebagainya. Namun masing-masing kelas turunan ini memiliki beberapa data dan metode yang berlainan. Contoh: Sedan memiliki data AC, sedangkan sepeda motor tidak. Karena sedan memiliki data AC maka terdapat juga metode-metode yang berhubungan dengan AC seperti menyalakan AC, mengubah suhu AC, mematikan AC, dan sebagainya. Hirarki suatu kelas tidak harus bertingkat satu seperti contoh di atas. Hirarki kelas dapat bertingkat-tingkat dan sangat kompleks. Retooling Java Pengenalan PBO 12

Contoh: kelas sepeda motor mungkin masih dibagi lagi menjadi dua kelas, yaitu sepeda motor 2 tak dan 4 tak. Sepeda motor 2 tak mungkin masih dibagi lagi menurut pabrik pembuatnya, seperti Honda, Suzuki, Yamaha, dan seterusnya. Masing-masing pabrik mungkin masih mempunyai beberapa kelas turunan lagi, seperti Honda Astrea Star, Honda Astrea Grand, dan seterusnya, seperti ditunjukkan pada Gambar 2.3. Kendaraan Bermotor Sepeda motor Sedan dst. Sepeda motor 2tak Sepeda motor 4tak Honda Suzuki Yamaha Honda Karisma Honda Supra X dsb. Gambar 2.3 Kelas dan kelas turunan kendaraan bermotor. H. POLIMORFISME (POLYMORPHISM) Polimorfisme berarti kelas-kelas yang berbeda tetapi berasal dari satu orang tua dapat mempunyai metode yang sama tetapi cara pelaksanaannya berbeda-beda. Atau dengan kata lain, suatu fungsi akan memiliki perilaku berbeda jika dilewatkan ke kelas yang berbeda-beda. Contoh: kelas untuk input sound system. Sebuah tape recorder dan CD player memiliki tombol PLAY yang berfungsi untuk memainkan musik yang dikehendaki. Tape recorder mengimplementasikan tombol PLAY dengan membaca isyarat-isyarat yang terekam di pita magnetis kaset, Retooling Java Pengenalan PBO 13

sedangkan CD player menggunakan sinar laser untuk membaca bit-bit digital yang terekam di permukaan CD. Retooling Java Pengenalan PBO 14