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.

Time limit is exhausted. Please reload the CAPTCHA.

Beritahu saya melalui email jika ada balasan komentar di artikel ini. Anda juga dapat berlangganan tanpa harus memberi komentar.