Anda di halaman 1dari 21

LAPORAN HASIL PRAKTIKUM

ALGORITMA PEMROGRAMAN II

Nama : Wella Febriana


Nim : DBC 114 011
Kelas :K
Modul : IV (RELASI KELAS)

JURUSAN/PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA
2015
BAB I
TUJUAN DAN LANDASAN TEORI

A. Tujuan

Setelah menyelesaikan modul ini, mahasiswa diharapkan membuat


berbagai jenis relasi antara kelas.

B.Landasan Teori

Jenis relasi antar kelas terdiri dari pewarisan, agregasi, asosiasi, pewarisan
merupakan hubungan antar satuu kelas dengan kelas kelas lain dalam suatu hiraki
kelas induk dan keals 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 spesifikasi dalam relasi “is-a”.
Objek yang dikelompokan dalam sub kelas memiliki atribut dan prilaku 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 sesuatu kelas memiliki kelas lain [sebagai berikut], atribut merupakan
relasi “has a”, contoh:

 Mobil memiliki mesin


 Fakultas terdiri atas jurusan
 Rumah memiliki dapur

Mobil, fakultas dan rumah dinyatakan sebagai kelas agregat,mesin, jurusan dan
dapur merupakan kelas penyusunan.

Kardinalitas menyatakan jumlah objek penyusun yang telibat dalam pembentuk


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 var terlibat dari masing-masing kelas yang ber-relasi dan apakah
relasi tersebut bersifat wajib (mandatory) atau opisional.

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.

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 agregasi dinyatakan dengan simbol
“diamond” pada kelas pemilik (owning class) dan garis utuh berpanah ke kelas
yang dimiliki (owned class). Gambar dibawah ini menggambarkan notasinya.
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 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;

MataKuiah* 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”, “stave 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(mk);

}
BAB III

PEMBAHASAN

1.Program Pertama :
Pada program pertama ini, akan membuat sebuah program dengan nama
agregasi.cpp. File yang digunakan pada program agregasi.cpp adalah source
file.Program ini merupakan program untuk mencetak informasi mengenai sebuah
lingkaran yaitu informasi titik pusat lingkaran dan jari-jari lingkaran tersebut.

#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

• Fungsi dari #include <iostream.h> adalah untuk menjalankan perintah cout,


karena cout merupakan bagian dari iostream.h.
• #include <stdlib.h> adalah fungsi file header yang meliputi alokasi memori,
kontrol proses, konversi dan lain-lain.
• Sedangkan #include <conio.h> untuk menggunakan atau memanggil fungsi
getch.Conio.h : digunakan untukmendaftarkan library conio yang tersimpan dalam
namespace std ke dalam program. namespace ini digunakan agar tipe data integer
dapat dibaca dalam program.
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;
}
};

• Dapat diketahui bahwa class Titik ini terdapat dua mode akses yang
digunakan yaitu private dan public yang mempunyai satu buah fungsi dan satu
buah konstruktor.
• Private: disini digunakan untuk mengakses kelas, dimana didalam atribut
private terdapat dua buah variabel yaitu, sbX dan sbY dengan tipe data nya
adalah float. public: Perintah yangdigunakan untuk menyatakan bahwa
kelas/method/attribute tersebut dapat diakses oleh kelas lain dimanapun (dapat
diakses dari luar, termasuk kelas turunannya.).
• void posisiTitik () merupakan fungsi tanpa nilai balikan. Rumus sbX =
sbY = 0.0f; dalam fungsi Titik ( ) berarti nilai sbX sama dengan nilai sbY dan
nilai 0.0f. f. Pada 0.0f merupakan sufix yang bertipe float. Fungsi void
posisiTitik( ) berguna untuk mencetak nilai sbX dan sbY. Tanda kurung kurawal
buka ({) digunakan untuk memulai suatu program dan tanda kurung kurawal
tutup (}) digunakan untuk mengakhiri program.
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;
}
};

• Class lingkaran ini merupakan kelas turunan, di dalam kelas lingkaran ini
terdapat tipe akses private dan juga terdapat fungsi-fungsi dengan tipe akses
public yaitu fungsi Lingkaran dengan parameter j yang bertipe data float. Fungsi
Lingkaran dengan parameter j yang bertipe data float adalah merupakan fungsi
dengan nilai balikan. Dan fungsi Lingkaran (float x, float y, float j), objek
penyusun titikPusat (x,y) dipanggil. Tanda << merupakan karakter yang harus
mengikuti syntak cout. …” Dan perintah endl; berfungsi ganti baris.
• Fungsi dari kurung kurawal tutup ( } ) untuk mengakhiri program. Fungsi
void cetakLingkaran( ) berguna untuk mencetak nilai titik pusat dengan memangil
fungsi posisiTitik dari class Titik ke dalam objek penyusun yaitu titikPusat dan
mencetak nilai Jari-jari yang didapat dari nilai jejari yang ada.
int main ()
{
Lingkaran L1 (3.0);
Lingkaran L2 (3.0, 4.0, 5.0);

L1.cetakLingkaran ();
L2.cetakLingkaran ();
getch ();
return 0;
}
• int main() { , fungsi Main ( ) yang bertujuan untuk menunjukan dimana
program dimulai dan akan berakhir. Int main juga berfungsi untuk membuat
fungsi utama yang mengembalikan nilai dengan tipe integer. Pada program utama
ini terdapat nilai lingkaran yang sudah ditentukan, L1 dengan nilai parameter r =
3.0 dan L2 dengan nilai parameter x = 3, y = 4 dan r = 5.0.
• getch ( ) dipakai untuk membaca sebuah karakter dengan sifat karakter yang
dimasukkan tidak perlu diakhiri dengan enter. Fungsi getch () merupakan
singkatan dari get character artinya baca karakter tetapi isian data yang
dimasukkan tidak akan ditampilkan di layar.
• Dan diakhir proram pertama ini ada nilai balik program yang ditentukan oleh
pernyataan return. Pada program di atas, return 0 menyatakan bahwa nama nilai
balik program adalah nol. Nilai balik nol bisa digunakan untuk menyatakan bahwa
program ini berhasil melaksanakan tugas yang dibebankannya.

2.Program Kedua :

#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

• Pada Program kedua ini diberi nama file “asosiasi.cpp”. File yang digunakan
pada program asosiasi.cpp adalah source file.
• #include<iostream.h>Kalimat yang diawali dengan tanda (#) adalah areal
preprocessor directive bukan merupakan baris kode yang dieksekusi, tetapi
indikasi untuk kompiler.
• #include <iostream.h> memberitahukan preprocessor kompiler untuk
menyertakan header file standard iostream. #include <stdblib.h>, adalah fungsi
yang meliputi alokasi memori, control process, dll.
• Sedangkan include <conio.h> ditambahkan dalam program ini karena kita
akan menggunakan perintah getch.
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;

};

• Kelas mata kuliah merupakan kelas induk atau kelas pertama di program in,
dimana kelas mata kuliah ini memiliki tipe akses private dan jiga tipe akses
public. Pada tipe akses private ini terdapat kodeMK, namaMK yang ber type char
dan sksMK yang ber type integer. Pada tipe akses public kodeMk berparameter
kode, namaMK memiliki parameter nm dan sksMK memiliki parameter sks.
• Fungsi cetakMK merupakan fungsi tanpa nilai balikan.void cetakMK () fungsi
ini pada saat dipanggil bertugas untuk mencetak kalimat dan nilai dari variabel
kodeMK dan sksMK menggunakan fungsi cout.
• Tanda kurung kurawal buka ({) digunakan untuk memulai suatu program dan
tanda kurung kurawal tutup (}) digunakan untuk mengakhiri program.
Class Dosen

Private :

Char* NPP;

Char* Nama;

MataKuiah* 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();

};

• Pada class dosen ini memiliki dua mode akses yaitu, private dan public. class
Dosen memiliki fungsi-fungsi dengan mode akses public, yang pertama fungsi
Dosen dengan parameter noPeg dan nm dengan tipe char ( Dosen (char* noPeg,
char* nm) ), fungsi tambahMK dengan parameter objek matakuliah dari
pemanggilan kelas MataKuliah dan fungsi cetakInformasi tanpa parameter.
• Fungsi Dosen dengan parameter noPeg dan nm merupakan fungsi dengan
nilai balikan. NPP = noPeg; Nama = nm; indeks = 0; berarti, NPP sama dengan
noPeg, Nama sama dengan nm, indeks diberi nilai 0. artinya variable ini dapat di
akses diseluruh program. Fungsi tambahMK() dengan parameter matakuliah yang
merupakan objek dari kelas MataKuliah dan bertipe data void yang berarti bahwa
fungsi ini tidak akan mengembalikan nilai apapun pada program.
• Fungsi void cetakInformasi( ) berguna untuk mencetak Nama dengan diikuti
pernyataan “Mengajar : “. Untuk for (int i=0; i<5; i++) dan mk[i] .cetakMK();
diberi tanda //. Maksud tanda // adalah pengabaian perintah agar
dsn.cetakInformasi tampil pada output.
• Tanda kurung kurawal buka ({) digunakan untuk memulai suatu program dan
tanda kurung kurawal tutup (}) digunakan untuk mengakhiri program.
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.cetakInformasi();
mk1.cetakMK();
mk2.cetakMK();
mk3.cetakMK();
mk4.cetakMK();
mk5.cetakMK();
getch ();
return 0;
}
• Int main disini merupakan kelas utama dimana pada int main ini
dsn.tambahMK(mk1); diganti menjadi mk1.cetakMK();, pergantian ini dilakukan
sampai mk5.cetalMK();. Pada program int main ini berfungsi untuk pemanggilan
fungsi cetakInformasi terhadap objek dsn dan pemanggilan fungsi cetakMK untuk
pemanggilan terdhadap objek mk1 sampai mk5.
• getch ( ) dipakai untuk membaca sebuah karakter dengan sifat karakter yang
dimasukkan tidak perlu diakhiri dengan enter. Fungsi getch () merupakan
singkatan dari get character artinya baca karakter tetapi isian data yang
dimasukkan tidak akan ditampilkan di layar.
• Dan diakhir proram pertama ini ada nilai balik program yang ditentukan oleh
pernyataan return. Pada program di atas, return 0 menyatakan bahwa nama nilai
balik program adalah nol. Nilai balik nol bisa digunakan untuk menyatakan bahwa
program ini berhasil melaksanakan tugas yang dibebankannya.
BAB IV

KESIMPULAN

Relasi digunakan oleh suatu kelas untuk berkomunikasi dengan kelas


lainnya. Selain kelas–kelas yang nantinya akan mengisi sebuah kelas diagram,
tentunya ada hubungan antara satu kelas dengan kelas lainnya. 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 dalm relasi “is-a”.
• 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).
• Asosiasi apabila terdiri dari lebih dari 1 kelas. Dan fungsi dari kelas yang ber asosiasi
itu dipanggil pada fungsi dari kelas yang lainnya menggunakan pointer ke kelas yang
ingin dipanggil fungsinya. asosiasi menggambarkan hubungan struktural antar kelas.
Setiap kelas memiliki kedudukan yang sama (tidak merupakan bagian dari kelas
lain).
• Kardinalitas menyatakan jumlah objek penyusun yang terlibat dalam
pembentukan relasi agregasi.Suatu kelas agregat dibentuk dari beberapa
(disimbolkan dengan *) objek kelas penyusun.
BAB V
DAFTAR PUSTAKA

• Teknik Informatika, 2015. Modul Algoritma Pemrograman II. Universitas


Palangkaraya: palangkaraya.
• http://windasf.blogspot.com/2014/12/diagram-kelas-class-diagram.html

• http://turalakpujingkai-ciamis.blogspot.com/2011/10/relasi-kelas-pada-c.html
BAB VI
LAMPIRAN

1.Program pertama :

INPUT :

OUTPUT :
2.Program kedua :

INPUT :
OUTPUT :

Anda mungkin juga menyukai