Contoh Program Implementasi Abstract Data Type ( ADT )

No comments:
Makul : Algoritma dan Struktur Data
ABSTRACT DATA TYPE
1.      TUJUAN
Membuat program yang menggunakan abstract data type (ADT)
2.      PERMASALAHAN
Membuat program yang memodelkan hewan peliharan virtual (VPet). Pet memiliki berat dan bisa berstatus lapar dan tidak lapar. Pet bisa diberi makan yang akan berefek pada status laparnya berdasarkan :
- jika berat makanan >=  ½ berat pet, maka pet tidak lapar, jika tidak maka pet lapar
- setiap diberi makan berat pet bertambah ¼ berat makanan
3.      DESAIN
a.       STEP 1 SPESIFICATION

 















b.      STEP 2 APPLICATION
Operation
Discription
c/c++
VPet(b,stts)
Membuat VPet dengan menentukan berat dan status lapar pet. Memberikan nilai pada variabel b yaitu sebagai berat dan variabel stts sebagai bool lapar. (constructor)
VPet charlie(150, false);
VPet()
Membuat VPet tanpa menentukan berat dan status lapar/menggukanan default. Memberikan nilai default kepada berat dan status lapar pet bila pengguna tidak memberikan nilai. (constructor)
VPet::VPet(){
           berat = 100;
           lapar = true;
}
VPet heli;
berimakan(jml)
Memberi VPet makan. Memberikan nilai ke variabel jml yang digunakan sebagai jumlah makanan yang diberi (mutator)
charlie.berimakan(10); atau charlie.berimakan(jml);
getLapar()
Mengakses status bool lapar (accessor)
charlie.getBerat()
double VPet::getBerat(){
            return berat;
}
getBerat()
Mengakses berat VPet
charlie.getLapar()
bool VPet::getLapar(){
            return lapar;
}

c.       STEP 3 IMPLEMENTATION
#include <iostream>
using namespace std;

class VPet {
public:
      //Members Functions
      // (constructors)
      VPet(double berat, bool lapar);
      VPet();

      void berimakan(double jumlah);
      bool getLapar();
      double getBerat();

private:
      // Data Members
      double berat;
      bool lapar;
};

VPet::VPet(double b, bool stts){
      berat = b;
      lapar = stts;
}

VPet::VPet(){
      berat = 100;
      lapar = true;
}

void VPet::berimakan(double jml){
      if(jml >= 0.5 * berat){
            lapar = false;
      }
      else{
            lapar = true;
      }
      berat = berat + 0.25 * jml;
}

double VPet::getBerat(){
      return berat;
}
bool VPet::getLapar(){
      return lapar;
}

void main(){

      VPet charlie(150, false);
      VPet heli;
      double jml;
      cout<<"Jumlah makanan yang diberikan untuk hewan - hewan peliharaan (kg) : ";
      cin>>jml;

      charlie.berimakan(jml);
      heli.berimakan(jml);

      cout<<"Berat Heli : "<<heli.getBerat()<<" kg"<<endl;
      if(heli.getLapar())
      {
            cout<<"Heli masih lapar"<<endl;
      }
      else
      {
            cout<<"Heli tidak lapar"<<endl;
      }
      cout<<"Berat Charlie : "<<charlie.getBerat()<<" kg"<<endl;
      if(charlie.getLapar())
      {
            cout<<"Charlie masih lapar"<<endl;
      }
      else
      {
            cout<<"Charlie tidak lapar"<<endl;
      }

      system("pause"); 
}

                               
                        Program Screenshot :