Struktur Dan Class

38
Struktu r

description

structure and class data

Transcript of Struktur Dan Class

Page 1: Struktur Dan Class

Struktur

Page 2: Struktur Dan Class

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

Page 3: Struktur Dan Class

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

Page 4: Struktur Dan Class

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

Page 5: Struktur Dan Class

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

Page 6: Struktur Dan Class

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

Page 7: Struktur Dan Class

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

Page 8: Struktur Dan Class

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

Page 9: Struktur Dan Class

Class

Penggunaan private digunakan pada kelas untuk memproteksi anggota-anggota tertentu pada

kelas, agar tidak dapat diakses di luar kelas secara langsung

Page 10: Struktur Dan Class

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;

}

Page 11: Struktur Dan Class

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

Page 12: Struktur Dan Class

#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

Page 13: Struktur Dan Class

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

}

Page 14: Struktur Dan Class

Konstruktor dan Destruktor

Page 15: Struktur Dan Class

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

Page 16: Struktur Dan Class

Konstruktor

Nama konstruktor sama dengan nama class

Konstruktor tidak mempunyai nilai balik (bahkan tanpa void)

Konstruktor harus diletakkan di bagian public

Page 17: Struktur Dan Class

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

Page 18: Struktur Dan Class

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

Page 19: Struktur Dan Class

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;

}

Page 20: Struktur Dan Class

Membuat header sendiri

Jika suatu class ingin digunakan pada sejumlah program, akan lebih baik jika class didefinisikan sebagai file atau header yg terpisah seperti :

Page 21: Struktur Dan Class

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

Page 22: Struktur Dan Class

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

Page 23: Struktur Dan Class

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

Page 24: Struktur Dan Class

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

Page 25: Struktur Dan Class

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

Page 26: Struktur Dan Class

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

Page 27: Struktur Dan Class

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

Page 28: Struktur Dan Class

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

Page 29: Struktur Dan Class

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

}

Page 30: Struktur Dan Class

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)

Page 31: Struktur Dan Class

Sifat A Sifat A

Sifat BSifat B

Sifat C

Sifat yg di wariskan

Sifat spesifikClass dasar

Class turunan

Page 32: Struktur Dan Class

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

Page 33: Struktur Dan Class

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

Page 34: Struktur Dan Class

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

Page 35: Struktur Dan Class

class dasar

class Turunan 1

class Turunan 2

pointer

PointerDapatMenunjukKe objectBer kelasturunan

Pointer didefinisikanMenunjuk kelas dasar

Page 36: Struktur Dan Class

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

Page 37: Struktur Dan Class

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

Page 38: Struktur Dan Class

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