0% menganggap dokumen ini bermanfaat (0 suara)
26 tayangan18 halaman

Praktikum 1 Class Diagram

Praktikum 1 membahas konsep kelas dan objek dalam pemrograman berorientasi objek. Topik utama yang dibahas meliputi pendefinisian kelas, pembentukan objek, konstruktor dan destruktor, pewarisan kelas, parameter dan nilai balik berupa objek, serta pointer this.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
26 tayangan18 halaman

Praktikum 1 Class Diagram

Praktikum 1 membahas konsep kelas dan objek dalam pemrograman berorientasi objek. Topik utama yang dibahas meliputi pendefinisian kelas, pembentukan objek, konstruktor dan destruktor, pewarisan kelas, parameter dan nilai balik berupa objek, serta pointer this.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 18

Praktikum 1

Kelas

Tujuan Intruksional Khusus


1. Mahasiswa dapat menjelaskan pengertian kelas dan objek.
2. Mahasiswa dapat mendefinisikan kelas dan mendeklarasikan objek.
3. Mahasiswa dapat memahami dan menjelaskan konstruktor.
4. Mahasiswa dapat memahami dan menjelaskan destructor.
5. Mahasiswa dapat memahami dan menjelaskan pewarisan.
6. Mahasiswa dapat memahami dan menjelaskan parameter berupa objek.
7. Mahasiswa dapat menjelaskan tentang nilai balik fungsi berupa objek.
8. Mahasiswa dapat menjelaskan dan memahami pointer this.
9. Mahasiswa dapat memahami anggota data yang bersifat statis.

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.

B.2 Pengertian Kelas dan Objek

Kelas merupakan suatu tipe data yang menggabungkan data dan fungsi untuk mengakses data.
Sebagai contoh, suatu kelas Pegawai dapat mengandung data seperti NIP (nomor induk pegawai),
nama, dan jenis kelamin dan memiliki fungsi untuk mengakses data tersebut, misalnya dengan
nama:
 isiNama() untuk mengisikan nama pegawai,
 isiNIP() untuk mengisikan NIP,
 isiKelamin() untuk untuk menentukan jenis kelamin,
 perolehNama() untuk memperoleh nama pegawai,
 perolehNIP() untuk memperoleh NIP,
 perolehKelamin() untuk memperoleh jenis kelamin.

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.

Analogi
Kelas
Cetakan

Sebuah instan Objek 3 Hasil


Objek 1
kelas Objek 2 Cetakan

Gambar B.2 Kelas sebagai cetakan untuk objek


Pendeklarasian sebuah objek berdasarkan kelas seringkali disebut penginstansian (instantion)
dan objek itu sendiri dianamakan instan kelas.

B.3 Mendefinisikan Kelas dan Mendeklarasikan Objek


Contoh definisi sebuah kelas ditunjukkan dibawah ini:
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();
};
Perhatikan bahwa definisi kelas diakhiri dengan titik koma.
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:

Kelas Karyawan mewarisi


semua anggota kelas
Orang yang tidak bersifat
privat

Fungsi anggota
tambahan yang
dibuat pada kelas
Karyawan

Gambar B.3 Pewarisan kelas

Pada contoh seperti di atas, KelasX disebut Kelas dasar atau Superkelas, sedangkan
KelasY disebut Kelas turunan atau Kelas anak.
}

3
Pewarisan merupakan suatu mekanisme yang memungkinkan seorang pemograman
menciptakan suatu kelas baru berdasrakan kelas yang sudah tersedia tetapi tidak perlu
menulisakan kode dari nol. Dengan cara seperti ini, semua anggota terdapat pada kelas
dasar diturunkan ke kelas turunan. Namun kelas turunan dapat ditambah dengan anggota
baru ataupun menganti isi fungsi anggota
Sebagai contoh, terdapat kelas seperti berikut:
Class Orang
{
Private:
Char* nama;
Tanggal tglLahir;
Public:
// Konstruktor
Orang(Char* nama,
Tanggal tglLahir);

// Destruktor
~Orang ();
Void info ();
};

Dalam hal ini 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:
Class karyawan : public Orang
{
Private:
int nip;
public:
// konstruktor
Karyawan (int nip, char* nama,
Tanggal tglLahir);

//Destruktor
} ~karyawan ();

4
Void info ();
};

Pertama-tama, perhatikan kode:


: public Orang

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.
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.

B.7 Parameter Berupa Objek

Objek juga dapat berkedudukan sebagai parameter.

B.8. Nilai Balik Fungsi Serupa Objek

Suatu fungsi juga bisa memberikan nilai berupa objek. Contoh tentang hal ini
diperkirakan pada kode berikut:

Merupakan prototipe konstruktor yang menyatakan bahwa nilai bawaan untuk


masing-masing parameter beruppa nol.
Adapun definisi berikut:

Buah buah::tambah (buah b)


{
Buah tmp;
Tmp.apel += b.apel;
Tmp.jeruk += b.jeruk;
Return tmp;
}

Menyatakan bahwa fungsi anggota tambah melibatkan objek berkelas buah


dan memberikan
} nilai balik berupa objek berkelas buah.

5
B.9 Pointer This

Setiap kelas memiliki anggota data tersembunyi yang bernama this. Anggota
data ini berupa pointer yang menunjukan ke objek di dalam memori. Secara umum,
sebenarnya penulisan seperti

Namakelas::namaAnggotaData
Identik dengan
This->namaAnggotaData
Begitu juga
namaKelas::namafungsiAnggota()
identik dengan
this->namaFungsiAnggota()

Contoh berikut memperlihatkan pemakaian this.

Merupakan ekpresi untuk membandingkan hasil Anggota luas () milik objek


bersangkutan dengan fungsi anggota luas () milik objek kotak.

Ekpresi tersebut sebenarnya bisa saja di tulis menjadi:


PersegiPanjang::luas() > kotak.luas()

Atau bahkan cukup di tulis menjadi:

Luas() > Kotak.luas()


Pada main(),
If (kotakA,lebihBesar(KotakB))
Cout << “kotak A lebih besar”
<< endl;
Else
Cout << “Kotak A lebih besar”
< endl;

Digunakan untuk melakukan perbandingan objek kotakA dan kotakB.

B.10 Anggota Data yang bersifat Statis

Anggota data pada kelas juga dapat dibuat menjadi statis. Sebagai efeknya,
data seperti itu hanya akan dibuat satu dan semua objek dapat berbagi data.

C. Tugas Pendahuluan

C.1 Ketikkan dan ekseskusi kode sumber: KelasPeg.cpp, kemudian catat hasil ekseskusi.
}

6
#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);

cout << "Pegawai Akuntansi:" << endl;


cout << "NIP:"
<< pegAkuntansi.perolehNIP()
<< endl;

cout << "Nama:"


<< pegAkuntansi.perolehNama()
<< endl;

cout << "NIP:"


<< (pegAkuntansi.perolehKelamin() ?
"Pria" : "Wanita")
<< endl;

cout << endl;

cout << "Pegawai Pemasaran:" << endl;

cout << "Nama :"


<< pegPemasaran.perolehNama()
<< endl;

return 0;

}
} Pegawai::inisialisasi(int nip, char* nama, bool pria) {
void

7
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;
}

C.2 Ketikkan dan ekseskusi kode sumber: Konstruktor.cpp, kemudian catat hasil
ekseskusi.

#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[]);

8
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"<<en
dl;
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){
Pegawai::pria=pria;
}
int Pegawai::perolehNIP(){
return Pegawai::nip;
}
char* Pegawai::perolehNama(){
return Pegawai::nama;
}
bool Pegawai::perolehKelamin(){
return Pegawai::pria;
}

9
C.3 Ketikkan dan ekseskusi kode sumber: BawaanPar.cpp, kemudian catat hasil
ekseskusi.

#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;

1
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 ekseskusi kode sumber: Destruktor.cpp, kemudian catat hasil ekseskusi.

#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");
}

1
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 ekseskusi kode sumber: Pewarisan.cpp, kemudian catat hasil ekseskusi.

#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(){

1
Tanggal tgl_lahir={23,6,1975};
Karyawan pegBaru(12364,"Indra Lesmana",tgl_lahir);
pegBaru.info();
cout<<"Sebelum main() berakhir..."<<endl;
return 0;
}
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::t
glLahir.tahun<<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;
}

1
C.6 Ketikkan dan ekseskusi kode sumber: ParObjek.cpp, kemudian catat hasil ekseskusi.

#include <iostream.h>
#include <string.h>
class Buku
{
private:
char judul[35];
char pengarang[35];
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 ekseskusi kode sumber: BalikObj.cpp, kemudian catat hasil ekseskusi.

#include <iostream.h>
#include <string.h>
class Buah
{
private:
int apel;
int jeruk;

1
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;
}
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 ekseskusi kode sumber: PtrThis.cpp, kemudian catat hasil
ekseskusi.

#include <iostream.h>
#include <string.h>
class PersegiPanjang
{

1
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;
}
bool PersegiPanjang::lebihBesar(PersegiPanjang kotak){
return this->luas()>kotak.luas();
}

C.9 Ketikkan dan ekseskusi kode sumber: DataStatis.cpp, kemudian catat hasil ekseskusi.

#include <iostream.h>
#include <string.h>
class Monster
{
private:
static int jumlah;
public:
Monster();
void info();

1
};
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;
}

1
D. Percobaan
D.1 Buatlah diagram kelas setiap tugas pendahuluan diatas
D.1.1 Diagram KelasPeg.cpp
D.1.2 Diagram Konstruktor.cpp
D.1.3 Diagram BawaanPar.cpp
D.1.4 Diagram Destruktor.cpp
D.1.5 Diagram Pewarisan.cpp
D.1.6 Diagram ParObjek.cpp
D.1.7 Diagram BalikObj.cpp
D.1.8 Diagram PtrThis.cpp
D.1.9 Diagram DataStatis.cpp
D.2 Buatlah kode sumber lain yang berbeda dengan yang telah ada di tugas
pendahuluan sesuai dengan judulnya.
D.2.1 Kelas dan Objek
D.2.2 Konstruktor
D.2.3 Destruktor
D.2.4 Pewarisan
D.2.5 Parameter Berupa Objek
D.2.6 Nilai Balik Fungsi Berupa Objek
D.2.7 Pointer This
D.2.8 Data Statis

D.3 Buatlah analisa percobaan D.2

D.3.1 Kelas
D.3.2 Konstruktor
D.3.3 Destruktor
D.3.4 Pewarisan
D.3.5 Parameter Berupa Objek
D.3.6 Nilai Balik Fungsi Berupa Objek
D.3.7 Pointer This
D.3.8 Data Statis

D.4 Kesimpulan

Anda mungkin juga menyukai