Anda di halaman 1dari 22

Nomor Job: 4 Mata Pelajaran : PEMROGRAMAN DASAR

Kelas/Smt:XI/1 Judul Job : Pointer/Reference


Waktu: 2x45 menit Nama Siswa: Program Studi Keahlian :
Hari/tanggal: ................................... 1. Multimedia
Kelas: 2. TKJ
Guru Pembimbing: NILAI:
SMK Negeri 3
Deni Puji Rahayu, ST
Yogyakarta

A. Tujuan :
Setelah praktik peserta didik dapat:
1. Mengetahui tentang tipe data reference/penyimpanan alamat data
2. Mengetahui pengertian dari objek dan class
3. Mampu membuat diagram class
4. Mampu mengimplementasikan suatu class sebagai tipe data reference ke
dalam program berbasis java

B. Alat dan Bahan :


1. Komputer
2. Software OS
3. Software Netbeans

C. Dasar Teori
Variabel yang menyimpan reference (alamat memori) untuk variabel lain
disebut pointer. Dalam C dan C++ pointer adalah suatu tipe data
tersendiri. Tipe data pointer digunakan untuk menyimpan alamat memori
suatu variabel atau bisa dikatakan menunjuk suatu variable.
Salah satu hal yang menjadi ciri khas Java adalah tidak adanya pointer.
Banyak penelitian berkesimpulan kalau pointer adalah salah satu fitur
utama yang memungkinkan programmer menginjeksikan bugs ke dalam program
mereka. Di Java, struktur data sudah dilenyapkan, array dan string
adalah objek. Maka kebutuhan untuk memakai pointer bagi struktur
tersebut hilang. Ditambah lagi Java tidak punya pointer data types.
Pointer di dalam Java telah diganti dengan istilah references. Bahasa
Java hampir semuanya adalah references, variable references, object
references dan lain-lain.
Dibawah ini contoh program references pada java

Output

Page | 1
Diagram Class
Diagram kelas adalah inti dari proses pemodelan objek. Baik forward
engineering maupun reverse engineering memanfaatkan diagram ini. Forward
engineering adalah proses perubahan model menjadi kode program sedangkan
reverse engineering sebaliknya merubah kode program menjadi model. Bab
ini akan membahas diagram kelas beserta fitur-fitur yang menyertainya.
Atribut (attribute) dan operasi (operation) yang menggambarkan perilaku
suatu kelas serta perluasannya seperti stereotypes, tagged values dan
batasan (constrains) merupakan fitur-fitur suatu kelas. Kemudian dibahas
juga hubungan antara satu kelas dengan kelas lainnya beserta sifat-sifat
hubungan tersebut seperti penampakan (viibility), multiplicity,
kemudahan berubah (changeability), nilai pokok (default values) dan
property (properties).
Kemampuan menghasilkan kode program yang dimilki diagram kelas
menyebabkan diagram ini memilik hubungan yang khas dengan diagram UML
lainnya. Pada gambar di bawah, terlihat bahwa diagram yang lain memberi
masukan kepada diagram kelas. Dagram kelas yang baik menghasilkan suatu
rancangan system atau program yang mendekati kenyataan.

Definisi Kelas dan Objek


Diagram kelas merupakan kumpulan kelas-kelas objek. Oleh karena itu
pengertian kelas sangat penting sebelum merancang diagram kelas.
(Whitten,2004: 400) mengartikan kelas sebagai satu set objek yang
memiliki atribut dan perilaku yang sama. Kelas kadang-kadang disebut
kelas objek (object class). Secara alami, objek yang berupa buku
analisis disain dan buku pemrograman terstruktur kita kelompokan dalam
satu kelas, yaitu kelas buku. Kedua objek memiliki atribut dan perilaku
yang serupa. Contohnya, kedua objek mugngkin memiliki atribut yang
serupa seperti omor ISBN, Judul, tanggal penerbitan, edisi sebgainya.
Demikian juga, kedua objek memiliki perilaku yang sama misalnya membuka
dan menutup.
Secara teknis (Pender, 2003: bab 5) mengartikan sebuah kelas sebagai
suatu definisi sumber daya yan termasuk didalamnya informasi-informasi
yang menggambarkan fitur suatu entitas dan bagaimana penggunaannya.
Sedangkan objek adalh suatu entitas yang bersifat unik yang mengikuti
aturan-aturan yang sudah didefinisikan dalam kelasnya. Dalam terminology
perangkat lunak, kode program ditulis sebagai kumpulan kelas-kelas yang
mengerti pada perilaku yang telah didefinisikan dalam kelas. Dalam
database, objek dinyatakan berupa sebuah baris yang tersimpan dalam file
yang berada dalam memori computer. Jadi diagram kelas menggambarkan
“fisik” system yang akan kita buat.
Kelas menggambarkan suatu group yang memiliki kesamaan keadaan dan
perilaku. Kelas merupakan cetak biru suatu objek dalam system orientasi
Page | 2
objek. Dapat dikatakan kelas adalah sejenis alat pengklasifikasi.
Sebagai contoh Volkswagen, Toyota dan ford merupakan kumpulan mobil
sehingga dapat dikelompokkan dalam kelas yang diberi nama mobil. Suatu
kelas bisa menyatakan konsep yang dapat dilihat maupun abstrak (Pilone,
2005: bab 2)
Kelas dinyatakan dalam kotak yang terbagi menjadi bebrapa kompartemen.
Kompartemen dalah area dalam kelas yang berisi informasi. Kompartemen
pertama berisi nama kelas, berikutnya atribut dan yang terakhir operasi.
Kompartemen-kompartemen itu bisa disembunyikan unruk memperjelas diagram
yang kita buat.
UML menyarankan cara pemberian nama yang baik:
1. Dimulai dengan huruf besar
2. Ditengah pada kompartemen bagian atas
3. Ditulis dengan cetak tebal
4. Ditulis dengan cetak italic jika kelas tersebut abstract

Suatu objek merupakan isi (instance) dari kelas. Misalnya, kelas yang
memiliki anggota mobil dan diberi nama kelas mobil. Isi dari kelas itu
misalnya Toyota, BMW, Mercedes dan sebaginya. Dalam menyatakan instance
suatu kelas bisa menuls instance tersebut dan disertai dengan nama
kelasnya.

Atribut
Rincian suatu kelas misalnya warna mobil, jumlah sisi suatu bentuk, dan
sebagainya dinamakn atribut. Atribut bisa sederhana (integer, floating-
point dan sebagainya) bisa juga kompleks.
Atribut digambarkan dalam dua notasi yang berbeda. Inline atau hubungan
antar kelas.
1. Atribut Inline
Atribut kelas dapat ditulis di sebelah kanan notasi kotak. Atribut
itu dinamakan atribut inline. Tidak ada perbedaan semantic antara
atributinline dan atribut relasi. Kedunya sama-sama bermaksud merinci
kelas yang kita buat. Untuk menyatakan atribut pada tubuh kelas,
letakkan pada kompartemen kedua. Notasi atribut inline yang mengikuti
standar UML antara lain:
visibility/name:type multiplicity = default {property strings and constraints}
Di mana:
Visibility ::= { + | - | # | ~}
Multiplicity ::= [lower .. upper]
Berikut penjelasan tiap komponen:
a. Visibility. Mengindikasikan bagaimana atribut tersebut terlihat
berhubungan dengan kelas lain. Gunakan symbol +, -, #, atau ~
berturut-turut untuk menatkan ublic, private, protected, atau
package.
b. Simbol “/”. Mengindikasikan turuna dari atribut. Suatu turunan
atribut secara sederhana merupakan atribut yang dihitung dari
atribut lain dalam kelas.
c. Name. Merupakan frasa pendek yang menyatakan nama atribut. Kalimat
pada huruf kecil dan tiap huruf kalimat kedua dan seterusnya huruf
besar. Misal: horsePoser,manuFactur, dan sebagainya
d. Type. Menyatakan tipe atribut dari klasifikasi lain misalnyan
interace, built in type misalnya :int.
e. Multiplicity. Menspesifikasikan berapa banyak instance/anggota
yang dinyatakan dari atribut tersebut. Bisa integer tunggal atau
Page | 3
range suatu nilai yang dispesifikasikan di dalam kurung yang
dipisahkan dengan “ .. ”. Gunakan tanda asterisk “ * “ sebagai
batas atas untuk menyatakan batas atas.
f. Default. ,merupakan nilai default atribut
g. Propery strings. Merupakan kumpulan property atau tag yang dapat
dihubungkan dengan atribut. Biasanya untuk hal-hal yang khusus dan
unik. Tata caca penulisannya adalah dengan tanda “ {} “ yang
dipisahkan oleh koma.
h. Constraints. Merupakan batasan suatu atribut

2. Atribut Relasi
Atribut bisa dipresentasikan dengan cara menghubungkan dengan kelas
lainnya. Untuk itu kita menggunakan notasi relasi sebagai sarana
pembentuk atribut relasi dalam diagram kelas yang besar. Dengan cara
itu kita dapat membuat atribut yang lebih detil dan kmpleks. Ambil
contoh dalam pemodelan sebuah kelas mobil yang memiliki sebuah mesin
jenis tertentu. Jika kita akan merinci lagi mesin yang digunakan oleh
kelas mobil itu, akan diperoleh kelas mobl yang rumit dan sulit
dipahami. Bandingkan bila kelas mobil yang telah kita buatdihubungkan
dengan kelas lainnya yaitu kelas mesin yang merinci lebih detil
terhadap jenis-jenis mesin yang digunakan.

Notasi relasi memiliki sintaks yang sama dengan atribut inline. Tanda
“-“ berarti private, tanda “ + “ berarti public dan seterusnya antara
atribut relasi sama dengan atribut inline walaupun penematan dan
layoutnya berbeda. Atribut visibility dan namanya diletakkan dekat
garis relasi. Jangan gunakan kotak untuk multiplicity-nya. Cukup
dengan meletakkan multiplicity tersebut dekat kelas perinci
(attribute’s classifier).
Seperti multiplicity, constraint dapat diletakkan pada atribut. Dalam
notasi relasi, constraint ditnuliskan dekat kelas perinci atribut
sepanjang garis relasi. UML mengizinkan constraint ditulis dalam
notasi relasi antar atribut. seperti gambar dibawah ini:

Pada gambar diatas diperlihatkan standar UML berupa constraint “xor”


yang berarti hanya Transmisi Otomatis atau Transmisi Manual yang
dipilih. Jika dalam atribut inline sudah dinyatakan constraintnya,
maka kita cukup membuat catatan saja.

3. Atribut Turunan (Derived Atributes)


Atribut turunan diberi notasi slash “ / “. Symbol ini bermaksud
memberi informassi kepada implementator bahwa atribut tersebut tidak
terlalu penting. Misalnya dalam perbankan kita mempunyai kelas
Nasabah. Kelas ini menyimpan saldo terakhir dengan type floating-
point diberi nama saldo. Untuk mengetahui kondisi apakah saldonya
overdrawn atau tidak kita butuh atribut overdrawn (saldo minus) yang
bertipe Boolean. Karena overdrawn berdasarkan kondisi saldo

Page | 4
bukan berdasarkan inputan dari user, maka kita katakan overdrawn
merupakan atribut turunan. UML menyatakan bahwa atribut turunan
readOnly, artinya user diizinkan untuk mengubah nilai
tersebut. Seandainya user diizinkan untuk mengubah nilai atribut
turunan tersebut, mau tidak mau class harus melakukan update terhadap
sumber informasinya secara akurat.

4. Atribut Mltiplicity
Multiplicity suatu atribut menyatakan berapa banyak isi (instances)
dari atribut yang terbentuk saat kelas diinisiasi. Misalnya, kelas
mobil akan memiliki empat roda,jadi multiplicity atribut roda adalah
empat. Jika tidak ada keterangan multiplicity berarti dianggap
bernilai satu. Multiplicity bisa berupa integer, deretan integer yang
dipisahkan oleh koma, atau jangkauan nilai tertentu. Saat menyatakan
suatu jangkauan nilai, nilai atas tak hingga diberi symbol asterisk “
* “. Jika tidak ada batas bawah, berarti dianggap batas bawahnya nol.
Harga multiplicity dinyatakan dalam kurung “ [] ” untuk integer
tunggal dan dipisahkan oleh dua titi “ [ .. ] “ untuk dua integer.
Pada gambar dibawah ini, karena atribut mesin tidak
ditulis multiplicity-nya, maka anggap satu.

Urutan (Ordering)
Suatu atribut yang memiliki multiplicity lebih dari satu, saat
menyimpan datanya bisa dibuat cara pengurutannya. Sebagai contoh,
kita dapat menspesifikasikan daftar nama yang tersimpan berdasarkan
urut abjad. Jadi urutan tersusunnya data dalam kelas dijumpai pada
atribut kelas tersebut. Secara default, atribut suatu kelas tidak
memiliki urutan. Tanda bahwa satu atribut memiliki urutan dengan
menuliskan kata “{ordered}” setelah tanda kurung tutup atribut. dalam
gambar dibawah ini, kelas dataSiswa memiliki atribut nomor induk
mahasiswa multiplicity [ 0..*] dan urut abjad.

Unik (Uniqueness)
Sebagai penjelasan tambahan dari ordered, atribut multiplicity yang
lebih dari satu dapat dibuat unik. Unik sini berarti dalam satu kelas
tidak boleh ada atribut yang sama, misalya dalam kelas DataSiswa
tidak boleh ada nilai mahasiswa (NIM) yang sama. Cara penulisan unik
adalah dengan menambah “{unique}” setelah menulis multiplicity
atribut suatu kelas. Untuk menegaskan bahwa boleh ada duplikasi dalam
suatu kelas kita dapat menuliskan “ not unique “ setelah menulis
atribut multiplicity. berikut gambar diagram unik.

Page | 5
Collection Type
Standar UML menyediakan pemetaan dari beberapa kemungkinan orders dan
keunikan sebagai collection type. Table berikut ini memperlihatkan
pemetaan dari property atribut ke collection type UML. Perlu
diperhatikan, collection type yang ditunjukkan dalam table berikut
adalah pemetaan dan bukan peta langsung kelas ke bahasa pemrograman.
Urutan Keunikan Asosiasi
(Ordered) (Uniqueness) Collection Type
Salah (False) Salah (False) Bag
Benar (True) Benar (True) OrderSet
Salah (False) Benar (True) Set
Benar (True) Salah (False) Urutan (Sequence)

Berikut ini contoh atribut yang tersimpan dalam collection type


Orderset.

5. Property Atribut
Untuk lebih memperjelas property dengan multiplicity, atribut
memiliki beberapa set property untuk menyampaian tambahan informasi
kepada embaca diagram. Beberapa property yang telah didefinisikan
oleh UML antara lain.
Readonly
Menspesifikasikan bahawa atribut tidak dapat dimodifikasi setelah
nilai awal terbentuk. Dalm pengembang bahasa pemrograman dinyatakan
sebagai konstanta. UML tidak menspesifikasikan kapan nilai awal harus
disetting walaupun nilai default bisa dinyatakan sebagai nilai
default.
Union
Menyatakan bahwa tipe atribut sebagai gabungan dari nilai yang
mungkiin untuk atribut tersebut. Biasanya ini digunakan dengan
property turunan yang mengindikasikan bahwa atribut itu diturunkan
dari gabungan terhadap set atribut lainnya.
Subsets<attribute-name>
Menjelaskan bahwa atribut ini merupakan suatu subset dari seluruh
nilai yang valid dari atribut yang diberikan. Subset bukanlah
property yang biasa digunakan, seandainya dgunakan biasanya
diasosiasikan dengan sub-kelas dari suatu tipe attribute.
Redefines <attribute-name>
Menjelaskan bahwaatribut ini bekerja sebagai suatu nama lain dari
atribut yang diberikan. Walaupun tidak lazim, atribut ini dapat
digunakan untuk menunjukkan bahwa suatu sub-kelas memiliki suatu
atribut yang merupakan nama lain untuk atribut super-kelas.
Composite
Menyatakan bahwa atribut ini merupakan bagian dari seluruh bagian
hubungan dengan pembuat kelas (classifier)

6. Hambatan (Constraints)
Hambatan menyatakan batasan suatu elemen. Bisa bahasa natural bisa
juga menggunakan bahasa formal misalnya OCL. Walaupun demiian
hambatan dinyatakan dalam ekspresi Boolean. Hambatan ditulis dalam
Page | 6
tanda kurung karawal “ { } “ setelah elemen yang akan dibaut
hambatannya ditulis, bisa juga diletakkan sebagai catatan dengan
garis putus-putus
Kita dapat memberi nama suatu hambatan diikuti oleh titik dua sebelum
ekpsresi Boolean ditulis. Biasanya digunakan untuk mengidentifikasi
hambatan dalam suatu operasi.

7. Atribut statis
Atribut statis cenderung sebagai atribut kelas dari pada atribut
konten (instance) suatu kelas. Sebagai ontoh, kita menginisialisasi
nilai konstan dalam satu kelas dan mensharing sifat itu ke setiap
konten suatu kelas. Atribut statis dinyatakan dengan garis bawah
terhadap baik atribut inline maupun relasi
Operasi (Operation)
(pilone, 2005) mengartikan operation sebagai fitur dari kelas yang
menspesifikasikan bagaimana perilaku dijalankan. Misalnya meggambar
segiempat, menghitung umlah item suatu daftar dan sebagainya. UML
membedakan dengan jelas antara operation dan method. Jika operation
mendefinisikan sutau perilaku dijalankan, method adalah pelaksanaan
dari operation. Method berupa prosedur atau algoritma utnuk
menjalankan operatin. Diagram kelas hanya mencantumkan operation saja
sedangkan method tidak.
Operation diletakan dalam kompartemen terpisah dengan sintaks:
visibility name ( parameters ) : return-type {properties}
Parameter ditulis sebagai berikut:
direction parameter_name : type [ multiplicity ] = default_value { properties }

Gambar dibawah ini mengambarkan contoh operation:

Elemen sintaksnya antara lain:


Visbility
Mengindikasikan mampu liaht operation oleh kelas lain. Symbol +, -,
#, atau ~ berturut-turtberarti: public, pruvate, protected atau
package.
Name
Adalah frasa pendek yang menamai operation. Operation biasanya frasa
kata kerja yang merepresentasikan aksi. UML merekomendasikan huruf
pertama operasi adalah huruf kecil, bila ada kata berikutnya, kata
berikutnya diawali dengan huruf besar.
Return-Type
Merupakan tipe pengembalian pada ooperasi, jika ada. Jika tidak ada
operasi pengembalian dari operasi(disebut sebagai subroutine dalam
beberapa bahasa), maka type pengembalian dianggap void. Jika operasi
pengembalian dianggap tidak memiliki nilai (dalam beberapa bahsa
disebut fungsi), kita harus menunjukkan tipe nilai pengembaliannya,
apakah tipe primitive atau collection. UML menspesifikasikan keadaan
pengembalian sebagai opsional.
Properties
Menyatakan batasan dari sifat-sifat yang melekat pada operation.
Properties bersifat optional.

Page | 7
Parameter elemen sintaks antara lain:
Direction
Bersifat optional, mengindikasikan bagaimana parameter digunakan
dalam operasi. Antara lain: in, inout, out, atau return. Inmenyatakan
bahwa parameter mengarah dari caller menuju operation. Out menyatakan
sebaliknya parameter mengarah dari operation ke caller. Inout
menyatakan parameter dari caller ke operasi dan memiliki kemungkinan
untuk balik arah. Return mengindikasikan bahwa nilai yang diset oleh
caller diarahkan kembali sesuai nilai return itu.
Parameter-name
Merupakan kata benda atau frasa kata benda yang memberikan nama
kepada parameter. Secara tipikal, nama parameter dimulai dengan huruf
kecil dengan kata berikutnya jika ada, dimulai dengan huruf besar.
Type
Adalah tipe parameter. Tipe berhubungan dengan kelass lain,
interface, collection atau tipe primitif.
Multiplicity
Menyatakan berapa banyak instance tipe parameter. Bisa tidak ditulis
(berarti multiplicity = 1), integer tunggal, dertean integer yang
terpisahkan oleh koma atau range nilai yang dispesifikasikan anatar
kurung besar dengan “..” diantaranya. Batas atas tak hingga
dinyatakan dengan “. Jika tidak ada batas bawah, * mengindikasikan no
atau lebih.
Default_value
Menyatakan nilai default parameter. Nilai default bersifat opsional.
Jia tidak ditulis, berarti kita tidak memperlihatkan tanda sama
dengan. Perlu dicatat bahwa UML tidak menyatakan parameter dengan
nilai default Karen sintaks operasi melekat pada bahasa pemrograman
yang dipilih.
Properties
Menyatakan sifat-sifat yang berhubungan dengan parameter. Dinyatakan
dalam tanda kurung kurawal. Bersifat optional, boleh ada boleh tidak.
1) Batasan Operasi
Operasi bisa saja memilik beberapa batasan yang bermanfaat dalam
interaksinya dengan system. Batasan berarti jontrak yang harus
dipatuhi oleh operasi. Batasan dituliskan langsung saat operasi
ditulis atau dinatakan dalam catatan dengan garis putus-putus.
Kondisi Awal (Preconditions)
Kondisi awal menjelaskan keadaaan awal system sebelum operasi
dijalankan. Singkatnya, karena kta tidak mungkin menyatakan
kondisi awal untuk tiapparameter walaupun kelass juga secara umum
menyatakan operasi dengan sedikit atribut untuk system.
Beberapa bahasa pemrograman memilii proteksi sendiri sehingga
walaupun kita menyatakan kondisi awal, tetap saja program berjalan
tanpa terlebih dahulu mengecek kondisi awal yang kita nyatakan
dalam UML. Oleh karena itu menjadi tugas kita untuk mengecek
implementassi program yang kita buat secara manual.

Kondisi Akhir (Postconditions)


Kondisi akhir bermaksud memberi jaminan terhadap kondisi system
setelah operai dilaksanakan. Seperti kondisi awal, kondisi akhir
secara tipikal menyatakan kondisi satu atau lebih atribut system
atau memberi jaminan tentang kondisi kelas yang melakukan operasi.

Page | 8
Kondisi Tubuh (Body Conditions)
Suatu operasi mungkin memiliki kondisi tubuh yang membatasi nilai
pengembalian (return value). Kondisi tubuh terpisah dari kondisi
tubuh bisa saja diganti oleh metode yang dimiliki kelas itu.
Sebagai contoh, kelas “Window” mungkin menyatakan kondisi tubuh
untuk metode getSize() yang mensyaratkan panjang dan lebar jendela
tidak boleh nol. Kemudian subkelas yang bernama “SquareWindow”
mungkin memiliki kondisi tubuh sendiri yang menyatakan lebar dan
panjang harus sama besar. Kondisi tubuh sebagaimana kondisi awal
dan akhir memiliki batasan yang diekspresikan dalam bahasa alami
atau dengan OCL.

Operasi Query
Operasi dideklarasikan sebagai query jika implementasi operasinya
tidak merbah kelas tersebut. Dalam praktek, perancang menggunakan
property query yang mengindikasikan metode yang tidak merubah
atribut suatu objek. Kita menyatakan suatu metode query dengan
meletakkan batasan query setelah operasi ditulis. Sebagai contoh
suatu operasi getAge() secara sederhana mengambil integer tanpa
mengubah nilai internal kelas.

Pengeculaian (Exceptions)
Dengan notasi yang sejenis dengan batasan, kita bisa membuat
pengecualian dengan keyword <<exceptions>>. Dengan garis putus-
putus kita membuat daftar pengeculaian dalam bentuk catatan
seperti contoh dibawah ini.

2) Operasi statis
Operasi biasanya menspesifikasikan instance suatu kelas. Tetapi
UML mengijinkan suatu operasi menspesifikasi perilaku kelas itu
sendiri. Operasi itu dinamakan operasi statis yang bekerja
langsung terhadap kelas itu sendiri, bukan hanya terhdapad
instance kelas. Secara notasi kita menyatakan bahwa operasi itu
statis dengan membuat garis bawah.

Metode (Methods)
(Pilone, 2005: bab 2.4) menjelaskna bahwa metode adalah
implementasi proses. Tiap kelas biasanya mengimplementasikan

Page | 9
operasinya dengan menurunkan dari super kelas. Jika suatu kelas
tidak memiliki implementasi operasi, maka mau tidak mau harus
menurunkan (inheritance) dari super kelasnya, dan operasinya
dinyatakan sebagai abstract.

Kelas Absract
Kelas abstract adalah kelas yang menyediakan operasi tanpa merinci
implementasinya. Kelas abstract bermanfaat untuk
mengidentifikasikan fungsi antar objek. Karena tanpa implementasi,
kelas abstract harus menjadi subkelas. Contoh kelas abstract
adalah kelas Movable() yang memiliki operasi Move(). Dan
bergeraknya tergantung dari kelas lain, misalnya mobil, pesawat,
atau orang.

Hubungan (Relationship)
Tanpa adanya hubungan dengan kelas lain, kita tidak mampu melihat
mekanisme suatu system. UML menyediakan beragam cara menggambarkan
hubungan antar kelas.tiap hubungan memiliki tipe yang berbeda
sesuai dengan kebutuhan dengan harapan saat kita memodelkan suatu
system, pembaca akan memahami hubungan yang kita buat.
a) Ketergantungan (Depedency)
Hubungan terlemah antar kelas adalah hubungan ketergantungan
(dependency relationship). Ketergantungan antar kelas bermakna
suatu kelas menggunakan atau memiliki pengetahuan terhadap
kelas lainnya. Hubugan ketergantungan hanya sesaat (transient)
dan tidak ada batas waktu yang jelas. Ketergantungan biasanya
bisa dibaca sebagai “ … menggunakan …”. Misalnya kita memiliki
kelas WindowClosingevent saat akan ditutup. Kita bisa
menyatakan bahwa Window menggunakan suatu kelas
WindowClosingEvent. Ketergantungan digambarkan dengan garis
berpanah.

b) Asosiasi
Hubungan pada asosiasi lebih kuat dari hubungan ketergantunagn
dalam arti suatu kelas tetap berhubungan dengan kelas lain
seterusnya. Hubungan dapat diputus tanpa mengganggu kelas
lainnya. Asosiasi bisa dibaca “… menggunakan …”. Sebagai contoh
jia kita memiliki kelas Window yang memiliki referensi terhadap
gerkaan kursor mouse. Bisa kita katakan,Window memiliki suatu
kursor. Dengan cursor, kita dapat mengubah bentuk Window.
Asosiasi digambarkan dengan garis lengkap tanpa ada tanda
panah.

Navigavbility
Asosiasi memiliki notasi untuk menyatakan navigability. Jika
arah asosiasi antar dua kelas bisa dari atau ke, maka dalam UML
tidak perlu ditulis anak panah di ujungnya. Tetapi dalam
asosiasi dua arah kita jarang membuat hubungan
nonnavigable. Kita dapat menggambarkan asosiasi yang

Page | 10
nonnavigable dengan membuat tanda silang pada asosiasi
tersebut. Misalnya, paa gambar dibawah ini. Window menggunakan
Cursor untuk emubah bentuknya dan todak sebalinya (Cursor
menggunakan Window untuk mengubah bentuk kursor).

Penamaan Asosiasi
Biasanya asosiasi diberi nama dengan frasa pendek sepanjang
garis. Frasa yang ada tidak di-generate menjadi kode, murni
sebagai pelengkap model.

Multiplicity
Karena asosiasi biasanya merepresentasikan hubungan akhir, maka
ada hubungan atribut dalam kelas-kelas yang berasosiasi itu.
Jadi kita harus menerangkan berapa jumlah instance yang
terlibat dalam hubungan asosiasi itu. Untuk menyatakan jumlah
itu, kta meletakkan multiplicity dekat kelas. Jangan
menggunakan kotak dalam menuliskan multiplicity.

c) Agregasi (Agregation)
Agregasi adalah versi kuat dari asosiasi. Tidak seperti
asosiasi, agregasi mengimplikasikan kepemilikansuatu kelas.
Agregasi bisa dibaca “ … memilik … “. Misali kita memiliki
kelas window yang memiliki posisi dan ukuran pada kelas
Rectangle, maka kita katakana “Window memiliki Rectangle”.
Walaupun Rectangle bisa saja dishare dengan kelas lain, tetapi
Window memiliki hubungan erat dengan Rectangle. Tetapi hubungan
agregasi masih kalah kuat dengan komposisi
(composition). Hubungan af=gregasi dimyatakan dengan simob
“diamond” pada kelas pemilik (owning class) dan garis utuh
berpanah ke kelas yang dimiliki (owned class). Gambar dibawah
ini menggambarkan notasinya.

d) Komposisi (Composition)
Komposisi merupakan huungan yang paling kuat antar kelas.
Komposisi digunakan untuk mengambil seluruh bagian hubungan.
Hanya boleh ada satu komposisi dalam satu waktu. Antara
instance suatu kelas dengan instance lainnya selalu terkoneksi
(linked). UML tidak mengijinkan asosiasi dengan pemilik yang
berbeda sebelum hubungan komposisi dengan kelas terdahulu
diputus. Hubungan komposisi dibaca “… bagian dari …”. Misalnya,
jika Window yang kita buat harus memeliki Titlebar maka kita
dapat merepresentasikan suatu kelas bernama Titlebar yang
merupakan “bagian dari” kelas Window. Secara notasi, komposisi
digambarkan dengan belah ketupat tebal “Filled Diamond” dekat
kelas pemilik (owning class) dan garis tebal berpanah menuju
kelas yang dimilik (owned class).

Page | 11
e) Generalisasi (Generalitation)
Generalisasi berarti target dari hubungannya ke kelas yanglebih
genral (umum). Sebagai contoh jika kita memiliki kelas bernama
Cat dan kelas bernama Dog, kita dapat membuat generalisasi dari
keduanya dengan nama Animal. Generalisasi biasanya dibaca “…
adalah …” dimulai dari kelas yeng lebih spesifik menuju kelas
yang lebih umum (general class). Jadi dapat dikatakan “suatu
Cat adalah suatu Animal”.
f) Asosiasi Antar Kelas
Terkadang hubungan antara dua elemen tidak sederhana. Misalnya,
suatu tim pemain bola (football player) berasosiasi dengan liga
(league) lewat suatu regu. Jika hubungannya terlalu rumit, bisa
dibuatkan hubungan asosiasi antar kelas. Suatu asosiasi kelas
memiliki nama dan atribut seperti kelas biasa. Notasi untuk
kelas asosiasi adalah dengan garis putus-putus mengenai garis
asosiasi utama. Ketika ditranslasikan menjadi kode, biasanya
kelas asosiasi dianggap sebagai kelas biasa, sehingga ada tiga
kelas yang terbentuk. Yang perlu diperhatikan dari gambar
diatas adalah FootballPlayer tidak memiliki referensi langsung
kepada FootballLeague tapi memiliki referensi terhadap
FootballTeam. footballTeam akan memiliki referensi terhadap
FootballLeague.
g) Pengkualifikasi Asosiasi (Association Qualifiers)
Hubungan antar elemen bisa saja memiliki kunci dan indeks
dengan nilai tertentu. Sebagai contoh dalam perbankan, nasabah
diidentifikasi oleh nomor rekening atau nomor KTP. UML
menyediakan pengkualifikasi asosiasi untuk mengakap informasi
itu. Pengkualifikasi dinyatakan dengan cara membuat persegi
panjang kecil antara asosiasi dengan sumber elemen. Tulis
namanya (biasanya nama atribut) dalam persegi panjang kecil
itu.
h) Antarmuka (Interface)
Dalam UML kita membedakan operasi (operation) dan metode
(methods). Operasi diartikan sebagai cara-cara yang harus
ditempuh agar perilaku (behavior) pada suatu kelas terjadi.
Sedangkan metode diartikan sebagai implementasi/pelaksanaan
perilaku. Metode tidak dimodelka dalam diagram kelas. Identitas
operasi (operation signature) terdiri dari nama, parameter, dan
nilai balik. Kombinasi ketiga elemen tersebut menghasilkan
suatu Antarmuka (Pender, 2003: Bab 5). Beberapa bahasa modern
seperti C++tidak mensuport konsep antarmuka. Bahasa lain,
misalnya Java, mensuport Antarmuka tetapi tidak memiliki
property. Intinya adalahkita harus tahu akan diimplementasikan
dalam bahasa apakah model yang akan kita aplikasikan (Pilone,
2005: 2.7
Notasi Antarmuka
Sebagai contoh kita dapat membuat Antarmuka yang bernama
Sortable yang memilik operasi ComesBefore (…). Tipa kelas yang
melihat antarmuka Sortable harus melaksanakan implementasi
ComesBefore(…). Ada dua cara pengambaran suatu antarmuka. Mana
yang kita pilih tergantung apa titik berat yang akan kita
perlihatkan. Gambar dibawah ini cara pertama penggambaran
antarmuka Sortable. Cara penggambaran kedua adalah dengan soket
dan bola. Walaupun cara ini kurang detil dibanding cara pertama
tetapi sangat baik dalam mengambarkan hubungan dengan kelas-
kelas yang lain. Kelas tidak bebas (dependent) dalam antarmuka
ini dihubungka ke soket lain hingga klop membentuk antarmuka.

Page | 12
Suatu kelas dikatakan melihat antarmuka jika kelas tersebut
menyediakan implemtasi dari operasi dan property. Kelas tidak
bebas digambarkan dengan garis putus-putus dengan penuh terbuka
sedangkan kelas penyedia antarmuka digambarkan dngangaris
putus-putus dengan panah tertutup berarah dari kelas itu ke
antarmuka. Contoh yang lain adalah misalnya suatu kelas
MarketingPlance menyediakan suatu operasi price() yang dapat
menentukan harga suatu produk. Antarmuka penyedia digambarkan
dengan suatu bola yang terhubung ke kelas implementator dengan
garis tebal. Ketika suatu objek membutuhkan antarmuka, objek
itu dikatakan memiliki antarmuka peminta (required interface).
Digambarkan dengan setengan lingakarn pada ujungnya dan garis
penuh menuju kelas yang membutuhkan antarmuka. Gambar diatas
diartikan bahwa kelas Shirt membutuhkan antarmuka Price. Dan
jika digabungkan akan membentuk konfigurasi bola dan soket.
Shirt adalah produk yang membutuhkan suatu harga dan
MarketingPlang memiliki kemampuan untuk memberikan harga ke
suatu produk. Penggambaran antarmak jenis pertama dimuncilkan
pada UML versi 1.4 sedangkan untuk jenis kedua (bola dan soket)
mencul pada UML versi 2.0 (Pender, 2003:bab5).
i) Template (templates)
Jika antarmuka mengijinkan kita menyediakan spesifikasi objek-
objek yang akan kita interaksikan, UML menyediakan pula
abstraksi tipe kelasna. Ketika kita menginginkan kelas List
dapat mensuprot segala tpe objek, maka kita mengharuskan
seluruh objek dalam List itu memiliki tipe yang sama. UML
mengijinkan kita membuat dan menspesifikasikan jenis abstraksi
ini dalam suatu template.
Rangkuman

D. Langkah Kerja
1. Siapkan alat, bahan dan media yang akan digunakan dalam kegiatan
praktikum.
2. Ikuti langkah – langkah membuat project berikut:
a. Buka aplikasi NetBeans. Buat project baru dengan cara Create New
Project kemudian pilih Categories: Java dan project-nya: Java
Application. Setelah itu di Next.

b. Beri nama projectnya dengan “ADSIBO”, kemudian hapus centangan


Create Main Class, kemudian klik Finish.

Page | 13
Hasilnya seperti di bawah ini:

c. Buat lagi sebuah Project baru dengan cara Create New Project dan
pilih Categories: UML dan Projectnya: Reverse Engineered Java.

d. Project namenya diisi dengan “UMLAdsibo” dan untuk Java Project


dipilih ADSIBO.

Page | 14
Hasilnya seperti berikut:

3. Langkah-Langkah Pembuatan Class Diagram :


a. Pilih Project UMLAdsibo yang sudah dibuat kemudian klik kanan di
Model dan pilih New Package.

b. Beri nama Packagenya dengan Latihan setelah itu klik Finish.

Page | 15
Hasilnya seperti berikut :

c. Setelah package-nya selesai dibuat selanjutnya buat sebuah Class


Diagram dengan cara Klik kanan di Package Latihan kemudian pilih
New Diagram. Untuk Diagram type pilih: Class Diagram dan beri
nama diagramnya dengan Mahasiswa. Setelah itu Finish.
Maka tampilannya akan seperti berikut:

Page | 16
Hasinya akan terlihat seperti berikut:

d. Setelah itu pilih sebuah Class baru di jendela Palette kemudian


letakan di jendela Diagram Mahasiswa yang sudah dibuat
sebelumnya.

e. Ubah dan desain Class yang sudah ditambahkan tersebut seperti


berikut :

Attribute ditambahkan dengan cara klik kanan pada Class-nya


kemudian
pilih Create Attribute. Sedangkan untuk Operations: Create
Operations.
Operations yang ditambahkan hanyak ambilMakul() dan
lihatNilai().
Sedangkan operasi lainnya akan dibuat secara otomatis pada saat
membuat Attributnya.

Page | 17
f. Setelah Class tersebut selesai diubah, maka langkah selanjutnya
adalah mengenerate Class Mahasiswa menjadi sebuah kode program
Java.
g. Caranya dengan klik kanan pada Class Mahasiswa, kemudian pilih
Generate Code.

h. Tampilannya akan seperti berikut:

Target Project yang dipilih adalah ADSIBO, kemudian hilangkan


centang Generate Markets for Source File Merging. Setelah itu di
OK.
Hasilnya akan Terlihat seperti berikut :

Page | 18
Setelah Generate Code sukses dilakukan maka Project ADSIBO
dengan otomatis akan ditambahkan sebuah Package Latihan yang
didalamnya terdapat sebuah Class Mahasiswa.java. Package dan
Class yang terdapat di project ADSIBO disesuaikan dengan desain
UML yang sudah dibuat sebelumnya di project UMLAdsibo.
i. Hasil akhir dari coding Mahasiswa.java

4. Langkah-langkah membuat Class Diagram fungsi Main


a. Tambahkan sebuah Class baru dan beri nama Main.
b. Relasikan Class Main tersebut dengan Class Mahasiswa.
c. Tambahkan Method baru dengan Cara Create Operations setelah itu
klik kanan methodnya dan pilih Properties.

d. Ubah propertinya seperti gambar dibawah ini.


(catatan: untuk nama main huruf kecil)

Page | 19
e. Parameter diisi seperti gambar dibawah ini, untuk type-nya
dibuat sendiri yaitu String[ ] .

Setelah selesai dibuat langsung di OK saja.


Hasilnya seperti gambar berikut:

Page | 20
Code Class Main. Langkah – langkahnya seperti pada contoh Class
Mahasiswa sebelumnya.
Hasil akhir koding Java Class Main setelah di-generate code
adalah :

E. Tugas (pengetahuan)
Buat diagram class seperti berikut:

Tuliskan langkah – langkah pembuatannya di buku tulis beserta hasilnya


(diprint – ditempel)

F. Daftar Pustaka
http://windasf.blogspot.co.id/2014/12/diagram-kelas-class-diagram.html

Page | 21
http://allaboutalgoritma.blogspot.co.id/2010/02/string-dalam-java.html
http://edwardusj.blogspot.co.id/2015/07/program-java-operasi-string-
membalikkan.html

Page | 22

Anda mungkin juga menyukai