Object atau Class

Kebanyakan pemrogram pemula selalu ingin cepat-cepat membuat program dengan tampilan bagus. Mereka kurang menyukai keindahan yang terjadi behind the scene. Jika Anda termasuk orang yang cepat bosan dan lebih menyukai tampilan luar, maka Anda boleh melompati bagian ini dan langsung ke bagian VCL. Anda bisa kembali lagi ke bagian ini jika sudah merasa perlu untuk mengetahui hal-hal yang bersifat mendasar.

Apakah Object itu?

Pada bagian ini kita masih melakukan percobaan di dalam console. Akan tetapi karena obyek memiliki pembahasan yang cukup panjang dan merupakan pembahasan utama di dalam tutorial ini, maka saya menempatkan pembahasan mengenai obyek ini di dalam bab yang terpisah dari pembahasan console.

Jika record dapat mengumpulkan beberapa variabel menjadi satu variabel, maka object tidak hanya sebatas mengumpulkan variabel. Sebuah object dapat mempunyai prosedur dan fungsi. Untuk memanggil prosedur atau fungsi dari sebuah obyek, caranya mirip dengan mengakses anggota variabel dari sebuah record, yaitu dengan menyebutkan nama obyeknya diikuti dengan titik diikuti dengan nama prosedur atau fungsi yang hendak dipanggil.

HariLahir dengan obyek

Untuk memperjelas pemahaman tentang object, perhatikan jika program HariLahir ditulis menggunakan tipe object sebagai berikut:

program HariLahir4;
{$APPTYPE CONSOLE}
type
  TNamaBulan=(Januari=1, Pebruari, Maret, April,
              Mei, Juni, Juli, Agustus, September,
              Oktober, Nopember, Desember);
  TObjectTanggal=object
    Tanggal:integer;
    Bulan:TNamaBulan;
    Tahun:integer;
    procedure AmbilTanggal;
    function JumlahHari:integer;
    function NamaHari:string;
  end;
const
  Hari:array[0..6]of string=
        ('Minggu','Senin','Selasa','Rabu',
        'Kamis','Jumat','Sabtu');
  HariPertama=5;
var
  TglLahir:TObjectTanggal;
//---implementasi TObjectTanggal------------------
  procedure TObjectTanggal.AmbilTanggal;
  var tmp:integer;
  begin
    Write('Tanggal ?: ');
    Readln(Tanggal);
    Write('Bulan ?  : ');
    Readln(tmp);
    Bulan:=TNamaBulan(tmp);
    Write('Tahun ?  : ');
    Readln(Tahun);
  end;

  function IsKabisat(Y:integer):boolean;
  begin
    result:=((Y mod 4=0)and(Y mod 100<>0))
            or(Y mod 400=0);
  end;

  function TObjectTanggal.JumlahHari:integer;
    function HariDlmBulan(B:TNamaBulan):integer;
    begin
      case B of
      Januari,Maret,Mei,Juli,Agustus,
      Oktober,Desember:result:=31;
      April,Juni,September,Nopember:result:=30;
      Pebruari:if IsKabisat(Tahun)
                then result:=29 else result:=28;
      end;
    end;
  var i:TNamaBulan;
      ii:integer;
  begin
    result:=0; 
    //Hitung hari dalam tahun
    for ii:=0 to Tahun-1 do
      if IsKabisat(ii)then result:=result+366
         else result:=result+365; 
    //tambahkan dengan sisa hari
    for i:=Januari to Pred(Bulan)do
      result:=result+HariDlmBulan(i);
    result:=result+Tanggal;
  end;

  function TObjectTanggal.NamaHari:string;
  var i:integer;
  begin
    i:=(JumlahHari+HariPertama)mod 7;
    result:=Hari[i];
  end;
//---------------------------------------------
  procedure DisplayHari(Tgl:TObjectTanggal);
  begin
    Writeln('Anda lahir hari ',Tgl.NamaHari);
  end;

  procedure AmbilData;
  begin
    Writeln('**Semua data dalam angka**'#13#10);
    Writeln('Masukkan data tanggal lahir');
    TglLahir.AmbilTanggal;
  end;

begin
  AmbilData;
  DisplayHari(TglLahir);
  Writeln('Tekan Enter');
  Readln;
end.

Variabel TglLahir adalah variabel dengan tipe TObjectTanggal. Tipe tersebut memiliki prosedur AmbilTanggal untuk mengisi variabel Tanggal, Bulan dan Tahun yang dimilikinya. Prosedur AmbilData adalah prosedur yang bertujuan untuk mengisi variabel Tanggal, Bulan, dan Tahun dari obyek TglLahir. Oleh karena itu prosedur AmbilData memanggil prosedure AmbilTanggal yang dimiliki oleh setiap obyek dengan tipe TObjectTanggal dengan cara TglLahir.AmbilTanggal.

Prosedur DisplayHari bertujuan untuk menampilkan hari yang sesuai dengan tanggal yang dimiliki oleh TglLahir. Oleh karena itu prosedur DisplayHari memanggil fungsi NamaHari dari obyek Tgl yang merupakan parameter dari prosedur DisplayHari. Cara pemanggilannya adalah Tgl.NamaHari.

Apakah Anda menyukai post ini? Mengapa tidak memberikan komentar di bawah dan melanjutkan perbincangan, atau berlangganan my feed dan dapatkan artikel semacam ini yang dikirm secara otomatis feed reader Anda.
Harap diperhatikan bahwa komentar atau pertanyaan yang disampaikan haruslah sesuai dengan topik yang sedang dibahas. Komentar atau pertanyaan yang tidak sesuai dengan topik akan kami hapus :!:

Tinggalkan komentar

Sebelum membuat komentar, pastikan Anda telah membaca komentar-komentar sebelumnya. Jangan membuat pertanyaan yang telah ditanyakan. Perhatikan pula link-link dalam artikel. Lihatlah link tersebut sebelum membuat pertanyaan, karena mungkin penjelasan dari pertanyaan Anda telah di jawab dalam link tersebut.

Komentar yang tidak mengikuti aturan ini akan dihapus!

(wajib)

(wajib)


Time limit is exhausted. Please reload the CAPTCHA.