7 Jan 2011

Software Akuntansi

Buat kalian yang lagi nyari software akuntansi, boleh nyoba program OneSOS
Diberikan secara gratis kok untuk demo versionnya ..
Program akuntansinya udah lengkap banget, ada GL, POS, A/P, A/R, Fixes Assets, Purchasing, Payroll ..
Ada training pemakaian software dan dapet manual help na loh ..
Untuk info lebih lengkapnya silakan kunjungi website na www.onesos.com

23 Mei 2010

Doa Sang Juara

Daud berkata, "Tetapi orang-orang yang randah hati akan mewarisi negeri dan bergembira karena kesejahteraan yang berlimpah-limpah
Mazmur 37:11

Suatu ketika, ada seorang anak mengikuti lomba mobil balap mainan. Suasana sangat meriah ketika menjelang babak final, karena cuma menyisakan 4 orang yang memamerkan mobil mereka. Peraturannya adalah setiap peserta harus memamerkan mobil buatannya sendiri. Salah satunya adalah seorang anak bernama Mark yang berhasil masuk final, meski mobilnya tidak istimewa dan tidak sempurna. Oleh karena itu, beberapa anak menyangsikan kekuatan mobil tersebut untuk berpacu melawan mobil lainnya. Memang mobilnya tidak menarik karena tebuat dari kayu sederhana dihias sedikit lampu kedap-kedip di bagian atas mobilnya. Padahal, mobil mainan ketiga anak yang lain sangat istimewa. Namun, Mark bangga dengan buatan tangannya sendiri itu.

Tibalah saat final kejuaraan mobil balap mainan yang dinanti-nantikan. Keempat orang anak tersebut bersiap di garis start utuk mendorong mobilnya kencang-kencang dengan empat mobil di lintasannya yang berbentuk lingkaran dengan empat jalur. Namun, Mark meminta waktu sebentar sebelum lomba dimulai dan mulutnya mulai berkomat-kamit seperti sedang berdoa. Matanya dipejamkan dan tangannya bertangkup memanjatkan doa. Semenit kemudian, ia berkata, "Ya, aku siap!".
Dor .. Tanda dimulai telah berbunyi.

Dengan satu hentakan kuat, mereka mulai mendorong mobilnya kuat-kuat. Semua mobil itu pun meluncur dengan cepat. Setiap orang bersorak-sorai, bersemangat, menjagokan mobilnya masing-masing.
"Ayo ..., cepat ..., maju," teriak mereka. Dan akhirnya sang pemenang pun ketahuan, tali lintasan finish pun telah terlambai. Dan, Mark lah pemenangnya. Ya, semuanya senang, begitu juga Mark. Ia berkomat-kamit lagi, "Terima kasih". Lalu saat pembagian piala pun tiba dan Mark maju ke depan dengan bangga. Sebelum piala itu diserahkan, ketua panitia bertanya, "Hai jagoan, kamu pasti berdoa kepada Tuhan agar kamu menang, bukan?" Mark terdiam.

"Bukan, Pak, bukan itu yang aku panjatkan tadi," kata Mark. Sepertinya tidak adil meminta Tuhan untuk menolongnya mengalahkan orang lain. "Aku, hanya memohon pada Tuhan, supaya aku tak menangis, jika aku kalah," lanjut Mark. Semua penonton yang hadir terdiam mendengar itu. Setelah beberapa saat, terdengarlah gemuruh tepuk tangan yang memenuhi ruangan. Ternyata anak-anak, punya kebijaksanaan yang lebih dibanding dengan orang dewasa. Mark, tidaklah memohon kepada Tuhan untuk menang dalam setiap ujian. Ia tidak memohon kepada Tuhan untuk meluluskan dan mengatur setiap hasil yang ingin diraihnya. Mark tidak meminta Tuhan untuk mengabulkan semua harapan dan menang dengan menyakiti yang lainnya. Ia memohon pada Tuhan agar diberikan kekuatan saat menghadapi semuanya dan diberikan kemuliaan, dan menyadari kekurangan dengan rasa bangga.

Mungkin, kita telah banyak meluangkan waktu untuk berdoa pada Tuahn untuk mengabulkan setiap permintaan kita. Terlalu sering kita meminta kepada Tuhan untuk menjadikan kita nomor satu dan menjadi yang terbaik dan menang dalam setiap ujian. Kita juga suka berdoa agar Tuhan menghalau setiap halangan dan cobaan yang ada. Padahal, kita membutuhkan bimbingan, tuntunan, dan panduanNya di dalam hidup kita. Kita sering merasa terlalu lemah untuk percaya bahwa kita kuat. Kita lupa dan merasa cengeng dengan kehidupan ini. Seharusnya kita tetap kuat dan bersemangat dalam berjuang. Karena kita harus yakin bahwa Tuhan memberi ujian bukan untuk membuat kita lemah, cengeng, dan mudah menyerah, melainkan untuk menguji kita sebagai hamba-hanbaNya yang saleh dan setia. Berdoalah agar kita tegar dalam setiap ujian dan aman dalam lindunganNya.


Sumber : 49 Inspirasi Jiwa (metanoia)

6 Apr 2010

Sekedar Berbagi Cerita ajaaa :)

Api dan Asap

Roma 8:28
Rasul Paulus berkata,  "Kita tahu sekarang, bahwa Allah turut bekerja dalam segala sesuatu untuk mendatangkan kebaikan bagi mereka yang mengasihi Dia, yaitu bagi mereka yang terpanggil sesuai dengan rencana Allah."

Suatu ketika, ada sebuah kapal yang tenggelam diterjang badai. Semuanya porak poranda. Tidak ada awak yang tersisa, kecuali satu orang yang berhasil mendapatkan pelampungnya. Namun, nasib baik belum berpihak pada pria ini. Dia terdampar pada sebuah pulau kecil yang tidak berpenghuni, sendirian, dan tidak punya bekal makanan.

Dia terus berdoa pada Tuhan untuk menyelamatkan nyawanya. Setiap saat, dipandangnya ke seluruh penjuru cakrawala, mengharap ada kapal yang datang merapat. Sayang, pulau ini terlalu terpencil. Hampir tak ada kapal yang mau melewatinya.

Lama-kelamaan, pria ini pun lelah untuk berharap. Lalu, untuk menghangatkan badan, ia membuat perapian, sambil mencari kayu dan pelepah nyiur untuk tempatnya beristirahat. Dibuatnya rumah-rumahan, sekadar tempat untuk melepas lelah. Disusunyalah semua daun nyiur dengan cermat, agar bangunannya itu kokoh dan bertahan lama. Keesokan harinya, pria malang ini mencari makanan. Dicarinya buah-buahan untuk pengganjal perutnya yang lapar. Semua pelosok dijelajahi, hingga kemudian, ia kembali ke gubuknya.

Namun, ia terkejut. semuanya hangus terbakar dan rata dengan tanah, hampir tidak bersisa. Gubuk itu terbakar, karena api yang lupa ia padamkan. Asap serta nyala api mulai membubung tinggi sampai mengghanguskan semua kerja kerasnya semalam. Pria ini berteriak marah, "Ya, Tuhan, mengapa Engkau melakukan hal ini kepadaku? Mengapa> Mengapa?" teriaknya melengking menyesali nasib.

Tiba-tiba .... terdengar bunyi peluit yang ditiup,
"Tuittt ... tuitttt."
Ternyata ada sebuah kapal yang datang. Kapal itu mendekati pantai, dan turunlah beberapa orang untuk menghampiri pria yang menangisi gubuknya ini. Pria ini terkejut, lalu bertanya,
"Bagaimana kalian bisa tahu kalau aku ada disini? Mereka menjawab,
"Kami melihat simbol asap dari kamu!!"

Hal yang perlu kita ingat adalah asap dan api di dalam hidup kita justru bisa menjadi simbol bagi orang lain untuk datang dan menolong kita. Semua hal yang terburuk yang dapat kita pikirkan akan selalu mendapat jawaban yang menyejukkan dari Tuhan. Karena Ia Mahatahu tentang hal-hal yang terbaik bagi hidup kita, asalkan kita tidak kehilangan harapan kepada Tuhan.


Sumber : Buku 49 Inspirasi Jiwa (Metanoia)

12 Jan 2010

latiian lagii :)

- inheritance -

#include"iostream.h"
#include"string.h"

class Old
{
    protected :
       char nama[25];
       char hp[20];
    public :
      void setNama(char *nama)
      {
          strcpy(this->nama,nama);
      }
      void setHp(char *hp)
      {
          strcpy(this->hp,hp);
      }
      char *getNama()
      { return nama; }
      char *getHp()
      { return hp; }
};

class New : public Old
{
    private :
       char add[30];
      char email[30];
    public :
      void setAdd(char *add)
      {
          strcpy(this->add,add);
      }
      void setEmail(char *email)
      {
          strcpy(this->email,email);
      }
      char *getAdd()
      { return add; }
      char *getEmail()
      { return email; }
};

void menu()
{
   cout << "My Phonebook" << endl;
   cout << "============" << endl << endl;
   cout << "1. Isi Phonebook Seri Lama" << endl;
   cout << "2. Lihat Phonebook Seri Lama" << endl;
   cout << "3. Isi Phonebook Seri Baru" << endl;
   cout << "4. Lihat Phonebook Seri Baru" << endl;
   cout << "5. Keluar" << endl << endl;
}

void main()
{
   char nama[25];
   char hp[20];
   char add[30];
   char email[30];
   int pilih;
   int flag;
   int i=0;
   int j=0;
   int k;
   Old *book1[10];
   New *book2[10];

   do{
           menu();
           do{
               cout << "Masukkan pilihan anda : ";
               cin >> pilih;
               cin.clear();
               cin.sync();
            }while(pilih<1||pilih>5);

         switch(pilih)
         {
             case 1 : book1[i] = new Old;
                          do{
                           cout << "\n\n" << "Masukkan nama [5-20 karakter] : ";
                           cin >> nama;
                           cin.clear();
                           cin.sync();
                          }while(strlen(nama)<5||strlen(nama)>20);
                         do{
                           cout << "\n\n" << "Masukkan nohp [10 - 12 karakter dan harus angka] : ";
                           cin >> hp;
                           cin.clear();
                           cin.sync();
                           flag=1;
                           for(int k=0;k
                           {
                               if(hp[i]<'0'||hp[i]>'9')
                              { flag=0; }
                           }
                         }while(flag==0||strlen(hp)<10||strlen(hp)>12);
                         book1[i]->setNama(nama);
                         book1[i]->setHp(hp);
                         i++;
                         break;

            case 2 : for(k=0;k
                        {
                           cout << "\n" << book1[k]->getNama() << "\t: " << book1[k]->getHp() << "\n";
                        }
                        break;

            case 3 : book2[j] = new New;
                         do{
                           cout << "\n\n" << "Masukkan nama [5-20 karakter] : ";
                           cin >> nama;
                           cin.clear();
                           cin.sync();
                         }while(strlen(nama)<5||strlen(nama)>20);
                         do{
                           cout << "\n\n" << "Masukkan nohp [10 - 12 karakter dan harus angka] : ";
                           cin >> hp;
                           cin.clear();
                           cin.sync();
                           flag=1;
                           for(int k=0;k
                           {
                               if(hp[i]<'0'||hp[i]>'9')
                              { flag=0; }
                           }
                         }while(flag==0||strlen(hp)<10||strlen(hp)>12);
                         do{
                           cout << "\n\n" << "Masukkan alamat [5-30 karakter] : ";
                           cin >> add;
                           cin.clear();
                           cin.sync();
                         }while(strlen(add)<5||strlen(add)>30);
                         do{
                           cout << "\n\n" << "Masukkan email [5 - 20 karakter dan harus angka] : ";
                           cin >> email;
                           cin.clear();
                           cin.sync();
                         }while(strlen(email)<5||strlen(email)>20);
                         book2[j]->setNama(nama);
                         book2[j]->setHp(hp);
                         book2[j]->setAdd(add);
                         book2[j]->setEmail(email);
                         j++;
                         break;

            case 4 : for(k=0;k
                        {
                           cout << "\nNama\t: " << book2[k]->getNama() <<"\nNo.\t: " <<

                           book2[k]->getHp() << "\nAlamat\t: " << book2[k]->getAdd() 
                           << "\nEmail\t: " << book2[k]->getEmail() << "\n";
                        }
                        break;
         }

           cin.get();
         cout << "\n\n\n";
   }while(pilih!=5);

   for(int k=0;k
   {
       delete(book1[k]);
   }
   for(int l=0;l
   {
       delete(book2[l]);
   }
}

latiiiiaan ngoding :)


- soal lab polymorphism -


#include"iostream.h"
#include"string.h"

class Tempat
{
    protected :
      char nama[25];
      int ttl_pD;
      int ttl_pA;
      int ttl;

   public :
       Tempat()
      {
         int ttl_pD=0;
         int ttl_pA=0;
         int ttl=0;
      }
       void setN(char nama[])
      {
          strcpy(this->nama,nama);
      }

      virtual void ttl_PD(int x)=0;
      virtual void ttl_PA(int y)=0;
      int get_pajakD(){return ttl_pD;}
      int get_pajakA(){return ttl_pA;}
      int get_Ttl()
      { return ttl = ttl_pD + ttl_pA; }
      char *getN()
      { return nama; }
};

class Apartemen : public Tempat
{
   public :
      void ttl_PD(int x)
      {
         ttl_pD = x*50000;
      }
      void ttl_PA(int y)
      {
         ttl_pA = y*30000;
      }
};

class Rumah : public Tempat
{
   public :
      void ttl_PD(int x)
      {
         ttl_pD = x*10000;
      }
      void ttl_PA(int y)
      {
         ttl_pA = y*5000;
      }
};

void menu()
{
   cout << endl << "\t\t\t\tLife Style" << endl << endl;
   cout << " Pilih Tempat Tinggal :" << endl;
   cout << " 1. Apartemen" << endl;
   cout << " 2. Rumah" << endl;
   cout << " 3. Quit" << endl;
}

void main()
{
   int pilih;
   int d,a;
   char nama[25];
   Tempat *obj;

   do{
         menu();
         do{
               cout << " Pilihan : ";
               cin >> pilih;
               cin.clear();
               cin.sync();
         }while(pilih<1||pilih>3);

         switch(pilih)
         {
             case 1 : obj = new Apartemen;
                         cout << endl << " Masukkan nama Anda [max 20 char] : ";
                         cin >> nama;
                         cin.clear();
                         cin.sync();
                         obj->setN(nama);
                         cout << endl << " \03 Apartemen \03" << endl;
                         cout << " Selamat Datang " << obj->getN() << " " <<

                         (char)1 << endl << endl;
                         cout << " Masukkan jumlah orang dewasa [1-5] : ";
                         cin >> d;
                         cin.clear();
                         cin.sync();
                         cout << " Masukkan jumlah anak-anak [0-5]    : ";
                         cin >> a;
                         cin.clear();
                         cin.sync();
                         obj->ttl_PD(d);
                         obj->ttl_PA(a);
                         cout << endl << " Pajak orang dewasa : Rp 50000/orang"

                         << endl;
                         cout << " Pajak anak-anak    : Rp 30000/anak" << endl <<

                         endl;
                         cout << " Total pajak hidup orang dewasa : Rp. " <<

                         obj->get_pajakD() << endl;
                         cout << " Total pajak hidup anak-anak    : Rp. " <<

                         obj->get_pajakA() << endl;
                         cout << " Total pajak keseluruhan        : Rp. " <<

                         obj->get_Ttl() << endl;
                         cout << endl << " Tekan enter untuk lanjut...";
                         delete (obj);
                         cin.get();
                         break;

            case 2 : obj = new Rumah;
                        cout << endl << " Masukkan nama Anda [max 20 char] : ";
                        cin >> nama;
                        cin.clear();
                        cin.sync();
                        obj->setN(nama);
                        cout << endl << " \03 Rumah \03" << endl;
                        cout << " Selamat Datang " << obj->getN() << " " << "\01"

                        << endl << endl;
                        cout << " Masukkan jumlah orang dewasa [1-5] : ";
                        cin >> d;
                        cin.clear();
                        cin.sync();
                        cout << " Masukkan jumlah anak-anak [0-5]    : ";
                        cin >> a;
                        cin.clear();
                        cin.sync();
                        obj->ttl_PD(d);
                        obj->ttl_PA(a);
                        cout << endl << " Pajak orang dewasa : Rp 10000/orang"

                        << endl;
                        cout << " Pajak anak-anak    : Rp 5000/anak" << endl << endl;
                        cout << " Total pajak hidup orang dewasa : Rp. " <<

                        obj->get_pajakD() << endl;
                        cout << " Total pajak hidup anak-anak    : Rp. " <<

                        obj->get_pajakA() << endl;
                        cout << " Total pajak keseluruhan        : Rp. " <<

                        obj->get_Ttl() << endl;
                        cout << endl << " Tekan enter untuk lanjut...";
                        delete (obj);
                        cin.get();
                        break;
         }
         cout << "\n\n\n\n\n";
   }while(pilih!=3);

    cout << "\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

    << endl;
    cout << "\t                    Enjoy Your Life Style" << endl;
    cout << "\t                \03 Tekan enter untuk keluar \03" << endl;
    cout << "\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

    << endl;
    cin.get();
}

23 Des 2009

Polymorphism


Polymorphism yang berarti “mempunyai banyak bentuk” juga merupakan salah satu sifat class yang memungkinkan sebuah method mempunyai nama yang sama, namun memiliki aksi yang berbeda.




Perbedaan Trivial dan True Polymorphism



Overloading

3 signature yang perlu diperhatikan dalam melakukan overloading :
  • Jumlah argument
  • Letak argument
  • Type argument


Contoh function overloading
Void hitung (int x, int y);
Void hitung(float x, float y);

Overriding

ada 2 jenis virtual method dalam overriding, yaitu :

Pure Virtual Method (tanpa function body)
contoh : virtual void suara() = 0;

Squasi Virtual Method (ada function body)
contoh : virtual void info() {;} 

contoh coding

#include "iostream.h"

class Hewan
{
    public :
       void info()
      {
          cout << "info() class Hewan" << endl;
      }

      virtual void suara()
      {
          cout << "suara() class Hewan" << endl;
      }
};

class Piaraan : public Hewan
{
    public :
    void info()
   {
       cout << "info() class Piaraan" << endl;
   }

   void suara()
   {
       cout << "suara() class Piaraan" << endl;
   }
};

void main()
{
    Piaraan pet;

   Hewan *satu;

   satu = &pet;    //menunjuk ke objek pet

   satu->info();
   satu->suara();

   cin.get();
}



hasil eksekusi





Penjelasan










14 Des 2009

Inheritance

Pada pertemuan ini, mari kita bahas mengenai Inheritance

Apa itu Inheritance?
Inheritance merupakan salah satu sifat dalam Class yang memungkinkan suatu class mewarisi attribute dan method class lain.




Class yang mewariskan sifat disebut dengan Class Induk (base class), sedangkan class yang mewarisi sifat class lain disebut class Turunan (derived class).

Keuntungan dengan adanya Inheritance yaitu memungkinkan suatu kode-kode yang telah ditulis bisa digunakan kembali (reusability) dan pengembangan program (extenability) menjadi lebih efisien dan menghemat waktu karena kita tinggal menambahkan sifat-sifat baru yang dibutuhkan dalam Class Turunannya.

Cara pendeklarasian inheritance   :   class Turunan : type_access Induk

Ada 3 jenis type access, yaitu public, protected, dan private.
Pemakaian type access tersebut memiliki perbedaan dalam hak pengaksesan attribute dan method dalam class.




Contoh coding

#include "iostream.h"

class Induk
{
       public :
              void info_induk()
              {
                   cout <<  "method info_induk jalan" << endl;
              }
};

class Anak : public Induk
{
       public :
            void info_anak()
              {
                   cout <<  "method info_anak jalan" << endl;
              }
};

void main()
{
       Anak obj;

       obj.info_induk();         // mewarisi method dari class Induk
       obj.info_anak();

       cin.get();
}

Hasil eksekusi :
method info_induk jalan
method info_anak jalan

Constructor dan Destructor pada Inheritance
Pada saat objek di class Turunan dibuat, constructor kelas Induk dengan sendirinya akan dijalankan, setelah itu baru constructor class Turunan, sedangkan untuk destructor, destructor class Turunan akan dijalankan dahulu, baru setelah itu destructor class Induk.

Inheritance juga bisa dilakukan dalam beberapa tingkat





Multiple Inheritance
adalah sebuah class yang mewarisi lebih dari satu class Induk.
Dalam multiple Inheritance bisa terjadi kerancuan apabila terdapat dua method pada class Induk dengan nama yang sama.







contoh coding

#include
"iostream.h"

class IndukSatu
{
        public :
               void info()
               {
                     cout <<  "Info class IndukSatu" << endl;
               }
};

class IndukDua
{
        public :
               void info()
               {
                     cout <<  "Info class IndukDua" << endl;
               }
};

class Anak : public IndukSatu, public IndukDua
{

};

void main()
{
       Anak obj;

       // obj.info();   --> menimbulkan error, compiler kebingungan karena ada 2 class Induk yang mewariskan method dengan nama yang sama

      obj.IndukSatu::info();     //memanggil method info dari class IndukSatu

      obj.IndukDua::info();     //memanggil method info dari class IndukDua
}

Hasil eksekusi
Info class IndukSatu
Info class IndukDua



30 Nov 2009

Pertemuan 8 PBO


Pada pertemuan ini, saya akan membahas mengenai Friend dan Operator Overloading dalam Class ..


Apa itu friend ??? 

Friend adalah fungsi yang bukan merupakan anggota dari suatu class, tapi dapat mengakses anggota kelas yg bersifat private dan protected.
Pemakaian friend merupakan suatu kontradiksi, mengapa??
Karena tujuan utama dari pbo adalah pengkapsulan dan pembatasan akses data, sedangkan dengan adanya friend, semua data dalam class menjadi bisa diakses oleh fungsi yang bukan merupakan anggota class itu sendiri.


Cara pemakaian friend cukup mudah, kita tinggal menambahkan kata “friend” di depan nama fungsi yang akan kita buat, dan deklarasikan prototype fungsi di dalam class (public).


// contoh codingan pemakaian friend


#include

class mahasiswa
{
   private :
       int nilai;
       char nama[20];

   public :
       mahasiswa(); // constructor

       void inisialisasi(int nilai1, char *nama1);



       //prototype friend function dideklarasikan dalam class
       friend void show(mahasiswa satu, int a);

        ~mahasiswa() // destructor
        {}
};


void main()
{
   mahasiswa satu,dua;

   satu.inisialisasi(100, "aku");
   dua.inisialisasi(90, "kamu");

   show(satu,1);
   show(dua,2);

   cin.get();
}

mahasiswa::mahasiswa()
{
   nilai = 0;
   strcpy(nama,"");
}

void mahasiswa::inisialisasi (int nilai1, char *nama1)
{
   nilai = nilai1;
   strcpy(nama, nama1);
}

//friend function
void show(mahasiswa satu, int a)
{
   cout << "Nama mahasiswa " << a << " : " << satu.nama << endl; 

   cout << "Nilai mahasiswa " << a << " : " << satu.nilai << endl << endl;
}

Overloading Operator 

Tujuannya adalah untuk memudahkan operasi terhadap data, khususnya yang melibatkan objek. Perlu diingat, meskipun operator sudah dioverload, kaidah pemakaian operator dan prioritas operator tidak berubah. 

Operator yang tidak dapat di overload 
.           .*          ::           ?:           sizeof 


// contoh codingan pemakaian overloading operator

#include

class parkir
{
     private :
         int mobil;
         int motor;

     public :
         parkir(int mob=0, int mot=0);

         void get(int a);

         parkir operator + (parkir ob);
};

void main()
{
    parkir obj1(10,20);
    parkir obj2(45,25);
    parkir obj3;

    obj3 = obj1 + obj2;

    obj1.get(1);
    obj2.get(2);
    obj3.get(3);

    cin.get();
}

parkir::parkir(int mob, int mot)
{
     mobil = mob;
     motor = mot;
}

void parkir::get(int a)
{
    cout << "mobil " << a << " : " << mobil << endl;
    cout << "motor " << a << " : " << motor << endl << endl;
}

parkir parkir::operator + (parkir ob)
{
     parkir tmp; // objek penampung

    tmp.mobil = mobil + ob.mobil;
    tmp.motor = motor + ob.motor;

    return(tmp);
}

4 Nov 2009

Pertemuan 5 PBO


Dalam class, dikenal dengan istilah encapsulation.
Encapsulation adalah pengelompokkan yang dimaksudkan untuk melindungi informasi/data agar tidak dapat diakses secara sembarangan.

Ada 3 jenis tipe data dalam class, yaitu
  1. Public, bisa diakses dimana saja.
  2. Private, hanya bisa diakses class itu sendiri.
  3. Protected, bisa diakses class itu sendri dan kelas turunannya.

Contoh :

misalkan ada 3 class, yaitu class A, B, dan C (turunan class A)
A memiliki 3 type data, yaitu :
X = public
Y = private
Z = protected

nilai X = bisa diakses class A B dan C
nilai Y = bisa diakses class A saja
nilai Z = bisa diakses A dan C (kelas turunan dari A)

Dalam class, ada istilah constructor dan destructor.
Constructor biasanya dijalankan saat object di create, sedangkan destructor dijalankan sesaat sebelum object di delete.

Contoh :

class mobil
{
      public :

//constructor
             mobil()
             {
                  a = 10;
             }

//destructor
            ~mobil()
            {
                  a = 0;
            }

21 Okt 2009

PBO Pertemuan 4


Abstract Data Type ( ADT )  didefinisikan sebagai tempat penyimpanan data secara berkelompok yang mampu berisi berbagai tipe data baik homogen maupun heterogen.
 

ADT Homogen adalah Array, yang mampu menampung beberapa variabel yang memiliki tipe data yang sama.
ADT Heterogen adalah Struct, yaitu tipe data bentukan yang berisi kumpulan variabel dengan tipe data sama atau berbeda, struct juga dapat menyimpan variabel array dan struct (disebut juga nested struct, yang berarti struct dalam struct).
 

Contoh struct yang paling mudah adalah Struct Data Mahasiswa yang biasanya berisi elemen-elemen seperti :

Ø    NIM, berupa char yang terdiri dari 10 digit angka
Ø    Nama, berupa char
Ø    Nilai TM, berupa integer
Ø    Nilai UTP, berupa integer
Ø    Nilai UAS, berupa integer
Ø    IPK, berupa float
 

Cara pengaksesan struct
Operator dot (.) untuk mengakses member struct dg variable biasa / array
Operator arrow (->) untuk mengakses member struct dg variable pointer/ref

Typedef digunakan Untuk memberikan nama alias dari suatu tipe data.
  
Contoh coding menghitung nilai IPK Mahasiswa
 

#include "iostream.h"
#include "stdio.h"
#include "string.h"

struct Mtk
{  char kode[5];
    char nMtk[20];
    int sks;
    int nilai;
    int grade;
    int bobot;
};


typedef struct Mahasiswa  // contoh typedef
{   char nim[11];
     char nama[25];
     Mtk x[50]; // contoh nested struct
} Mhs;

void ini (int x)  // function untuk mengkonversi nilai ke grade
{   char grade;
     if((x>=85)&&(x<=100))
     grade = 'A';
     if((x>=75)&&(x<=84))
     grade = 'B';
     if((x>=65)&&(x<=74))
     grade = 'C';
     if((x>=50)&&(x<=64))
     grade = 'D';
     if((x<=49)&&(x>=0))
     grade = 'E';
     cout << "Grade = " << grade << endl;
}

int itu(int x)  // function untuk mengkonversi nilai ke bobot
 {  int bbt;
     if(x>=85) bbt=4 ;
     if((x>=75)&&(x<=84)) bbt=3;
     if((x>=65)&&(x<=74)) bbt=2;
     if((x>=50)&&(x<=64)) bbt=1;
     if(x<=49) bbt=0;
     return(bbt);
 }

void main()
{
    int bobot,ttl[10],i,jum;
    float js=0, IPK=0;
   {
     Mhs data;
     cout << "Nama               : ";
     cin >> data.nama;
     cin.clear();
     cin.sync();
     cout << "NIM                : ";
     cin >> data.nim;
     cin.clear();
     cin.sync();
     do{  cout << "Jumlah mata kuliah : ";
            cin >> jum;
            cin.clear();
             cin.sync();
         } while(jum<2||jum>10);

      cout << endl;

      for(i=0;i
     {
        cout << "Kode Mata Kuliah : ";
        cin >> data.x[i].kode;
        cin.clear();
        cin.sync();
        cout << "Nama Mata Kuliah : ";
        cin >> data.x[i].nMtk;
        cin.clear();
        cin.sync();
        cout << "Jumlah SKS       : ";
        cin >> data.x[i].sks;
        cin.clear();
        cin.sync();
        cout << "Nilai            : ";
        cin >> data.x[i].nilai;
        cin.clear();
        cin.sync();

        ini(data.x[i].nilai);

        bobot = itu (data.x[i].nilai);
        cout << "Bobot = " << bobot << endl;

        ttl[i]=(data.x[i].sks*bobot);
        IPK+=ttl[i];
        js+=data.x[i].sks;
        cout << endl;
     }

     cout.precision(2);
     cout.setf(ios::fixed);
     cout << "Nilai IPK = " << (IPK/js);
     cin.clear();
     cin.sync();
  }
  cin.get();
}