Struktur Dan Class
-
Upload
alia123456 -
Category
Documents
-
view
222 -
download
0
description
Transcript of Struktur Dan Class
Struktur
StrukturDigunakan untuk mengelompokkan data dengan type yg berbedadalam beberapa bahasa pemrograman biasa nya disebut sebagai recordcontoh :
struct data_tanggal{
int tahun ;int bulan ;int tanggal ;
} ;
data_tanggal adalah nama dari struktur yg di buat dan tahun
bulantanggal
disebut sebagai anggota dari struktur data_tanggal
Struktur
Untuk mendefinisikan struct variable-name di gunakan cara seperti mendefinisikan typa data
data_tanggal tgl_lahir
data_tanggal adalah nama struktur nya tgl_lahir adalah variabel-name dari data_tanggal
jadi tgl_lahir mempunyai 3 anggota yaitu : tahun,bulan,tanggal
untuk mengakses nya di gunakan dot operator seperti tgl_lahir.tahun
tgl_lahir.bulantgl_lahir.tanggal
Struktur
dapat pula suatu struktur berada dalam struktur misal
struct data_pegawai{
int nip ;char nama[25];data_tanggal tgl_lahir;
} rec_peg ;
jadi untuk mengakses nya
rec_peg.niprec_peg.namarec_peg.tgl_lahir.tahunrec_peg.tgl_lahir.bulanrec_peg.tgl_lahir.tanggal
ClassKelas merupakan struktur data dari objek yg mirip
dengan strukturstruct buku
{char judul[20];char pengarang[20];
int jumlah;} ;
class Buku{
public :char judul[20];char pengarang[20];
int jumlah;} ;
#include <iostream.h>#include <string.h>
struct buku {char judul[20];char pengarang[20];
int jumlah;} ;
int main(){
buku novel ; // pendefinisian var struktur
strcpy(novel.judul, "Ramayana");strcpy(novel.pengarang, "Narayan");novel.jumlah = 12;
cout << novel.judul << endl;cout << novel.pengarang << endl;cout << novel.jumlah << endl;
return 0;}
#include <iostream.h>#include <string.h>
class Buku {public :char judul[20];char pengarang[20];
int jumlah;} ;
int main(){Buku novel ; // pendefinisian var struktur
strcpy(novel.judul, "Ramayana");strcpy(novel.pengarang, "Narayan");novel.jumlah = 12;
cout << novel.judul << endl;cout << novel.pengarang << endl;cout << novel.jumlah << endl;
return 0;}
#include <iostream.h>#include <string.h>
class Buku{private :char judul[20];char pengarang[20];int jumlah;
public :void inisialisasi(char *Judul, char *Pengarang, int Jumlah)
{strcpy(judul, Judul);strcpy(pengarang, Pengarang);jumlah = Jumlah;}
void info(){cout << "Judul : " << judul << endl;cout << "Pengarang : " << pengarang << endl;cout << "Jumlah : " << jumlah << endl;}} ; // end class
int main() {Buku novel ; // pendefinisian var struktur (object)novel.inisialisasi("Ramayana", "Narayan", 12);novel.info();return 0;}
Class
Penggunaan private digunakan pada kelas untuk memproteksi anggota-anggota tertentu pada
kelas, agar tidak dapat diakses di luar kelas secara langsung
Contoh perhitungan luas segi empat
class area { private:
float a, b, c;public:
float x, y ;area (float x, float y) //konstruktor{a = x; b = y; cout << "harga a : " << a << endl; cout << "harga b : " << b << endl << endl;} ; // fungsi utk cetak hrg parameter~area() //destruktor{
cout << "Stop " << endl;};
void hasil (){ c = a * b; cout << "Hasil : " << c << endl;}
};
int main() {
area luas(2, 4.5);luas.hasil();return 0;
}
Membuat header// penulisan class sebagai header// harus didahului dengan statement #ifndef// dan diakhiri dengan #endif// disini digunakan konstruktor// nama konstruktor harus sama dengan nama class// konstruktor tidak mempunyai nilai balik termasuk tanpa void// dan harus diletakkan pada area public
#ifndef __luas#define __luas....#endif
#ifndef __luas#define __luas
class area { private: float a, b, c;
public: float x, y ; area (float x, float y) //konstruktor
{a = x;b = y;cout << "harga a : " << a << endl;cout << "harga b : " << b << endl << endl;} ; // fungsi utk cetak hrg parameter
~area() //destruktor{cout << "Stop " << endl;};
void hasil () { c = a * b; cout << "Hasil : " << c << endl; } };#endif
// Program untuk menghitung luas segi empat// dengan menggunakan class
#include <iostream.h>#include <math.h>#include "luas.h"
int main() {
area luas(2, 4.5);luas.hasil();return 0;
}
Konstruktor dan Destruktor
Konstruktor
adalah suatu fungsi anggota yg mempunyai nama yg sama dengan nama class.kegunaan nya :- mengalokasikan ruang bagi sebuah object- memberi nilai awal thd anggota data sebuah object- membentuk tugas tugas umum lainnyacontoh:class kompleks {
private: double re;
double im public:
Kompleks(); void info(); };
Konstruktor
Nama konstruktor sama dengan nama class
Konstruktor tidak mempunyai nilai balik (bahkan tanpa void)
Konstruktor harus diletakkan di bagian public
class Kompleks{ private:
double x, y ;
public:Kompleks(); // konstruktor (tanpa type data)void info();
};
int main(){ Kompleks p ; //mendefinisikan object p
p.info();
return 0;}
//definisi fungsi anggota class KompleksKompleks::Kompleks(){ cout << "konstruktor dijalankan ...." << endl;
x = 5.2;y = 7.9;
}
void Kompleks::info(){ cout << "harga x : " << x << endl;
cout << "harga y : " << y << endl;}
konstruktor dijalankan ....harga x : 5.2harga y : 7.9
class Kompleks{ private:
double x, y ;
public:Kompleks(); // konstruktor (tanpa type data)~Kompleks(); // dekonstruktorvoid info();
};
int main(){ Kompleks p ; //mendef object p
p.info();
return 0;}
//definisi fungsi anggota class KompleksKompleks::Kompleks(){ cout << "konstruktor dijalankan ...." << endl;
x = 5.2;y = 7.9;
}Kompleks::~Kompleks(){ cout << "Destruktor jalan.... proses selesai";}
void Kompleks::info(){ cout << "harga x : " << x << endl;
cout << "harga y : " << y << endl;}
konstruktor dijalankan ....harga x : 5.2harga y : 7.9Destruktor jalan.... proses selesai
class Buku{ private :
char judul[20];char pengarang[20];int jumlah;public :Buku(char *Judul * char *Pengarang,int Jumlah) ;~Buku();void info() ;
} ;
int main(){ Buku novel("Ramayana", "Narayan", 12);
novel.info();return 0;
}
Buku::Buku(char *Judul, char *Pengarang,int Jumlah)
{ strcpy(judul, Judul);strcpy(pengarang, Pengarang);jumlah = Jumlah;
}Buku::~Buku(){ cout << "Selesai... " << endl; }void Buku::info(){ cout << "Judul : " << judul << endl;
cout << "Pengarang : " << pengarang << endl;cout << "Jumlah : " << jumlah << endl;
}
Membuat header sendiri
Jika suatu class ingin digunakan pada sejumlah program, akan lebih baik jika class didefinisikan sebagai file atau header yg terpisah seperti :
// membuat file class sebagai header (buku.h)#ifndef __buku#define __bukuclass Buku{ private :
char judul[20];char pengarang[20];int jumlah;public :Buku(char *Judul, char *Pengarang,
int Jumlah){ strcpy(judul, Judul);
strcpy(pengarang, Pengarang);jumlah = Jumlah;
}void info(){ cout << "Judul : " << judul << endl;
cout << "Pengarang : " << pengarang << endl;cout << "Jumlah : " << jumlah << endl;
}} ;#endif
#include <iostream.h>#include <string.h>#include "buku.h">
int main(){ Buku novel("Ramayana", "Narayan", 12);
// novel didefinisikan sebagai class Buku// langsung di beri hargaBuku fiksi("Jurassic Parc", "Michael Crichton", 3);
novel.info();fiksi.info();
return 0;}
Jika class buku dibuat sebagai prototype
// membuat file class sebagai header#ifndef __buku1#define __buku1
class Buku{ private :
char judul[20];char pengarang[20];int jumlah;
public :Buku(char *Judul, char *Pengarang,
int Jumlah) ;
void info();
} ;#endif
#include <iostream.h>#include <string.h>#include "buku1.h">Buku::Buku(char *Judul, char *Pengarang,
int Jumlah){ strcpy(judul, Judul); strcpy(pengarang, Pengarang); jumlah = Jumlah;}void Buku::info(){ cout << "Judul : " << judul << endl; cout << "Pengarang : " << pengarang << endl; cout << "Jumlah : " << jumlah << endl;}int main()
{ Buku novel("Ramayana", "Narayan", 12);// novel didefinisikan sebagai class Buku// langsung di beri hargaBuku fiksi("Jurassic Parc", "Michael Crichton", 3);
novel.info();fiksi.info();
return 0;}
Class object local dan global
Sebuah object dapat didefinisikan seperti variabel local dan global
Sebuah object disebut sebagai object global jika didefinisikan di luar fungsi
class Kata{ private:
char nama[20];public:Kata (char *nama); // konstruktor~Kata() ; // destruktor
} ;Kata p("p"); // object globalint main(){ cout << " awal fungsi .... "<< endl;
Kata x("x"); // definisikan var anggota x berisi xxxxKata y("y"); // definisikan var anggota y berisi yyyycout << " akhir fungsi ...." <<endl;return 0;
}// definisi fungsi anggotaKata::Kata(char *nama){ strcpy(Kata::nama, nama); cout << "konstruktor object " << Kata::nama << endl;}
Kata::~Kata(){ cout << "destruktor object " << endl;}
konstruktor object p awal fungsi ....konstruktor object xkonstruktor object y akhir fungsi ....destruktor objectdestruktor objectdestruktor object
Class object local dan global
Jika suatu object didefinisikan secara global, maka konstruktor tersebut akan dilaksanakan sebelum fungsi main() di proses
Jika suatu object didefinisikan secara local, maka konstruktor akan dilaksanakan saat object bersangkutan di ciptakan
Destruktor object local akan dilaksanakan saat fungsi yg mendefinisikan berakhir
Destruktor object global akan dilaksanakan saat fungsi main() berakhir
Pointer ke obj dan obj dynamic
Jika kita bermaksud mendefinisikan sebuah pointer untuk menunjuk ke suatu object, maka pernyataan nya
Buku *nonfiksi Jika pointer nonfiksi diinginkan untuk menunjuk suatu object
berkelas Buku, pernyataan nya
nonfiksi = new Buku(“Turbo C++”, “Borland”, 5)
Untuk mengakses digunakan operator -> untuk mengganti . (dot)
nonfiksi->info() ;
atau
(*nonfiksi). Info();
#include <iostream.h>#include <string.h>#include "buku1.h">
Buku::Buku(char *Judul, char *Pengarang,int Jumlah){ strcpy(judul, Judul);
strcpy(pengarang, Pengarang);jumlah = Jumlah;
}
void Buku::info(){ cout << "Judul : " << judul << endl;
cout << "Pengarang : " << pengarang << endl;cout << "Jumlah : " << jumlah << endl;
}int main()
{ Buku *nonfiksi;nonfiksi = new Buku("Programming C", "Borland", 3);nonfiksi->info(); // atau(*nonfiksi).info();return 0;
}
Inheritance (pewarisan)
Dalam C++ dimungkinkan untuk mewariskan class atau fungsi ke kelas atau fungsi lain
Sifat ini disebut pewarisan (Inheritance) Class yg mewarisi sifat kelas lain disebut
turunan (derived clas)Class yg mewariskan sifat ke kelas lain
disebut class dasar (base class)
Sifat A Sifat A
Sifat BSifat B
Sifat C
Sifat yg di wariskan
Sifat spesifikClass dasar
Class turunan
class Buku{ private :
char judul[20];char pengarang[20];int jumlah;public :void inisialisasi(char *Judul, char *Pengarang,
int Jumlah){ strcpy(judul, Judul);
strcpy(pengarang, Pengarang);jumlah = Jumlah;
}void info(){ cout << "Judul : " << judul << endl;
cout << "Pengarang : " << pengarang << endl;cout << "Jumlah : " << jumlah << endl;
}} ;
class Turunan : public Buku{ public:
void info_turunan(){ cout<<"info turunan di jalankan....." << endl;}
};int main(){ Buku novel ; // pendefinisian var novel sbg class Buku
novel.inisialisasi("Ramayana", "Narayan", 12);novel.info();Turunan anak;anak.info_turunan();anak.inisialisasi("C++", "Borland", 5);anak.info();return 0;
}
Judul : RamayanaPengarang : NarayanJumlah : 12info turunan di jalankan.....Judul : C++Pengarang : BorlandJumlah : 5
class Kendaraan{ private:
char nama[15];public:Kendaraan(char *nama_kendaraan = "XXX"){ strcpy(nama, nama_kendaraan);
cout << "Hidupkan kendaraan anda..." << endl;}~Kendaraan(){ cout << "Matikan mesin kendaraan anda..." << endl;}
void info_kendaraan(){ cout << nama << " sedang berjalan .." << endl;}
};
class Truk : public Kendaraan{ public:
Truk(char *nama_truk) : Kendaraan(nama_truk) { cout << "Hidupkan mesin truk ... " << endl;}~Truk(){ cout << "Matikan mesin truk..." << endl;}
};
int main(){ Truk fuso("Truk Fuso");
fuso.info_kendaraan();cout << "Akhir program... " <<endl;return 0;
}
Hidupkan kendaraan anda...Hidupkan mesin truk ...Truk Fuso sedang berjalan ..Akhir program...Matikan mesin truk...Matikan mesin kendaraan anda...
Polymorphism
Suatu fungsi anggota dari suatu class dapat dijadikan sebagai fungsi virtual
Jika fungsi ini dideklarasikan kembali pada class turunan dan suatu pointer yg menunjuk kelas dasar diciptakan, pointer dapat memilih object yg tepat, sekiranya fungsi anggota tersebut dipanggil via pointer
class dasar
class Turunan 1
class Turunan 2
pointer
PointerDapatMenunjukKe objectBer kelasturunan
Pointer didefinisikanMenunjuk kelas dasar
class Mahluk{ public:
void informasi(){ cout << "informasi pd mahluk..."<<endl;}virtual void keterangan(){cout<< "keterangan pada mahluk...." <<endl;}
};
class Mamalia : public Mahluk{ public:
void informasi(){cout << "informasi pada mamalia..." << endl;}void keterangan(){cout << "keterangan pada mamalia.... " << endl;}
};
class Sapi : public Mamalia{ public:
void informasi(){cout << "informasi pd sapi..." << endl;}void keterangan(){cout << "keterangan pada Sapi ... " << endl;}
};
int main(){ Mamalia mamalia; // definisikan obj mamalia
Sapi sapi_sumba; // def sapi_sumbaMahluk *binatang; // def pointer ke obj berkelas mahluk
binatang = &mamalia ;binatang->informasi();binatang->keterangan();
cout <<"=====================" << endl; binatang = &sapi_sumba; binatang->informasi(); binatang->keterangan(); return 0;
}
informasi pd mahluk...keterangan pada mamalia....=====================informasi pd mahluk...keterangan pada Sapi ...
Template fungsi dan class
Template sering disebut sebagai blue print, yang berfungsi untuk mendupilkasikan sesuatu
Template fungsi sangat bermanfaat untuk fungsi yg menangani tugas yg sama hanya berbeda pada type datanya
//awal templatetemplate <class T>void tukar (T &x, T &y){ T temp;
temp = x;x = y ;y = temp ;
} // akhir template
// prototype fungsivoid tukar (int &x, int &y);void tukar (double &x, double &y);
int main(){ double p = 12.345;
double q = 98.765;cout << "p = "<< p << " q = " << q << endl;tukar (p, q);cout << "p = "<< p << " q = " << q << endl;
int a = 55;int b = 88;cout << "a = "<< a << " b = " << b << endl;tukar (a, b);cout << "a = "<< a << " b = " << b << endl;return 0;
}
p = 12.345 q = 98.765p = 98.765 q = 12.345a = 55 b = 88a = 88 b = 55