Andre R. Zulhansyah-Class
Andre R. Zulhansyah-Class
KELAS
Oleh
i
Lembar Pengesahan
Nomor : 01
Nama : Andre Rinaldi Zulhansyah
NIM : 2020204020006
Kelas : TT 2A
Jurusan : Teknik Elektro
Prodi : Teknologi Telekomunikasi
ii
DAFTAR ISI
Kelas................................................................................................................1
Tujuan Praktikum............................................................................................1
Dasar Teori......................................................................................................1
B.1 Pendahuluan........................................................................................2
B.2 Pengertian Kelas dan Objek................................................................3
B.3 Mendefinisikan Kelas dan Mendeklarasikan Objek...........................3
B.4 Konstruktor.........................................................................................4
B.5 Destruktor...........................................................................................4
B.6 Pewarisan............................................................................................5
B.7 Parameter Berupa Objek.....................................................................5
B.8 Nilai Balik Fungsi Serupa Objek........................................................6
B.9 Pointer This.........................................................................................6
B.10 Anggota Data yang bersifat Statis....................................................7
C Tugas-Tugas Pendahuluan............................................................................8
C.1 Ketikkan dan eksekusi kode sumber: .................................................
AndreRZ_06_ KelasPeg.cpp.....................................................................
C.2 Ketikkan dan eksekusi kode sumber:..................................................9
AndreRZ_06_ Konstruktor.cpp.................................................................
C.3 Ketikkan dan eksekusi kode sumber:..................................................10
AndreRZ_06_ BawaanPar.cpp..................................................................
C.4 Ketikkan dan eksekusi kode sumber:..................................................11
AndreRZ_06_ Destruktor.cpp...................................................................
C.5 Ketikkan dan eksekusi kode sumber:..................................................11
AndreRZ_06_ Pewarisan.cpp....................................................................
C.6 Ketikkan dan eksekusi kode sumber:..................................................12
AndreRZ_06_ ParObjek.cpp.....................................................................
C.7 Ketikkan dan eksekusi kode sumber:..................................................13
AndreRZ_06_ BalikObj.cpp......................................................................
C.8 Ketikkan dan eksekusi kode sumber:..................................................13
AndreRZ_06_ PtrThis.cpp.........................................................................
C.9 Ketikkan dan eksekusi kode sumber:..................................................13
AndreRZ_06_ DataStatis.cpp....................................................................
D Percobaan......................................................................................................13
D.1 Langkah-Langkah Praktikum Bahasa C++.........................................13
D.1.1 Diagram AndreRZ_06_KelasPeg.cpp.............................................13
D.1.2 Diagram AndreRZ_06_Konstruktor.cpp.........................................13
D.1.3 Diagram AndreRZ_06_BawaanPar.cpp..........................................13
D.1.4 Diagram AndreRZ_06_Destruktor.cpp...........................................14
D.1.5 Diagram AndreRZ_06_Pewarisan.cpp............................................14
D.1.6 Diagram AndreRZ_06_ParObjek.cpp.............................................14
D.1.7 Diagram AndreRZ_06_BalikObj.cpp..............................................14
iii
D.1.8 Diagram AndreRZ_06_PtrThis.cpp.................................................14
D.1.9 Diagram AndreRZ_06_DataStatis.cpp............................................14
D.2 Buatlah kode sumber lain yang berbeda dengan yang telah ada di tugas
pendahuluan sesuai dengan judulnya................................................................15
D.2.1 AndreRZ_06_KelasPeg.cpp............................................................15
D.2.2 AndreRZ_06_Konstruktor.cpp........................................................17
D.2.3 AndreRZ_06_Destruktor.cpp..........................................................19
D.2.5 AndreRZ_06_Parameter Berupa Objek.cpp....................................22
D.3 Analisa Percobaan......................................................................................23
D.3.1 KelasPeg.cpp....................................................................................23
D.3.2 Konstruktor.cpp...............................................................................23
D.3.3 Destruktor.cpp..................................................................................23
D.3.5 Parameter Berupa Objek.cpp...........................................................23
D.4 Kesimpulan................................................................................................24
Daftar Pustaka...................................................................................................25
DAFTAR GAMBAR
iv
Gambar 1.1 Contoh Kelas Pegawai.......................................................................1
Gambar 1.2 Kelas sebagai cetakan untuk objek....................................................2
Gambar 1.3 Pewarisan Kelas.................................................................................3
v
PRAKTIKUM 1
KELAS
Dasar Teori
B.1 Pendahuluan
Bab ini memberikan pengenalan terhadap kelas dan penggunaan kelas untuk
mendeklarasikan objek. Dengan berakhirnya bab ini diharapkan anda mempunyai dasar untuk
bekerja dengan objek.
Pegawai
-nip: integer
-nama: string
-pria: Boolean
+inisialisasi(nip: integer, nama: string, pria: boolean): void
+isiNIP(nip: integer): void
+isiNama(nama: string): void
+isiKelamin(pria: boolean): void
+perolehNIP(): integer
+perolehNama(): string
+perolehKelamin(): boolean
Gambar B.1 Contoh Kelas Pegawai
1
Data yang bersifat pada kelas umumnya bersifat privat, dalam arti hanya fungsi anggota
yang didefinisikan dalam kelas tersebut yang dapat mengakses data,sedangkan fungsi anggota
umumnya bersifat public, dalam arti bias diakses diluar kelas.
Setelah sebuah kelas didefinisikan, kelas tersebut dapat dipakai untuk mendeklarasikan
satu atau sejumlah objek. Itulah sebabnya objek dapat dipandang sebagai cetakan untuk objek.
Baris private: menyatakn bahwa deklarasi berikutnya (sampai ada bentuk yang lain:
protected atau public jika ada) bersifat privat, yang artinya hanya dapat diakses oleh kode di
dalam kelas itu saja. Dalam hal initerdapat tiga dekalrasi anggota data, masing-masing dengan
nama nip,nama,dan pria.
Baris public: menyatakan bahwa deklarasi berikutnya (sampai ada bentuk lain:
protected atau public jika ada) bersifat public. Yang artinya dapat diakses oleh kode di yang
terletak dimana saja. Terdapat tujuh prototype fungsi anggota.
2
Pada bentuk seperti itu, detail definisi fungsi anggota dapat diletakkan pada bagian lain.
Pada kode berikut, definisi fungsi anggota diletakkan dibawah main().
B.4 Konstruktor
Konstruktor adalah fungsi khusus di dalam sebuah kelas yang akan dijalankan secara
otomatis ketika sebuah objek baru dideklarasikan. Nama konstruktor sama dengan nama kelas.
Contoh berikut menunjukkan pelibatan konstruktor yang dipakai untuk menggantikan fungsi
inisialisasi() yang dibahas didepan.
B.5 Destruktor
Destruktor adalah fungsi khusus dalam sebuah kelas yang dijalankan secara otomatis
ketika objek musnah. Nama destructor sama dengan nama kelas, tetapi diawali simbol~
Perhatikan bahwa konstruktor dijalankan ketika objek diciptakan dan destruktor
dijalankan ketika objek hendak musnah. Dalam hal ini, objek dengan identitas Beta musnah
setelah fungsi tesFungsi () berakhir dijalankan dan objek dengan identitas Alpha musnah setelah
fungsi main() berakhir dijalankan.
B.6 Pewarisan
Pewarisan memungkinkan untuk membuat suatu kelas yang didasarkan kelas yang
sudah ada sehungga mewarisi semua anggota, baik anggota data maupun fungsi anggota.
Gambaran mengenai hal ini dapat dilihat pada gambar berikut:
3
Sebagai contoh, terdapat kelas seperti berikut:
Class Orang
{
Private:
Char*nama;
Tanggal tglLahir;
Public:
//Konstruktor
Orang(Char* nama,
Tanggal tglLahir);
//Destruktor
~Orang ();
Void info ();
};
Dasar hal in kelas Orang memiliki dua buang anggota data bernama nama (berupa
pointer yang menunjuk ke tipe char) dan tglLahir yang berupa struktur Tanggal. Struktur
Tanggal sendiri didefinisikan sebagai berikut:
Struct Tanggal
{
int tanggal;
int bulan;
int tahun;
};
Berdasarkan kelas orang, kelas lain dapat dibuat =; misalnya dengan menambahkan
anggota data bernama nip, sebagaimana diperlihatkan dibawah ini:
Yang terletak sesuadah Class karyawan : Kode tersebut menyatakan bahwa karyawan
adalah kelas turunan yang didasarkan pada kelasr Orang. Kata public pada konteks tersebut
menyatakan bahwa bagian yang bersifat privat pada kelas dasar tidak dapat diakses secara
langsung oleh kelas turunan. Namun anggota yang bersifat public dan protected pada kelas
dasar tetap dapat diakses oleh kelas turunan.
4
Kedua, kelas turunan (yaitu karyawan) dapat menyediakan anggota data baru dengan
nama nip
Perhatikan pula bahwa dalam definisi kelas karyawan terdapat fungsi dengan nama
yang sama dengan yang ada pada kelas Orang ( yaitu kelas info() ). Hal seperti itu
diperkenankan.
Mengingat baik kelas Orang dan Karyawan memeiliki nama fungsi yang sama yaitu
info, kelas Karyawan perlu menyebutkan Orang:: untuk memanggil info () milik kelas dasar.
Itulah sebabnya di dalam definisi fungsi anggota Karyawan:: info() terdapat pernyataan:
Orang::info();
Yang mengatakan pemanggilan terhaddap fungsi anggota info() milik kelas Orang.
Merupakan prototipe konstruktor yang menyatakan bahwa nilai bawaan untuk masing-
masing parameter beruppa nol.
Adapun definisi berikut:
Menyatakan bahwa fungsi anggota tambah melibatkan objek berkelas buah dan
memberikan nilai balik berupa objek berkelas buah.
Namakelas::namaAnggotaData
Identik dengan
This ->namaAnggotaData
Begitu juga
namaKelas::namafungsiAnggota()
identik dengan
this->namaFungsiAnggota()
5
Ekspresi tersebut sebenarnya bisa saja di tulis menjadi:
PersegiPanjang::luas() > kotak.luas()
C Tugas Pendahuluan
C.1 Ketikkan dan eksekusi kode sumber: KelasPeg.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
class Pegawai{
private:
int nip;
char nama[35];
bool pria;
public:
void inisialisasi(int nip, char nama[], bool pria);
void isiNIP(int nip);
void isiNama(char nama[]);
void isiKelamin(bool pria);
int perolehNIP();
char* perolehNama();
bool perolehKelamin();
};
int main() {
Pegawai pegAkuntansi;
pegAkuntansi.inisialisasi(12350, "Wanto Irawan", true);
Pegawai pegPemasaran;
pegPemasaran.isiNIP(12355);
pegPemasaran.isiNama("Rita Ananda");
pegPemasaran.isiKelamin(false);
6
cout << "Nama:"
<< pegAkuntansi.perolehNama()
<< endl;
return 0;
}
void Pegawai::inisialisasi(int nip, char* nama, bool pria) {
Pegawai::nip = nip;
strcpy(Pegawai::nama, nama);
Pegawai::pria = pria;
}
void Pegawai::isiNIP(int nip) {
Pegawai::nip = nip;
}
void Pegawai::isiNama(char* nama) {
strcpy(Pegawai::nama, nama);
}
void Pegawai::isiKelamin(bool pria) {
Pegawai::pria = pria;
}
int Pegawai::perolehNIP() {
return Pegawai::nip;
}
char* Pegawai::perolehNama() {
return Pegawai::nama;
}
bool Pegawai::perolehKelamin() {
return Pegawai::pria;
}
7
C.2 Ketikkan dan eksekusi kode sumber: Konstruktor.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
class Pegawai
{
private:
int nip;
char nama[35];
bool pria;
public:
Pegawai(int nip,char nama[],bool pria);
void isiNIP(int nip);
void isiNama(char nama[]);
void isiKelamin(bool pria);
int perolehNIP();
char* perolehNama();
bool perolehKelamin();
};
int main()
{
Pegawai pegAkuntansi(12350,"Wanto Irawan",true);
cout<<"Pegawai Akuntansi:"<<endl;
cout<<"NIP:"<<pegAkuntansi.perolehNIP()<<endl;
cout<<"Nama:"<<pegAkuntansi.perolehNama()<<endl;
cout<<"Kelamin"<<(pegAkuntansi.perolehKelamin)()?"Pria":"Wanita"<<endl;
cout<<endl;
return 0;
}
Pegawai::Pegawai(int nip,char nama[],bool pria){
Pegawai::nip=nip;
strcpy(Pegawai::nama,nama);
Pegawai::pria=pria;
}
void Pegawai::isiNIP(int nip){
Pegawai::nip=nip;
}
void Pegawai::isiNama(char nama[]){
strcpy(Pegawai::nama,nama);
}
void Pegawai::isiKelamin(bool pria){
8
Pegawai::pria=pria;
}
int Pegawai::perolehNIP(){
return Pegawai::nip;
}
char* Pegawai::perolehNama(){
return Pegawai::nama;
}
bool Pegawai::perolehKelamin(){
return Pegawai::pria;
}
C.3 Ketikkan dan eksekusi kode sumber: BawaanPar.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
class Pegawai
{
private:
int nip;
char nama[35];
bool pria;
public:
Pegawai(int nip=0,char nama[]="Nama belum diisi",bool pria=false);
void isiNIP(int nip);
void isiNama(char nama[]);
void isiKelamin(bool pria);
int perolehNIP();
char* perolehNama();
bool perolehKelamin();
};
int main()
{
Pegawai pegEDP;
cout<<"Pegawai EDP:"<<endl;
cout<<"NIP:"<<pegEDP.perolehNIP()<<endl;
cout<<"Nama:"<<pegEDP.perolehNama()<<endl;
cout<<"Kelamin"<<(pegEDP.perolehKelamin()?"Pria":"Wanita"<<endl;
cout<<endl;
return 0;
}
Pegawai::Pegawai(int nip,char nama[],bool pria){
Pegawai::nip=nip;
strcpy(Pegawai::nama,nama);
Pegawai::pria=pria;
9
}
void Pegawai::isiNIP(int nip){
Pegawai::nip=nip;
}
void Pegawai::isiNama(char nama[]){
strcpy(Pegawai::nama,nama);
}
void Pegawai::isiKelamin(bool pria){
Pegawai::pria=pria;
}
int Pegawai::perolehNIP(){
return Pegawai::nip;
}
char* Pegawai::perolehNama(){
return Pegawai::nama;
}
bool Pegawai::perolehKelamin(){
return Pegawai::pria;
}
C.4 Ketikkan dan eksekusi kode sumber: Desktruktor.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
void tesFungsi();
class Coba{
private:
char id[15];
public:
Coba(char id[]);
~Coba();
};
int main(){
Coba Alpha("Alpha");
tesFungsi();
cout<<"Ketika main() hendak berakhir"<<endl;
return 0;
}
void tesFungsi(){
cout<<"tesFungsi() dijalankan"<<endl;
Coba Beta("Beta");
}
10
Coba::Coba(char id[]){
strcpy(Coba::id,id);
cout<<"Id:"<<Coba::id<<"."<<"Konstruktor diajalankan..."<<endl;
}
Coba::~Coba(){
cout<<"Id: "<<Coba::id<<"."<<"Destruktor dijalankan..."<<end;
}
C.5 Ketikkan dan eksekusi kode sumber: Pewarisan.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
struct Tanggal
{
int tanggal;
int bulan;
int tahun;
};
class Orang
{
private:
char* nama;
Tanggal tglLahir;
public:
Orang(char* nama,Tanggal tglLahir);
~Orang();
void info();
};
class Karyawan:public Orang
{
private:
int nip;
public:
Karyawan(int nip,char* nama,Tanggal tglLahir);
~Karyawan();
void info;
};
int main(){
Tanggal tgl_lahir={23,6,1975};
Karyawan pegBaru(12364,"Indra Lesmana",tgl_lahir);
pegBaru.info();
cout<<"Sebelum main() berakhir..."<<endl;
return 0;
}
11
Orang::Orang(char* nama,Tanggal tglLahir){
Orang::nama=new char[35];
strcpy(Orang::nama,nama);
Orang::tglLahir=tglLahir;
cout<<"Konstruktor orang dijalankan"<<endl;
}
Orang::~Orang(){
delete[]Orang::nama;
cout<<"Destruktor orang dijalankan..."<<endl;
}
void Orang::info(){
cout<<"nama: "<<Orang::nama<<endl;
cout<<"Tanggal
lahir:"<<Orang::tglLahir.tanggal<<"/"<<Orang::tglLahir.bulan"/"<<Orang::tglLahir.tah
un<<endl;
}
Karyawan::Karyawan(int nip,char* nama,Tanggal tglLahir):Orang(nama,tglLahir){
Karyawan::nip=nip;
cout<<"Konstruktor Karyawan dijalankan..."<<endl;
}
Karyawan::~Karyawan(){
cout <<"Destruktor Karyawan dijalankan..."<<endl;
}
void Karyawan::info(){
cout<<endl;
cout<<"NIP:"<<Karyawan::nip<<endl;
Orang::info();
cout<<endl;
}
C.6 Ketikkan dan eksekusi kode sumber: ParObjek.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
class Buku
{
private:
char judul[35];
char pengarang[35];
12
public:
Buku(char* judul,char *pengarang);
void info();
};
int main(){
Buku novel("Badai pasti berlalu","Marga T.");
infoBuku(novel);
return 0;
}
Buku::Buku(char* judul, char *pengarang){
strcpy(Buku::judul,judul);
strcpy(Buku::pengarang,pengarang);
}
void Buku::info(){
cout<<"judul:"<<Buku::judul<<endl;
cout<<"pengarang:"<<Buku::pengarang<<endl;
}
void infoBuku(Buku buku){
cout<<"__INFORMASI BUKU__"<<endl;
buku.info();
}
C.7 Ketikkan dan eksekusi kode sumber: BalikObj.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
class Buah
{
private:
int apel;
int jeruk;
public:
Buah(int jumlahApel=0,int jumlahJeruk=0);
void info();
Buah tambah(Buah b);
};
int main(){
Buah buah1(5,3);
Buah buah2(4,1);
Buah buah3;
buah3=buah1.tambah(buah2);
cout<<"buah1:"<<endl;
buah1.info();
cout<<"buah2:"<<endl;
buah2.info();
cout<<"buah3:"<<endl;
buah3.info();
return 0;
}
Buah::Buah(int jumlahApel,int jumlahJeruk){
apel=jumlahApel;
jeruk=jumlahJeruk;
13
}
void Buah::info(){
cout<<"apel:"<<apel<<"jeruk"<<jeruk<<endl;
}
Buah Buah::tambah(Buah b){
Buah tmp;
tmp.apel+=b.apel;
tmp.jeruk+=b.jeruk;
return tmp;
}
C.8 Ketikkan dan eksekusi kode sumber: PtrThis.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
class PersegiPanjang
{
private:
double panjang;
double lebar;
public:
PersegiPanjang(double panjang,double lebar);
double luas();
bool lebihBesar(PersegiPanjang kotak);
};
int main(){
PersegiPanjang kotakA(20,30);
PersegiPanjang kotakB(21.5,28.5);
if (kotakA.lebihBesar(kotakB))
{
cout<<"kotak A lebih besar"<<endl;
}
else{
cout<<"kotak B lebih besar"<<endl;
}
return 0;
}
PersegiPanjang::PersegiPanjang(double panjang, double lebar){
PersegiPanjang::panjang=panjang;
PersegiPanjang::lebar=lebar;
}
double PersegiPanjang::luas(){
return panjang*lebar;
14
}
bool PersegiPanjang::lebihBesar(PersegiPanjang kotak){
return this->luas()>kotak.luas();
}
C.9 Ketikkan dan eksekusi kode sumber: DataStatis.cpp, kemudian catat hasil
eksekusi.
#include <iostream.h>
#include <string.h>
class Monster
{
private:
static int jumlah;
public:
Monster();
void info();
};
int Monster::jumlah=0;
int main(){
Monster mon1;
mon1.info();
Monster mon2;
mon2.info();
Monster mon3;
mon3.info();
return 0;
}
Monster::Monster(){
jumlah++;
}
void Monster::info(){
cout<<"jumlah Monster:"<<Monster::jumlah<<endl;
cout<<endl;
}
15
D Percobaan
D.1 Buatlah diagram kelas setiap tugas pendahuluan diatas
D.1.1 Diagram AndreRZ_06_KelasPeg.cpp
16
D.1.4 Diagram AndreRZ_06_Destruktor.cpp
17
D.1.8 Diagram AndreRZ_06_PrtThis.cpp
18
D.2 Buatlah kode sumber lain yang berbeda dengan yang telah ada di
tugas pendahuluan sesuai dengan judulnya.
D.2.1 AndreRZ_06_Kelas dan Objek
202020402006, AndreRinaldiZ ,
19
2020204020006
AndreRinaldiZ
D.2.2 AndreRZ_06_Konstruktor
20
176
AndreRinaldiZ
21
D.2.3 AndreRZ_06_Destruktor
22
D.2.5 AndreRZ_06_Parameter Berupa Objek
23
D.3 Buatlah Analisa Percobaan D.2
D.3.1 Kelas
Pada percobaan ini, Kelas berisi objek-objek yang terdiri dari private dan public.
Pada class ada tipe data int, nama[], dan bool. Masing-masing memiliki Set dan Get
pada public. Kemudian ketika diamankan dengan int main(), maka digunakan untuk
dua tipe data, yaitu mhsPoliteknik dan mhsUnivsumut untuk memasukkan dua nama
mahasiswa. Pada mhsPoliteknik kita menggunakan tipe data NIM, Nama dan Jenis
Kelamin, sedangkan pada mhsUnivsumut kita hanya menggunakan Nama. Pada
mhsPoliteknik terdapat tipe data bool yang berfungsi untuk mengetahui apakah tipe
datanya true atau false dengan memasukkan “Pria”:”Wanita”, dalam inisialisasi yang
dimasukkan adalah true. Maka pada Output akan keluar “Pria”.
D.3.2 Konstruktor
Percobaan ini sama seperti Kelas, hanya saja digunakan untuk satu inisialisasi.
Kelas berisi objek-objek yang terdiri dari private dan public. Pada class ada tipe data
int, nama[], dan double. Masing-masing memiliki Set dan Get pada public. Kemudian
ketika diamankan dengan int main(), maka digunakan untuk satu tipe data, yaitu
ptjKanada.. Pada ptjKanada kita menggunakan tipe data Tinggi, Nama dan Berat.
Pada ptjKanada terdapat tipe data int untuk Tinggi Badan, nama untuk Nama, dan
double untuk Berat Badan.
D.3.3 Destruktor
Pada percobaan ini, kita membuat fungsi khusus dalam class yang dijalankan
secara otomatis ketika objek musnah. class Coba terdiri dari private: char id[15]., dan
public: Coba (char id[]), ~Coba(). Tanda ~ digunakan sebagai destructor. Setelah kode
program dijalankan, maka akan keluar hasil yang terdiri dari Id; Alpha. Konstruktor
dijalankan…, pembatas destructor adalah tesFungsi() dan Ketika main(). Pada
Ketika main(), maka objek dengan identitas Beta musnah setelah fungsi main()
berakhir dijalankan.
D.3.5 Parameter Berupa Objek
Pada percobaan ini, objek juga bisa digunakan sebagai parameter. class nya adalaha
Buku. setelah kode program diketik dan dijalankan, maka akan keluar output seperti diatas.
void infoBuku(Buku buku) harus digunkan sehingga program bisa berfungsi. Kemudian pada
infoBuku(novel) adalah parameter berupa objek yang bisa dijalankan setelah menggunakan
void.
24
DAFTAR PUSTAKA
Abdul Kadir. 2004. Panduan Pemrograman Visual C++. Yogyakarta, Penerbit ANDI
Yogyakarta.
25