SlideShare a Scribd company logo
1 of 165
Download to read offline
Miles, Russ & Hamilton, Kim,
2006,
Oreilly Publisher ,
Learning UML 2.0
286 Page
1. Pengenalan Konsep Class Diagram
2. Hubungan OOAD dengan OOP
3. Konsep Objek dan Kelas
4. Konsep dan Simulasi Enkapsulasi
5. Konsep dan Simulasi Pewarisan
6. Konsep dan Simulasi Polimorphisme
7. Penjelasan Konsep Abstraksi Pada OOAD dan OOP
8. Penjelasan Konsep Generic
• Class merupakan jantungnya object oriented programming
• Struktur sistem terdari dari kumpulan objek
• Class menjelaskan berbagai jenis objek yang dimiliki
sistem, dan diagram class menunjukkan relasi antar class
tersebut.
• Usecase menggambarkan perilaku sistem,
• Class menggambarkan berbagai jenis objek yang
diperlukan dalam sistem untuk memenuhi usecase.
• Class merupakan bagian dari logical view model
INDIKATOR TERSTRUKTUR OBJEK ORIENTED
Definisi Pemrograman terstruktur adalah suatu proses untuk
mengimplementasikan urutan langkah untuk
menyelesaikan suatu masalah dalam bentuk program
Pemrograman berbasis obyek (OOP)
berdasarkan pada konsep object dan
interaksinya. Program diselesaikan
oleh obyek-obyek yang bekerjasama
untuk menyelesaikan masalah
Fokus Proses (Urutan) Objek
Bahasa
Pemodelan
SAD (Structured Analysis & Design) OOAD (Object Oriented Analysis &
Design)
Model Data Kurang Fleksibel Fleksibel
Reusable Tidak bisa Bisa
Contoh :
Pengembangan SIA (Sistem Informasi Akademik)
Berorientasi Prosedur
SIA
mhs_registrasi
mhs_krs
dosen_insertNilai
admin_setJadwal
Prosedur / fungsi
SIA
Mahasiswa
NIM
nama
registrasi()
updateKRS()
Dosen
NIP
nama
insertNilai()
Administrasi
nama
alamat
setJadwal()
• Analogi dengan bass fender
• Fender membuat ratusan bass dengan berbagai macam
karakteristik.
• Class ada sesuatu sejenis blueprint dari objek sesuatu yang
bisa dikonstruksikan.
Instansiasi / Object dari class
CLASS
Objek
SIFAT(State):
• Warna
• Nama
• Jenis
PERILAKU (Behavior):
• Berjalan
• mengeong
Objek
ATRIBUT (variabel):
• Warna
• Nama
• Jenis
METODE (fungsi):
• Berjalan
• mengeong
Mewakili
• Kumpuulan objek-objek yang memiliki atribut dan method yang sama.
• Template untuk membentuk sebuah objek didalam PBO
• Dari sebuah kelas bisa dibentuk banyak objek dengan nama yang berbeda.
Pada PBO, kita harus memastikan sebuah kelas sudah terdefinisi sebelum bisa
membuat objek dari kelas tersebut.
• Objek adalah hasil instansiasi dari sebuah kelas
• Contoh Konkrit : Objek kucing persia
• Objek kucing itu bisa melakukan : berjalan maju , melompat, berlari , tidur ,
makan dll
• Objek kucing memiliki sifat : kulit belang , ekor pendek, kuku tajam dll.
• Objek dibuat dari sebuah Class , jadi semua code program
(data/properties dan fungsi/method) objek ada di class. Dengan kata lain
class adalah blue print (cetakan) dari objek.
• Suatu objek bisa juga spesialisasikan menjadi objek yang lebih rendah
tingkatnya (spesialisasi/specialization) atau bisa digeneralisasikan menjadi
objek yang lebih tinggi tingkatnya (generalisasi/generalization).
Untuk membuat objek kue1 , kue2 , kue3 dari class kue :
kue1 = new kue
kue2 = new kue
kue3 = new kue
IN DESIGN A CLASS, THINK ABOUT 2 THINGS:
1. Things the object knows
2. Things the object does
DEFINISI
1. Kumpulan objek-objek yang memiliki atribut yang sama
2. Template untuk membuat objek
3. Prototipe atau blue pront yang mendefinisikan variabel-
variabel & method-method secara umum
DEFINISI
1. Abstraksi dari sesuatu yang mewakili sesuatu yang ada
didunia nyata dan harus dapat dibedakan dengan objek lain
2. Objek merupakan hasil instansiasi dari class
3. Proses pembentukan objek dari suatu class
4. Objek disebut juga instance
5. Semua benda di dunia nyata bisa dianggap sebagai objek.
Contoh : kursi, meja, buku sepeda, komputer
6. Penggambaran pemrograman berorientasi objek =
penggambaran di dunia nyata DEKLARASI OBJEK
Kucing
jenis
warna
berjalan()
mengeong()
kucing1
jenis = anggora
warna = coklat-hitam
berjalan()
mengeong()
kucing2
jenis = hutan jawa
warna = coklat-hitam
berjalan()
mengeong()
Kelas
objek
Kucing
- jenis : String
- berat : int
+ setJenis(j : String) : void
+ getJenis() : String
+ setBerat(b : int) : void
+ getBerat() : int
Modifier:
+ : public
- : private
# : protected
~ : package/default
Perbedaan pemrograman berorientasi objek dibandingkan
dengan pemrograman prosedural juga terletak pada SIFAT yang
dimiliki oleh pemrograman berorientasi objek :
1.Abstraksi (Abstraction)
2.Enkapsulasi (Pembungkusan)
3.Pewarisan (Inheritance)
4.Polimorfisme (Polymorphism)




1. Sebuah proses penggabungan atribut dan method ke dalam
sebuah kelas.
2. Biasanya atribut dan methd dideskripsikan terpisah pada
pemrograman prosedural.
3. Enkapsulasi juga dihubungakan dengan pemberian hak
akses pad akelas ataupun anggota dari sebuah kelas (atribut
dan method)
4. Variabel dan method yang dipunyai sebuah object bisa
ditentukan hak aksesnya.
1. Data yang membedakan antara objek yang satu dengan
yang lain
2. Contoh : manusia
3. Atributnya : status, berat badan & tinggi badan
4. Didalam class atribut disebut sebagai variabel
• Ditandai dengan garis bawah
• Kapan atribut statis dan operasi digunakan ? adalah
saat Anda ingin menerapkan pola desain Singleton.
• Singkatnya, pola desain Singleton memastikan
bahwa satu dan hanya satu objek dari kelas tertentu
yang pernah dibangun selama masa pakai sistem
Anda.
• Untuk memastikan bahwa hanya satu objek yang
pernah dikonstruksikan, implementasi khas pola
Singleton menyimpan referensi statis internal ke
instance objek tunggal yang diizinkan, dan akses ke
instance tersebut dikontrol menggunakan operasi
statis.
1. Serangkaian statement dalam suatu class yang menghandle
suatu task
2. Cara objek berkomunikasi dengan objek lain adalah dengan
menggunakan method
• Enkapsulasi membuat atribut dan method menjadi lebih terorganisir dan jelas
kepemilikannya.
• Pemberian hak akses juga merupakan bagian terpenting dari proses
enkapsulasi. Hak akses diberikan pada tiga hal, yaitu kelas, atribut dan
method.
• UML's four different visibility classifications
• Dimulai dengan karakteristik visibilitas yang paling mudah diakses, visibilitas publik ditentukan
menggunakan simbol plus (+) sebelum atribut atau operasi yang terkait. Deklarasikan atribut atau operasi
publik jika Anda ingin dapat diakses langsung oleh kelas lain.
• Hal yang terbaik adalah menghindari atribut publik, tetapi
selalu ada pengecualian untuk aturan tersebut. Salah satu
contoh di mana secara umum diterima untuk menggunakan
atribut publik adalah ketika atribut adalah konstanta yang
dapat digunakan oleh sejumlah kelas yang berbeda.
• Atribut yang bertindak sebagai konstanta, yaitu, untuk
diberi nilai awal yang tidak dapat diubah diberi properti
readOnly.
• Dalam situasi ini, mengekspos atribut ke seluruh sistem
Anda tidak begitu berbahaya karena nilainya tidak dapat
diubah.
Using public visibility, any class within
the model can access the publicURL
attribute
• Atribut dan operasi yang dilindungi
ditentukan menggunakan simbol hash (#).
• Hanya berlaku di kelas turunannya
• Elemen yang PROTECTED tidak dapat
diakses oleh kelas yang tidak mewarisi dari
kelas Anda apakah itu dalam paket yang
sama atau tidak,
Any methods in the BlogAccount
class or classes that inherit from
the BlogAccount class can access
the protected creationDate
attribute
• Visibilitas paket, ditentukan dengan tilde (~), ketika
diterapkan pada atribut dan operasi, berada di antara
protected dan private.
• Aturannya cukup sederhana: jika Anda menambahkan
atribut atau operasi yang dideklarasikan dengan
visibilitas paket ke kelas Anda, maka setiap kelas
dalam paket yang sama dapat langsung mengakses
atribut atau operasi itu,
• Kelas di luar paket tidak dapat mengakses atribut
atau operasi yang dilindungi bahkan jika itu adalah
kelas turunan.
• alam praktiknya, visibilitas paket paling berguna
ketika Anda ingin mendeklarasikan kumpulan metode
dan atribut di seluruh kelas Anda yang hanya dapat
digunakan dalam paket Anda.
•
The countEntries operation can be called
by any class in the same package as the
BlogAccount class or by methods within
the BlogAccount class itself
• Visibilitas PRIVATE adalah jenis klasifikasi visibilitas yang
paling ketat, dan ditunjukkan dengan menambahkan simbol
minus (-) sebelum atribut atau operasi.
• Hanya kelas yang berisi elemen pribadi yang dapat melihat
atau bekerja dengan data yang disimpan dalam atribut
pribadi atau melakukan panggilan ke operasi pribadi
• Ini adalah aturan umum bahwa atribut harus selalu PRIVATE
dan hanya dalam kasus ekstrim dibuka untuk mengarahkan
akses dengan menggunakan sesuatu yang lebih terlihat.
Pengecualian untuk aturan ini adalah ketika Anda perlu
membagikan atribut kelas Anda dengan kelas yang mewarisi
dari kelas Anda. Dalam hal ini, sudah umum untuk
menggunakan protected. Dalam sistem OO yang dirancang
dengan baik, atribut biasanya PRIVATE atau PROTECTED,
tetapi sangat jarang PUBLIK
aMethod is part of the BlogAccount class, so it
can access the private name attribute; no
other class's methods can see the name
attribute
Buatlah program sesuai dengan gambar class diagram disamping kanan dan
implementasi coding nya dengan konsep pendekatan berbasis objek sehingga
menghasilkan output seperti berikut:
Disebuah perusahaan software terdapat sebuah aturan
penggajian dimana jika seorang karyawan sudah menikah,
maka karyawan tersebut akan mendapatkan tunjangan
sebesar 35% dari gaji pokok nya.
Jika Younglex ingin mengetahui berapa total gaji &
tunjangan nya dikarenakan dia sudah menikah dan memiliki
gaji pokok sebesar Rp 6.000.000 /bulan,
maka Bantulah younglex dengan cara buat program
tunjangan agar younglex dapat mengetahui hal tersebut
dengan cara menginputkan nominal gaji pokok & status
menikah atau belumnya sendiri?
• Prinsip didalam pemrograman berorientasi objek yaitu ketika kita membuat
atribut, maka jangan berikan hak akses public pada atribut tersebut. (kecuali
pada kasus pewarisan).
• Berikan lah hak akses berupa private
• Hak akses private tidak bisa diakses oleh selain kelas pemilik atribut tersebut
• Tujuannya adalah
1. Membatasi hak akses. Ini dilakukan agar sebuah member tidak sembarangan
dibaca atau di isi
2. Menyembunyikan informasi. Pengguna class tidak harus tahu apa yang
ada/terjadi di dalam class (Information Hiding)
3. Security coding
4. Memudahkan tracing bugs
5. Memungkinkan agar kemungkinan error tidak terjadi secara menyeluruh jika
kita menggunakan hak akses public
• Agar atribut nama yang bersifat private tersebut dapat diakses di kelas lain,
maka kita dapat menggunakan konsep getter setter.
• Getter dan setter adalah dua buah method yang dibuat untuk masing-
masing atribut agar kelas lain bisa melakukan modifikas dan pengaksesan
nilai yang ada pada suatu atribut.
• Getter setter memiliki hak akses public sehingga bisa diakses oleh kelas lain.
• Getter merupakan method yang dibuat untuk mengambil/mengembalikan
nilai sebuah atribut kepada pemanggilnya
• Setter merupakan method yang dibuat untuk memodifikasi nilai dari suatu
atribut berdasarkan nilai yang dikirim oleh pemanggilnya menggunakan
parameter input
• Format getter
Public <tipedataatribut> getNamaAtribut(){
Return <namaatribut>;
}
• Format setter
Public void setNamaAtribut(<paramaterInputAtribut>){
This.<namaatribut> = <parameterInputAtribut>;
}
• Kata kunci this terdapat pada setter yang digunakan untuk
membedakan antara atribut internal kelas dengan nama parameter
input apabila keduanya bernama sama.
• Kita bisa memberikan nama yang berbeda dan tidak menggunakan kata
kunci this. This mengacu pada nama atribut internal kelas.
1. Fungsi khusus yang namanya harus sama dengan nama class
2. Konstruktor digunakan untuk inisialisasi dan pemberian default value
3. Dipanggil otomatis ketika instansiasi objek
4. Tidak mengembalikan nilai
5. Konstruktor dapat di overloading
6. Konstruktor dibuat untuk menandakan bahwa objek dari suatu kelas sedang
diinstansiasi
7. Desktruktor menandakan bahwa objek dihancurkan dari memori
8. Java menganut konsep garbage collector sehingga JDK akan secara otomatis akan
menghancurkan objek yang dianggap sudah tidak dipakai. Kita cukup membuat
konstruktor secara eksplisit sementara destruktor bersifat optional
1. Konstruktor dapat digunakan untuk memberikan nilai awal pada
suatu atribut pada class tersebut
2. Proses inisialisasi ini mirip seperti setter.
1. Membuat fungsi dengan nama yang sama tetapi memiliki parameter yang
berbeda, baik secara jumlah maupun penamaan parameternya
2. Pemanggilan konstruktor tergantung pada instansiasi objek
1. Digunakan sebagai penanda ketika objek dihapus dari memori
2. Dipanggil otomatis ketika objek dihancurkan
3. Tidak mengembalikan nilai dan tidak berparameter
4. Tidak dapat di overloading
5. Java memiliki fasilitas garbage collector sehingga tidak perlu membuat
destruktor secara eksplisit
6. Garbage Collector adalah mekanisme JVM untuk menghapus object dari
memory kalau sudah tidak dibutuhkan. Garbage collector adalah fitur JVM yang
sangat penting karena programmer tidak perlu lagi menulis code secara
eksplisit untuk menghapus object seperti pada C/C++. Tugas utama Garbage
Collector adalah memastikan heap mempunyai cukup ruang selama eksekusi
aplikasi dengan menghapus object dalam heap yang sudah tidak digunakan lagi.
Garbage Collector sepenuhnya dikontrol oleh JVM kapan berjalan, ada cara
untuk menganjurkan Garbage Collector berjalan, tapi anjuran ini bisa dijalankan
oleh JVM bisa juga tidak dijalankan oleh JVM.
BAHASA C++
PHP
Buatlah program sesuaidengan gambar class diagram dibawah ini
dan implementasi coding nya dengan konsep pendekatan
berbasis objek sehingga menghasilkan output seperti berikut:
• Inheritance adalah proses dimana sebuah class
mendapatkan properti (atribut + method) dari class
lain.
• Dengan inheritance, sebuah class dapat dikembangkan
menjadi class baru yang lebih lengkap/baik.
• Class yang diturunkan disebut sebagai SUPERCLASS
(base class atau parent class)
• Class yang menjadi turunan disebut sebagai SUBCLASS
(derived class, extended class, atau child class).
• Inheritance dilakukan dengan keyword extends.
• Menggunakan relasi IS A
• Contoh : Burung (mempunyai sayap, bertelur dan
berparuh). Salah satu contoh burung adalah
elang.
• Pengujian : Elang IS A burung
• SPESIALISASI : membuat kelas baru yang lebih spesifik
• REUSABILITY : Penggunaan kembali kode dari super class
1. Bisa memanfaatkan atribut dan method kelas super
2. Bisa membuat atribut dan method baru pada kelas anak
3. Bisa memanfaatkan konstruktor pada kelas super
• Tanda tidak dapat berubah/diganti
• Berlaku untuk atribut, metode dan kelas
• Atribut Final berarti : isi atribut tersebut tidak dapat
diganti (konstanta)
• Metode Final berarti : metode tersebut tidak bisa di
override oleh sub classnya
• Kelas Final berarti : kelas tersebut tidak bisa menjadi
kelas orang tua (tidak bisa diturunkan.)

Question :
There is a surgeon & family doctor. Surgeon has no special identity on him. However,
surgeon can do treatPatient and makeIncision. Family doctor has an identity that
makeshousecalls and family doctor can do give advice.
Surgeon & family doctor is part of the doctor where the doctor has a worksAtHospital
identity and can do treatPatient as well.
Asked:
Describe the Relation of its Class Diagram?
Create Coding?
Answer the Question?
• Berarti kemampuan objek untuk mempunyai
banyak bentuk
• Suatu aksi yang memungkinkan programmer
menyampaikan pesan tertentu keluar dari hierarki
objeknya.
• Objek yang berbeda memberikan
tanggapan/respon terhadap pesan yang sama
sesuai dengan sifat masng-masing objek
• Proses polimorphism : overloading method &
overriding method
• Jenis polymorph : Ad hoc & Subtyping
• Adalah keadaan dimana beberapa method yang
terdapat pada suatu class memiliki nama yang sama
dengan fungsionalitas yang sama
• Adalah keadaan dimana suatu method di subclass
mengingkari method yang ada pada superclassnya.
• Konsep reusable
• Dalam java dikenal istilah template kode yang diwakili
oleh abstrak / interface
• Contoh dibawah ini, terlihat konsep yang mirip.
Terdapat method yang sama. Perbedaannya adalah
hanya rumus yang digunakan di masing-masing method.
• Kita coba buatkan konsep abstrak nya.
• Buatkan kelas BangunDatar sebagai kelas
abstrak.
• Kenapa bangun datar? Karena tidak ada
rumus yang dapat digunakan untuk
menghitung keliling dan luas dari bangun
datar.
• Kita baru bisa definisikan keliling dan luas
dari bentuk yang konkrit yaitu persegi
dan lingkaran.
• Kelas abstrak = template, memudahkan
kita dalam melakukan pembuatan kelas
baru yang masih anggota dari kelas
abstrak tersebut tanpa harus
menganalisis terlalu dalam tentang
method yang perlu disediakan.
• Manfaat : waktu analisis menjadi lebih
singkat.
• Class abstract adalah class yang tidak dapat diinstansiasikan.
• Semua member dari class tetap ada tetapi tidak bisa diinstansikan.
• Jika class abstract ingin diinstansiasikan, maka harus diturunkan terlebih
dahulu kesubclassnya.
• Abstract dapat digunakan pada level Class atau Method.
• Untuk menyatakan sebuah class adalah class abstract, tambahkah keyword
abstract ketika mendefinisikan class.
• Class abstract dikembangkan dengan keyword extends.
• Abstract terjadi ketika seorang pendesain sistem baru memikirkan rencana
method yang ada tetapi belum terlalu memperdulikan bagaimana
implementasinya
• Method abstract adalah suatu metode di dalam class
abstract yang belum ditentukan isinya (hanya nama
method dan parameternya saja).
• Method abstract harus diimplementasikan (ditulis isi
methodnya) di subclassnya.
• Konsep lain dari abstraksi
• Interface adalah sekumpulan method abstract.
• Sebuah blok program yang hanya berisi method-method
untuk diimplementasi dikelas yang lain.
• Class dapat mengembangkan sebuah interface dengan cara
mengimplementasikannya.
• Cara menuliskan interface mirip dengan cara menuliskan
class, tetapi interface bukanlah class.
• Class implementasi bisa mengimplementasi lebih dari satu
interface. Interface diimplementasi, bukan di extend
• Interface dikembangkan dengan keyword implements
• Class dikembangkan/diturunkan dengan keyword
extends
• Semua method yang ada di interface WAJIB
diimplementasikan di class yang
mengimplementasikannya.
• Setiap method yang ada di interface harus
diimplementasikan, sedangkan pada class tidak
semua method harus di override.
• Bukan menggunakan relasi inheritance
• Tetapi menggunakan realization
• Di java realization menggunakan kata kunci implements
• Di Java, sebuah kelas hanya boleh menjadi turunan dari 1
superclass. Tidak ada multiple-inheritance di java. Tapi
Java memperbolehkan sebuah class
mengimplementasikan lebih dari interface.
• Contoh:
1. Class Mobil mempunyai method berjalan();
2. Class Helikopter mempunyai method Terbang();
3. Class Mobikopter(gabungan mobil dan helikopter)
seharusnya memiliki kedua method tersebut.
• Cara pandang pemrograman yang memungkinkan seorang pembuat kelas menunda
pemberian tipe pada atribut & method
• Nama lain dari konsep “types-to-be-specified-later”
• Kelas yang dibuat bisa digunakan untuk tipe data yang berbeda
• Contoh :
Kedua jenis sample code ini adalah ilustrasi program untuk tipe data berbeda. Untuk setiap
tipe data yang berbeda kita harus membuat satu kelas tersendiri padahal kegunaannya sama.
• Untuk efisiensi desain kelas tersebut, kita dapat menggunakan konsep generic programming.
• Dapat diimplementasikan menjadi 2 konsep, yaitu :
1. Konsep tipe Object
2. Konsep tag generic <T>
• Object adalah kelas bawaan di Java sehingga bisa digunakan sebagai tipe dari atribut
maupun method tertentu.
• Kelas Object bisa dideklarasikan kembali menjadi kelas lain dimana didalam java sendiri
setiap tipe data itu dideskripsikan didalam sebuah kelas. (Cth : tipe data double adalah
objek dari kelas Double)
• Ide dasar nya adalah atribut dan method dideklarasikan menggunakan tipe object
sehingga nanti ketika ada objek yang ingin menggunakan atribut dan method di kelas
tersebut, objek tersebut tinggal mendeskripsikan ulang kelas tipe data yang diinginkan.
• Contoh Menukar nilai dua variabel :
• Terlihat tipe object
digantikan oleh tipe
String dan integer.
• Contoh Menukar nilai dua variabel :
• Terlihat dapat
mendeskripsikan nilai
dalam sebuah
variabel
• Tipe Object bisa didefinsikan dengan kelas tipe data, cth : Integer, String, Double
• Tipe ini tidak bisa didefinsikan dengan instance dari kelas tipe data, cth: int, double
• Kelemahan tipe object : kita bisa memasukkan nilai sembarang dengan tipe data yang
berbeda dan nilai tersebut dapat diganti dengan nilai lain yang memiliki tipe data yang
berbeda dengan sangat mudah.
• Objek dari kelas yang mengandung konsep object, tidak spesifik terhadap suatu jenis data
sehingga bisa menyebabkan kebingungan ketika menggunakannya.
• Untuk mengatasi hal tersebut kita dapat menggunakan konsep TAG GENERIC <E>.
Penggunaan Template (generic) :
"I know this class will have to work with other classes, but I
don't know or necessarily care what those classes actually end
up being."
• Tag ini diwakili oleh simbol <E> . Kita bisa mengganti huruf yang diapit oleh kedua kurung
siku tersebut.
• Konsep ini mengharuskan kita memilih satu dari sekian banyak tipe kelas data ketika
mendeklarasikann objek pada kelas yang mengandung tag generic.
• Perbedaan dari konsep sebelumnya adalah pada tipe dari atribut maupun method harus
disesuaikan dengan huruf yang diapit oleh kedua kurung siku tersebut.
• Contoh desain kelas dengan konsep tag generic :
E
• Pada kelas pertukaranNilai terdapat kotak putus-putus dengan hurup E didalmnya
• Simbol tersebut menunjukkan template parameter yang digunakan untuk
menggambarkan tag generic.
• Berikut adalah implementasi desain kelas tersebut kedalam coding
E
• Dari file Tester.Java tersebut dapat dilihat bahwa untuk setiap kelas tipe data terdapat satu
objek yang didedikasikan untuk mewakili kelas tipe data tersebut.
• Objek “tukarInteger” didedikasikan untuk mengurusi pertukaran nilai untuke kelas tipe data
“Integer”.
• Tag <T> ditimpa menjadi <Integer> sehingga kelas “PertukaranNilai” bisa digunakan untuk kelas
tipe data “Integer”
• Kedua konsep baik object maupun tag generic samasama bisa digunakan untuk memprogram
secara generic akan tetapi masing-masing mempunyai resiko tersendiri yang harus dipahami
ketika kita menggunakannnya.
• Penggunaan tag generic lebih disarankan karena pertukaran antar kelas tipe data dilakukan
secara eksplisit per objeknya
• Berikutnya dibahas salah satu contoh penerapan generic programming didalam library
Collection.
• Collection adalah sebuah ad hoc class yang disediakan oleh java (Java Collection)
• Tujuannya untuk membantu pengguna bahasa java dalam melakukan penyimpanan data
atau objek serta memanipulasinya.
• Kelas ini mempermudah kita dalam operasi struktur data seperti linked list, stack &
struktur data lain.
• Berikut struktur data sederhana yang dibahas pada bahasan kali ini adalah :
1. ArrayList
2. Linked List
3. Stack
4. Priority Queue
5. HashMap
• Ada konsep yang bisa mempermudah proses traversal pada kelas Collection yaitu Iterator
• Iterator memungkinkan kita untuk operasi traversal dalam sebuah elemen collection
• Sebagai contoh, kita ingin mengakses semua nilai yang disimpan pada suatu collection.
• Format perintah iterator di java adalah
• Ada 2 buah metode pada kelas ini yang sering digunakan, yaitu :
1. Method hasNext(), method ini digunakan untuk memeriksa apakah iterator masih
mempunyai elemen data berikutnya atau tidak. Method ini akan mengembalikan
nilai true apabla iterator masih mempunyai elemen data berikutnya yang akan di
proses dan mengembalikan nilai false apabila iterator sudah tidak mempunyai
elemen data berikutnya.
2. Method Next, method ini digunakan untuk mengambil elemen berikutnya di iterator
• Implementasi Iterator dalam coding
• Iterator dapat digunakan untuk proses traversal elemen-
elemen yang ada pada arraylist bilanganBulat. Method
hasNext() digunakan pada pengulangan while untuk
memeriksa apakah masih ada elemen yang terdapat pada
arraylist bilanganBulat.
• Method next() digunakan untuk mengambil elemen yang
sedang ditunuk oleh iterator kemudian menyimpannya
dalam variabel elemen
• Merupakan struktur data array yang bersifat dinamis.
• Kita tidak perlu menginisialisasi ukuran array di awal.
• Format dasar penggunaannya adalah :
• Operasi yang sering digunakan pada kelas ArrayList
No Method Tipe Method Kegunaan
1 add(Object o) boolean Menambahkan data yang sudah dispesifikasikan ke akhir dari
ArrayList
2 add(int indeks, Object
elements)
void Menambahkan data yang sudah dispesifikasikan ke posisi
tertentu di ArrayList
3 clear() Void Menghapus seluruh elemen dari ArrayList
4 get(int indeks) Object Mengembalikan nilai dari elemen arraylist pada posisi sesuai
indeks yang diinginkan
5 Remove(int indeks) Object Menghapus elemen Arraylist pada di posisi sesuai indeks yang
diinginkan
6 size Int Mengembalikan nilai berupa jumlah elemen yang ada pada
arraylist
• Contoh implementasi arraylist dalam coding :
• Hasil running
• Linked list menggunakan pointer untuk mengakses data yang ada didalamnya.
• Berbeda dengan array list yang menekankan penggunaan indeks untuk mengakses datanya, linked list
menggunakan konsep penunjuk ke data setelahnya atau sebelumnya.
• Linked list menggunakan dua penunjuk yang wajib ada yaitu pointer first yang selalu menunjuk data yang ada di
posisi paling awal dan pointer last yang selalu menunjuk data yang ada di posisi terakhir.
• Format dasar penggunaannya adalah :
• Operasi yang sering digunakan pada kelas ArrayListNo Method Tipe Method Kegunaan
1 add(Object o) Boolean Menambahkan data yang sudah di spesifikasikan ke akhir
2 add(int indeks, Object
elements)
Void Menambahkan data yang sudah di spesifikasikan ke posisi
tertentu
3 addFirst(Object o) Void Menambahkan data di posisi paling awal
4 addLast(Object o) Void Menambahkan data di posisi paling akhir
5 removeFirst() Object Menghapus data paling awal
6 removeLast() Object Menghapus data paling akhir
7 getFirst() Object Mendapatkan data paling awal
8 getLast() Object Mendapatkan data paling akhir
• Contoh implementasi linked list dalam coding:
• Cara kerjanya adalah seperti tumpukkan barang didunia nyata
• Konsep penyimpanan dan pengaksesan datanya menggunakan konsep LIFO (Last In First Out)
• Data yang dimasukkan terakhir akan diakses pertama kali ketika pada proses permintaan data.
• Format Dasar penggunaan :
• Implementasi coding
No Method Tipe Method Kegunaan
1 Push(Object o) Object Menambahkan data pada bagian atas stack
2 Pop() Object Mengambil data pada bagian atas stack
• PriorityQueue menggunakan konsep antrian didunia nyata
• Konsepnya adalah FIFO (First In First Out)
• Data yang disimpan pertama kali akan dikemablikan pertama apabila ada proses pengaksesan
No Method Tipe Method Kegunaan
1 Offer(Object o) Boolean Menyisipkan data ke dalam queue
2 Peek() Object Mengambil data dari bagian depan Queue tanpa menghapusnya
dari bagian depan antrian
3 Poll() Object Mengambil data dari bagian depan Queue dan menghapusnya
dari bagian depan antrian/Queue
• Implementasi priorityqueue dalam coding
• Hashmap menggunakan kunci untuk mengakses nilai yang disimpan didalamnya
• Setiap nilai yang akan disimpan akan dipetakan berdasarkan kuncinya masing-masing
• Kunci harus bersifat Unique.
• Format dasar hashmap:
No Method Tipe Method Kegunaan
1 put(Object K, Object V) Object Menambahkan pasangan key dan value ke dalam Hashmap
2 get(Object K) Object Mengambil value yang memiliki key seperti yang disebutkan
3 containsKey(Object K) Boolean Mengembalikan nilai true apabila didalam HashMap terdapat
key yang disebutkan
4 containValue(Object v) Boolean Mengembalikan nilai true apabila didalam HashMap terdapat
value yang disebutkan.
• Implementasi Coding
1. Penjelasan Umum Relasi Kelas
2. Penjelasan Derajat Relasi Kelas
3. Konsep dan Simulasi Relasi Kelas Association
4. Konsep dan Simulasi Relasi Kelas Aggregation
5. Konsep dan Simulasi Relasi Kelas Composition
6. Konsep dan Simulasi Relasi Kelas Dependency
7. Penjelasan Konsep MVC
• Kanban adalah istilah dalam Bahasa Jepang yang berarti
‘Visual record or signal’ atau ‘kartu’.
• Kebanyakan Industri manufaktur menganggap proses
pembuatan produk sebagai sesuatu yang mengalir tanpa
putus (kontinu) mulai dari desain, produksi, distribusi,
penjualan, dan pemasaran hingga layanan konsumen.
• Pekerja lini produksi di perusahaan Toyota menggunakan
Kanban untuk memberi tanda pada proses
manufakturing mereka. Kanban mula mula digunakan
oleh Toyota pada 1950-an
• Flexibel : Dengan memvisualisasikan perkerjaan yang dilakukan, kita
dapat mengetahui bottleneck dan kesalahan yang dapat dengan mudah
diubah.
• Memperlihatkan WIP : Dengan mengetahui WIP (Work In Progress)
team dapat menentukan kapan dan seberapa cepat suatu tugas harus
diselesaikan.
• Memudahkan dalam menjaga flow perkerjaan : Dengan sistem ini Agile
Coach dapat menjaga agar setiap tugas dapat diselesaikan dan release
produk berjalan lancar.
• Mempromosi kebersamaan : Dengan menggunakan Kanban, tim harus
belajar memiliki kebiasaan yang baik dan pola kerja yang baik seperti
saat ada masalah, masalah tersebut harus diselesaikan secara cepat hari
itu juga dengan tatap muka.
• Visualize the work
• Limit the work in progress
Peserta :
Hanya DT
Penyelenggara (EO) :
Dev Team
Alur :
1. Masing-masing DT bergantian, tanpa diinterupsi harus lanjut, bercerita
1. Aktifitas kemarin (melakukan apa saja)
2. Kendala kemarin (internal, eksternal)
3. Rencana aktifitas hari ini apa saja. Ke 3 hal ini untuk membantu tim capai sprint goal.
Penting untuk menyebarkan informasi pengembangan
2. Setelah daily scrum meeting ditutup, baru boleh rapat adhoc (terpisah)
3. Waktu maksimum 10-15 menit
Baiklah, berikut programnya:class Karyawan{  private int gajiPokok;  private String statusNikah;    public Karyawan(int gajiPokok, String statusNikah){    this.gajiPokok = gajiPokok;    this.statusNikah = statusNikah;  }    public int hitungGaji(){    int tunjangan, totalGaji;    if(this.statusNikah.equals("Menikah")){      tunjangan = (int)(this.gajiPokok * 0.35);        totalGaji = this

More Related Content

What's hot

[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handlingrizki adam kurniawan
 
Perancangan database penyewaan lapangan
Perancangan database penyewaan lapanganPerancangan database penyewaan lapangan
Perancangan database penyewaan lapanganevi kufia mahasanti
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automataahmad haidaroh
 
Modul 4 representasi pengetahuan
Modul 4   representasi pengetahuanModul 4   representasi pengetahuan
Modul 4 representasi pengetahuanahmad haidaroh
 
Usecase elearning
Usecase elearningUsecase elearning
Usecase elearningJonk Linggo
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineLucha Kamala Putri
 
Bagan terstruktur
Bagan terstrukturBagan terstruktur
Bagan terstrukturiimpunya3
 
4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)Simon Patabang
 
5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)Kelinci Coklat
 
6. Stack (Struktur Data)
6. Stack (Struktur Data)6. Stack (Struktur Data)
6. Stack (Struktur Data)Kelinci Coklat
 
Algoritma Apriori
Algoritma AprioriAlgoritma Apriori
Algoritma Aprioridedidarwis
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyZaenal Khayat
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Melina Krisnawati
 

What's hot (20)

[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling[PBO] Pertemuan 10 - Exception & Error Handling
[PBO] Pertemuan 10 - Exception & Error Handling
 
Perancangan database penyewaan lapangan
Perancangan database penyewaan lapanganPerancangan database penyewaan lapangan
Perancangan database penyewaan lapangan
 
Modul praktikum-pemrograman java dgn netbeans
Modul praktikum-pemrograman java dgn netbeansModul praktikum-pemrograman java dgn netbeans
Modul praktikum-pemrograman java dgn netbeans
 
Algoritma brute force
Algoritma brute forceAlgoritma brute force
Algoritma brute force
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Modul 4 representasi pengetahuan
Modul 4   representasi pengetahuanModul 4   representasi pengetahuan
Modul 4 representasi pengetahuan
 
Usecase elearning
Usecase elearningUsecase elearning
Usecase elearning
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
 
Bagan terstruktur
Bagan terstrukturBagan terstruktur
Bagan terstruktur
 
Use skenario
Use skenarioUse skenario
Use skenario
 
4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)4 diagram relasi antar entitas (ERD)
4 diagram relasi antar entitas (ERD)
 
5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)
 
Latihan soal struktur data
Latihan soal struktur dataLatihan soal struktur data
Latihan soal struktur data
 
Class diagram
Class diagramClass diagram
Class diagram
 
6. Stack (Struktur Data)
6. Stack (Struktur Data)6. Stack (Struktur Data)
6. Stack (Struktur Data)
 
Algoritma Apriori
Algoritma AprioriAlgoritma Apriori
Algoritma Apriori
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzy
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
 
Pushdown Automata
Pushdown Automata Pushdown Automata
Pushdown Automata
 

Similar to Baiklah, berikut programnya:class Karyawan{ private int gajiPokok; private String statusNikah; public Karyawan(int gajiPokok, String statusNikah){ this.gajiPokok = gajiPokok; this.statusNikah = statusNikah; } public int hitungGaji(){ int tunjangan, totalGaji; if(this.statusNikah.equals("Menikah")){ tunjangan = (int)(this.gajiPokok * 0.35); totalGaji = this

fdokumen.com_bab-1-konsep-oop.ppt
fdokumen.com_bab-1-konsep-oop.pptfdokumen.com_bab-1-konsep-oop.ppt
fdokumen.com_bab-1-konsep-oop.pptAgiHusni
 
Pengantar Pengembangan Sistem Berorientasi Objek.pptx
Pengantar Pengembangan Sistem Berorientasi Objek.pptxPengantar Pengembangan Sistem Berorientasi Objek.pptx
Pengantar Pengembangan Sistem Berorientasi Objek.pptxDzulFadliRahman1
 
Pemograman berorientasi obyek kelompok 6
Pemograman berorientasi obyek kelompok 6Pemograman berorientasi obyek kelompok 6
Pemograman berorientasi obyek kelompok 6ゴースト アノン
 
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2rizki adam kurniawan
 
APBO Pertemuan Rev01.pptx
APBO Pertemuan Rev01.pptxAPBO Pertemuan Rev01.pptx
APBO Pertemuan Rev01.pptxSamso20
 
Resume tentang oop dalam php
Resume tentang oop dalam phpResume tentang oop dalam php
Resume tentang oop dalam phphendrajuniarto
 
T1 - Konsep Pemrograman Berorientasi Obyek.ppt
T1 - Konsep Pemrograman Berorientasi Obyek.pptT1 - Konsep Pemrograman Berorientasi Obyek.ppt
T1 - Konsep Pemrograman Berorientasi Obyek.pptxirplsmksa
 
Pengantar Pemrograman Berorientasi Objek
Pengantar Pemrograman Berorientasi ObjekPengantar Pemrograman Berorientasi Objek
Pengantar Pemrograman Berorientasi Objekwawanext01
 
Resume tentang oop dalam php
Resume tentang oop dalam phpResume tentang oop dalam php
Resume tentang oop dalam phphendrajuniarto
 
Hardini 3201416015 3_b
Hardini 3201416015 3_b Hardini 3201416015 3_b
Hardini 3201416015 3_b Hardini_HD
 
PRAKTIKUM PBO PERTEMUAN 5 (3).pptx
PRAKTIKUM PBO PERTEMUAN 5 (3).pptxPRAKTIKUM PBO PERTEMUAN 5 (3).pptx
PRAKTIKUM PBO PERTEMUAN 5 (3).pptxannikarimatulf
 
Bab I - Konsep PBO.pptx
Bab I - Konsep PBO.pptxBab I - Konsep PBO.pptx
Bab I - Konsep PBO.pptxAgiHusni
 
Pemrograman Berorientasi Objek (PBO).pptx
Pemrograman Berorientasi Objek (PBO).pptxPemrograman Berorientasi Objek (PBO).pptx
Pemrograman Berorientasi Objek (PBO).pptxAjiSaktiKurniawan
 

Similar to Baiklah, berikut programnya:class Karyawan{ private int gajiPokok; private String statusNikah; public Karyawan(int gajiPokok, String statusNikah){ this.gajiPokok = gajiPokok; this.statusNikah = statusNikah; } public int hitungGaji(){ int tunjangan, totalGaji; if(this.statusNikah.equals("Menikah")){ tunjangan = (int)(this.gajiPokok * 0.35); totalGaji = this (20)

1. Pengantar Objek.ppt
1. Pengantar Objek.ppt1. Pengantar Objek.ppt
1. Pengantar Objek.ppt
 
fdokumen.com_bab-1-konsep-oop.ppt
fdokumen.com_bab-1-konsep-oop.pptfdokumen.com_bab-1-konsep-oop.ppt
fdokumen.com_bab-1-konsep-oop.ppt
 
Pengantar Pengembangan Sistem Berorientasi Objek.pptx
Pengantar Pengembangan Sistem Berorientasi Objek.pptxPengantar Pengembangan Sistem Berorientasi Objek.pptx
Pengantar Pengembangan Sistem Berorientasi Objek.pptx
 
Pemograman berorientasi obyek kelompok 6
Pemograman berorientasi obyek kelompok 6Pemograman berorientasi obyek kelompok 6
Pemograman berorientasi obyek kelompok 6
 
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
[RPL2] Pertemuan 1 - Pendahuluan Rekayasa Perangkat Lunak 2
 
TD-635-01-PSBO
TD-635-01-PSBOTD-635-01-PSBO
TD-635-01-PSBO
 
4_Class Diagram.pdf
4_Class Diagram.pdf4_Class Diagram.pdf
4_Class Diagram.pdf
 
APBO Pertemuan Rev01.pptx
APBO Pertemuan Rev01.pptxAPBO Pertemuan Rev01.pptx
APBO Pertemuan Rev01.pptx
 
Object oriented programming (oop)
Object oriented programming (oop)Object oriented programming (oop)
Object oriented programming (oop)
 
Resume tentang oop dalam php
Resume tentang oop dalam phpResume tentang oop dalam php
Resume tentang oop dalam php
 
Tugas aplinet meresum
Tugas aplinet meresumTugas aplinet meresum
Tugas aplinet meresum
 
T1 - Konsep Pemrograman Berorientasi Obyek.ppt
T1 - Konsep Pemrograman Berorientasi Obyek.pptT1 - Konsep Pemrograman Berorientasi Obyek.ppt
T1 - Konsep Pemrograman Berorientasi Obyek.ppt
 
Apsi 2
Apsi 2Apsi 2
Apsi 2
 
Pengantar Pemrograman Berorientasi Objek
Pengantar Pemrograman Berorientasi ObjekPengantar Pemrograman Berorientasi Objek
Pengantar Pemrograman Berorientasi Objek
 
Resume tentang oop dalam php
Resume tentang oop dalam phpResume tentang oop dalam php
Resume tentang oop dalam php
 
Hardini 3201416015 3_b
Hardini 3201416015 3_b Hardini 3201416015 3_b
Hardini 3201416015 3_b
 
Pertemuan 6 Rekayasa Perangkat Lunak
Pertemuan 6 Rekayasa Perangkat LunakPertemuan 6 Rekayasa Perangkat Lunak
Pertemuan 6 Rekayasa Perangkat Lunak
 
PRAKTIKUM PBO PERTEMUAN 5 (3).pptx
PRAKTIKUM PBO PERTEMUAN 5 (3).pptxPRAKTIKUM PBO PERTEMUAN 5 (3).pptx
PRAKTIKUM PBO PERTEMUAN 5 (3).pptx
 
Bab I - Konsep PBO.pptx
Bab I - Konsep PBO.pptxBab I - Konsep PBO.pptx
Bab I - Konsep PBO.pptx
 
Pemrograman Berorientasi Objek (PBO).pptx
Pemrograman Berorientasi Objek (PBO).pptxPemrograman Berorientasi Objek (PBO).pptx
Pemrograman Berorientasi Objek (PBO).pptx
 

More from rizki adam kurniawan

[MPPL] Managemen Sumber Daya Manusia
[MPPL] Managemen Sumber Daya Manusia[MPPL] Managemen Sumber Daya Manusia
[MPPL] Managemen Sumber Daya Manusiarizki adam kurniawan
 
[RPL2] Bisnis Model & Market Analysis
[RPL2] Bisnis Model & Market Analysis[RPL2] Bisnis Model & Market Analysis
[RPL2] Bisnis Model & Market Analysisrizki adam kurniawan
 
[PBO] Pertemuan 10 - Generic Programming & Collection
[PBO] Pertemuan 10 - Generic Programming & Collection[PBO] Pertemuan 10 - Generic Programming & Collection
[PBO] Pertemuan 10 - Generic Programming & Collectionrizki adam kurniawan
 
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVCrizki adam kurniawan
 
[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Androidrizki adam kurniawan
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktoprizki adam kurniawan
 
[PBO] Pertemuan 10 - Pemrograman Database (2)
[PBO] Pertemuan 10 - Pemrograman Database (2)[PBO] Pertemuan 10 - Pemrograman Database (2)
[PBO] Pertemuan 10 - Pemrograman Database (2)rizki adam kurniawan
 
[PBO] Pertemuan 10 - Pemrograman Database (1)
[PBO] Pertemuan 10 - Pemrograman Database (1)[PBO] Pertemuan 10 - Pemrograman Database (1)
[PBO] Pertemuan 10 - Pemrograman Database (1)rizki adam kurniawan
 
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)rizki adam kurniawan
 
[PBO] Pertemuan 4 - Kontruktor Destruktor
[PBO] Pertemuan 4 - Kontruktor Destruktor[PBO] Pertemuan 4 - Kontruktor Destruktor
[PBO] Pertemuan 4 - Kontruktor Destruktorrizki adam kurniawan
 

More from rizki adam kurniawan (20)

[MPPL] Managemen Sumber Daya Manusia
[MPPL] Managemen Sumber Daya Manusia[MPPL] Managemen Sumber Daya Manusia
[MPPL] Managemen Sumber Daya Manusia
 
[RPL2] Pengujian Perangkat Lunak
[RPL2] Pengujian Perangkat Lunak[RPL2] Pengujian Perangkat Lunak
[RPL2] Pengujian Perangkat Lunak
 
[RPL2] Growth Hacking
[RPL2] Growth Hacking[RPL2] Growth Hacking
[RPL2] Growth Hacking
 
[RPL2] Bisnis Model & Market Analysis
[RPL2] Bisnis Model & Market Analysis[RPL2] Bisnis Model & Market Analysis
[RPL2] Bisnis Model & Market Analysis
 
[RPL2] Deployment Diagram
[RPL2] Deployment Diagram[RPL2] Deployment Diagram
[RPL2] Deployment Diagram
 
[RPL2] Package Diagram
[RPL2] Package Diagram[RPL2] Package Diagram
[RPL2] Package Diagram
 
[RPL2] Sequence Diagram
[RPL2] Sequence Diagram[RPL2] Sequence Diagram
[RPL2] Sequence Diagram
 
[PBO] Pertemuan 10 - Generic Programming & Collection
[PBO] Pertemuan 10 - Generic Programming & Collection[PBO] Pertemuan 10 - Generic Programming & Collection
[PBO] Pertemuan 10 - Generic Programming & Collection
 
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
 
[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android[PBO] Pertemuan 12 - Pemrograman Android
[PBO] Pertemuan 12 - Pemrograman Android
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
 
[PBO] Pertemuan 10 - Pemrograman Database (2)
[PBO] Pertemuan 10 - Pemrograman Database (2)[PBO] Pertemuan 10 - Pemrograman Database (2)
[PBO] Pertemuan 10 - Pemrograman Database (2)
 
[RPL2] Design Sprint
[RPL2] Design Sprint[RPL2] Design Sprint
[RPL2] Design Sprint
 
[PBO] Pertemuan 10 - Pemrograman Database (1)
[PBO] Pertemuan 10 - Pemrograman Database (1)[PBO] Pertemuan 10 - Pemrograman Database (1)
[PBO] Pertemuan 10 - Pemrograman Database (1)
 
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)
[PBO] CARA BIKIN SOFTWARE (Kumpulan Referensi Java)
 
[RPL2] Activity Diagram
[RPL2] Activity Diagram[RPL2] Activity Diagram
[RPL2] Activity Diagram
 
[PBO] Pertemuan 6 - Interface
[PBO] Pertemuan 6 - Interface[PBO] Pertemuan 6 - Interface
[PBO] Pertemuan 6 - Interface
 
[PBO] Pertemuan 6 - Abstrak
[PBO] Pertemuan 6 - Abstrak[PBO] Pertemuan 6 - Abstrak
[PBO] Pertemuan 6 - Abstrak
 
[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance
 
[PBO] Pertemuan 4 - Kontruktor Destruktor
[PBO] Pertemuan 4 - Kontruktor Destruktor[PBO] Pertemuan 4 - Kontruktor Destruktor
[PBO] Pertemuan 4 - Kontruktor Destruktor
 

Baiklah, berikut programnya:class Karyawan{ private int gajiPokok; private String statusNikah; public Karyawan(int gajiPokok, String statusNikah){ this.gajiPokok = gajiPokok; this.statusNikah = statusNikah; } public int hitungGaji(){ int tunjangan, totalGaji; if(this.statusNikah.equals("Menikah")){ tunjangan = (int)(this.gajiPokok * 0.35); totalGaji = this

  • 1.
  • 2. Miles, Russ & Hamilton, Kim, 2006, Oreilly Publisher , Learning UML 2.0 286 Page
  • 3. 1. Pengenalan Konsep Class Diagram 2. Hubungan OOAD dengan OOP 3. Konsep Objek dan Kelas 4. Konsep dan Simulasi Enkapsulasi 5. Konsep dan Simulasi Pewarisan 6. Konsep dan Simulasi Polimorphisme 7. Penjelasan Konsep Abstraksi Pada OOAD dan OOP 8. Penjelasan Konsep Generic
  • 4. • Class merupakan jantungnya object oriented programming • Struktur sistem terdari dari kumpulan objek • Class menjelaskan berbagai jenis objek yang dimiliki sistem, dan diagram class menunjukkan relasi antar class tersebut. • Usecase menggambarkan perilaku sistem, • Class menggambarkan berbagai jenis objek yang diperlukan dalam sistem untuk memenuhi usecase. • Class merupakan bagian dari logical view model
  • 5.
  • 6.
  • 7. INDIKATOR TERSTRUKTUR OBJEK ORIENTED Definisi Pemrograman terstruktur adalah suatu proses untuk mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program Pemrograman berbasis obyek (OOP) berdasarkan pada konsep object dan interaksinya. Program diselesaikan oleh obyek-obyek yang bekerjasama untuk menyelesaikan masalah Fokus Proses (Urutan) Objek Bahasa Pemodelan SAD (Structured Analysis & Design) OOAD (Object Oriented Analysis & Design) Model Data Kurang Fleksibel Fleksibel Reusable Tidak bisa Bisa
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. Contoh : Pengembangan SIA (Sistem Informasi Akademik) Berorientasi Prosedur SIA mhs_registrasi mhs_krs dosen_insertNilai admin_setJadwal Prosedur / fungsi
  • 16.
  • 17.
  • 18. • Analogi dengan bass fender • Fender membuat ratusan bass dengan berbagai macam karakteristik. • Class ada sesuatu sejenis blueprint dari objek sesuatu yang bisa dikonstruksikan. Instansiasi / Object dari class CLASS
  • 19. Objek SIFAT(State): • Warna • Nama • Jenis PERILAKU (Behavior): • Berjalan • mengeong
  • 20. Objek ATRIBUT (variabel): • Warna • Nama • Jenis METODE (fungsi): • Berjalan • mengeong
  • 22. • Kumpuulan objek-objek yang memiliki atribut dan method yang sama. • Template untuk membentuk sebuah objek didalam PBO • Dari sebuah kelas bisa dibentuk banyak objek dengan nama yang berbeda. Pada PBO, kita harus memastikan sebuah kelas sudah terdefinisi sebelum bisa membuat objek dari kelas tersebut. • Objek adalah hasil instansiasi dari sebuah kelas • Contoh Konkrit : Objek kucing persia • Objek kucing itu bisa melakukan : berjalan maju , melompat, berlari , tidur , makan dll • Objek kucing memiliki sifat : kulit belang , ekor pendek, kuku tajam dll. • Objek dibuat dari sebuah Class , jadi semua code program (data/properties dan fungsi/method) objek ada di class. Dengan kata lain class adalah blue print (cetakan) dari objek. • Suatu objek bisa juga spesialisasikan menjadi objek yang lebih rendah tingkatnya (spesialisasi/specialization) atau bisa digeneralisasikan menjadi objek yang lebih tinggi tingkatnya (generalisasi/generalization).
  • 23. Untuk membuat objek kue1 , kue2 , kue3 dari class kue : kue1 = new kue kue2 = new kue kue3 = new kue
  • 24.
  • 25. IN DESIGN A CLASS, THINK ABOUT 2 THINGS: 1. Things the object knows 2. Things the object does DEFINISI 1. Kumpulan objek-objek yang memiliki atribut yang sama 2. Template untuk membuat objek 3. Prototipe atau blue pront yang mendefinisikan variabel- variabel & method-method secara umum
  • 26.
  • 27. DEFINISI 1. Abstraksi dari sesuatu yang mewakili sesuatu yang ada didunia nyata dan harus dapat dibedakan dengan objek lain 2. Objek merupakan hasil instansiasi dari class 3. Proses pembentukan objek dari suatu class 4. Objek disebut juga instance 5. Semua benda di dunia nyata bisa dianggap sebagai objek. Contoh : kursi, meja, buku sepeda, komputer 6. Penggambaran pemrograman berorientasi objek = penggambaran di dunia nyata DEKLARASI OBJEK
  • 28.
  • 29.
  • 30.
  • 31.
  • 32. Kucing jenis warna berjalan() mengeong() kucing1 jenis = anggora warna = coklat-hitam berjalan() mengeong() kucing2 jenis = hutan jawa warna = coklat-hitam berjalan() mengeong() Kelas objek
  • 33. Kucing - jenis : String - berat : int + setJenis(j : String) : void + getJenis() : String + setBerat(b : int) : void + getBerat() : int Modifier: + : public - : private # : protected ~ : package/default
  • 34.
  • 35.
  • 36. Perbedaan pemrograman berorientasi objek dibandingkan dengan pemrograman prosedural juga terletak pada SIFAT yang dimiliki oleh pemrograman berorientasi objek : 1.Abstraksi (Abstraction) 2.Enkapsulasi (Pembungkusan) 3.Pewarisan (Inheritance) 4.Polimorfisme (Polymorphism)
  • 38.
  • 39. 1. Sebuah proses penggabungan atribut dan method ke dalam sebuah kelas. 2. Biasanya atribut dan methd dideskripsikan terpisah pada pemrograman prosedural. 3. Enkapsulasi juga dihubungakan dengan pemberian hak akses pad akelas ataupun anggota dari sebuah kelas (atribut dan method) 4. Variabel dan method yang dipunyai sebuah object bisa ditentukan hak aksesnya.
  • 40. 1. Data yang membedakan antara objek yang satu dengan yang lain 2. Contoh : manusia 3. Atributnya : status, berat badan & tinggi badan 4. Didalam class atribut disebut sebagai variabel
  • 41. • Ditandai dengan garis bawah • Kapan atribut statis dan operasi digunakan ? adalah saat Anda ingin menerapkan pola desain Singleton. • Singkatnya, pola desain Singleton memastikan bahwa satu dan hanya satu objek dari kelas tertentu yang pernah dibangun selama masa pakai sistem Anda. • Untuk memastikan bahwa hanya satu objek yang pernah dikonstruksikan, implementasi khas pola Singleton menyimpan referensi statis internal ke instance objek tunggal yang diizinkan, dan akses ke instance tersebut dikontrol menggunakan operasi statis.
  • 42. 1. Serangkaian statement dalam suatu class yang menghandle suatu task 2. Cara objek berkomunikasi dengan objek lain adalah dengan menggunakan method
  • 43.
  • 44. • Enkapsulasi membuat atribut dan method menjadi lebih terorganisir dan jelas kepemilikannya. • Pemberian hak akses juga merupakan bagian terpenting dari proses enkapsulasi. Hak akses diberikan pada tiga hal, yaitu kelas, atribut dan method.
  • 45. • UML's four different visibility classifications
  • 46. • Dimulai dengan karakteristik visibilitas yang paling mudah diakses, visibilitas publik ditentukan menggunakan simbol plus (+) sebelum atribut atau operasi yang terkait. Deklarasikan atribut atau operasi publik jika Anda ingin dapat diakses langsung oleh kelas lain. • Hal yang terbaik adalah menghindari atribut publik, tetapi selalu ada pengecualian untuk aturan tersebut. Salah satu contoh di mana secara umum diterima untuk menggunakan atribut publik adalah ketika atribut adalah konstanta yang dapat digunakan oleh sejumlah kelas yang berbeda. • Atribut yang bertindak sebagai konstanta, yaitu, untuk diberi nilai awal yang tidak dapat diubah diberi properti readOnly. • Dalam situasi ini, mengekspos atribut ke seluruh sistem Anda tidak begitu berbahaya karena nilainya tidak dapat diubah. Using public visibility, any class within the model can access the publicURL attribute
  • 47. • Atribut dan operasi yang dilindungi ditentukan menggunakan simbol hash (#). • Hanya berlaku di kelas turunannya • Elemen yang PROTECTED tidak dapat diakses oleh kelas yang tidak mewarisi dari kelas Anda apakah itu dalam paket yang sama atau tidak, Any methods in the BlogAccount class or classes that inherit from the BlogAccount class can access the protected creationDate attribute
  • 48. • Visibilitas paket, ditentukan dengan tilde (~), ketika diterapkan pada atribut dan operasi, berada di antara protected dan private. • Aturannya cukup sederhana: jika Anda menambahkan atribut atau operasi yang dideklarasikan dengan visibilitas paket ke kelas Anda, maka setiap kelas dalam paket yang sama dapat langsung mengakses atribut atau operasi itu, • Kelas di luar paket tidak dapat mengakses atribut atau operasi yang dilindungi bahkan jika itu adalah kelas turunan. • alam praktiknya, visibilitas paket paling berguna ketika Anda ingin mendeklarasikan kumpulan metode dan atribut di seluruh kelas Anda yang hanya dapat digunakan dalam paket Anda. • The countEntries operation can be called by any class in the same package as the BlogAccount class or by methods within the BlogAccount class itself
  • 49. • Visibilitas PRIVATE adalah jenis klasifikasi visibilitas yang paling ketat, dan ditunjukkan dengan menambahkan simbol minus (-) sebelum atribut atau operasi. • Hanya kelas yang berisi elemen pribadi yang dapat melihat atau bekerja dengan data yang disimpan dalam atribut pribadi atau melakukan panggilan ke operasi pribadi • Ini adalah aturan umum bahwa atribut harus selalu PRIVATE dan hanya dalam kasus ekstrim dibuka untuk mengarahkan akses dengan menggunakan sesuatu yang lebih terlihat. Pengecualian untuk aturan ini adalah ketika Anda perlu membagikan atribut kelas Anda dengan kelas yang mewarisi dari kelas Anda. Dalam hal ini, sudah umum untuk menggunakan protected. Dalam sistem OO yang dirancang dengan baik, atribut biasanya PRIVATE atau PROTECTED, tetapi sangat jarang PUBLIK aMethod is part of the BlogAccount class, so it can access the private name attribute; no other class's methods can see the name attribute
  • 50.
  • 51. Buatlah program sesuai dengan gambar class diagram disamping kanan dan implementasi coding nya dengan konsep pendekatan berbasis objek sehingga menghasilkan output seperti berikut:
  • 52. Disebuah perusahaan software terdapat sebuah aturan penggajian dimana jika seorang karyawan sudah menikah, maka karyawan tersebut akan mendapatkan tunjangan sebesar 35% dari gaji pokok nya. Jika Younglex ingin mengetahui berapa total gaji & tunjangan nya dikarenakan dia sudah menikah dan memiliki gaji pokok sebesar Rp 6.000.000 /bulan, maka Bantulah younglex dengan cara buat program tunjangan agar younglex dapat mengetahui hal tersebut dengan cara menginputkan nominal gaji pokok & status menikah atau belumnya sendiri?
  • 53. • Prinsip didalam pemrograman berorientasi objek yaitu ketika kita membuat atribut, maka jangan berikan hak akses public pada atribut tersebut. (kecuali pada kasus pewarisan). • Berikan lah hak akses berupa private • Hak akses private tidak bisa diakses oleh selain kelas pemilik atribut tersebut • Tujuannya adalah 1. Membatasi hak akses. Ini dilakukan agar sebuah member tidak sembarangan dibaca atau di isi 2. Menyembunyikan informasi. Pengguna class tidak harus tahu apa yang ada/terjadi di dalam class (Information Hiding) 3. Security coding 4. Memudahkan tracing bugs 5. Memungkinkan agar kemungkinan error tidak terjadi secara menyeluruh jika kita menggunakan hak akses public
  • 54.
  • 55. • Agar atribut nama yang bersifat private tersebut dapat diakses di kelas lain, maka kita dapat menggunakan konsep getter setter. • Getter dan setter adalah dua buah method yang dibuat untuk masing- masing atribut agar kelas lain bisa melakukan modifikas dan pengaksesan nilai yang ada pada suatu atribut. • Getter setter memiliki hak akses public sehingga bisa diakses oleh kelas lain. • Getter merupakan method yang dibuat untuk mengambil/mengembalikan nilai sebuah atribut kepada pemanggilnya • Setter merupakan method yang dibuat untuk memodifikasi nilai dari suatu atribut berdasarkan nilai yang dikirim oleh pemanggilnya menggunakan parameter input
  • 56. • Format getter Public <tipedataatribut> getNamaAtribut(){ Return <namaatribut>; } • Format setter Public void setNamaAtribut(<paramaterInputAtribut>){ This.<namaatribut> = <parameterInputAtribut>; }
  • 57.
  • 58. • Kata kunci this terdapat pada setter yang digunakan untuk membedakan antara atribut internal kelas dengan nama parameter input apabila keduanya bernama sama. • Kita bisa memberikan nama yang berbeda dan tidak menggunakan kata kunci this. This mengacu pada nama atribut internal kelas.
  • 59.
  • 60.
  • 61. 1. Fungsi khusus yang namanya harus sama dengan nama class 2. Konstruktor digunakan untuk inisialisasi dan pemberian default value 3. Dipanggil otomatis ketika instansiasi objek 4. Tidak mengembalikan nilai 5. Konstruktor dapat di overloading 6. Konstruktor dibuat untuk menandakan bahwa objek dari suatu kelas sedang diinstansiasi 7. Desktruktor menandakan bahwa objek dihancurkan dari memori 8. Java menganut konsep garbage collector sehingga JDK akan secara otomatis akan menghancurkan objek yang dianggap sudah tidak dipakai. Kita cukup membuat konstruktor secara eksplisit sementara destruktor bersifat optional
  • 62.
  • 63.
  • 64. 1. Konstruktor dapat digunakan untuk memberikan nilai awal pada suatu atribut pada class tersebut 2. Proses inisialisasi ini mirip seperti setter.
  • 65. 1. Membuat fungsi dengan nama yang sama tetapi memiliki parameter yang berbeda, baik secara jumlah maupun penamaan parameternya 2. Pemanggilan konstruktor tergantung pada instansiasi objek
  • 66. 1. Digunakan sebagai penanda ketika objek dihapus dari memori 2. Dipanggil otomatis ketika objek dihancurkan 3. Tidak mengembalikan nilai dan tidak berparameter 4. Tidak dapat di overloading 5. Java memiliki fasilitas garbage collector sehingga tidak perlu membuat destruktor secara eksplisit 6. Garbage Collector adalah mekanisme JVM untuk menghapus object dari memory kalau sudah tidak dibutuhkan. Garbage collector adalah fitur JVM yang sangat penting karena programmer tidak perlu lagi menulis code secara eksplisit untuk menghapus object seperti pada C/C++. Tugas utama Garbage Collector adalah memastikan heap mempunyai cukup ruang selama eksekusi aplikasi dengan menghapus object dalam heap yang sudah tidak digunakan lagi. Garbage Collector sepenuhnya dikontrol oleh JVM kapan berjalan, ada cara untuk menganjurkan Garbage Collector berjalan, tapi anjuran ini bisa dijalankan oleh JVM bisa juga tidak dijalankan oleh JVM.
  • 68. Buatlah program sesuaidengan gambar class diagram dibawah ini dan implementasi coding nya dengan konsep pendekatan berbasis objek sehingga menghasilkan output seperti berikut:
  • 69.
  • 70. • Inheritance adalah proses dimana sebuah class mendapatkan properti (atribut + method) dari class lain. • Dengan inheritance, sebuah class dapat dikembangkan menjadi class baru yang lebih lengkap/baik. • Class yang diturunkan disebut sebagai SUPERCLASS (base class atau parent class) • Class yang menjadi turunan disebut sebagai SUBCLASS (derived class, extended class, atau child class). • Inheritance dilakukan dengan keyword extends. • Menggunakan relasi IS A • Contoh : Burung (mempunyai sayap, bertelur dan berparuh). Salah satu contoh burung adalah elang. • Pengujian : Elang IS A burung
  • 71. • SPESIALISASI : membuat kelas baru yang lebih spesifik • REUSABILITY : Penggunaan kembali kode dari super class 1. Bisa memanfaatkan atribut dan method kelas super 2. Bisa membuat atribut dan method baru pada kelas anak 3. Bisa memanfaatkan konstruktor pada kelas super
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78. • Tanda tidak dapat berubah/diganti • Berlaku untuk atribut, metode dan kelas • Atribut Final berarti : isi atribut tersebut tidak dapat diganti (konstanta) • Metode Final berarti : metode tersebut tidak bisa di override oleh sub classnya • Kelas Final berarti : kelas tersebut tidak bisa menjadi kelas orang tua (tidak bisa diturunkan.)
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.  Question : There is a surgeon & family doctor. Surgeon has no special identity on him. However, surgeon can do treatPatient and makeIncision. Family doctor has an identity that makeshousecalls and family doctor can do give advice. Surgeon & family doctor is part of the doctor where the doctor has a worksAtHospital identity and can do treatPatient as well. Asked: Describe the Relation of its Class Diagram? Create Coding? Answer the Question?
  • 85.
  • 86.
  • 87. • Berarti kemampuan objek untuk mempunyai banyak bentuk • Suatu aksi yang memungkinkan programmer menyampaikan pesan tertentu keluar dari hierarki objeknya. • Objek yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masng-masing objek • Proses polimorphism : overloading method & overriding method • Jenis polymorph : Ad hoc & Subtyping
  • 88. • Adalah keadaan dimana beberapa method yang terdapat pada suatu class memiliki nama yang sama dengan fungsionalitas yang sama
  • 89.
  • 90.
  • 91. • Adalah keadaan dimana suatu method di subclass mengingkari method yang ada pada superclassnya.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105. • Konsep reusable • Dalam java dikenal istilah template kode yang diwakili oleh abstrak / interface • Contoh dibawah ini, terlihat konsep yang mirip. Terdapat method yang sama. Perbedaannya adalah hanya rumus yang digunakan di masing-masing method. • Kita coba buatkan konsep abstrak nya.
  • 106. • Buatkan kelas BangunDatar sebagai kelas abstrak. • Kenapa bangun datar? Karena tidak ada rumus yang dapat digunakan untuk menghitung keliling dan luas dari bangun datar. • Kita baru bisa definisikan keliling dan luas dari bentuk yang konkrit yaitu persegi dan lingkaran. • Kelas abstrak = template, memudahkan kita dalam melakukan pembuatan kelas baru yang masih anggota dari kelas abstrak tersebut tanpa harus menganalisis terlalu dalam tentang method yang perlu disediakan. • Manfaat : waktu analisis menjadi lebih singkat.
  • 107. • Class abstract adalah class yang tidak dapat diinstansiasikan. • Semua member dari class tetap ada tetapi tidak bisa diinstansikan. • Jika class abstract ingin diinstansiasikan, maka harus diturunkan terlebih dahulu kesubclassnya. • Abstract dapat digunakan pada level Class atau Method. • Untuk menyatakan sebuah class adalah class abstract, tambahkah keyword abstract ketika mendefinisikan class. • Class abstract dikembangkan dengan keyword extends. • Abstract terjadi ketika seorang pendesain sistem baru memikirkan rencana method yang ada tetapi belum terlalu memperdulikan bagaimana implementasinya
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115. • Method abstract adalah suatu metode di dalam class abstract yang belum ditentukan isinya (hanya nama method dan parameternya saja). • Method abstract harus diimplementasikan (ditulis isi methodnya) di subclassnya.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123. • Konsep lain dari abstraksi • Interface adalah sekumpulan method abstract. • Sebuah blok program yang hanya berisi method-method untuk diimplementasi dikelas yang lain. • Class dapat mengembangkan sebuah interface dengan cara mengimplementasikannya. • Cara menuliskan interface mirip dengan cara menuliskan class, tetapi interface bukanlah class. • Class implementasi bisa mengimplementasi lebih dari satu interface. Interface diimplementasi, bukan di extend
  • 124. • Interface dikembangkan dengan keyword implements • Class dikembangkan/diturunkan dengan keyword extends • Semua method yang ada di interface WAJIB diimplementasikan di class yang mengimplementasikannya. • Setiap method yang ada di interface harus diimplementasikan, sedangkan pada class tidak semua method harus di override.
  • 125.
  • 126.
  • 127.
  • 128. • Bukan menggunakan relasi inheritance • Tetapi menggunakan realization • Di java realization menggunakan kata kunci implements
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135. • Di Java, sebuah kelas hanya boleh menjadi turunan dari 1 superclass. Tidak ada multiple-inheritance di java. Tapi Java memperbolehkan sebuah class mengimplementasikan lebih dari interface. • Contoh: 1. Class Mobil mempunyai method berjalan(); 2. Class Helikopter mempunyai method Terbang(); 3. Class Mobikopter(gabungan mobil dan helikopter) seharusnya memiliki kedua method tersebut.
  • 136.
  • 137.
  • 138. • Cara pandang pemrograman yang memungkinkan seorang pembuat kelas menunda pemberian tipe pada atribut & method • Nama lain dari konsep “types-to-be-specified-later” • Kelas yang dibuat bisa digunakan untuk tipe data yang berbeda • Contoh : Kedua jenis sample code ini adalah ilustrasi program untuk tipe data berbeda. Untuk setiap tipe data yang berbeda kita harus membuat satu kelas tersendiri padahal kegunaannya sama. • Untuk efisiensi desain kelas tersebut, kita dapat menggunakan konsep generic programming. • Dapat diimplementasikan menjadi 2 konsep, yaitu : 1. Konsep tipe Object 2. Konsep tag generic <T>
  • 139. • Object adalah kelas bawaan di Java sehingga bisa digunakan sebagai tipe dari atribut maupun method tertentu. • Kelas Object bisa dideklarasikan kembali menjadi kelas lain dimana didalam java sendiri setiap tipe data itu dideskripsikan didalam sebuah kelas. (Cth : tipe data double adalah objek dari kelas Double) • Ide dasar nya adalah atribut dan method dideklarasikan menggunakan tipe object sehingga nanti ketika ada objek yang ingin menggunakan atribut dan method di kelas tersebut, objek tersebut tinggal mendeskripsikan ulang kelas tipe data yang diinginkan.
  • 140. • Contoh Menukar nilai dua variabel : • Terlihat tipe object digantikan oleh tipe String dan integer.
  • 141. • Contoh Menukar nilai dua variabel : • Terlihat dapat mendeskripsikan nilai dalam sebuah variabel
  • 142. • Tipe Object bisa didefinsikan dengan kelas tipe data, cth : Integer, String, Double • Tipe ini tidak bisa didefinsikan dengan instance dari kelas tipe data, cth: int, double • Kelemahan tipe object : kita bisa memasukkan nilai sembarang dengan tipe data yang berbeda dan nilai tersebut dapat diganti dengan nilai lain yang memiliki tipe data yang berbeda dengan sangat mudah. • Objek dari kelas yang mengandung konsep object, tidak spesifik terhadap suatu jenis data sehingga bisa menyebabkan kebingungan ketika menggunakannya. • Untuk mengatasi hal tersebut kita dapat menggunakan konsep TAG GENERIC <E>. Penggunaan Template (generic) : "I know this class will have to work with other classes, but I don't know or necessarily care what those classes actually end up being."
  • 143. • Tag ini diwakili oleh simbol <E> . Kita bisa mengganti huruf yang diapit oleh kedua kurung siku tersebut. • Konsep ini mengharuskan kita memilih satu dari sekian banyak tipe kelas data ketika mendeklarasikann objek pada kelas yang mengandung tag generic. • Perbedaan dari konsep sebelumnya adalah pada tipe dari atribut maupun method harus disesuaikan dengan huruf yang diapit oleh kedua kurung siku tersebut. • Contoh desain kelas dengan konsep tag generic : E
  • 144. • Pada kelas pertukaranNilai terdapat kotak putus-putus dengan hurup E didalmnya • Simbol tersebut menunjukkan template parameter yang digunakan untuk menggambarkan tag generic. • Berikut adalah implementasi desain kelas tersebut kedalam coding E
  • 145. • Dari file Tester.Java tersebut dapat dilihat bahwa untuk setiap kelas tipe data terdapat satu objek yang didedikasikan untuk mewakili kelas tipe data tersebut. • Objek “tukarInteger” didedikasikan untuk mengurusi pertukaran nilai untuke kelas tipe data “Integer”. • Tag <T> ditimpa menjadi <Integer> sehingga kelas “PertukaranNilai” bisa digunakan untuk kelas tipe data “Integer” • Kedua konsep baik object maupun tag generic samasama bisa digunakan untuk memprogram secara generic akan tetapi masing-masing mempunyai resiko tersendiri yang harus dipahami ketika kita menggunakannnya. • Penggunaan tag generic lebih disarankan karena pertukaran antar kelas tipe data dilakukan secara eksplisit per objeknya • Berikutnya dibahas salah satu contoh penerapan generic programming didalam library Collection.
  • 146. • Collection adalah sebuah ad hoc class yang disediakan oleh java (Java Collection) • Tujuannya untuk membantu pengguna bahasa java dalam melakukan penyimpanan data atau objek serta memanipulasinya. • Kelas ini mempermudah kita dalam operasi struktur data seperti linked list, stack & struktur data lain. • Berikut struktur data sederhana yang dibahas pada bahasan kali ini adalah : 1. ArrayList 2. Linked List 3. Stack 4. Priority Queue 5. HashMap • Ada konsep yang bisa mempermudah proses traversal pada kelas Collection yaitu Iterator
  • 147. • Iterator memungkinkan kita untuk operasi traversal dalam sebuah elemen collection • Sebagai contoh, kita ingin mengakses semua nilai yang disimpan pada suatu collection. • Format perintah iterator di java adalah • Ada 2 buah metode pada kelas ini yang sering digunakan, yaitu : 1. Method hasNext(), method ini digunakan untuk memeriksa apakah iterator masih mempunyai elemen data berikutnya atau tidak. Method ini akan mengembalikan nilai true apabla iterator masih mempunyai elemen data berikutnya yang akan di proses dan mengembalikan nilai false apabila iterator sudah tidak mempunyai elemen data berikutnya. 2. Method Next, method ini digunakan untuk mengambil elemen berikutnya di iterator
  • 148. • Implementasi Iterator dalam coding • Iterator dapat digunakan untuk proses traversal elemen- elemen yang ada pada arraylist bilanganBulat. Method hasNext() digunakan pada pengulangan while untuk memeriksa apakah masih ada elemen yang terdapat pada arraylist bilanganBulat. • Method next() digunakan untuk mengambil elemen yang sedang ditunuk oleh iterator kemudian menyimpannya dalam variabel elemen
  • 149. • Merupakan struktur data array yang bersifat dinamis. • Kita tidak perlu menginisialisasi ukuran array di awal. • Format dasar penggunaannya adalah : • Operasi yang sering digunakan pada kelas ArrayList No Method Tipe Method Kegunaan 1 add(Object o) boolean Menambahkan data yang sudah dispesifikasikan ke akhir dari ArrayList 2 add(int indeks, Object elements) void Menambahkan data yang sudah dispesifikasikan ke posisi tertentu di ArrayList 3 clear() Void Menghapus seluruh elemen dari ArrayList 4 get(int indeks) Object Mengembalikan nilai dari elemen arraylist pada posisi sesuai indeks yang diinginkan 5 Remove(int indeks) Object Menghapus elemen Arraylist pada di posisi sesuai indeks yang diinginkan 6 size Int Mengembalikan nilai berupa jumlah elemen yang ada pada arraylist
  • 150. • Contoh implementasi arraylist dalam coding :
  • 152. • Linked list menggunakan pointer untuk mengakses data yang ada didalamnya. • Berbeda dengan array list yang menekankan penggunaan indeks untuk mengakses datanya, linked list menggunakan konsep penunjuk ke data setelahnya atau sebelumnya. • Linked list menggunakan dua penunjuk yang wajib ada yaitu pointer first yang selalu menunjuk data yang ada di posisi paling awal dan pointer last yang selalu menunjuk data yang ada di posisi terakhir. • Format dasar penggunaannya adalah : • Operasi yang sering digunakan pada kelas ArrayListNo Method Tipe Method Kegunaan 1 add(Object o) Boolean Menambahkan data yang sudah di spesifikasikan ke akhir 2 add(int indeks, Object elements) Void Menambahkan data yang sudah di spesifikasikan ke posisi tertentu 3 addFirst(Object o) Void Menambahkan data di posisi paling awal 4 addLast(Object o) Void Menambahkan data di posisi paling akhir 5 removeFirst() Object Menghapus data paling awal 6 removeLast() Object Menghapus data paling akhir 7 getFirst() Object Mendapatkan data paling awal 8 getLast() Object Mendapatkan data paling akhir
  • 153. • Contoh implementasi linked list dalam coding:
  • 154. • Cara kerjanya adalah seperti tumpukkan barang didunia nyata • Konsep penyimpanan dan pengaksesan datanya menggunakan konsep LIFO (Last In First Out) • Data yang dimasukkan terakhir akan diakses pertama kali ketika pada proses permintaan data. • Format Dasar penggunaan : • Implementasi coding No Method Tipe Method Kegunaan 1 Push(Object o) Object Menambahkan data pada bagian atas stack 2 Pop() Object Mengambil data pada bagian atas stack
  • 155. • PriorityQueue menggunakan konsep antrian didunia nyata • Konsepnya adalah FIFO (First In First Out) • Data yang disimpan pertama kali akan dikemablikan pertama apabila ada proses pengaksesan No Method Tipe Method Kegunaan 1 Offer(Object o) Boolean Menyisipkan data ke dalam queue 2 Peek() Object Mengambil data dari bagian depan Queue tanpa menghapusnya dari bagian depan antrian 3 Poll() Object Mengambil data dari bagian depan Queue dan menghapusnya dari bagian depan antrian/Queue
  • 157. • Hashmap menggunakan kunci untuk mengakses nilai yang disimpan didalamnya • Setiap nilai yang akan disimpan akan dipetakan berdasarkan kuncinya masing-masing • Kunci harus bersifat Unique. • Format dasar hashmap: No Method Tipe Method Kegunaan 1 put(Object K, Object V) Object Menambahkan pasangan key dan value ke dalam Hashmap 2 get(Object K) Object Mengambil value yang memiliki key seperti yang disebutkan 3 containsKey(Object K) Boolean Mengembalikan nilai true apabila didalam HashMap terdapat key yang disebutkan 4 containValue(Object v) Boolean Mengembalikan nilai true apabila didalam HashMap terdapat value yang disebutkan.
  • 159. 1. Penjelasan Umum Relasi Kelas 2. Penjelasan Derajat Relasi Kelas 3. Konsep dan Simulasi Relasi Kelas Association 4. Konsep dan Simulasi Relasi Kelas Aggregation 5. Konsep dan Simulasi Relasi Kelas Composition 6. Konsep dan Simulasi Relasi Kelas Dependency 7. Penjelasan Konsep MVC
  • 160.
  • 161. • Kanban adalah istilah dalam Bahasa Jepang yang berarti ‘Visual record or signal’ atau ‘kartu’. • Kebanyakan Industri manufaktur menganggap proses pembuatan produk sebagai sesuatu yang mengalir tanpa putus (kontinu) mulai dari desain, produksi, distribusi, penjualan, dan pemasaran hingga layanan konsumen. • Pekerja lini produksi di perusahaan Toyota menggunakan Kanban untuk memberi tanda pada proses manufakturing mereka. Kanban mula mula digunakan oleh Toyota pada 1950-an
  • 162. • Flexibel : Dengan memvisualisasikan perkerjaan yang dilakukan, kita dapat mengetahui bottleneck dan kesalahan yang dapat dengan mudah diubah. • Memperlihatkan WIP : Dengan mengetahui WIP (Work In Progress) team dapat menentukan kapan dan seberapa cepat suatu tugas harus diselesaikan. • Memudahkan dalam menjaga flow perkerjaan : Dengan sistem ini Agile Coach dapat menjaga agar setiap tugas dapat diselesaikan dan release produk berjalan lancar. • Mempromosi kebersamaan : Dengan menggunakan Kanban, tim harus belajar memiliki kebiasaan yang baik dan pola kerja yang baik seperti saat ada masalah, masalah tersebut harus diselesaikan secara cepat hari itu juga dengan tatap muka.
  • 163. • Visualize the work • Limit the work in progress
  • 164. Peserta : Hanya DT Penyelenggara (EO) : Dev Team Alur : 1. Masing-masing DT bergantian, tanpa diinterupsi harus lanjut, bercerita 1. Aktifitas kemarin (melakukan apa saja) 2. Kendala kemarin (internal, eksternal) 3. Rencana aktifitas hari ini apa saja. Ke 3 hal ini untuk membantu tim capai sprint goal. Penting untuk menyebarkan informasi pengembangan 2. Setelah daily scrum meeting ditutup, baru boleh rapat adhoc (terpisah) 3. Waktu maksimum 10-15 menit