SlideShare une entreprise Scribd logo
1  sur  7
Modul Praktikum Dasar Pemrograman C++     2010




                                                                             MODUL 13
                                                                                 CLASS

a. Konsep Class

               Dalam pemrograman berorientasi objek (OOP) class merupakan bangunan
      yang menjadi cetak biru untukpembuatan objek dari class. Dalam pemrograman
      terstruktur class direpresentasikan sebagai struct. Bedanya, jika struct dapat
      didefinisikan di dalam atau di luar fungsi dan dipanggil secara langsung dengan
      menyebutkan nama struct dan field anggotanya maka pada class pengaksesan dan
      hak akses terhadap anggota-anggota classnya bergantung pada mode pengaksesan
      yang diberikan terhadap class tersebut.
               Class didefinisikan tepat di bawah header sebelum semua fungsi dibuat.
      Secara default mode akses class bersifat private, kecuali jika didefinisikan sendiri oleh
      pemrogram.
               Class memiliki tiga mode pengaksesan:
       1. Public
                   Class dengan mode pengaksesan public mengijinkan object untuk
          mengakses anggota class dari luar.
                   Untuk lebih jelasnya perhatikan contoh class di bawah ini:

          #include <cstdlib>
          #include <iostream>
          using namespace std;

          class person                //penulisan class = struct
          {
              public:                 //anggota yang bersifat public definisikan disini
              char nama[15];
              int usia;
              void tambah_data();     //anggota class dapat berupa var dan fungsi
          };
          void tampilkan (person orang); //prototipe fungsi global
          int main()
          {
            person orang;              //pemanggilan class di main() = pemanggilan struct
            orang.tambah_data();       //pemanggilan fungsi class di main
            tampilkan(orang);          //pemanggilan fungsi di luar class

              system("PAUSE");
              return EXIT_SUCCESS;
          }

 86     AndanSperrow. – UNP KEDIRI
Modul Praktikum Dasar Pemrograman C++    2010




        void person::tambah_data()              // pemanggilan fungsi anggota class
        {
           printf ("Nama: "); gets (nama);
           printf ("Usia: "); scanf ("%d", &usia);
        }

        void tampilkan (person orang)          //fungsi global tanpa nilai pengembalian
        {
           printf ("Nama yang diinputkan: %s n", orang.nama);
           printf ("Usia %s : %d tahun n", orang.nama, orang.usia);
        }


             Analisis:

               Pada contoh program di atas class person memiliki anggota class yang dapat
     diakses secara public. Anggota class person terdiri dari variabel nama dan usia
     dengan tipe data char[15] dan int. Selain dua anggota class yang berupa variabel,
     class person juga memiliki anggota class yang berupa fungsi, yaitu fungsi
     tambah_data. Karena fungsi tambah_data bersifat public juga maka dia dapat
     langsung mengakses semua variabel anggota class person yang bersifat public juga
     (lihat void person::tambah_data()).
               Berikutnya seperti biasa jika kita menuliskan listing program menggunakan
     beberapa fungsi hal yang harus dilakukan adalah mendefinisikan prototipe fungsi
     yang ada di dalam program pada baris sebelum main (lihat void tampilkan (person
     orang);), namun pendefinisian prototipe tidak berlaku pada fungsi yang menjadi
     anggota dari class karena prototipe fungsi telah didefinisikan di dalam class (lihat
     void tambah_data(); yang berada di dalam class person).
               Untuk pemanggilan fungsi yang berada di luar fungsi main() seperti biasa
     kita tinggal memanggil nama fungsi dan parameternya. Perbedaan baru akan terjadi
     jika kita mengakses fungsi yang merupakan fungsi anggota, karena pengaksesan
     fungsi akan diperlakukan seperti field/anggota class meskipun bentuknya adalah
     fungsi (lihatorang.tambah_data(); pada fungsi main()).
               Untuk pendefinisian kerja fungsi yang menjadi fungsi anggota suatu class
     digunakan operator skop (tanda ::). Operator skop yang terletak sebelum nama
     fungsi berarti fungsi tambah_data merupakan milik dari class person sehingga
     memiliki hak untuk mengakses semua anggota class person yang bersifat sama.




87     AndanSperrow. – UNP KEDIRI
Modul Praktikum Dasar Pemrograman C++   2010



     2. Private
                Anggota class hanya dapat diakses dari anggota yang lain yang berada di
        dalam class yang sama maupun friend-nya.
                Perhatikan contoh program di bawah ini:
          #include <cstdlib>
          #include <iostream>
          #include <string.h>

          using namespace std;
          class person
          {
              private:
               char nama[15];
               int usia;
              public:
               void tambah(char a[15], int &b);
               void input (char *name, int age)       //fungsi untuk mengakses var private
               {
                 strcpy (nama, name);
                 usia=age;
               }
               void output();
          };

          int main(int argc, char *argv[])
          { person orang; char *A;
            char a[15];
            int b;
            A=&a[0];
            orang.tambah(a, b);
            orang.input (A, b);
            orang.output();

              system("PAUSE");
              return EXIT_SUCCESS;
          }

          void person::tambah(char a[15], int &b)
          { person orang;
            printf ("Nama: "); gets (a);
            printf ("Umur: "); scanf ("%d", &b);
          }

          void person::output()
          {
             printf ("Info Data Personalia n");
             printf ("Nama: %s n", nama);
             printf ("Usia: %d n", usia);
          }

88    AndanSperrow. – UNP KEDIRI
Modul Praktikum Dasar Pemrograman C++   2010



      3. Protected
                 Anggota class dapat diakses dari anggota lain yang berada di dalam class
         yang sama, friend, dan turunannya.

b. Constructor Destructor

               Constructor merupakan type khusus dari suatu subroutine yang dipanggil
      pada saat penciptaan objek dari suatu class. Selain bertugas mempersiapkan objek
      baru constructor juga menerima parameter untuk menginisialisasi setiap anggota
      variabel ketika objek baru dari sebuah class diciptakan. Nama constructor harus sama
      dengan nama classnya.

                Kebalikan dari constructor adalah destructor. Jika constructor dipanggil pada
      saat penciptaan objek dari suatu class, destuctor dipanggil pada saat objek dari suatu
      class akan dihancurkan. Pendeklarasian destructor diawali dengan tanda tilde ~
      diikuti oleh nama objek yang telah di-construct.

               Constructor dan destructor akan otomatis dijlnkan pada saat objek class
      diciptakan. Tidak bertipe walaupun void sekalipun dan tdk punya return value.

              Contoh penggunaan constructor dan destructor dalam class dapat dilihat
      pada contoh program di bawah ini:

              Contoh program         menghitung     luas   persegi    panjang   menggunakan
      constructor class:

            #include <cstdlib>
            #include <iostream>

            using namespace std;

            class Persegi_Panjang
            {
                 private:
                    int pjg, lbr;

                 public:
                   Persegi_Panjang (int a,int b);   //constructor class
                   int area ()
                   {
                         return (pjg*lbr);
                   }
            };




 89     AndanSperrow. – UNP KEDIRI
Modul Praktikum Dasar Pemrograman C++       2010



            Persegi_Panjang::Persegi_Panjang (int a, int b)
            {
               printf ("Input panjang: "); scanf ("%d", &a);
               printf ("Input lebar: "); scanf ("%d", &b);

                pjg = a;
                lbr = b;
            }

            int main ()
            { int a; int b;

                Persegi_Panjang luas (a,b);
                printf("luas persegi: %d n" , luas.area());

                system("PAUSE");
                return EXIT_SUCCESS;
            }


     Analisis:

              Pada program penghitung luas persegi panjang di atas class Persegi_Panjang
     memiliki constructor class yang berfungsi menginisialisasi data input ke dalam
     variabel pjg dan lbr yang memiliki hak akses private. Oleh fungsi area data yang
     diinputkan user akan dihitung luasnya dan nilai hasilnya akan dikembalikan ke dalam
     fungsi area dengan nilai return bertipe integer.Pada fungsi main() kegiatan yang
     dijalankan berupa pemanggilan constructor class dan meminta hasil perhitungan luas
     untuk ditampilkan.

             Contoh program menghitung                     luas    persegi    panjang   menggunakan
     constructor dan destructor class:

       #include <cstdlib>
       #include <iostream>
       #include <conio.h>
       using namespace std;

       class Persegi_Panjang
       {
            private:
                 int *width, *height;              //jika variabel akan di-destroy pada akhir program
                                                   //maka var dilewatkan sebagai var pointer
                public:
                     Persegi_Panjang (int a,int b);
                     ~Persegi_Panjang();
                     int area ()
                     { return (*width * *height);      }       //jika pake destructor
       };

90     AndanSperrow. – UNP KEDIRI
Modul Praktikum Dasar Pemrograman C++   2010



        Persegi_Panjang::Persegi_Panjang (int a, int b)
        {
            printf ("Input panjang: "); scanf ("%d", &a);
            printf ("Input lebar: "); scanf ("%d", &b);

             //jika pake constructor dan destructor
             //width dan height dilewatkan sebagai pointer
             //sehingga perlu dibuat inisialisasi memory dinamic dengan new

             width=new int;
             height=new int;

             *width=a;
             *height=b;
        }

        //destructor akan otomatis dijalankan tanpa harus dipanggil
        //oleh fungsi main()

        Persegi_Panjang::~Persegi_Panjang()
        {
            //proses penghancuran variabel pointer width dan height

             delete width;
             delete height;
             printf ("variabel panjang dan lebar telah dihancurkan n");

             //lihat isi variabel panjang dan lebar setelah proses destruct

             printf ("Isi panjang: %d n Isi lebar: %d n", width, height);
             getch();
        }

        int main ()
        {    int a; int b;

             Persegi_Panjang rect (a,b);
             printf("luas persegi: %d n" , rect.area());
        }



              Analisis:

              Listing program diatas sebenarnya sama dengan contoh program
     sebelumnya, perbedaannya hanya pada penggunaan destructor yang digunakan
     untuk menghapus space memory yang digunakan untuk menyimpan data width dan
     height. Constructor dan destructor class didefinisikan di dalam class Persegi_Panjang
     dan bersifat public.


91     AndanSperrow. – UNP KEDIRI
Modul Praktikum Dasar Pemrograman C++    2010



              Jika pada contoh program sebelumnya variabel pjg dan lbr didefinisikan
     sebagai tipe data dasar maka berbeda dengan contoh program diatas pendefinisian
     variabel private width dan height menggunakan variabel pointer. Hal ini dilakukan
     karena variabel yang dapat di-destroy hanya variabel yang bersifat dinamis semisal
     pointer sehingga pada saat penciptaan class yang di dalamnya berisi proses input
     data, alamat variabel a dan b akan ditangkap oleh pointer width dan height setelah
     pengalokasian memory dilakukan.

             Proses destructor class akan dijalankan secara otomatis oleh program untuk
     membebaskan kembali memory yang dipakai untuk menyimpan nilai width dan
     height ke dalam heap sehingga memory kosong dapat digunakan untuk kegiatan
     komputasi yang lain.

             Pada program di atas, perintah: printf ("Isi panjang: %d n Isi lebar: %d n",
     width, height);hanya untuk menguji nilai width dan height setelah isi variabel width
     dan height dibebaskan sehingga hasil outputnya dapat berupa alamat acak di
     memory dan akan menghasilkan nilai yang berbeda pada tiap PC tergantung ruang
     kosong yang diakses variabel di memory.



     TUGAS:
     1. Bagaimana listing program pada contoh 1 diatas jika proses input dilakukan pada
        saat class diciptakan? (clue: gunakan constructor class untuk inisialisasi dan input
        data)
     2. Modifikasi listing program no.1 sehingga pada saat akhir proses dilakukan
        pembebasan memory.
     3. Tambahkan fungsi untuk menghitung masa produktif user jika masa produktif
        seseorang mulai menurun pada usia 40 tahun. Tampilkan pesan “Usia produktif
        Anda telah berakhir n tahun yang lalu ” jika usia yang diinputkan >40 tahun, dan
        minta user untuk mengulang input usia jika usia yang diinputkan <5 atau >99.




92     AndanSperrow. – UNP KEDIRI

Contenu connexe

Tendances

Modul prak2 constructor dan overloading
Modul prak2   constructor dan overloadingModul prak2   constructor dan overloading
Modul prak2 constructor dan overloadingwahyuniwulan
 
pengenalan c+
pengenalan c+pengenalan c+
pengenalan c+aks247
 
Harimurti class
Harimurti classHarimurti class
Harimurti classNovi4nt0
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Melina Krisnawati
 
Pbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan intePbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan inteSmkn-2 Pekanbaru
 
Konsep Inheritance
Konsep InheritanceKonsep Inheritance
Konsep InheritanceRiski_kiki
 
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan InterfaceJeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan InterfaceIndividual Consultants
 
Cara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaCara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaDevandy Enda
 
Pert 4. class dan objek
Pert 4. class dan objekPert 4. class dan objek
Pert 4. class dan objekradar radius
 
contoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyacontoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyastephan EL'wiin Shaarawy
 
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekLaporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekKuncara Laksana
 
Pelajaran oop java ii pengertian method dan cara pembuatan method by hermawan
Pelajaran oop java ii pengertian method dan cara pembuatan method by hermawan Pelajaran oop java ii pengertian method dan cara pembuatan method by hermawan
Pelajaran oop java ii pengertian method dan cara pembuatan method by hermawan hermawanawang
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.8-9)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.8-9)Modul Praktikum Pemrograman Berorientasi Objek (Chap.8-9)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.8-9)Debby Ummul
 
Modul pratikum pbo - Polimorphism
Modul pratikum pbo - PolimorphismModul pratikum pbo - Polimorphism
Modul pratikum pbo - Polimorphismrahmantoyuri
 
Modul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONModul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONrahmantoyuri
 
Modul pratikum pbo - inheritance
Modul pratikum pbo - inheritanceModul pratikum pbo - inheritance
Modul pratikum pbo - inheritancerahmantoyuri
 

Tendances (19)

Modul prak2 constructor dan overloading
Modul prak2   constructor dan overloadingModul prak2   constructor dan overloading
Modul prak2 constructor dan overloading
 
Materi delphi
Materi delphiMateri delphi
Materi delphi
 
pengenalan c+
pengenalan c+pengenalan c+
pengenalan c+
 
Harimurti class
Harimurti classHarimurti class
Harimurti class
 
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
Java (Netbeans) - Class, Constructor, Object (Object Oriented Programming)
 
Pbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan intePbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan inte
 
9150 8 interface
9150 8  interface9150 8  interface
9150 8 interface
 
Konsep Inheritance
Konsep InheritanceKonsep Inheritance
Konsep Inheritance
 
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan InterfaceJeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
Jeni Intro1 Bab11 Pewarisan, Polimorfisme, Dan Interface
 
Cara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaCara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada java
 
Overridung polymorphism
Overridung polymorphismOverridung polymorphism
Overridung polymorphism
 
Pert 4. class dan objek
Pert 4. class dan objekPert 4. class dan objek
Pert 4. class dan objek
 
contoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnyacontoh Program sederhana Java dan penjelasan programnya
contoh Program sederhana Java dan penjelasan programnya
 
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis ObjekLaporan Modul 1 Praktikum Pemrograman Berbasis Objek
Laporan Modul 1 Praktikum Pemrograman Berbasis Objek
 
Pelajaran oop java ii pengertian method dan cara pembuatan method by hermawan
Pelajaran oop java ii pengertian method dan cara pembuatan method by hermawan Pelajaran oop java ii pengertian method dan cara pembuatan method by hermawan
Pelajaran oop java ii pengertian method dan cara pembuatan method by hermawan
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.8-9)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.8-9)Modul Praktikum Pemrograman Berorientasi Objek (Chap.8-9)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.8-9)
 
Modul pratikum pbo - Polimorphism
Modul pratikum pbo - PolimorphismModul pratikum pbo - Polimorphism
Modul pratikum pbo - Polimorphism
 
Modul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONModul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATION
 
Modul pratikum pbo - inheritance
Modul pratikum pbo - inheritanceModul pratikum pbo - inheritance
Modul pratikum pbo - inheritance
 

Similaire à Dasar pemrograman C++

Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interfaceJeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interfaceKristanto Wijaya
 
Oop dengan java
Oop dengan javaOop dengan java
Oop dengan javaits
 
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdfJENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdfJurnal IT
 
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptxPEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptxBBXSQUAD
 
CCIT OOP Pertemuan 1
CCIT OOP Pertemuan 1CCIT OOP Pertemuan 1
CCIT OOP Pertemuan 1giamuhammad
 
Modul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekModul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekWahyu Widodo
 
Modul xi dan xii algo
Modul xi dan xii algoModul xi dan xii algo
Modul xi dan xii algoSTMIK AKAKOM
 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsiRoziq Bahtiar
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 11
Laporan praktikum Algoritma dan Pemrograman pertemuan 11Laporan praktikum Algoritma dan Pemrograman pertemuan 11
Laporan praktikum Algoritma dan Pemrograman pertemuan 11Ekha Cahya Nugraha
 
Modul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasModul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasRakhmat Dedi Gunawan
 
Laporan praktikum modul vii
Laporan praktikum modul viiLaporan praktikum modul vii
Laporan praktikum modul viiDevi Apriansyah
 
Java (Netbeans) - Abstract & Interface - Object Oriented Programming
Java (Netbeans) - Abstract & Interface - Object Oriented ProgrammingJava (Netbeans) - Abstract & Interface - Object Oriented Programming
Java (Netbeans) - Abstract & Interface - Object Oriented ProgrammingMelina Krisnawati
 

Similaire à Dasar pemrograman C++ (20)

Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interfaceJeni intro1-bab11-pewarisan, polimorfisme, dan interface
Jeni intro1-bab11-pewarisan, polimorfisme, dan interface
 
Oop dengan java
Oop dengan javaOop dengan java
Oop dengan java
 
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdfJENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
JENI-Intro1-Bab11-Pewarisan, Polimorfisme, dan interface.pdf
 
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptxPEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
PEMORGRAMAN BERORIENTASI OBJEK-02 Teknologi JAVA.pptx
 
Tutorial borland c tea.
Tutorial borland c tea.Tutorial borland c tea.
Tutorial borland c tea.
 
Algoritma Pemrograman 2
Algoritma Pemrograman 2Algoritma Pemrograman 2
Algoritma Pemrograman 2
 
CCIT OOP Pertemuan 1
CCIT OOP Pertemuan 1CCIT OOP Pertemuan 1
CCIT OOP Pertemuan 1
 
Delphi
DelphiDelphi
Delphi
 
Modul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi ObjekModul Pemrograman Berorientasi Objek
Modul Pemrograman Berorientasi Objek
 
Modul xi dan xii algo
Modul xi dan xii algoModul xi dan xii algo
Modul xi dan xii algo
 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsi
 
Laporan praktikum Algoritma dan Pemrograman pertemuan 11
Laporan praktikum Algoritma dan Pemrograman pertemuan 11Laporan praktikum Algoritma dan Pemrograman pertemuan 11
Laporan praktikum Algoritma dan Pemrograman pertemuan 11
 
Modul Object Oriented Programming
Modul Object Oriented ProgrammingModul Object Oriented Programming
Modul Object Oriented Programming
 
13216 3 enkapsulasi
13216 3 enkapsulasi13216 3 enkapsulasi
13216 3 enkapsulasi
 
28431 3 enkapsulasi
28431 3 enkapsulasi28431 3 enkapsulasi
28431 3 enkapsulasi
 
Java4
Java4Java4
Java4
 
Modul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasModul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar Kelas
 
Modul 3 pbo(1)
Modul 3 pbo(1)Modul 3 pbo(1)
Modul 3 pbo(1)
 
Laporan praktikum modul vii
Laporan praktikum modul viiLaporan praktikum modul vii
Laporan praktikum modul vii
 
Java (Netbeans) - Abstract & Interface - Object Oriented Programming
Java (Netbeans) - Abstract & Interface - Object Oriented ProgrammingJava (Netbeans) - Abstract & Interface - Object Oriented Programming
Java (Netbeans) - Abstract & Interface - Object Oriented Programming
 

Dasar pemrograman C++

  • 1. Modul Praktikum Dasar Pemrograman C++ 2010 MODUL 13 CLASS a. Konsep Class Dalam pemrograman berorientasi objek (OOP) class merupakan bangunan yang menjadi cetak biru untukpembuatan objek dari class. Dalam pemrograman terstruktur class direpresentasikan sebagai struct. Bedanya, jika struct dapat didefinisikan di dalam atau di luar fungsi dan dipanggil secara langsung dengan menyebutkan nama struct dan field anggotanya maka pada class pengaksesan dan hak akses terhadap anggota-anggota classnya bergantung pada mode pengaksesan yang diberikan terhadap class tersebut. Class didefinisikan tepat di bawah header sebelum semua fungsi dibuat. Secara default mode akses class bersifat private, kecuali jika didefinisikan sendiri oleh pemrogram. Class memiliki tiga mode pengaksesan: 1. Public Class dengan mode pengaksesan public mengijinkan object untuk mengakses anggota class dari luar. Untuk lebih jelasnya perhatikan contoh class di bawah ini: #include <cstdlib> #include <iostream> using namespace std; class person //penulisan class = struct { public: //anggota yang bersifat public definisikan disini char nama[15]; int usia; void tambah_data(); //anggota class dapat berupa var dan fungsi }; void tampilkan (person orang); //prototipe fungsi global int main() { person orang; //pemanggilan class di main() = pemanggilan struct orang.tambah_data(); //pemanggilan fungsi class di main tampilkan(orang); //pemanggilan fungsi di luar class system("PAUSE"); return EXIT_SUCCESS; } 86 AndanSperrow. – UNP KEDIRI
  • 2. Modul Praktikum Dasar Pemrograman C++ 2010 void person::tambah_data() // pemanggilan fungsi anggota class { printf ("Nama: "); gets (nama); printf ("Usia: "); scanf ("%d", &usia); } void tampilkan (person orang) //fungsi global tanpa nilai pengembalian { printf ("Nama yang diinputkan: %s n", orang.nama); printf ("Usia %s : %d tahun n", orang.nama, orang.usia); } Analisis: Pada contoh program di atas class person memiliki anggota class yang dapat diakses secara public. Anggota class person terdiri dari variabel nama dan usia dengan tipe data char[15] dan int. Selain dua anggota class yang berupa variabel, class person juga memiliki anggota class yang berupa fungsi, yaitu fungsi tambah_data. Karena fungsi tambah_data bersifat public juga maka dia dapat langsung mengakses semua variabel anggota class person yang bersifat public juga (lihat void person::tambah_data()). Berikutnya seperti biasa jika kita menuliskan listing program menggunakan beberapa fungsi hal yang harus dilakukan adalah mendefinisikan prototipe fungsi yang ada di dalam program pada baris sebelum main (lihat void tampilkan (person orang);), namun pendefinisian prototipe tidak berlaku pada fungsi yang menjadi anggota dari class karena prototipe fungsi telah didefinisikan di dalam class (lihat void tambah_data(); yang berada di dalam class person). Untuk pemanggilan fungsi yang berada di luar fungsi main() seperti biasa kita tinggal memanggil nama fungsi dan parameternya. Perbedaan baru akan terjadi jika kita mengakses fungsi yang merupakan fungsi anggota, karena pengaksesan fungsi akan diperlakukan seperti field/anggota class meskipun bentuknya adalah fungsi (lihatorang.tambah_data(); pada fungsi main()). Untuk pendefinisian kerja fungsi yang menjadi fungsi anggota suatu class digunakan operator skop (tanda ::). Operator skop yang terletak sebelum nama fungsi berarti fungsi tambah_data merupakan milik dari class person sehingga memiliki hak untuk mengakses semua anggota class person yang bersifat sama. 87 AndanSperrow. – UNP KEDIRI
  • 3. Modul Praktikum Dasar Pemrograman C++ 2010 2. Private Anggota class hanya dapat diakses dari anggota yang lain yang berada di dalam class yang sama maupun friend-nya. Perhatikan contoh program di bawah ini: #include <cstdlib> #include <iostream> #include <string.h> using namespace std; class person { private: char nama[15]; int usia; public: void tambah(char a[15], int &b); void input (char *name, int age) //fungsi untuk mengakses var private { strcpy (nama, name); usia=age; } void output(); }; int main(int argc, char *argv[]) { person orang; char *A; char a[15]; int b; A=&a[0]; orang.tambah(a, b); orang.input (A, b); orang.output(); system("PAUSE"); return EXIT_SUCCESS; } void person::tambah(char a[15], int &b) { person orang; printf ("Nama: "); gets (a); printf ("Umur: "); scanf ("%d", &b); } void person::output() { printf ("Info Data Personalia n"); printf ("Nama: %s n", nama); printf ("Usia: %d n", usia); } 88 AndanSperrow. – UNP KEDIRI
  • 4. Modul Praktikum Dasar Pemrograman C++ 2010 3. Protected Anggota class dapat diakses dari anggota lain yang berada di dalam class yang sama, friend, dan turunannya. b. Constructor Destructor Constructor merupakan type khusus dari suatu subroutine yang dipanggil pada saat penciptaan objek dari suatu class. Selain bertugas mempersiapkan objek baru constructor juga menerima parameter untuk menginisialisasi setiap anggota variabel ketika objek baru dari sebuah class diciptakan. Nama constructor harus sama dengan nama classnya. Kebalikan dari constructor adalah destructor. Jika constructor dipanggil pada saat penciptaan objek dari suatu class, destuctor dipanggil pada saat objek dari suatu class akan dihancurkan. Pendeklarasian destructor diawali dengan tanda tilde ~ diikuti oleh nama objek yang telah di-construct. Constructor dan destructor akan otomatis dijlnkan pada saat objek class diciptakan. Tidak bertipe walaupun void sekalipun dan tdk punya return value. Contoh penggunaan constructor dan destructor dalam class dapat dilihat pada contoh program di bawah ini: Contoh program menghitung luas persegi panjang menggunakan constructor class: #include <cstdlib> #include <iostream> using namespace std; class Persegi_Panjang { private: int pjg, lbr; public: Persegi_Panjang (int a,int b); //constructor class int area () { return (pjg*lbr); } }; 89 AndanSperrow. – UNP KEDIRI
  • 5. Modul Praktikum Dasar Pemrograman C++ 2010 Persegi_Panjang::Persegi_Panjang (int a, int b) { printf ("Input panjang: "); scanf ("%d", &a); printf ("Input lebar: "); scanf ("%d", &b); pjg = a; lbr = b; } int main () { int a; int b; Persegi_Panjang luas (a,b); printf("luas persegi: %d n" , luas.area()); system("PAUSE"); return EXIT_SUCCESS; } Analisis: Pada program penghitung luas persegi panjang di atas class Persegi_Panjang memiliki constructor class yang berfungsi menginisialisasi data input ke dalam variabel pjg dan lbr yang memiliki hak akses private. Oleh fungsi area data yang diinputkan user akan dihitung luasnya dan nilai hasilnya akan dikembalikan ke dalam fungsi area dengan nilai return bertipe integer.Pada fungsi main() kegiatan yang dijalankan berupa pemanggilan constructor class dan meminta hasil perhitungan luas untuk ditampilkan. Contoh program menghitung luas persegi panjang menggunakan constructor dan destructor class: #include <cstdlib> #include <iostream> #include <conio.h> using namespace std; class Persegi_Panjang { private: int *width, *height; //jika variabel akan di-destroy pada akhir program //maka var dilewatkan sebagai var pointer public: Persegi_Panjang (int a,int b); ~Persegi_Panjang(); int area () { return (*width * *height); } //jika pake destructor }; 90 AndanSperrow. – UNP KEDIRI
  • 6. Modul Praktikum Dasar Pemrograman C++ 2010 Persegi_Panjang::Persegi_Panjang (int a, int b) { printf ("Input panjang: "); scanf ("%d", &a); printf ("Input lebar: "); scanf ("%d", &b); //jika pake constructor dan destructor //width dan height dilewatkan sebagai pointer //sehingga perlu dibuat inisialisasi memory dinamic dengan new width=new int; height=new int; *width=a; *height=b; } //destructor akan otomatis dijalankan tanpa harus dipanggil //oleh fungsi main() Persegi_Panjang::~Persegi_Panjang() { //proses penghancuran variabel pointer width dan height delete width; delete height; printf ("variabel panjang dan lebar telah dihancurkan n"); //lihat isi variabel panjang dan lebar setelah proses destruct printf ("Isi panjang: %d n Isi lebar: %d n", width, height); getch(); } int main () { int a; int b; Persegi_Panjang rect (a,b); printf("luas persegi: %d n" , rect.area()); } Analisis: Listing program diatas sebenarnya sama dengan contoh program sebelumnya, perbedaannya hanya pada penggunaan destructor yang digunakan untuk menghapus space memory yang digunakan untuk menyimpan data width dan height. Constructor dan destructor class didefinisikan di dalam class Persegi_Panjang dan bersifat public. 91 AndanSperrow. – UNP KEDIRI
  • 7. Modul Praktikum Dasar Pemrograman C++ 2010 Jika pada contoh program sebelumnya variabel pjg dan lbr didefinisikan sebagai tipe data dasar maka berbeda dengan contoh program diatas pendefinisian variabel private width dan height menggunakan variabel pointer. Hal ini dilakukan karena variabel yang dapat di-destroy hanya variabel yang bersifat dinamis semisal pointer sehingga pada saat penciptaan class yang di dalamnya berisi proses input data, alamat variabel a dan b akan ditangkap oleh pointer width dan height setelah pengalokasian memory dilakukan. Proses destructor class akan dijalankan secara otomatis oleh program untuk membebaskan kembali memory yang dipakai untuk menyimpan nilai width dan height ke dalam heap sehingga memory kosong dapat digunakan untuk kegiatan komputasi yang lain. Pada program di atas, perintah: printf ("Isi panjang: %d n Isi lebar: %d n", width, height);hanya untuk menguji nilai width dan height setelah isi variabel width dan height dibebaskan sehingga hasil outputnya dapat berupa alamat acak di memory dan akan menghasilkan nilai yang berbeda pada tiap PC tergantung ruang kosong yang diakses variabel di memory. TUGAS: 1. Bagaimana listing program pada contoh 1 diatas jika proses input dilakukan pada saat class diciptakan? (clue: gunakan constructor class untuk inisialisasi dan input data) 2. Modifikasi listing program no.1 sehingga pada saat akhir proses dilakukan pembebasan memory. 3. Tambahkan fungsi untuk menghitung masa produktif user jika masa produktif seseorang mulai menurun pada usia 40 tahun. Tampilkan pesan “Usia produktif Anda telah berakhir n tahun yang lalu ” jika usia yang diinputkan >40 tahun, dan minta user untuk mengulang input usia jika usia yang diinputkan <5 atau >99. 92 AndanSperrow. – UNP KEDIRI