Anda di halaman 1dari 21

LAPORAN HASIL PRAKTIKUM

ALGORITMA DAN PEMROGRAMAN II

NAMA : MUHAMMAD RIF’AN


NIM : DBC 115 065
KELAS :F
MODUL :4
TOPIK : Relasi Kelas
TUJUAN : Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu
membuat beberapa jenis relasi kelas.

Nilai
KOMPOSISI NILAI
Maksimal
BAB I Tujuan dan Landasan Teori 20
BAB II Langkah Kerja 10
BAB III Pembahasan 40
BAB IV Kesimpulan 15
BAB V Dafta Pustaka 5
BAB VI Lampiran 10
Jumlah 100

Penilai,
Asisten Praktikum

NADYA CHITAYAE

LABORATORIUM PEMROGRAMAN
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK
UNIVERSITAS PALANGKARAYA
TAHUN 2016
BAB I
TUJUAN DAN LANDASAN TEORI

Jenis Relasi antar kelas terdiri dari pewarisan, agregasi, asosiasi.


Pewarisan merupakan hubungan antar satu kelas dengan kelas lain dalam
suatu hirarki kelas induk dan kelas turunan. Superclass (“kelas dasar”atau
“kelas induk”) merupakan kelas yang lebih general dalam relasi “is-a”.
Subclass ( “kelas turunan”atau “kelas anak”) merupakan kelas yang lebih
spesifik dalam relasi “is-a”. Objek yang dikelompokkan dalam sub kelas
memiliki atribut dan perilaku kelas induk, dan juga atribut dan perilaku
tambahan. Kita mengatakan subclass “mewarisi”suatu superclass (atau juga
bisa dikatakan sebuah subclass “turunan dari”suatu superclass).
Agregasi merupakan hubungan antar kelas yang menyatakan suatu
kelas merupakan bagiandari kelas yang lain atau hubungan antar kelas yang
menyatakan suatu kelas memilikikelas lain [sebagai atribut]. Agregasi
merupakan relasi “has a”. Contoh:
1. Mobil memiliki mesin
2. Fakultas terdiri atas jurusan
3. Rumah memiliki dapur
Mobil, Fakultas dan Rumah dinyatakan sebagai kelas agregat.Mesin,
jurusan dan Dapur merupakan kelas penyusun.
Kardinalitas menyatakan jumlah objek penyusun yang terlibat dalam
pembentukan relasi agregasi.Suatu KelasAgregat dibentuk dari beberapa
(disimbolkan dengan *) objek Kelas Penyusun.
Asosiasi menggambarkan hubungan struktural antar kelas.Setiap kelas
memiliki kedudukan yang sama (tidak merupakan bagian dari kelas
lain).Pada saat merancang relasi antar kelas, ada dua hal yang perlu
diperhatikan yaitu berapa objek yangterlibat dari masing-masing kelas yang
ber-relasi dan apakah relasi tersebut ersifatwajib
(mandatory) atau opsional.
varian relasi terbagi atas 4 bagian yaitu:
1. relasi binner
2. relasi tunggal
3. relasi multy entitas
4. relasi ganda
1) relasi binner
relasi binner adalah 2 buah entitas yang saling berhubungan dan tentunya
sama, maksud sama di sini contoh nya entitas mahasiswa dengan entitas
mata kuliah
2) relasi tunggal
relasi tunggal yaitu sebuah himpunan entitas ke himpunan entitas itu sendiri
3) relasi multy entitas
yaitu 3 buah entitas yang saling berhubungan
contoh entitas ruang,kuliah,dan dosen dengan relasi ajar
4) relasi ganda
relasi ganda adalah dua buah entitas yang saling berhubungan tetapi tidak
hanya satu relasi tetapi bisa lebih dari satu relasi
1. 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.

Gambar 1.1 Notasi


2. 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).
3. 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”.
4. 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.
5. 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.
BAB II
LANGKAH KERJA

1. Membuat program seperti di bawah ini!


Agregasi.cpp
#include <iostream.h>
#include <stdlib.h>

class Titik
{
private:
float sbX, sbY;
public:
Titik()
{
sbX = sbY = 0.0f;
}

Titik(float x, float y)
{
sbX = x; sbY = y;
}

void posisiTitik()
{
cout<< "[" << sbX << ", " << sbY << "]" << endl;
}
};

class Lingkaran
{
private:
float jejari;
Titik titikPusat;
public:
Lingkaran (float j)
{
jejari = j;
}
Lingkaran(float x, float y, float j):titikPusat(x,y)
{
jejari = j;
}
void cetakLingkaran()
{
cout<< "Titik pusat : " ; titikPusat.posisiTitik();
cout<< "Jari-jari : " << jejari << endl;
}

};

int main()
{
Lingkaran L1(3.0);
Lingkaran L2(3.0, 4.0, 5.0);
L1.cetakLingkaran();
L2.cetakLingkaran();
}

2. Membuat Program seperti di bawah ini!


Asosiasi.cpp
#include <iostream.h>
#include <stdlib.h>
class MataKuliah
{
private:
char* kodeMK;
char* namaMK;
int sksMK;

public:
MataKuliah(char*kode, char*nm, int sks)
{
kodeMK = kode;
namaMK = nm;
sksMK = sks;
}

void cetakMK()
{
cout<< kodeMK << " : " << namaMK << " : " << sksMK
<<endl;
}
};
class Dosen
{
private:
char* NPP;
char* Nama;
MataKuliah* MK;
int indeks;
public:
Dosen(char* noPeg, char* nm)
{
NPP = noPeg;
Nama = nm;
indeks = 0;
}
void tambahMK (MataKuliah matakuliah)
{
MK[indeks] = matakuliah;
indeks++;
}
void cetakInformasi()
{
cout<< Nama << " Mengajar : " << endl;
for (int i=0; i<5; i++)
MK[i].cetakMK();
}
};

int main()
{
Dosen dsn("P001", "Steve Owen");
MataKuliah mk1 ("MK001", "PBO", 3);
MataKuliah mk2 ("MK002", "Struktur Data", 3);
MataKuliah mk3 ("MK003", "R Perangkat Lunak", 3);
MataKuliah mk4 ("MK004", "Analisis Algoritma", 2);
MataKuliah mk5 ("MK005", "Sistem Operasi", 3);

dsn.tambahMK(mk1);
dsn.tambahMK(mk2);
dsn.tambahMK(mk3);
dsn.tambahMK(mk4);
dsn.tambahMK(mk5);
dsn.cetakInformasi();
}
BAB III
PEMBAHASAN

1. Membuat Program pertama seperti di bawah ini!


Agregasi.cpp
#include <iostream.h>
#include <stdlib.h>
1) Dalam Agragasi, kelas kelas yang dipanggil tidak dikelola secara
menyeluruh. Agregasi merupakan hubungan antara satu object dengan
object lainnya dimana object satu dengan object lainnya sebenarnya dalam
keadaan terpisah namun disatukan, sehingga tidak terjadi kebergantungan
(Object lain bisa ada walau object penampungnya tidak ada ).
class Titik
{
2) Kelas merupakan suatu tipe data yang menggabungkan data dan fungsi
untuk mengakses data. Data dan fungsi yang berada dalam sebuah kelas
dinamakan anggota. Secara lebih khusus, data yang terletak dalam kelas
dinamakan anggota data dan fungsi yang berada dalam kelas disebut
anggota fungsi.
private:
float sbX, sbY;
3) Float diatas berfungsi sebagai memperluas keberbagai limit dan parameter
dari jenis floating point standar. Private pada kelas, menandakan class
tersebut hanya dapat diakses oleh dirinya sendiri
public:
Titik()
{
sbX = sbY = 0.0f;
}
4) Pada kelas ini merupakan class yang bersifat public, Public menandakan
class tersebut dapat diakses oleh semua anggota baik, oleh, dirinya sendiri,
dari kelas anak, maupun kelas lainnya.
Titik(float x, float y)
{
sbX = x; sbY = y;
}

void posisiTitik()
{
cout<< "[" << sbX << ", " << sbY << "]" << endl;
}
};
5) Dari program diatas terdapat penggunaan Void dan cout fungsi dari Void itu
sendiri sering disebut juga sebagai prosedur. Disebut void karena fungsi
tersebut tidak dapat mengembalikan suatu nilai keluaran yang didapat dari
hasil proses fungsi tersebut. Sedangkan Cout (standard output stream)
ditunjukkan untuk sebuah monituor yang berarti isi dari tanda (“ ”) setelah
cout merupakan kata yang akan keluar dioutputnya nanti.
class Lingkaran
{
private:
float jejari;
Titik titikPusat;
6) Class diatas menunjukan bahwa ia hanya dapat diakses oleh dirinya sendiri
bukan dari kelas lain meskipun kelas tersebut merupakan kelas anaknya
sendiri. Float diatas yang dapat berfungi sebagai memperluas floating point
standar.
public:
Lingkaran (float j)
{
jejari = j;
}
Lingkaran(float x, float y, float j):titikPusat(x,y)
{
jejari = j;
}
void cetakLingkaran()
{
cout<< "Titik pusat : " ; titikPusat.posisiTitik();
cout<< "Jari-jari : " << jejari <<endl;
}
};
7) Sama seperti diatas penggunaan dari Void yang berfungsi sebagai prosedur,
namun fungsi ini tidak dapat memberikan sebuah nilai balikannya itu
sendiri. Cout yang akan dipanggil nanti pada saat penggunaan output di
jalankan. Tanda ; yang digunakan untuk mengakhiri sebuah pernyataan.
Setiap pernyataan harus diakhiri dengan sebuah tanda semicolon.
int main()
{
Lingkaran L1(3.0);
Lingkaran L2(3.0, 4.0, 5.0);
L1.cetakLingkaran();
L2.cetakLingkaran();
}
8) Int main ini merupakan sebuah pilihan atau menu utama yang akan tampil
pada program agregasi ini, karena output yang nanti akan tampil dilayar
monitor menggunakan menu pada suah programnya agar kita dapat dengan
mudah menginputkan data yang diinginkan dan tidak saling tertukar ketika
menginputkan datanya.
9) Maka pada Output yang keluar adalah Dapat dilihat pada Ouput data-data
yang telah diinputkan dan dideklarasikan, dipanggil pada penginputan
output data dan menghasilkan inputan data berupa Titik Pusat, dan Jari-jari.
Gambar 1.1 jari-jari & Titik pusat

2. Membuat Program kedua seperti di bawah ini!


Asosiasi.cpp
#include <iostream.h>
#include <stdlib.h>
1) Asosiasi merupakan sebuah asosiasi antara entiti. Suatu hubungan dapat
melibatkan beberapa buah entiti, dua, tiga bahkan lebih. Tetapi kadang kala
kita juga menemukan hubungan yang melibatkan sebuah entiti saja. Atau
hubungan yang semantic bi-directional diantara class-class.
class MataKuliah
{
private:
char* kodeMK;
char* namaMK;
int sksMK;
2) Private diatas mempunyai fungsi yang merupakan tipe data dari program ini
sendiri terdapat Char, dan Integer.
public:
MataKuliah(char*kode, char*nm, int sks)
{
kodeMK = kode;
namaMK = nm;
sksMK = sks;
}
3) Public MataKuliah diatas menjelaskan apa saja tipe data tipe data yang
digunakan pada saat pendeklarasaian sebuah program, ada program yang
hanya menggunakan huruf dan ada program yang mengandung fungsi-
fungsi aritmatika.
void cetakMK()
{
cout<< kodeMK << " : " << namaMK << " : " << sksMK
<<endl;
}
};
4) Fungsi yang void sering disebut juga prosedur memiliki ciri khas yaitu tidak
adanya keyword Return, tidk adanya tipe data dalam deklarasi fungsi,
menggunakan keyword void, tidak dapat ditampilkan langsung hasilnya,
dan tidak dapat memiliki sebuah nilai kembalian fungsi.
class Dosen
{
private:
char* NPP;
char* Nama;
MataKuliah* MK;
int indeks;
5) Private berfungsi sama dengan kelas sebelumnya yang merupakan class
yang hanya dapat diakses oleh dirinya sendiri, dan isi fungsi tersebut
merupakan beberapa tipe data, hanya saja pada class ini ditambahkannya
indeks dengan bertipe data integer yang mengandung nilai-nilai aritmatika.
public:
Dosen(char* noPeg, char* nm)
{
NPP = noPeg;
Nama = nm;
indeks = 0;
}
6) Public merupakan fungsi class yang dapat diakses oleh kelas-kelas lainnya
pada pembahasan kali ini noPeg atau nomor Pegawai ditambah pada
pendeklarasiannya dan memiliki tipe data integer, dan indeks yang bertipe
data sama dengan noPeg
void tambahMK (MataKuliah matakuliah)
{
MK[indeks] = matakuliah;
indeks++;
}
void cetakInformasi()
{
cout<< Nama << " Mengajar : " << endl;
for (int i=0; i<5; i++)
MK[i].cetakMK();
}
};
7) Void tambahMK merupakan void prosedur yang tidak dapat membalikan
suatu data. Dengan cout (character out) yang pada program ini berfungsi
sebagai menampilkan text di layar monitor anda. Cout merupakan sebuah
objek di dalam C++, yang digunakan untuk mengarahkan data ke dalam
standar output (cetak pada layar), dan tanda << sebagai operator pemasukan
(insertion operators). Tanda tersebut yang mengatakan kepada kompiler
agar segera menghasilkan output sesuai dengan input.
int main()
{
Dosen dsn("P001", "Steve Owen");
MataKuliah mk1 ("MK001", "PBO", 3);
MataKuliah mk2 ("MK002", "Struktur Data", 3);
MataKuliah mk3 ("MK003", "R Perangkat Lunak", 3);
MataKuliah mk4 ("MK004", "Analisis Algoritma", 2);
MataKuliah mk5 ("MK005", "Sistem Operasi", 3);

dsn.tambahMK(mk1);
dsn.tambahMK(mk2);
dsn.tambahMK(mk3);
dsn.tambahMK(mk4);
dsn.tambahMK(mk5);
dsn.cetakInformasi(); return 0;
}
8) Int main ini yang akan tampil pada monitor jika program ini di run kan atau
dijalankan dalam keadaan sukses, fungsi return diatas digunakan untuk
mengirimkan nilai atau nilai dari suatu fungsi kepada fungsi
yang lain yang memanggilnya, pernyataan tersebut harus ada agar sebuah
pengiriman dapat dilakukan untuk memanggilnya. Fungsi dari tanda } untuk
mengakhiri sebuah blok dari program sehingga program ini dapat di
compile jika sukses program ini akan di run, dapat menghasilkan ouput
untuk dijalankan dengan inputan data yang telah keluar.
9) Maka pada Outputnya adalah

Gambar 1.2 Outputan Mk


10) Dapat dilihat Output yang akan keluiar pada output menunjukan MataKulah
dan sksMK yang telah diinputkan, dengan no kode dari masing-masing
inputan mata kuliah dari MK001 – MK005. Dan pada keterangan dibawak
jika meng enterkan ouput tersebut maka ia akan kembali ke program awal
dimana ia akan menunjukan data-data sebelumnya yang telah dipanggil
dioutput dan telah dimasukan dari inputan tersebut.
BAB IV
KESIMPULAN

Dapat ditarik kesimpulan pada program ini ada 2 pemrograman baru


dalam C++ yaitu Agregasi dan Asosiasi, dimana Agregasi tersebut adalah
sebuah hubungan antara satu object dengan object lainnya dimana object
satu dengan object lainnya sebenarnya terpisah namun disatukan, sehingga
tidak terjadi ketergantungan dengan objek lainnya (Object lain bisa ada
walau object penampungnya tidak ada ).
Sedangkan Asosiasi itu sendiri adalah asosiasi antara entiti yaitu
merupakan Suatu hubungan yang dapat melibatkan beberapa buah entiti,
tiga bahkan lebih rntiti. Tetapi terkadang kita bisa menemukan sebuah
hubungan yang melibatkan sebuah entiti saja. Tetapi pada umumnya
dilakukan hanya pada dua buah entiti saja, Asosiasi juga sering disebut
hubungan semantic bi-directional diantara class-class. Relasi pada program
ini sendiri adalah Menjelaskan tentang bagaimana antar class dapat saling
saling berkaitan satu dengan lainnya.
BAB V
DAFTAR PUSTAKA

Fatimah Silvia Winda . Diagram Class(Clas Diagram) .


windasf.blogspot.co.id/2014/12/diagram-kelas-class-diagram.html . di akses
pada tanggal 10 Mei 2016.

Onramus Marnoy . Rangkuman Kelas Diagram Konsep Tingkat Lanjut .


marnoyonramus.blogspot.co.id/2012/12/rangkuman-class-diagram-konsep-
tingkat.html . di akses pada tanggal 10 Mei 2016.

Pahlapi Irsyad . Varian Relasi dan Agregasi pada ERD .


pelajaraninformatikauad.blogspot.co.id/2015/03/varian-relasi-dan-agregasi-
pada-erd.html . di akses pada tangga 10 mei 2016.
BAB VI
LAMPIRAN

Inputan beserta Output pada Program 1 Agregasi

Gambar 1.1 Agregasi.cpp

Gambar 1.2 Agregasi.cpp


Output dari Agregasi

Gambar 1.3 Outputan Agregasi.cpp

Inputan beserta Output pada Program 2 Asosiasi

Gambar 2.1 Asosiasi.cpp


Gambar 2.2 Asosiasi.cpp

Output Asosiasi

Gambar 2.3 Outputan mk Asosiasi.cpp

Anda mungkin juga menyukai