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

14 Okt 2009

PBO pertemuan 3


Stream adalah sebuah abstraksi yang mewakili perangkat input dan ouput yang dilakukan operasi dan  untuk menampung aliran data (contoh : file, keyboard, mouse),maupun untuk keluaran (contoh : layer, printer).

Untuk beroperasi dengan streams, C + + menyediakan library iostream standar. iostream library merupakan sebuah library berorientasi objek yang menyediakan fungsi input dan output dengan menggunakan stream. iostream.h  yg disebut file header merupakan file program yang mengandung deklarasi kelas kelas yang diperlukan oleh objek cout. Contoh file header lainnya seperti strstrea.h, fstream.h, dan constrea.h.
 

Unsur-unsur dari iostream :

Basic class templates
Dasar dari iostream library adalah hierarki kelas template. Template kelas menyediakan sebagian besar fungsi library dalam tipe yg berdiri sendri. Template masing-masing mempunyai dua parameter: tipe char (char T) parameter, yang menentukan jenis elemen-elemen yang akan dimanipulasi dan sifat-sifat parameter, yang memberikan karakteristik tambahan spesifik untuk jenis elemen  tertentu.

Class template instantiations

Dua kelompok standar dari seluruh template kelas iostream, adalah narrow-oriented, untuk memanipulasi elemen tipe char, contohnya seperti ios , istream dan ofstream. Wide-oriented, untuk memanipulasi unsur-unsur jenis wchar_t, seperti wios, wistream dan wofstream.

Standard objects

Sebagai bagian dari library iostream, file header menyatakan objek tertentu yang digunakan untuk melakukan operasi input dan output pada standard input dan output.
Iostream dikelompokkan menjadi 2 bagian,
"    narrow-oriented objects, yg sering dipakai adalah cin, cout, cerr, dan clog
"    wide-oriented counterparts, menerangkan wcin, wcout, wcerr, dan wclog.

Types
Kelas-kelas iostream umumnya menggunakan tipe yang didefinisikan tergantung pada sifat-sifat yang digunakan. Contoh  streampos untuk mewakili posisi, streamoff untuk mewakili offset  dan streamsize untuk mewakili ukuran.

Manipulators
Manipulator adalah fungsi-fungsi global yang dirancang untuk digunakan bersama dengan penyisipan (<<) dan ekstraksi (>>) operator dilakukan pada iostream objek. Manipulator umumnya digunakan untuk memodifikasi dan mengatur format stream.
Contohnya seperti endl untuk newline, hex untuk basis hexadecimal, oct untuk basis octal, dec untuk decimal menggunakan basis.

11 Okt 2009

Pertemuan 2 PBO

Dalam C++ modul berperan sebagai fungsi dan class

Ada 2 jenis modul, yaitu :
1. Prepackaged, yaitu berupa standard library yg sudah tersedia dalam bahasa pemrograman.
2. Modul baru, yaitu modul yg dibuat oleh programmer sendiri.

Apa itu fungsi??
Fungsi biasa disebut function adalah merupakan kumpulan instruksi program yang dikelompokkan menjadi satu dan letaknya terpisah dari main program.

Sifat fungsi :
1. Fan-in tinggi
Semakin sering sebuah modul dipanggil, semakin tinggi nilai fan-in nya.
2. Fan-out rendah
Semakin spesifik fungsi suatu modul, semakin rendah pula nilai fan-out nya.

Keuntungan menggunakan fungsi :
1. Main program akan terlihat lebih singkat dan mudah untuk dimengerti.
2. Lebih mudah mencari kesalahan jika terjadi error.
3. Program yg besar dapat dipecah-pecah menjadi satuan fungsi yg lebih kecil.
4. Memungkinkan pembuatan program dilakukan oleh beberapa orang.
5. Lebih mudah untuk dokumentasi program.

Fungsi biasanya diletakkan diatas main program. Bila fungsi ditulis dibawah main program, saat dicompile program akan error. Hal ini disebabkan karena cara jalan program ( sequence ) yg membaca program dari atas ke bawah. Karena itu fungsi tidak akan ditemukan saat main program memanggil fungsi tersebut. Salah satu cara agar fungsi bisa terbaca, yaitu dengan menggunakan prototype. Prototype ditulis diatas main program untuk mendeklarasikan fungsi yg ditulis dibawah main program.


//contoh program yang menggunakan function dan prototype

#include "iostream.h"

float gaji;
float tax;

void pajak(); // prototype

void main()
{
    cin >> gaji;
    cin.clear();
    cin.sync();
    pajak();
    cin.get();
}


//contoh function
void pajak()

{
     if(gaji <= 5000)
     tax = 0;

     else
     {    if((gaji > = 5100) && (gaji < = 10000))
           tax = (gaji*6)/100;

           else if((gaji > = 11000)  && (gaji < = 20000))
           tax = (gaji*15)/100;

            else if((gaji > = 21000)  && (gaji < = 30000))
            tax = (gaji*20)/100;

            else if((gaji > = 31000)  && (gaji < = 40000))
            tax = (gaji*25)/100;

            else tax = (gaji*30)/100;
       }

       cout << "Gaji : " << gaji << "  --  Tax : " << tax;
}

6 Okt 2009

mencari nilai ASCII C++

#include "iostream.h"

int main()
{
    char ascii;
    int numeric;

    cout << "Masukkan huruf : ";
    cin >> ascii;
    cin.clear();
    cin.sync();

    cout << endl << "Nilai ASCII-nya : " << (int) ascii << endl;

    cout << endl << "Masukkan nilai : ";
    cin >> numeric;
    cin.clear();
    cin.sync();

    cout << endl << "Konversi ke huruf : "  << (char) numeric;

    cin.get();

    return 0;
}

4 Okt 2009

contoh codingan sederhana dengan C++

// menghitung luas dan keliling persegi panjang

#include "iostream.h"

void main()
{
    int panjang, lebar, luas, keliling;

   // untuk menginput panjang
   cout << "Masukkan panjang : ";
   cin >> panjang;
   cin.clear();
   cin.sync();

   // untuk menginput lebar
   cout << "Masukkan lebar   : ";
   cin >> lebar;
   cin.clear();
   cin.sync();

   // memasukkan rumus luas dan keliling
   luas = panjang*lebar;
   keliling = 2*(panjang+lebar);

   // mencetak luas dan keliling
   cout << endl << "Luas     : " << luas;
   cout << endl << "Keliling : " << keliling;

   cin.get();

}

16 Sep 2009

Nama                 :   Lilyana
NIM                    :   1200979373
Kelas                  :   03POT
Mat.kuliah         :   PBO

Program C++

C++ merupakan bahasa yang dapat berinteraksi langsung dengan hardware hampir tanpa keterbatasan, dan bekerja seperti salah satu bahasa tingkat tinggi.
 

Sejarah  C++
 
Pada era 60-an, saat computer masih berada pada awal tahap pengembangan, sudah banyak bahasa pemrograman yg muncul, diantaranya adalah ALGOL 60 yang banyak mempengaruhi sebagian besar pembentukan bahasa-bahasa procedural, ada juga ALGOL 68, CPL (Combined Programming Language, tahun 1963), dan BCPL (Basic Combined Programming Language, tahun 1967) yg merupakan penyederhanaan dari CPL.

Pada tahun 1970, Ken Thompson, terbenam dalam pembangunan UNIX di Bell Labs, yg menciptakan bahasa B, dan hasilnya adalah sebuah penyederhanaan besar dari CPL, walaupun masih tergantung pada system, dan memiliki keterbatasan yang besar, seperti tidak dapat dikompilasi untuk mengeksekusi kode tapi menggabungkan kode, yang membuat kode lebih lambat dalam pengeksekusian, dan tidak memadai untuk pengembangan sistem operasi.

Kemudian, tahun 1971, Dennis Ritchie, dari Bell Labs tim, mulai pengembangan compiler B, yg antara lain, mampu menghasilkan kode yang dapat dieksekusi langsung.  "New B" ini, yg akhirnya disebut C, di samping itu diperkenalkan, beberapa konsep baru seperti tipe data (char).

Pada tahun 1973, Dennis Ritchie, telah mengembangkan dasar C. Penyertaan dr type-type, sama baiknya dgn  peningkatan array dan pointer, kemudian menunjukkan kapasitas portabilitas, yang berkontribusi pada perluasan bahasa C.

Pada tahun 1980, Bjarne Stroustrup, dari Bell lab, mulai mengembangan bahasa C++, yang akan menerima nama ini secara resmi pada akhir 1983, ketika pertama kali diterbitkan.

Pada bulan Oktober 1985, rilis komersial pertama yg muncul dari bahasa ini sama baiknya dgn edisi pertama buku "The C++ Programming Language" by Bjarne Stroustrup.

Selama tahun 80-an, C++ dirubah hingga menjadi sebuah bahasa dengan ciri sendiri.
Semua itu dengan sangat sedikit kerugian kompatibilitas kode dengan C.
Bahkan, standar ANSI untuk bahasa C yang diterbitkan pada tahun 1989 mengambil bagian yang penting dari kontribusi dari C++ untuk pemrograman terstruktur.

Dari 1990, komite ANSI X3J16 memulai pengembangan standar tertentu untuk C++. Pada masa lalu hingga publikasi pada tahun 1998 , C++ meninggalkan pengembangan besar dalam penggunaannya, dan saat ini adalah bahasa pilihan untuk mengembangkan aplikasi yang profesional pada semua platform.

C++ telah berkembang, dan versi baru dari standar, C++ 09, sedang dikembangkan untuk dapat diterbitkan sebelum akhir 2009, dengan beberapa fitur baru.
 

C + + memiliki karakteristik tertentu, yaitu :


Pemrograman berorientasi objek
pemrograman berorientasi obyek memungkinkan para programmer untuk mendesain aplikasi dari sudut pandang seperti komunikasi antara objek lebih daripada urutan kode yang terstruktur.

Portabilitas
kode C++  dapat dikompilasi di hampir semua jenis komputer dan sistem operasi tanpa melakukan perubahan apapun.

Keringkasan
Kode yang ditulis dalam C++ sangat pendek dibandingkan dengan bahasa lain, karena penggunaan karakter khusus yang lebih simple daripada kata-kata kunci.

Speed
Kode yang dihasilkan dari kompilasi C++ sangat efisien, karena memang ke dualitas sebagai tingkat tinggi dan bahasa tingkat rendah dan mengurangi ukuran dari bahasa itu sendiri.

Program modular
Bagian aplikasi di C++ dapat terdiri dari beberapa file source code yang dikompilasi secara terpisah dan kemudian dikaitkan bersama-sama. Menghemat waktu karena tidak perlu mengkompilasi ulang aplikasi lengkap saat melakukan perubahan, tetapi hanya satu bagian saja.Selain itu, karakteristik ini memungkinkan untuk menghubungkan kode C++ dengan kode  bahasa lain, seperti Assembler atau C.

Kompabilitas
C++ adalah kompatibel dengan bahasa C. Setiap kode yang ditulis dalam C dapat dengan mudah dimasukkan dalam C++ program tanpa membuat perubahan apapun.

14 Sep 2009

senannk na

asiiiikkk .. besook liburr lagii ampe minggu depan'' na lagii ..
padahal kn bru mazuk 1 minggu ..
wkwkkwkwk .. meski libur, tugaz tetep ada --"
males nyari materii buat tugazz ..
ada yg mw bantuu .. XD

13 Sep 2009

Harii pertamaa

ini hari pertama bikin blog ..
sebenarnya malesss bikin beginiian --"
tp akhirnya dibuat jg .. XD
wkwkkwk .. ud jem 01.45
semoga bz tidurrrr nyenyak malem nie ^^