Post on 15-Jan-2016
description
LAPORAN AKHIR PRAKTIKUM
ALGORITMA DAN PEMPROGRAMAN II
NAMA : SUPRIYANDI
NIM : DBC 113 170
KELAS : D
MODUL : IV (Relasi Kelas)
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA
2014
BAB I
TUJUAN DAN LANDASAN TEORI
A. TUJUAN
Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu
membuat berbagai jenis relasi antara kelas.
B. 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 class
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 bagian dari kelas yang lain atau hubungan antar kelas yang
menyatakan suatu kelas memiliki kelas lain [sebagai atribut]. Agregasi
merupakan relasi “has a”. Contoh :
Mobil memiliki mesin.
Fakultas terdiri dari jurusan.
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 Kelas Agregat 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 yang terlibat dari masing-masing kelas yang
berrelasi dan apakah relasi tersebut bersifat wajib (mandatory) atau opsional.
BAB II
LANGKAH KERJA
1. Buatlah 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. Buatlah 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
Program Pertama :
Tujuan program ini adalah untuk membuat relasi kelas antara class Titik dan
class Lingkaran. Coding program dari agregasi.cpp adalah sebagai berikut :
#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();
}
Coding untuk menampilkan titik pusatnya adalah sebagai berikut :
cout << "Titik pusat : " ; titikPusat.posisiTitik();
Coding untuk menampilkan jari-jarinya adalah sebagai berikut :
cout << "Jari-jari : " << jejari << endl;
Nilai untuk jari-jari pertama, jari-jari kedua dan titik pusatnya sudah ditentukan
atau dapat dikatakan sudah memiliki nilai untuk outputnya. Coding untuk
menentukan nilainya adalah pada int main().
{
Lingkaran L1(3.0);
Lingkaran L2(3.0, 4.0, 5.0);
L1.cetakLingkaran();
L2.cetakLingkaran();
}
Program di atas tidak memiliki rumus atau coding menginputan nilai untuk
jari-jari pertama, jari-jari kedua dan titik pusat pada outputnya. Karena dalam
program ini langsung menampilkan nilai dari jari-jari pertama, jari-jari kedua
dan titik pusatnya.
Program Kedua :
Tujuan program ini adalah untuk membuat sebuah data mata kuliah yang
diikuti oleh mahasiswa tersebut. Dalam program ini terdapat coding utama
adalah sebagai berikut :
#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();
}
Coding untuk program tambah mata kuliah adalah :
void tambahMK (MataKuliah matakuliah)
{
mk[indeks] = matakuliah;
indeks++;
}
Coding untuk mencetak informasi adalah :
void cetakInformasi()
{
cout << Nama << " Mengajar : " << endl;
for (int i=0; i<5; i++)
mk[i].cetakMK();
}
Coding untuk menampilkan dan memproses data yang telah dimasukkan
adalah :
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();
}
Pada class MataKuliah terdapat kodeMK menggunakan tipe data char,
namaMK juga menggunakan tipe data char, sedangkan untuk sksMK
menggunakan tipe data int(integer). Codingnya adalah :
char* kodeMK;
char* namaMK;
int sksMK;
Pada class Dosen terdapat NPP menggunakan tipe data char, Nama
mengguanakan tipe data char, sedangkan indeks mengguankan tipe data
int(integer).
Dalam program asosiasi.cpp terdapat kesalahan pada outputnya, sehingga
output dari program asosiasi.cpp ini hanya menampilkan kalimat press any key
to continue.
BAB IV
KESIMPULAN
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.
Asosiasi adalah hubungan yang mempunyai makna antara sejumlah objek.
Asosiasi digambarkan dengan sebuah garis penghubung di antara objeknya.
Agregasi adalah bentuk khusus sebuah asosiasi yang menggambarkan seluruh
bagian pada satu objek merupakan bagian dari objek yang lain.
Pada saat merancang relasi antar kelas, ada dua hal yang perlu diperhatikan
yaitu berapa objek yang terlibat dari masing-masing kelas yang berrelasi dan
apakah relasi tersebut bersifat wajib (mandatory) atau opsional.
BAB V
DAFTAR PUSTAKA
http://turalakpujingkai-ciamis.blogspot.com/2011/10/relasi-kelas-pada-c.html
http://rangkumanmateripemrograman.blogspot.com/2011/01/oop-object-
oriented-programing.html
2014.Modul Algoritma dan Pemrograman II . Palangkaraya:Universitas
Palangkaraya.
.
BAB VI
LAMPIRAN
1. Program Pertama “agregasi.cpp”
Input :
Output :
2. Program Kedua “asosiasi.cpp”
Input :
Output :