Kamis, 21 Februari 2008

Bab 2. Konsep OOP pada Java


Bab 2

Konsep OOP pada Java

Pemrograman berorientasi objek diciptakan untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada dalam kehidupan nyata. Dalam paradigma ini, sesuai dengan model kehidupan nyata, segala bagian (entiti) dari suatu permasalahan adalah objek. Objek-objek ini kemudian juga dapat berupa gabungan dari beberapa objek yang lebih kecil. Sebagai contoh, sebuah mobil. Mobil adalah sebuah objek dalam kehidupan nyata. Namun mobil sendiri terbentuk dari beberapa objek yang lebih kecil seperti roda ban, mesin, jok, transmisi, sistem rem, dan lain-lain. Mobil sebagai objek yang merupakan gabungan dari objek yang lebih kecil dibentuk dengan membentuk hubungan antara objek-objek penyusunnya. Begitu juga dengan sebuah program. Objek besar dapat dibentuk dengan menggabungkan beberapa objek-objek dalam bahasa pemrograman. Objek-objek tersebut berkomunikasi dengan saling mengirim pesan kepada objek lain.

Konsep-konsep pemrograman berorientasi objek dalam Java secara umum sama dengan yang digunakan oleh bahasa-bahasa lain. Jadi kebanyakan konsep yang kita bahas juga terdapat dalam bahasa selain Java. Namun, terkadang terdapat perbedaan-perbedaan kecil antara penerapan konsep-konsep tersebut dalam masing-masing bahasa. Perbedaan-perbedaan ini juga akan dijelaskan seiring penjelasan masing-masing konsep.

2.1 Objek

Dalam penjelasan mengenai analogi, kita sudah menyinggung mengenai objek. Sekarang kita akan mengupas lebih dalam tentang objek sebagai konsep kunci dari pemrograman berorientasi objek.

Baik dalam dunia nyata atau dalam sebuah program, sebuah objek memiliki dua karakteristik, yaitu state dan behaviour. State adalah keadaan dari sebuah objek, seperti mobil memiliki state warna, model, tahun pembuatan, kondisi, dan lain-lain. Sedang behaviour adalah kelakuan dari objek tersebut, seperti mobil dapat melaju, membelok, membunyikan klakson, dan lain-lain. Objek menyimpan statenya dalam satu atau lebih variabel, dan mengimplementasikan behaviournya dengan metode. Dengan penjelasan di atas, dapat disimpulkan bahwa objek adalah bagian software yang dibentuk dengan variabel-variabel dan metode-metode yang berhubungan dengan variabel tersebut.

Dengan karakteristik tersebut, kita dapat memodelkan berbagai objek dalam kehidupan nyata ke dalam objek-objek dalam sebuah program. Lebih lanjut kita dapat memodelkan objek-objek abstrak ke dalam sebuah program. Contoh umum untuk konsep abstrak seperti ini adalah objek Event, yaitu objek untuk mewakili peristiwa klik atau tombol ditekan.

Sebuah objek yang dibentuk dari sebuah kelas biasa disebut instans dalam terminologi OOP. Artinya objek tersebut adalah wujud nyata dari sebuah kelas. Variabel dan metode dari instans ini disebut variabel instans dan metode instans. Setiap instans menyimpan variabelnya sendiri-sendiri, jadi nilai variabel untuk tiap instans bisa berbeda.

2. 2 Message (Pesan)

Objek-objek yang bekerja sama membentuk suatu sistem harus saling berkomunikasi untuk menjalankan sistem tersebut. Dalam sebuah program, objek-objek berkomunikasi satu sama lain dengan mengirimkan pesan. Sebagai contoh, jika sebuah objek ingin memanggil metode dari objek lain, maka objek ini akan mengirimkan sebuah pesan yang meminta objek tujuan untuk menjalankan metode yang dikehendaki. Pesan ini akan berisi informasi-informasi yang dibutuhkan objek tujuan untuk dapat menunaikan permintaan tadi.

Sebuah pesan dibentuk oleh informasi berikut ini:

1. objek yang dituju

  1. nama metode yang ingin dipanggil

3. parameter yang dibutuhkan metode tersebut.

Contoh 2.1 anotherObject.aMethod(parameter1);

Misalkan objek Budi meminta objek Iwan untk membawa mobil Budi, maka Budi akan memanggil objek Iwan dengan perintah Iwan bawaMobil serta memberikan kuncil mobilnya. Dalam pemrograman berorientasi objek, perlakuan ini dapat dilakukan dengan cara,

iwan.bawaMobil ( kucilMobilBudi );

Ini menunjukkan bahwa objek yang dituju oleh objek Budi adalah objek Iwan dengan metode yang dibutuhkan bawaMobil yang dalam hal ini objek iwan mempunyai kemampuan membawa mobil, sedangkan parameter yang dibutuhkan oleh objek iwan dalam membawa mobil adalah kunci mobil budi.

Bila sebuah objek ingin memanggil metode miliknya sendiri, maka informasi pertama adalah dirinya sendiri. Untuk menunjuk diri sendiri dalam Java digunakan kata kunci this. Maka contoh sebelumnya akan menjadi:

this.aMethod(parameter1);

Andaikan bahwa objek Budi ingin membawa mobil miliknya sendiri, maka Budi hanya memanggil dirinya sendiri, yaitu saya bawa mobil dengan kunci yang saya miliki. Dalam pemrograman berorientasi objek, perlakuan ini dapat ditulis dalam bentuk;

this.bawaMobil(kunciMobilBudi);

Informasi pertama pada penulisan this.aMethod(parameter1); dapat kita dihilangkan sehingga menjadi:

aMethod(parameter1);

Dengan cara yang sama bahwa penulisan bawaMobil(kunciMobilBudi); menunjukkan bahwa yang membawa mobil adalah objek Budi sendiri, karena bila informasi pertama tidak ada, kompiler akan secara otomatis menunjuk ke objek itu sendiri.

Ada dua keuntungan dalam penggunaan pesan, yaitu:

1. semua kebutuhan interaksi antar objek dapat dilakukan

  1. objek-objek yang saling berinteraksi tidak harus berada dalam satu proses atau bahkan dalam satu komputer.

2.3 Kelas

Kelas adalah semacam cetakan, atau template, untuk membuat objek. Ibaratkan sebuah rancangan rumah yang digunakan untuk membangun ratusan rumah. Rumah yang dibangun tersebut adalah objek dari kelas rancangan rumah. Hal ini dapat dilakukan karena semua objek rumah yang dibangun memiliki karakteristik yang sama, sehingga dapat dibuatkan semacam blueprint-­nya. Tetapi objek-objek yang dibangun tetap akan memiliki bentuk fisik tertentu sendiri-sendiri, seperti variabel dalam sebuah program, atau pintu sebuah objek rumah. Dengan penjelasan ini, kelas dapat kita definisikan kembali menjadi sebuah blueprint, atau prototipe, yang mendefinisikan variabel dan metode yang sama untuk semua objek sejenis.

Sebagai contoh, misalkan kita ingin membuat kelas Rumah, maka kita harus membuat sebuah kelas yang mendefinisikan semua variabel yang dimiliki objek dari kelas tersebut. Selain itu, kelas tersebut juga harus mendeklarasikan metode-metode yang dimiliki objek dari kelas dan juga membuat implementasi dari metode tersebut. Dengan adanya kelas ini, kita dapat membuat sebanyak apapun objek-objek rumah yang sejenis, yaitu jenis yang didefinisikan oleh kelas Rumah. Setiap objek Rumah diciptakan, sistem akan mengalokasikan sejumlah memori untuk objek tersebut dan variabel-variabelnya. Dengan begitu setiap objek akan memiliki salinan masing-masing untuk setiap variabel instans.

Setelah mengenal konsep kelas, saatnya Anda dikenalkan dengan variabel kelas. Variabel kelas sebenarnya sama dengan variabel instans. Bedanya adalah, setiap objek berbagi satu dan hanya satu variabel kelas, tapi masing-masing memiliki salinan dari variabel instans. Misalkan kelas Rumah yang kita buat hanya akan mendukung 2 lantai, dan setiap objek Rumah terdiri atas 2 lantai. Maka informasi ini cukup disimpan satu kali, karena nilainya tidak berbeda untuk semua objek. Lebih jauh, bila ada satu objek yang mengubah nilai dari variabel kelas, maka semua objek sejenis lainnya akan mengikuti perubahan itu. Di samping variabel, terdapat juga metode kelas. Metode jenis ini dapat langsung dipanggil melalui kelas dan bukan dari instans kelas tersebut.

2.4 Pewarisan

Terminologi asing untuk pewarisan adalah inheritance. Mungkin dalam literatur lain Anda akan sering menjumpai istilah ini. Secara gamblang, pewarisan berarti sebuah kelas mewarisi state dan behaviour dari kelas lain. Sebagai contoh, sebuah kelas RumahMewah akan mewarisi state dan behaviour dari kelas Rumah. Begitu juga dengan kelas RumahSederhana. Kelas RumahMewah dan RumahSederhana disebut subkelas, atau kelas anak, dari kelas Rumah, yang disebut superkelas, atau kelas induk.

Seluruh subkelas akan mewarisi (inherits) state dan behaviour dari superkelasnya. Dengan begitu, semua subkelas dari superkelas yang sama akan memiliki state dan behaviour yang sama. Namun, masing-masing subkelas bisa menambah sendiri state atau behaviournya. Misalkan, pada kelas Rumah tidak terdapat variable kolamRenang, namun subkelas RumahMewah memiliki variabel tersebut. Contoh lain misalnya kelas Rumah tidak memiliki metode nyalakanAlarm, namun rumah mewah memiliki metode itu.

Dalam kasus tertentu subkelas mungkin memiliki implementasi behaviour yang berbeda dengan superkelasnya. Hal seperti ini disebut override. Contohnya subkelas SepedaBalap memiliki implementasi metode ubahGigi yang berbeda dengan implementasi metode tersebut pada superkelas Sepeda.

Tingkat pewarisan tidak hanya terbatas pada dua tingkatan. Dari contoh di atas, kita bisa saja membuat subkelas dari kelas SepedaBalap, dan seterusnya. Kita bisa terus memperpanjang tingkat pewarisan ini sepanjang yang kita butuhkan. Dengan begitu, subkelas-subkelas yang dibuat akan lebih khusus dan lebih terspesialisasi. Namun terdapat batasan pewarisan dalam Java yang disebut single inheritance. Artinya sebuah kelas hanya dapat mewarisi sifat dari satu dan hanya satu superkelas saja. Dalam beberapa bahasa pemrograman berorientasi objek lain, yang berlaku adalah multiple inheritance. Artinya sebuah kelas dapat mewarisi sifat dari beberapa superkelas sekaligus.

Dalam Java, terdapat kelas Object yang merupakan superkelas dari semua kelas dalam Java, baik yang builtin ataupun yang kita buat sendiri, lansung maupun tidak langsung. Karena itu sebuah variabel bertipe Object akan dapat menyimpan referensi ke objek apapun dalam bahasa Java. Kelas Object ini memiliki behaviour yang dibutuhkan semua objek untuk dapat dijalankan di Java Virtual Machine. Sebagai contoh, semua kelas mewarisi metode toString dari kelas Object, yang mengembalikan representasi String dari objek tersebut.

Manfaat penggunaan konsep pewarisan antara lain:

  1. kita dapat menggunakan kembali kelas-kelas yang kita buat (sebagai superkelas) dan membuat kelas-kelas baru berdasar superkelas tersebut dengan karakteristik yang lebih khusus dari behaviour umum yang dimiliki superkelas.
  2. kita dapat membuat superkelas yang hanya mendefinisikan behaviour namun tidak memberi implementasi dari metode-metode yang ada. Hal ini berguna jika kita ingin membuat semacam template kelas. Kelas semacam ini disebut kelas abstrak, karena behaviournya masih abstrak dan belum diimplementasikan. Subkelas-subkelas dari kelas semacam ini, yang disebut kelas konkret, mengimplementasikan behaviour abstrak tersebut sesuai dengan kebutuhan masing-masing.

Sedikit penjelasan mengenai kelas abstrak, kelas ini bisa memiliki hanya satu atau lebih metode abstrak. Subkelas dari kelas ini bertanggung jawab untuk memberikan implementasi untuk metode-metode abstrak tersebut. Sebagai akibat dari keberadaan metode abstrak ini, kelas abstrak tidak dapat diinstanskan (dibuatkan instansnya) atau digunakan untuk menciptakan sebuah objek dari kelas tersebut.

2.5 Interface

Arti harfiah dari interface adalah antarmuka, yaitu suatu alat untuk digunakan benda-benda yang tidak terhubung secara langsung untuk berinteraksi. Dalam bahasa pemrograman, interface digunakan oleh berbagai objek yang tidak terhubung untuk saling berinteraksi. Jadi dalam bahasa pemrograman, interface dapat didefinisikan sebagai koleksi definisi metode-metode dan variabel-variabel konstan, namun tanpa implementasi. Implementasi akan dilakukan oleh kelas-kelas yang mengimplements interface ini. Tanpa implementasi di sini tidak seperti pada kelas abstrak yang merupakan metode-metode yang tidak melakukan apa-apa, melainkan hanya sekedar nama metode saja.

Sebelumnya telah dijelaskan bahwa sebuah kelas tidak dapat menjadi subkelas dari beberapa superkelas, melainkan hanya bisa menjadi subkelas dari satu superkelas saja. Hal ini membuat desain program lebih rapi dan teratur, sehingga dapat mengurangi kompleksitas program. Namun, terkadang hal ini dapat menjadi suatu halangan yang tidak menyenangkan, yaitu saat kita membutuhkan suatu kelas yang memiliki sifat-sifat dari dua atau lebih kelas lain. Pada masalah seperti ini, interface dapat memberikan alternatif jalan keluar.

Dengan adanya interface maka beberapa kelas akan dapat menangani interaksi yang sama namun dengan behaviour yang bisa berbeda. Misalnya beberapa kelas mengimplementasi sebuah interface yang sama, maka kelas-kelas tersebut dapat menangani interaksi sesuai interface tersebut, namun tiap kelas dapat memiliki implementasi yang berbeda-beda.

Begitu juga bila sebuah kelas mengimplementasi banyak interface, maka kelas tersebut akan dapat menangani interaksi-interaksi sesuai salah satu interface yang diimplement oleh kelas tersebut. Namun, kelas tersebut harus mengimplementasi sendiri behaviournya. Di sinilah letak perbedaan penggunaan interface dengan multiple inheritance. Dalam multiple inheritance, layaknya single inheritance, subkelas tidak harus mengimplementasikan sendiri behaviournya karena secara default kelas tersebut akan mengikuti behaviour superkelasnya.

Bab 9. Sequence Diagram

9- Sequence Diagram

Dalam metodologi berorientasi objek untuk menujukkan bagaimana suatu objek berkomunikasi dengan objek yang lain dengan memperhatikan urutan waktunya dimodelkan di dalam sequence diagram.

Sequence diagram terdiri dari objek-objek, yang direprensentasikan dalam segi empat di dalamnya memuat nama dari objek, message, yang direpresentasikan dengan garis panah, dan Time (waktu), yang direnpresentasikan dengan vertical progression.

Objek

Setiap objek memiliki suatu garis putus-putus yang diarahkan dari objek kebawah, garis putus-putus ini disebut waktu keberadaan (lifeline) suatu objek. Di sepanjang garis putus-putus ini terdapat kotak segi empat yang disebut suatu aktivitas, yang menggambarkan suatu penggeksekusian dari operasi yang dimiliki oleh objek tersebut pada waktu tertentu. Panjang kotak segi empat menyatakan lama waktu yang diperlukan didalam mengeksekusi operasi. Seperti yang ditunjukkan pada gambar 9.1.

Gambar 9.1 objek dalam sequence diagram

Message

Suatu message akan berpindah dari suatu objek ke objek yang lain selama lifeline. Suatu objek dapat mengirimkan message ke dirinya sendiri. Suatu message dapat berupa message simple, synchronous, atau asynchronous.

Message simple adalah suatu pengiriman message dari suatu objek ke objek yang lain. Jika suatu objek mengirimkan suatu message synchronous, maka objek tersebut harus menunggu objek-objek yang lain yang menggunakan sumber daya yang sama untuk membebaskan sumber daya yang dimilikinya sebelum objek tersebut melakukan operasi pada objek tersebut. Sedangkan message asynchronous dapat melakukan operasi pada suatu objek walaupun objek yang lain menggunakan operasi yang dimiliki oleh objek tersebut. Visualisasi dari setiap message ini dinyatakan seperti yang ditunjukkan pada gambar 9.2.

Gambar 9.2 Simbol-simbol message dalam sequence diagram

Waktu

Urutan waktu dalam pengeksekusian suatu operasi dari suatu objek dinyatakan dengan arah vertikal, yaitu waktu pengeksekusian suatu sequence diagram dibaca dari atas ke bawah. Bagian kiri-atas kotak segi empat operasi merupakan waktu awal pengeksekusian suatu operasi dan bagian kanan bawah dari kotak segi empat operasi menyatakan waktu akhir pengeksekusian suatu operasi.

Gambar 9.3 Sequence diagram dengan message

Pada gambar 9.3 menyatakan actor menginisialisasi suatu objek Name1 dengan mengirimkan message1 dan hasil pengeksekusian dari operasi yang dilakukan oleh objek Name1 akan dikirimkan ke objek Name2 dengan mengirimkan message2, kemudian hasil operasi yang dilakukan oleh Name2 akan dikirimkan ke Name1 dengan mengirimkan message3. Hasil masukan yang diterima oleh Name1 akan melakukan operesi pada objeknya sendiri.

Contoh :

Misalkan user menekan sembarang tombol huruf pada keyboard, dimana yang menggunakan suatu aplikasi word processor. Langkah-langkah pengolahan kata yang ditekan user didalam menampilkan ke user dengan cara berikut :

  1. GUI me-request sistem operasi dalam menangani tombol yang ditekan
  2. Sistem operasi meminta CPU untuk mengolah huruf yang bersesuaian
  3. Siatem oprasi melakukan peng-update-an pada GUI user
  4. CPU meminta Video card untuk dapat memvisualisasikannya
  5. Video card mengirimkan message ke Monitor untuk ditampilkan
  6. Monitor manampilkan huruf yang diketik user.

Gambar 9.4 use case DisplayAlphanumeric

Gambar 9.5 sequence diagram GUI berinteraksi dengan objek yang lain

Misalkan dalam pembelian soda pada aplikasi MM terdapat tiga objek yang berpengaruh yaitu :

  1. Objek Front, GUI bagi pembeli
  2. Objek Register, yang melakukan proses pengidentifikasian uang yang dimasukkan dan yang melakukan penghitungan uang.
  3. Objek Dispenser, yang akan mealukan pengeleluaran jenis barang yang dipilih pembeli.

Sekenario pembelian soda adalah sebagai berikut :

  1. Pembeli memasukkan uang kedalam aplikasi MM dari port yang telah disediakan dalam Front MM
  2. Pembeli melakukan pemilihan jenis barang
  3. Uang dikirimkan ke Register untuk dihitung jumlah uang yang dimasukkan
  4. Register mencek untuk melihat barang yang dipilih ada pada Dispenser
  5. Asumsikan bahwa barang ada pada stok dan register mengupdate uang yang dimasukkan pembeli
  6. Register memintak Dispenser untuk mengeluarkan barang yang dipilih pembeli.

Gambar 9.6 Use case BuyController

Adapun squence diagram dari skenario tersebut adalah sebagai berikut :

Gambar 9.7 Sequence diagram BuyController

Untuk merepresentasikan kondisi “if” di dalam sequence diagram dinyatakan dengan square bracket. Misalkan dalam pembelian suatu jenis barang tertentu aplikasi akan selalu mencek jumlah uang yang dimasukkan dengan dengan jenis barang yang dipilih customer, maka dalam hal ini aplikasi menggunakan kondisi pengecekan “if”, maka sequence diagram ditunjukkan pada gambar 9.8.

Gambar 9.8 Sequence diagram BuyController dengan kondisi if

Untuk membuat sequence diagram dimana saat message yang dikirimkan suatu objek diperuntukkan untuk menciptakan suatu objek baru dinyatakan dengan label “create” seperti yang ditunjukkan pada Gambar 9.10.

Gambar 9.10 Sequence diagram crate objek

Visualisasi untuk sequence diagram yang merepresentasikan proses rekursif dinyatakan seperti pada gambar 9.11.

Gambar 9.11 Sequence diagram yang merepresentasikan proses rekursif

Bab 10. Collaboration Diagram

10- Collaboration Diagram

Sama halnya dengan sequence diagram, collaboration diagram menujukkan hubungan antar objek-objek. Hunbungan objek-objek ini ditunjukkan dengan memperlihatkan pengiriman message dari suatu objek ke objek yang lain. Sequence diagram dan collaboration diagram mempunyai tipe yang sama, yakni merepresentasikan informasi yang sama, dan sequence diagram dapat ditransformasikan ke collaboration diagram atau sebaliknya. Dalam sequence diagram lebih menekankan pada urutan-urutan waktu proses atau interaksi antar objek-objek. Collaboration diagram lebih menekankan pada konteks dan keseluruhan objek-objek yang berinteraksi. Dengan demikian, sequence diagram direpresentasikan menurut urutan waktu, collaboration diagram menurut ruang.

Collaboration diagram merupakan perluasan dari diagram objek, yaitu memberikan tambahan assosiasi antar objek, collaboration diagram menunjukkan objek mengirimkan message ke objek-objek yang lain.

Untuk mereprensentasikan suatu message, digambarkan dengan suatu garis berarah dari suatu objek ke objek yang lain. Label yang dekat garis berarah menunjukkan apa message yang dikirimkan objek pengirim dan yang diterima objek penerima. Message ini biasanya menyatakan objek penerima mengeksekusi suatu operasi. Vissualisasi dari message dibagi atas tiga bagian seperti yang dimiliki oleh sequence diagram.

Gambar 10.1 Simbol Collaboration diagram

Dalam collaboration diagram untuk merepresentasikan urutan-urutan proses dilakukan dengan cara pemberian nomor pada label setiap message, dimana nomor tersebut berhubungan dengan urutan waktu proses, seperti yang ditunjukkan pada gambar 10.1.

Contoh Visualisasi Collaboration Diagram

Gambar 10.2 use case DisplayAlphanumeric

Gambar 10.3 Collaboration diagram GUI

Misalkan user menekan sembarang tombol huruf pada keyboard, dimana yang menggunakan suatu aplikasi word processor. Langkah-langkah pengolahan kata yang ditekan user didalam menampilkan ke user dengan cara berikut :

  1. GUI me-request sistem operasi dalam menangani tombol yang ditekan
  2. Sistem operasi meminta CPU untuk mengolah huruf yang bersesuaian
  3. Siatem oprasi melakukan peng-update-an pada GUI user
  4. CPU meminta Video card untuk dapat memvisualisasikannya
  5. Video card mengirimkan message ke Monitor untuk ditampilkan
  6. Monitor manampilkan huruf yang diketik user.

Maka Collaboration diagramnya dapat diperlihatikan seperti yang ditunjukkan pada gambar 10.3

Sekenario pembelian soda adalah sebagai berikut :

  1. Pembeli memasukkan uang kedalam aplikasi MM dari port yang telah disediakan dalam Front MM
  2. Pembeli melakukan pemilihan jenis barang
  3. Uang dikirimkan ke Register untuk dihitung jumlah uang yang dimasukkan
  4. Register mencek untuk melihat barang yang dipilih ada pada Dispenser
  5. Asumsikan bahwa barang ada pada stok dan register mengupdate uang yang dimasukkan pembeli
  6. Register memintak Dispenser untuk mengeluarkan barang yang dipilih pembeli.

Gambar 10.4 Use case BuyController

Maka Collaboration diagramnya dapat diperlihatikan seperti yang ditunjukkan pada gambar 10.5

Gambar 10.5 Collaboration diagram BuyController

Untuk merepresentasikan kondisi “if” di dalam collaboration diagram dinyatakan dengan menambahkan message-label yang diberi nomor terhadap message-label. Misalkan dalam pembelian suatu jenis barang tertentu aplikasi akan selalu mencek jumlah uang yang dimasukkan dengan dengan jenis barang yang dipilih customer, maka dalam hal ini aplikasi menggunakan kondisi pengecekan “if”, maka collaboration diagram dapat dinyatakan seperti yang ditunjukkan pada gambar 10.6.

Gambar 10.6 Collaboration diagram BuyController

Untuk membuat collaboration diagram dimana saat message yang dikirimkan ke suatu objek diperuntukkan untuk menciptakan suatu objek baru dinyatakan dengan label “create”.

Misalkan suatu konsultan akan membuat suatu file proposal dengan urutan-urutan sebagai berikut :

  1. konsultan mencari file proposal, yang bersesuaian untuk digunakan kembali, dari pusat repository.
  2. jika konsultan menemukan file proposal yang dimaksud, buka file tersebut. Konsultan menyimpan file tersebut dengan nama yang berbeda sebagai file proposal baru.
  3. jika konsultan tidak menemukan file proposal, buat proposal baru dengan mencipatakan file baru.
  4. selama mengerjakan isi proposal, konsultan menggunakan aplikasi office.
  5. simpan proposal yang telah dikerjakan pada pusat repository.

Gambar 10.7 Collaboration diagram penciptaan file proposal

Untuk visualisasi dari suatu objek yang mengirimkan suatu message ke beberapa objek yang sama dilakukan dengan segi empat bersarang “back-ward” dan menambahkan tanda arterisk (*) untuk menunjukkan bahwa message tersebut adalah message ke semua objek, seperti yang ditunjukkan pada gambar 10.8.

Gambar 10.8 suatu objek menggirimkan message pada beberapa objek dalam urutan tertentu.

Untuk visualisasi pengembalian nilai direpresentasikan dengan atribut nilai yang dikembalikan disebelah kiri dan diikuti oleh tanda “:=” kemudian nama operasi yang akan menghasilkan nilai yang dimaksud. Contoh, untuk mengekspresikan totalPrice := compute(itemPrice, salesTax) dinyatakan seperti pada gambar 10.9.

Gambar 10.9 Collaboration diagram dengan pengembalian nilai

Untuk merepresentasikan suatu objek yang dapat mengirimkan message dari suatu objek ke beberapa objek secara bersamaan dan objek objek-objek tersebut dapat melakukan operasinya masing-masing secara bersamaan atau yang disebut dengan concurrency, dapat direpresentasikan dengan kotak segi empat tembal. Contoh, suatu sensor gedung saat menangkat suatu event asap maka objek sensor akan mengirimkan message ke objek Telepon untuk melakukan dealing ke nomor pemadam kebakaran dan juga megirimkan message ke objek alarm untuk membangkitkan bunyi alarm, seperti yang ditunjukkan pada gambar 10.10.

Gambar 10.10 Collaboration diagram dalam visualisasi concurrency