STRUKTUR DAN KELAS
Soal & Penyelesaian
1.
Demonstrasikanlah pengaksesan anggota publik dari
sebuah kelas sederhana.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//AksesAnggotaPublik.cpp
#include <iostream>
#include <conio.h>
class Kucing // mendeklarasikan kelas Kucing
{
public:
int
umurNya; // variabel anggota
int
beratNya; // variabel anggota
}; // perhatikan
titik-koma
int main()
{
Kucing Meonk;
Meonk.umurNya = 5; // menugaskan kepada
variabel anggota
std::cout << "Meonk adalah kucing yang berumur
" ;
std::cout << Meonk.umurNya <<
" tahun.\n";
getch();
return
0;
}
|
Meonk adalah kucing yang berumur 5 tahun.
2.
Demonstrasikanlah pengaksesan anggota data private
menggunakan metode aksesor.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//MetodeAksesor.cpp
class Kucing
{
public:
// aksesor publik
unsigned
int GetUmur();
void
SetUmur(unsigned int umur);
unsigned
int GetBerat();
void
SetBerat(unsigned int berat);
// fungsi anggota publik
void
Meonk();
// anggota data private
private:
unsigned
int umurNya;
unsigned
int beratNya;
};
|
3.
Demonstrasikanlah bagaimana mengimplementasikan metode
pada sebuah kelas sederhana.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
//ImplementasiMetode.cpp
#include <iostream> // untuk cout
#include <conio.h>
class Kucing // awal deklarasi kelas
{
public: // awal bagian publik
int
GetUmur(); // fungsi aksesor
void
SetUmur (int umur); // fungsi
aksesor
void
Meonk(); // fungsi umum
private: // awal bagian private
int
umurNya; // variabel anggota
};
// GetUmur, fungsi aksesor publik
// menghasilkan nilai dari anggota umurNya
int Kucing::GetUmur()
{
return
umurNya;
}
// definisi dari SetUmur,
fungsi
// aksesor publik
// menetapkan nilai
anggota umurNya
void Kucing::SetUmur(int umur)
{
umurNya = umur;
}
void Kucing::Meonk()
{
std::cout << "Meonk.\n";
}
// menciptakan sebuah
kucing, menetapkan umurnya
// menyuarakan meonk, dan
memberitahu Anda umurnya,
// dan kemudian
menyuarakan meonk lagi.
int main()
{
Kucing Friska;
Friska.SetUmur(5);
Friska.Meonk();
std::cout << "Friska adalah seekor kucing dengan umur
" ;
std::cout << Friska.GetUmur()
<< " tahun.\n";
Friska.Meonk();
getch();
return
0;
}
|
Meonk.
Friska adalah seekor kucing dengan umur 5
tahun.
Meonk.
4.
Demonstrasikanlah penggunaan konstruktor dan
destruktor dalam sebuah kelas.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
//KonstruktorDestruktor.cpp
#include <iostream> // untuk cout
#include <conio.h>
class Kucing
{
public:
Kucing(int umurAwal); // konstruktor
~Kucing(); // destruktor
int
GetUmur(); // fungsi aksesor
void
SetUmur(int umur); // fungsi
aksesor
void
Meonk();
private:
int
umurNya;
};
// konstruktor Kucing
Kucing::Kucing(int
umurAwal)
{
umurNya = umurAwal;
}
Kucing::~Kucing() //
destruktor
{
}
// GetUmur, fungsi aksesor
publik
// menghasilkan nilai dari
anggota umurNya
int Kucing::GetUmur()
{
return
umurNya;
}
// Definisi dari SetUmur,
fungsi
// aksesor publik
void Kucing::SetUmur(int
umur)
{
// menetapkan variabel anggota umurNya
menjadi
// nilai yang dilewatkan pada parameter
umur
umurNya = umur;
}
// Definisi dari metode
Meonk
// menghasilkan: void
// parameter: tidak ada
// aksi: Menampilkan
"Meonk"
void Kucing::Meonk()
{
std::cout << "Meonk.\n";
}
// menciptakan sebuah
kucing, menetapkan umurnya
// menyuarakan meonk, dan
memberitahu Anda umurnya,
// dan kemudian
menyuarakan meonk lagi.
int main()
{
Kucing Friska(5);
Friska.Meonk();
std::cout << "Friska adalah seekor kucing dengan umur
" ;
std::cout << Friska.GetUmur()
<< " tahun.\n";
Friska.Meonk();
Friska.SetUmur(7);
std::cout << "Sekarang Friska memiliki umur "
;
std::cout << Friska.GetUmur()
<< " tahun.\n";
getch();
return
0;
}
|
Meonk.
Friska adalah seekor kucing dengan umur 5
tahun.
Meonk.
Sekarang Friska memiliki umur 7 tahun.
5.
Demonstrasikanlah sebuah kelas yang memiliki kelas
lain sebagai anggota datanya.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
//KelasDenganAnggotaDataKelas.cpp
#include <iostream>
#include <conio.h>
class Titik // menampung koordinat x dan y
{
public:
void
SetX(int x) { Xnya = x; }
void
SetY(int y) { Ynya = y; }
int
GetX()const { return Xnya;}
int
GetY()const { return Ynya;}
private:
int
Xnya;
int
Ynya;
};
class PersegiPanjang
{
public:
PersegiPanjang (int atas, int kiri, int
bawah, int kanan);
~PersegiPanjang () {}
int
GetAtas() const { return atasNya; }
int
GetKiri() const { return kiriNya; }
int
GetBawah() const { return bawahNya; }
int
GetKanan() const { return kananNya; }
Titik GetKiriAtas() const { return
pojokKiriAtasNya; }
Titik GetKiriBawah() const { return
pojokKiriBawahNya; }
Titik GetKananAtas() const { return
pojokKananAtasNya; }
Titik GetKananBawah() const { return pojokKananBawahNya; }
void
SetKiriAtas(Titik Lokasi) {pojokKiriAtasNya = Lokasi;}
void
SetKiriBawah(Titik Lokasi) {pojokKiriBawahNya = Lokasi;}
void
SetKananAtas(Titik Lokasi) {pojokKananAtasNya = Lokasi;}
void
SetKananBawah(Titik Lokasi) {pojokKananBawahNya = Lokasi;}
void
SetAtas(int atas) { atasNya =
atas; }
void
SetKiri (int kiri) { kiriNya =
kiri; }
void
SetBawah (int bawah) { bawahNya =
bawah; }
void
SetKanan (int kanan) { kananNya =
kanan; }
int
GetLuas() const;
private:
Titik pojokKiriAtasNya;
Titik pojokKananAtasNya;
Titik pojokKiriBawahNya;
Titik pojokKananBawahNya;
int
atasNya;
int
kiriNya;
int
bawahNya;
int
kananNya;
};
PersegiPanjang::PersegiPanjang(int atas, int kiri, int bawah, int kanan)
{
atasNya = atas;
kiriNya = kiri;
bawahNya = bawah;
kananNya = kanan;
pojokKiriAtasNya.SetX(kiri);
pojokKiriAtasNya.SetY(atas);
pojokKananAtasNya.SetX(kanan);
pojokKananAtasNya.SetY(atas);
pojokKiriBawahNya.SetX(kiri);
pojokKiriBawahNya.SetY(bawah);
pojokKananBawahNya.SetX(kanan);
pojokKananBawahNya.SetY(bawah);
}
int PersegiPanjang::GetLuas() const
{
int
Lebar = kananNya-kiriNya;
int
Tinggi = atasNya - bawahNya;
return
(Lebar * Tinggi);
}
int main()
{
//inisialisasi variabel PersegiPanjang
lokal
PersegiPanjang PersegiPanjangKu (100, 20,
50, 80 );
int
Area = PersegiPanjangKu.GetLuas();
std::cout << "Luas: " << Area <<
"\n";
std::cout << "Koordinat X Pojok Kiri Atas: ";
std::cout <<
PersegiPanjangKu.GetKiriAtas().GetX();
getch();
return
0;
}
|
Luas: 3000
Koordinat X Pojok Kiri Atas: 20
6.
Tulislah sebuah program C++ untuk mendemonstrasikan penggunaan
struktur
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
//penggunaanStruktur.cpp
//Mendemonstrasikan tipe
struktur Akun.
#include <iostream>
#include <conio.h>
using namespace std;
//Struktur untuk sebuah
akun bank:
struct Akun
{
double
saldo;
double
suku_bunga;
int
jangka_waktu;
};
void baca_data(Akun& akunA);
int main( )
{
Akun akun;
baca_data(akun);
double pecahan_bunga, bunga;
pecahan_bunga = akun.suku_bunga/100.0;
bunga =
akun.saldo*pecahan_bunga*(akun.jangka_waktu/12.0);
akun.saldo = akun.saldo + bunga;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout << "Pada saat jangka waktu "
<< akun.jangka_waktu <<
" bulan,\n"
<< "Saldo Anda akan menjadi Rp. "
<< akun.saldo << endl;
getch();
return 0;
}
void baca_data(Akun& akunA)
{
cout << "Masukkan saldo akun: Rp.";
cin >> akunA.saldo;
cout << "Masukkan suku bunga akun: ";
cin >> akunA.suku_bunga;
cout << "Masukkan jangka waktu dalam bulan\n"
<< "(harus berupa angka 12 atau lebih kecil): ";
cin >> akunA.jangka_waktu;
}
|
Masukkan saldo akun: Rp.2000000
Masukkan suku bunga akun: 10
Masukkan jangka waktu dalam bulan
(harus berupa angka 12 atau lebih kecil): 12
Pada saat jangka waktu 12 bulan,
Saldo Anda akan menjadi Rp. 2200000.00
7. Tulislah sebuah
program C++ dimana di dalamnya terdapat suatu kelas yang memiliki satu fungsi
anggota.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
//kelasDenganSatuFungsiAnggota.cpp
//Mendemonstrasikan sebuah kelas sederhana.
#include
<iostream>
#include
<conio.h>
using namespace std;
class HariTahun
{
public:
void keluaran( );
int bulan;
int hari;
};
int main( )
{
HariTahun
hariIni, ultah;
cout <<
"Masukkan tanggal hari ini:\n";
cout <<
"Masukkan bulan sebagai angka: ";
cin >>
hariIni.bulan;
cout <<
"Masukkan hari dalam bulan:
";
cin >>
hariIni.hari;
cout <<
"Masukkan hari ultah Anda:\n";
cout <<
"Masukkan bulan sebagai angka:
";
cin >>
ultah.bulan;
cout <<
"Masukkan hari dalam bulan:
";
cin >>
ultah.hari;
cout <<
"Tanggal hari ini adalah
";
hariIni.keluaran(
);
cout <<
"Ultah Anda adalah ";
ultah.keluaran(
);
if (hariIni.bulan == ultah.bulan
&&
hariIni.hari == ultah.hari)
cout <<
"Selamat Ulang Tahun!\n";
else
cout <<
"Hari yang Indah!\n";
getch();
return 0;
}
void HariTahun::keluaran( )
{
cout <<
"bulan = " << bulan
<<
", hari = " << hari << endl;
}
|
Masukkan tanggal hari ini:
Masukkan bulan sebagai angka: 3
Masukkan hari dalam bulan: 25
Masukkan hari ultah Anda:
Masukkan bulan sebagai angka: 4
Masukkan hari dalam bulan: 25
Tanggal hari ini adalah bulan = 3, hari = 25
Ultah Anda adalah bulan = 4, hari = 25
Hari yang Indah!
8. Tulislah sebuah
program C++ dimana di dalamnya terdapat suatu kelas yang memiliki satu fungsi
anggota private.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
//kelasDenganSatuFungsiAnggotaPrivate.cpp
#include
<iostream>
#include
<conio.h>
using namespace std;
class HariTahun
{
public:
void masukan( );
void keluaran( );
void tetapkan_bulan(int bulan_baru, int hari_baru);
int baca_bulan( );
//Menghasilkan bulan, 1 untuk januari, 2 untuk feb, dst.
int baca_hari( );
//Menghasilkan hari dalam bulan.
private:
void periksa_tanggal( );
int bulan;
int hari;
};
int main( )
{
HariTahun
hariIni, ultahMu;
cout <<
"Masukkan tanggal hari ini:\n";
hariIni.masukan(
);
cout <<
"Tanggal hari ini adalah
";
hariIni.keluaran(
);
ultahMu.tetapkan_bulan(3,
21);
cout <<
"Hari ulang tahun Anda adalah:
";
ultahMu.keluaran(
);
if ( hariIni.baca_bulan( ) ==
ultahMu.baca_bulan( ) &&
hariIni.baca_hari( ) == ultahMu.baca_hari( ) )
cout <<
"Selamat Ulang Tahun Bagi Anda!\n";
else
cout <<
"Hari yang Indah, Semangat!\n";
getch();
return 0;
}
void HariTahun::masukan( )
{
cout <<
"Masukkan bulan sebagai angka:
";
cin >>
bulan;
cout <<
"Masukkan hari sebagai angka:
";
cin >>
hari;
periksa_tanggal(
);
}
void HariTahun::keluaran( )
{
cout <<
"bulan = " << bulan
<<
", hari = " << hari << endl;
}
void HariTahun::tetapkan_bulan(int bulan_baru, int hari_baru)
{
bulan =
bulan_baru;
hari = hari_baru;
periksa_tanggal();
}
void HariTahun::periksa_tanggal( )
{
if ((bulan < 1) || (bulan > 12)
|| (hari < 1) || (hari > 31))
{
cout <<
"Tanggal tak valid. Program
dihentikan.\n";
exit(1);
}
}
int HariTahun::baca_bulan( )
{
return bulan;
}
int HariTahun::baca_hari( )
{
return hari;
}
|
Masukkan tanggal hari ini:
Masukkan bulan sebagai angka: 3
Masukkan hari sebagai angka: 21
Tanggal hari ini adalah bulan = 3, hari = 21
Hari ulang tahun Anda adalah: bulan = 3, hari =
21
Selamat Ulang Tahun Bagi Anda!
9. Tulislah sebuah
program C++ untuk mendemonstrasikan kelas AkunBank.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
//kelasAkunBank.cpp
//Program untuk mendemonstrasikan kelas AkunBank.
#include
<iostream>
#include
<conio.h>
using namespace std;
class AkunBank
{
public:
void set(int rupiah, int bonus,
double sukuBunga);
void set(int rupiah, double
sukuBunga);
void perbarui( );
double get_saldo( );
double get_bunga( );
void keluaran(ostream& kel);
private:
double saldo;
double suku_bunga;
double pecahan(double persen);
};
int main( )
{
AkunBank akun1,
akun2;
cout <<
"Mulai menguji:\n";
akun1.set(1000000, 10000, 3.0);
cout <<
"akun1 awalnya berisi:\n";
akun1.keluaran(cout);
akun1.set(2000000, 5.0);
cout <<
"akun1 menjadi rapi:\n";
akun1.keluaran(cout);
akun1.perbarui();
cout <<
"akun1 setelah diperbarui:\n";
akun1.keluaran(cout);
akun2 = akun1;
cout <<
"akun2:\n";
akun2.keluaran(cout);
getch();
return 0;
}
void AkunBank::set(int rupiah, int bonus,
double sukuBunga)
{
if ((rupiah < 0) || (bonus < 0)
|| (sukuBunga < 0))
{
cout <<
"Nilai ilegal untuk rupiah atau
sukuBunga.\n";
exit(1);
}
saldo = rupiah +
5*bonus;
suku_bunga =
sukuBunga;
}
void AkunBank::set(int rupiah, double
sukuBunga)
{
if ((rupiah < 0) || (sukuBunga
< 0))
{
cout <<
"Nilai ilegal untuk rupiah atau
sukuBunga.\n";
exit(1);
}
saldo = rupiah;
suku_bunga =
sukuBunga;
}
void AkunBank::perbarui( )
{
saldo = saldo +
pecahan(suku_bunga)*saldo;
}
double AkunBank::pecahan(double nilai_persen)
{
return (nilai_persen /100.0);
}
double AkunBank::get_saldo( )
{
return saldo;
}
double AkunBank::get_bunga( )
{
return suku_bunga;
}
void AkunBank::keluaran(ostream& kel)
{
kel.setf(ios::fixed);
kel.setf(ios::showpoint);
kel.precision(2);
kel <<
"Saldo Akun Rp. "
<< saldo << endl;
kel <<
"Suku Bunga: " << suku_bunga << "%" <<
endl;
}
|
Mulai menguji:
akun1 awalnya berisi:
Saldo Akun Rp. 1050000.00
Suku Bunga: 3.00%
akun1 menjadi rapi:
Saldo Akun Rp. 2000000.00
Suku Bunga: 5.00%
akun1 setelah diperbarui:
Saldo Akun Rp. 2100000.00
Suku Bunga: 5.00%
akun2:
Saldo Akun Rp. 2100000.00
Suku Bunga: 5.00%
10. Tulislah sebuah
program C++ untuk mendemonstrasikan kelas AkunBank
dengan beberapa konstruktor.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
//kelasAkunBankDenganKonstruktor.cpp
//kelasAkunBank.cpp
//Program untuk mendemonstrasikan kelas AkunBank.
#include
<iostream>
#include
<conio.h>
using namespace std;
class AkunBank
{
public:
//Tiga buah
konstruktor
AkunBank(int rupiah, int bonus, double
sukuBunga);
AkunBank(int rupiah, double sukuBunga);
AkunBank();
void perbarui( );
double get_saldo( );
double get_bunga( );
void keluaran(ostream& kel);
private:
double saldo;
double suku_bunga;
double pecahan(double persen);
};
int main( )
{
AkunBank
akun1(1000000, 2.3), akun2;
cout <<
"akun1 diinisialisasi sebagai
berikut:\n";
akun1.keluaran(cout);
cout <<
"akun2 diinisialisasi sebagai
berikut:\n";
akun2.keluaran(cout);
akun1 =
AkunBank(999999, 999, 5.5);
cout << "akun1 direset menjadi:\n";
akun1.keluaran(cout);
getch();
return 0;
}
AkunBank::AkunBank(int
rupiah, int bonus, double sukuBunga)
{
if ((rupiah < 0) || (bonus < 0)
|| (sukuBunga < 0))
{
cout <<
"Nilai ilegal untuk rupiah atau
sukuBunga.\n";
exit(1);
}
saldo = rupiah +
5*bonus;
suku_bunga =
sukuBunga;
}
AkunBank::AkunBank(int
rupiah, double sukuBunga)
{
if ((rupiah < 0) || (sukuBunga
< 0))
{
cout <<
"Nilai ilegal untuk rupiah atau
sukuBunga.\n";
exit(1);
}
saldo = rupiah;
suku_bunga =
sukuBunga;
}
AkunBank::AkunBank( ) : saldo(0), suku_bunga(0.0)
{}
void AkunBank::perbarui( )
{
saldo = saldo +
pecahan(suku_bunga)*saldo;
}
double AkunBank::pecahan(double nilai_persen)
{
return (nilai_persen /100.0);
}
double AkunBank::get_saldo( )
{
return saldo;
}
double AkunBank::get_bunga( )
{
return suku_bunga;
}
void AkunBank::keluaran(ostream& kel)
{
kel.setf(ios::fixed);
kel.setf(ios::showpoint);
kel.precision(2);
kel <<
"Saldo Akun Rp. "
<< saldo << endl;
kel <<
"Suku Bunga: " << suku_bunga << "%" <<
endl;
}
|
akun1 diinisialisasi sebagai berikut:
Saldo Akun Rp. 1000000.00
Suku Bunga: 2.30%
akun2 diinisialisasi sebagai berikut:
Saldo Akun Rp. 0.00
Suku Bunga: 0.00%
akun1 direset menjadi:
Saldo Akun Rp. 1004994.00
Suku Bunga: 5.50%
No comments:
Post a Comment