laporan hasil praktikum alpro modul 4
DESCRIPTION
laporanTRANSCRIPT
LAPORAN HASIL PRATIKUM
ALGORITMA DAN PEMROGRAMAN II
Nama : WANDY SUPRIADI
NIM : DBC 114 121
Kelas : F
Modul : IV (RELASI KELAS)
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS PALANGKARAYA
2015
BAB I
TUJUAN DAN LANDASAN TEORI
I. Tujuan
Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu
membuat berbagai jenis relasi antar kelas.
II. Landasan Teori
Jenis Relasi antar kelas terdiri dari pewarisan, agregasi, asosiasi.
Pewarisan merupakan hubungan antar suatu 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 subclass
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 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 atas jurusan.
Rumah memiliki dapur.
Mobil, Fakultas dan Rumah dinyatakan sebagai kelas agregasi. Mesin,
Jurusan dan Dapur merupakan kelas penyusun.
Kardinalitas menyatakan jumlah objek penyusun yang terlibat dalam
pembentukan relasi agregasi. Suatu Kelas Agregasi dibenuk dari beberapa
(disimbolkan dengan *) objek Kelas Penyusun.
Asosiasi menggambarkan hubungan structural antar kelas. Setiap kelas
memliki kedudukan yang sama (tidak merupakan bagian dari kelas lain). Pada
saat merancang relasi antar kelas, ada dua hal yang perlu diperhatikan yaitu
berupa objek yang terlibat dari masing-masing kelas yang ber-relasi dan
apakah relasi tersebut bersifat wajib(mandatory) atau opsional.
BAB II
LANGKAH KERJA
1. Buatlah program seperti dibawah 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, floatj):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();
return 0;}
2. Buatlah program seperti dibawah 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. Pada program agresiasi.cpp, akan dibuat sebuah program menggunakan
relasi antar kelas yang nantinya akan menampilkan output Titik Pusat dan
Jari-jari dari 2 buah Lingkaran yang memiliki data masing-masing.
Coding include tidak diakhiri dengan tanda (;), karena bentuk tersebut
bukanlah suatu bentuk pernyataan, tetapi merupakan prepocessor directive.
Coding tersebut diakhiri dengan ekstensi .h (file header) yaitu file yang
berisi sebagai deklarasi.
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, floatj):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();
return 0;}
#include<iosteram.h> : diperlukan pada program yang melibatkn cout.
#include<stdlib.h> : file header yang meliputi alokasi memori, kontrol proses, konversi dan lain-lain.
Public adalah suatu tipe akses yang dapat diakses diluar class,sedangkan
private diakses didalam class.
Pada program ini terdapat 2 buah class yaitu class Titik dan class
Lingkaran.
Didalam class Titik terdapat 2 buah atribut yaitu public dan private. Di
dalam atribut private akan diberikan tipe data float untuk sbX dan sbY.
Sedangkan didalam atribut public akan dibuat beberapa bagian. Bagian
yang pertama adalah Titik(), dimana di dalam bagian ini akan terdapat
argument bahwa sbX = sbY = 0.0f. Bagian kedua adalah Titik (float x,
float y) yang memiliki parameter dengan tipe data float untuk x dan y. Di
dalam bagian ini akan terdapat argument bahwa sbX = x dan sbY = y.
Lalu di bagian ketiga akan terdapat void posisiTitik() yang nantinya akan
mencetak data-data yang telah dimasukkan. Di dalam bagian ini terdapat
perintah cout yang akan menampilkan output pada layar yang berisi nilai
dari sbX dan sbY.
Di dalam class Lingkaran terdapat 2 buah atribut yaitu Private dan
public. Di dalam atribut private terdapat variabel jejari dengan tipe data
float dan deklarasi Titik titikPusat; bahwa Titik akan di akses dari
titikPusat.
Sedangkan di dalam atribut public terdapat konstruktor yang merupakan
fungsi anggota yang mempunyai nama sama dengan nama kelasnya,
sebagai fungsi yang tidak mempunyai nilai balik, harus diletakkan pada
bagian public, dijalankan secara otomatis saat objek diciptakan , dapat
memiliki argument dan argument dengan nilai default, dapat diletakkan
overloading . Kegunaannya : mengalokasikan ruang bagi sebuah objek ,
memberikan nilai awal terhadap anggota data suatu objek , membentuk
tugas-tugas umum lainnya , melakukan tugasnya pada saat objek
diciptakan .
Lingkaran(float j) dimana parameter tersebut berisi tipe data float untuk
j. Di dalam konstruktor ini terdapat argument bahwa jejari = j.
Pada konstruktor Lingkaran (float x, float y, float j):titikPusat(x,y)
terdapat parameter yang berisi tipe data float untuk x, y dan z. Dimana
untuk x dan y akan di akses dari public Titik yang tadinya telah di
deklarasikan pada private class Lingkaran dimana titikPusat akan di akses
dari Titik. Di dalam konstruktor ini juga terdapat argument bahwa jejari =
j.
Pada metode void cetakLingkaran() berfungsi untuk menampilkan output
pada layar. Pada bagian ini terdapat fungsi cout yang nantinya akan
menampilkan argument Titik pusat yang data nya nanti akan dimasukkan
di program utama dan akan diproses pada konstruktor-konstruktor yang
telah di buat. Juga argument jejari yang nanti data nya akan dimasukkan
juga di program utama.
Pada bagian program utama ini, penulisan listing program untuk bagian
program utama selalu diawali dengan fungsi int main (). Fungsi dari
program utama di atas yaitu untuk menentukan pilihan yang kita inputkan
untuk menampilkan output pilihan yang sudah ditentukan.
Pada bagian ini merupakan inisialisasi variabel dari kelas Lingkaran, untuk L1 merupakan inisialisasi dari Lingkaran(float j) dan berisi masukkan
nilai j = 3.0 . Sedangkan untuk L2 merupakan inisialisasi dari Lingkaran (float x, float y, float j):titikPusat(x,y) dan berisi masukan nilai x = 3.0, y = 4.0 dan j = 5.0 .
Pada bagian ini merupakan pemanggilan metode cetakLingkaran() untuk menampilkan argument Titik Pusat dan Jari-jari setelah diberi inputan yang ada pada metode tersebut.
Pada program ini di tambahkan fungsi system (“pause”); agar tampilan
output program tidak langsung hilang dari layar monitor. Dan ditambah
fungsi nilai balikannya, yaitu return 0; . Return 0 berarti menandakan
nilai balikannya adalah 0.
Tanda kurung kurawal ({…}) digunakan untuk menandai bagian suatu isi
kelas, bagian isi metode-metode di dalam kelas (behaviour), serta bagian
isi program utama.
Tanda titik koma (;) digunakan untuk menandai akhir penulisan data dan
fungsi dalam program. Tanda titik koma tidak digunakan untuk
mengakhiri nama kelas, nama metode, nama perubah akses, serta
inisialisasi program utama.
2. Pada program asosiasi.cpp, akan dibuat sebuah program yang akan
menampilkan Nama dosen mengajar mata kuliah dan jumlah sks dari
mata kuliah tersebut.
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);
#include<iosteram.h> : diperlukan pada program yang melibatkn cout.
#include<stdlib.h> : file header yang meliputi alokasi memori, kontrol
proses, konversi dan lain-lain.
Public adalah suatu tipe akses yang dapat diakses diluar class,sedangkan
private diakses didalam class.
Di dalam attribute private terdapat variabel kodeMK dan namaMK
dengan tipe data char(character) dan juga variabel sksMK dengan tipe
data int(integer). Sedangkan pada atribut public terdapat konstruktor.
Konstruktor MataKuliah (char*kode, char*nm, int sks) memiliki
parameter yaitu tipe data char(character) untuk kodeMK dan namaMK
juga int(integer) untuk sksMK. Lalu di dalam nya juga terdapat argument
dimana kodeMK adalah kode, namaMK adalah nm dan sksMK adalah sks.
Pada bagian selanjutnya terdapat metode void cetakMK() yang memiliki
fungsi untuk menampilkan ouput pada layar. Di dalamnya terdapat cout
yang akan menampilkan kodeMK, namaMK dan sksMK dari data yang
nantinya akan dimasukkan.
Di dalam attribute private terdapat variabel NPP dan Nama dengan tipe
data char(character), mk dengan tipe data MataKuliah (dari kelas
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();
}
MataKuliah) dan juga variabel indeks dengan tipe data int(integer).
Sedangkan pada atribut public terdapat konstruktor. Konstruktor Dosen
(char*noPeg, char*nm) memiliki parameter yaitu tipe data
char(character) untuk noPeg dan nm. Lalu di dalam nya juga terdapat
argument dimana NPP adalah noPeg, Nama adalah nm dan indeks
bernilai 0.
Bagian selanjutnya adalah metode void tambahMK (MataKuliah
matakuliah) yang memiliki parameter. Di dalam parameter tersebut
terdapat MataKuliah(class MataKuliah) digantikan dengan matakuliah
(pada class Dosen ini). Di dalam bagian ini juga terdapat argument bahwa
mk[indeks] = matakuliah dan juga diberikan sebuah increment(nilai
tambah yang diberikan pada indeks ini).
Selanjutnya terdapat metode void cetakInformasi() yang berfungsi untuk
menampilkan data-data yang telah dimasukkan. Di dalam bagian ini
terdapat fungsi cout yang nantinya akan menampilkan nama dosen yang
mengajar mata kuliah tertentu. Selain itu terdapat pula sebuah fungsi
perulangan dimana nantinya digunakan apabila dosen tersebut mengajar
lebih dari satu mata kuliah. Perulangan tersebut dimulai dari kondisi 0
dengan kondisi tersebut tidak lebih dari 5(mata kuliah tidak lebih dari 5)
dan kondisi tersebut bertipe data int(integer) juga diberikan
increment(nilai tambah pada kondisi tersebut). Setelah perulangan tersebut
maka akan di tampilkan pula fungsi cout yang terdapat pada
cetakMK(kelas Mata Kuliah).
Pada bagian program utama ini, penulisan listing program untuk bagian
program utama selalu diawali dengan fungsi int main (). Fungsi dari
program utama di atas yaitu untuk menentukan pilihan yang kita inputkan
untuk menampilkan output pilihan yang sudah ditentukan.
Pada bagian ini merupakan inisialisasi variabel dari kelas Dosen, untuk
dsn merupakan inisialisasi dari Dosen (char*noPeg, char*nm) dan berisi
masukkan noPeg = P001 dan nm = Steve Owen . Sedangkan inisialisasi
variabel dari kelas MataKuliah, untuk mk1hingga mk5 merupakan
inisialisasi dari MataKuliah (char*kode, char*nm, int sks) dan berisi
masukan kode = MK001, nm = PBO, dan sks = 3. Dan seterusnya hingga
masukan mk5.
Pada penulisan program diatas, berfungsi untuk menampilkan pada output
dimana data-data diatas telah diproses melalui perulangan yang terdapat
pada void tambahMK sebelumnya. Lalu setelah data-data tersebut diproses
maka akan ditampilkan pada layar.
Pada program ini di tambahkan fungsi system (“pause”); agar tampilan
output program tidak langsung hilang dari layar monitor. Dan ditambah
fungsi nilai balikannya, yaitu return 0; . Return 0 berarti menandakan
nilai balikannya adalah 0.
Tanda kurung kurawal ({…}) digunakan untuk menandai bagian suatu isi
kelas, bagian isi metode-metode di dalam kelas (behaviour), serta bagian
isi program utama.
Tanda titik koma (;) digunakan untuk menandai akhir penulisan data dan
fungsi dalam program. Tanda titik koma tidak digunakan untuk
mengakhiri nama kelas, nama metode, nama perubah akses, serta
inisialisasi program utama.
BAB IV
KESIMPULAN
Relasi antar kelas adalah hubungan dari setiap kelas yang terdapat dalam
sebuah program.
Relasi antar kelas dapat dilakukan dengan paling tidak adanya dua buah
kelas atau lebih, tidak mungkin ada relasi antar kelas apabila hanya
terdapat satu buah kelas di dalam sebuah program.
Jenis relasi kelas ada 2 yaitu agregasi dan asosiasi.
Fungsi system (“pause”); agar tampilan output program tidak langsung
hilang dari layar monitor.
BAB V
DAFTAR PUSTAKA
Modul Praktikum Algoritma dan Pemrograman II. Palangka Raya: Universitas
Palangka Raya Fakultas Teknik Jurusan Teknik Informatika. 2015.
BAB VI
LAMPIRAN
1. Program agresiasi.cpp :
Outputnya:
2. Program asosiasi.cpp :
Outputnya :