PENTING

::> UNTUK MENDWONLOAD SCRIB DARI PROGRAM Klik DISINI Jika Ada Masalah TINGGALKAN KOMENTAR ATO SMS KE 085278107723,0819932973008 ( AGAR LEBIH CEPAT DI TANGAPI ) DENGAN FORMAT :> , NAMA :> , NAMA PROGRAM :> , ALAMAT EMAIL :> , " TERIMAKASIH " MELIHAT DAFTAR PROGRAM KLIK DISINI

Sabtu, 21 Januari 2012

C++ Lanjutan 30


C++ Lanjutan 30

9.5 INHERITANCE ( PEWARISAN )

      C++ memungkinakan suatu kelas mewarisi data ataupun fungsi anggota kelas lain. Sifat seperti ini disebut pewarisan. Kelas uyang mewarisi sifat kelas lain disebut kelas turunan ( derived class ). Sedangkan kelas yang mewariskan sifat ke kelas lain lain disebut kelas dasar ( base class ).

        Untuk memahami tentang konsep pewarisan, marilah kita lihat contoh berikut ini.

#include <iostream.h>
#include <conio.h>

class Basis
{
   private :
    int alpha;
    int bravo;
   public :
    void info_basis()
    {
       cout<<”info_basis() dijalankan…”<<endl;
    }
  };

class Turunan : public Basis
{
   public :
    void info_turunan()
    {
        cout<<”info_turunan() dijalankan…”<<endl;
     }
  };

void main()
{
   clrscr();
   Turunan anak;
    anak.info_basis();
    anak.info_turunan();
}
Keluarannya :
info_basis() dijalankan…
info_turunan() dijalankan…

      Pada contoh diatas, terdapat kelas bernama Basis dan Turunan. Dalam hal ini :
·         Basis adalah kelas dasar
·         Turunan  adalah kelas turunan
Kelas Turunan mewarisi sifat-sifat dari kelas Basis .
Perhatikan pernyataan pada main() :

Turunan anak;
Anak.info_basis();

Sekalipun info_basis() dideklarasikan pada kelas Basis, ia juga diwariskan pada kelas Turunan. Namun bagaimana mekanisme pewarisannya? Jawaban dari pertanyaan ini terletak pada topik berikut.
Pada pendeklarasian kelas Turunan terdapat baris sebagai berikut :

Class Turunan : public Basis

Pada  baris ini terdapat kata-kata kunci tersebut pada konteks ini ? Untuk melihat kegunaan kata-kata kunci ini, perhatikan terlebih dulu program berikut.

#include <iostream.h>
#include <conio.h>

class Basis
{
   private :
    int alpha;
    int bravo;
   public :
    void info_basis()
    {
       cout<<”info_basis() dijalankan…”<<endl;
    }
  };

class Turunan : Basis
{
   public :
    void info_turunan()
    {
        cout<<”info_turunan() dijalankan…”<<endl;
     }
  };

void main()
{
   clrscr();
   Turunan anak;
    anak.info_basis();
    anak.info_turunan();
}

Perbedaan program di atas dengan program sebelumnya terletak pada kata-kunci public. Pada program diatas, kata kunci public pada baris yang berisi class Turunan dibuang.
Apabila program dikompilasi, kesalahan akan terjadi, yakni pada pernyataan :

anak.info_basis();

Kesalahan menyatakan bahwa Basis::info_basis() tidaklah dapat diakses pada main(). Lalu, apa artinya?

Bentuk seperti :

class Turunan : Basis

sebenarnya mempunyai makna yang sama dengan :

class Turunan : private Basis

Maksudnya yaitu semua anggota yang bersifat public ( dan juga protected ) pada kelas dasar ( Basis ) diwariskan ke kelas turunan ( Turunan ) sebagai anggota yang bersifat private.
Sedangkan kalau pewarisan dilakukan dengan public, semua anggota yang bersifat public pada kelas dasar diwariskan ke kelas turunan seperti apa adanya pada kelas basis.

^SELESAI^
Untuk yang mengikuti dari awal hingga akhir posting Dasar pemograman C++, Saya ucapkan terimakasih.

C++ Lanjutan 29



9.3 KONSTRUKTOR

      Konstruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelas. Kegunaannya :
  • Mengalokasikan ruang bagi sebuah objek
  • Memberikan nilai awal terhadap anggota data suatu objek
  • Membentuk tugas-tugas umum lainnya

Contoh :
#include <iostream.h>
class jumlah
{
   public:
    int jumlah1;
    int jumlah2;
    jumlah();
};

jumlah objek1,objek2;
void main()
{
   cout<<”Didalam main() \n”;
   cout<<”objek1.jumlah1 adalah “<<objek1.jumlah1<<endl;
   cout<<”objek1.jumlah2 adalah “<<objek1.jumlah2<<endl;
   cout<<”objek2.jumlah1 adalah “<<objek2.jumlah1<<endl;
   cout<<”objek2.jumlah2 adalah “<<objek2.jumlah2<<endl;
}

jumlah::jumlah()
{
   cout<<”Didalam jumlah() \n”;
}

Keluarannya :
Didalam jumlah()
Didalam jumlah()
Didalam main()
objek1.jumlah1 adalah 0
objek1.jumlah2 adalah 0
objek2.jumlah1 adalah 0
objek2.jumlah2 adalah 0

Kesimpulan :
·         Nama konstruktor sama dengan nama kelas
·         Konstruktor tidak mempunyai nilai balik
·         Konstruktor harus diletakkan di bagian public, coba saja anda meletakkan konstruktor dalam contoh diatas dibagian private.
·         Konstruktor dijalankan dengan sendirinya pada saat objek diciptakan ( dalam contoh diatas yaitu objek1 dan objek2). Bahkan konstruktor dijalankan sebelum fungsi main() dijalankan.


9.4 DESTRUKTOR

      Destruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelas ditambah symbol tilde ( ~ ) didepannya.


Contoh :
#include <iostream.h>
class jumlah
{
   public:
    int jumlah1;
    int jumlah2;
    ~jumlah();
};

jumlah objek1,objek2;
void main()
{
   cout<<”Didalam main() \n”;
   cout<<”objek1.jumlah1 adalah “<<objek1.jumlah1<<endl;
   cout<<”objek1.jumlah2 adalah “<<objek1.jumlah2<<endl;
   cout<<”objek2.jumlah1 adalah “<<objek2.jumlah1<<endl;
   cout<<”objek2.jumlah2 adalah “<<objek2.jumlah2<<endl;
}

jumlah::~jumlah()
{
   cout<<”Didalam jumlah() \n”;
}

Keluarannya :
Didalam main()
objek1.jumlah1 adalah 0
objek1.jumlah2 adalah 0
objek2.jumlah1 adalah 0
objek2.jumlah2 adalah 0
Didalam jumlah()
Didalam jumlah()

Kesimpulan :
·         Nama konstruktor sama dengan nama kelas ditambah tanda tilde ( ~ ) di depannya
·         Destruktor tidak mempunyai nilai balik
·         Destruktor harus diletakkan di bagian public, coba saja anda meletakkan destruktor dalam contoh diatas dibagian private.
·         Destruktor dijalankan dengan sendirinya pada saat objek akan sirna ( dalam contoh diatas yaitu objek1 dan objek2).

C++ Lanjutan 28



IX. KELAS

9.1 KELAS & STRUKTUR

      Kelas merupakan struktur data dari objek. Untuk menjelaskan tentang kelas, akan kita bandingkan bentuk antara struktur dan kelas.






BENTUK
KELAS
STRUKTUR

class nama_class
{
  private :
  anggota_data;
 
  public :
  fungsi_anggota;
 } ;
   


struct nama_struct
{
   anggota_data;
} ;

Terlihat perbedaan antara kelas dan struktur, yaitu :

PERBEDAAN
KELAS
STRUKTUR
Terdapat anggota data dan fungsi anggota. Anggota data biasanya berupa variabel dan fungsi anggota biasanya berupa fungsi.
Hanya terdapat anggota data
Terdapat kata-kata kunci private dan public yang menentukan hak akses bagi anggota-anggota di dalam kelas.
  • Private dapat digunakan di dalam kelas untuk memproteksi anggota-anggota tertentu dari kelas, agar tidak dapat diakses dari luar kelas secara langsung. Private merupakan default dari kelas.
  • Public mengizinkan anggota-anggota yang berada didalamnya bebas di akses dari luar kelas
Hak akses pada struktur sama seperti hak aksespublic pada kelas

9.2 KELAS SECARA UMUM

      Konsep penggabungan data dan fungsi seperti diatas disebut encapsulasi, yang diterapkan dalam C++ dengan tipe turunan.

Contoh Kelas :

1.  Fungsi didefinisikan di dalam kelas
    
     #include <iostream.h>
     #include <string.h>
     class penduduk
     {
        private:
           int id;
           char nama[80];
        public:
           void tampilkan(void)
            {
               cout<<”No. KTP : “<<id<<endl;
               cout<<”Nama    : “<<nama<<endl;
             }
       
         void set(int idn, char *n)
             {
               id = idn;
               strcpy(nama,n);
              }
       };
      
       void main()
       {
         penduduk saya;
         saya.set(1234,”Andi”);
         saya.tampilkan();
       }

2. Fungsi anggota didefinisikan diluar kelas

     #include <iostream.h>
     #include <string.h>
     class penduduk
     {
        private:
           int id;
           char nama[80];
        public:
            void tampilkan();
           void set(int idn, char *n);
       };
      
       void main()
       {
         penduduk saya;
         saya.set(1234,”Andi”);
         saya.tampilkan();
       }
       
       void penduduk :: tampilkan(void)
        {
           cout<<”No. KTP : “<<id<<endl;
            cout<<”Nama    : “<<nama<<endl;
         }
        void penduduk :: set(int idn, char *n)
         {
            id = idn;
            strcpy(nama,n);
          }

Keluaran kedua contoh diatas sama saja, yaitu :
No. KTP : 1234
Nama     : Andi

Penjelasan :
Saya merupakan objek dari class penduduk.Pada contoh 2 fungsi didefinisikan diluar, oleh karena itu pada pendefinisian fungsi harus memiliki bentuk :

      tipe_return_fungsi nama_kelas :: nama_fungsi (parameter)

Hal ini untuk memberitahu kompiler bahwa fungsi tersebut merupakan anggota dari kelas nama_kelas. Simbol ( :: ) merupakan operator resolusi lingkup.

C++ Lanjutan 27


C++ Lanjutan 27

8.2 UNION

Union menyerupai struktur, namun mempunyai perbedaan yang nyata. Union biasa dipakai untuk menyatakan suatu memori dengan nama lebih dari satu. Sebagai gambaran, sebuah union dideklarasikan sebagai berikut :

      union bila_bulat
      {
         unsigned int di;
        unsigned char dc[2];
      }

Pada pendeklarasian seperti ini, di dan dc menempati memori yang sama. Untuk lebih jelasnya, perhatikan contoh berikut :

Contoh :
#include <iostream.h>
#include <conio.h>
void main()
{
    union bil_bulat
    {
       unsigned int di;
       unsigned char dc[2];
    };


    bil_bulat bil;
    bil.di = 0x2345;
    cout<<setiosflags(ios::showbase);
    cout<<hex<<”di      : “<<bil.di<<endl;
    cout<<hex<<”dc[0] : “<<bil.dc[0]<<endl;
      cout<<hex<<”dc[1] : “<<bil.dc[1]<<endl;
    }

Keluarannya :
di      : 0x2345
dc[0] : 0x45
dc[1] : 0x23

Keterangan :
setiosflags(ios::showbase) mengembalikan basis hitung yang digunakan. Hex membuat basis hitung menjadi heksadesimal.

C++ Lanjutan 26



8.1.1 Array dari Struktur
      Array dari struktur dapat dideklarasikan seperti halnya pendeklarasian array biasa.

Bentuk : nama_array[index]. anggota_struktur;

Contoh :
#include <iostream.h>
void main()
{
   struct mahasiswa
   {
       long nim;
       int nilai;
   };
  
   mahasiswa teknik[3];
   teknik[0].nim = 19500376;
   teknik[0].nilai = 78;
   teknik[1].nim = 19500378;
   teknik[1].nilai = 71;
   teknik[2].nim = 19500276;
   teknik[2].nilai = 76;

   cout<<”NIM                             NILAI \n”;
   for(int n=0;n<3;n++)
   {
    cout<<teknik[n].nim<<”\t\t”<<teknik[n].nilai<<endl;
   }
 }

Keluarannya :
NIM                                  NILAI
19500376              78
19500378              71
19500276              76



8.1.2 Pointer Sebagai Anggota Struktur
          Anda dapat mempunyai karakter, integer, float bahkan pointer untuk dapat dijadikan sebagai tipe data anggota struktur.
Contoh :
#include <iostream.h>
void main()
{
      struct kuliah
      {
      char kuliah1[30];
      char kuliah2[30];
      struct kuliah *ptr;
       };

      kuliah semester[3] =
        {{"Komputer 207","Matematika 217",&semester[1]},
        {"Electronic 210","Sistem Kendali 303",&semester[2]},
       {"Analisis Numerik 301","Telekomunikasi 367",&semester[0]}};

  int n;
  for(n=0; n<3;n++)
  {
       cout<<"Isi sedang menujuk ke : ";
      cout<<semester[n].ptr->kuliah1<<endl;
  }
}

Keluarannya :
Isi sedang menunjuk ke : Electronic 210
Isi sedang menunjuk ke : Analisis Numerik 301
Isi sedang menunjuk ke :  Komputer 207

C++ Lanjutan 25



VIII. STRUKTUR & UNION

8.1 STRUKTUR

      Array adalah kumpulan elemen yang bertipe sama. Tetapi struktur memudahkan Anda untuk mengumpulkan variable dengan tipe yang berbeda di dalam satu nama. Fasilitas ini memungkinkan kita untuk melayani sekumpulan data yang rumit sebagai satuan tunggal
      Suatu struktur dinyatakan dengan kata kunci struct, daftar pernyataan variable yang disebut anggota, yang terlampir dalam tanda kurung { }. Tiap pernyataan anggota dan struktur harus berakhir dengan semicolon ( ; ).
     
      Bentuk  deklarasi struktur :
    
      Struct nama_struct
      {
         anggota_struktur ;
      } ;

Apabila suatu struktur telah dideklarasikan, struktur ini dapat digunakan untuk mendefinisikan suatu varibel, misalnya :
    
      nama_struct  variabel_struktur;

merupakan pendefinisian varibel variabel_struktur dengan tipe structur nama_struct.
      Anggota struktur dapat diakses dengan menggunakan bentuk :

      variabel_struktur.anggota

Contoh :
#include <iostream.h>
void main()
{
   struct keluarga
   {
       char suami[15];
       char istri[15];
       int jumlah_anak;
   };

  keluarga Andi = {“Andi”,”Nina”,3};
  keluarga Budi = {“Budi”,”Ana”,5};
  cout<<”Jumlah anak Bapak Andi “<<Andi.jumlah_anak<<endl;
  cout<<”Istri Bapak Budi ialah “<<Budi.istri<<endl;
}
Keluarannya :
Jumlah anak Bapak Andi 3
Istri Bapak Budi ialah Ana

Perhatikan bahwa pada akhir dari struct diberi tanda semicolon.