{"id":1401,"date":"2013-12-17T23:41:21","date_gmt":"2013-12-17T16:41:21","guid":{"rendered":"http:\/\/www.sulhansetiawan.com\/?p=1401"},"modified":"2013-12-18T14:27:46","modified_gmt":"2013-12-18T07:27:46","slug":"object-or-class","status":"publish","type":"post","link":"https:\/\/sulhansetiawan.com\/id\/object-or-class\/","title":{"rendered":"Object atau Class"},"content":{"rendered":"<p><\/p>\n<div style=\"width: 96px; margin-left: auto; margin-right: auto;\"><a href=\"\/id\/?p=1400\"><img decoding=\"async\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/arrowleft_green_32.png\" title=\"ParamStr dan ParamCount\"\/><\/a><a href=\"\/id\/?p=1379\"><img decoding=\"async\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/home_green_32.png\" title=\"Tutorial Delphi\"\/><\/a><a href='\/id\/?p=1402'--><img decoding=\"async\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/arrowright_green_32.png\" title=\"Tipe pointer\"\/><\/a><\/div>\n<p>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.<\/p>\n<h3>Apakah Object itu?<\/h3>\n<p>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.<\/p>\n<p>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.<\/p>\n<h4>HariLahir dengan obyek<\/h4>\n<p>Untuk memperjelas pemahaman tentang object, perhatikan jika program HariLahir ditulis menggunakan tipe object sebagai berikut:<\/p>\n<pre class='brush: delphi'>program HariLahir4;\r\n{$APPTYPE CONSOLE}\r\ntype\r\n  TNamaBulan=(Januari=1, Pebruari, Maret, April,\r\n              Mei, Juni, Juli, Agustus, September,\r\n              Oktober, Nopember, Desember);\r\n  TObjectTanggal=object\r\n    Tanggal:integer;\r\n    Bulan:TNamaBulan;\r\n    Tahun:integer;\r\n    procedure AmbilTanggal;\r\n    function JumlahHari:integer;\r\n    function NamaHari:string;\r\n  end;\r\nconst\r\n  Hari:array[0..6]of string=\r\n        ('Minggu','Senin','Selasa','Rabu',\r\n        'Kamis','Jumat','Sabtu');\r\n  HariPertama=5;\r\nvar\r\n  TglLahir:TObjectTanggal;\r\n\/\/---implementasi TObjectTanggal------------------\r\n  procedure TObjectTanggal.AmbilTanggal;\r\n  var tmp:integer;\r\n  begin\r\n    Write('Tanggal ?: ');\r\n    Readln(Tanggal);\r\n    Write('Bulan ?  : ');\r\n    Readln(tmp);\r\n    Bulan:=TNamaBulan(tmp);\r\n    Write('Tahun ?  : ');\r\n    Readln(Tahun);\r\n  end;\r\n\r\n  function IsKabisat(Y:integer):boolean;\r\n  begin\r\n    result:=((Y mod 4=0)and(Y mod 100<>0))\r\n            or(Y mod 400=0);\r\n  end;\r\n\r\n  function TObjectTanggal.JumlahHari:integer;\r\n    function HariDlmBulan(B:TNamaBulan):integer;\r\n    begin\r\n      case B of\r\n      Januari,Maret,Mei,Juli,Agustus,\r\n      Oktober,Desember:result:=31;\r\n      April,Juni,September,Nopember:result:=30;\r\n      Pebruari:if IsKabisat(Tahun)\r\n                then result:=29 else result:=28;\r\n      end;\r\n    end;\r\n  var i:TNamaBulan;\r\n      ii:integer;\r\n  begin\r\n    result:=0; \r\n    \/\/Hitung hari dalam tahun\r\n    for ii:=0 to Tahun-1 do\r\n      if IsKabisat(ii)then result:=result+366\r\n         else result:=result+365; \r\n    \/\/tambahkan dengan sisa hari\r\n    for i:=Januari to Pred(Bulan)do\r\n      result:=result+HariDlmBulan(i);\r\n    result:=result+Tanggal;\r\n  end;\r\n\r\n  function TObjectTanggal.NamaHari:string;\r\n  var i:integer;\r\n  begin\r\n    i:=(JumlahHari+HariPertama)mod 7;\r\n    result:=Hari[i];\r\n  end;\r\n\/\/---------------------------------------------\r\n  procedure DisplayHari(Tgl:TObjectTanggal);\r\n  begin\r\n    Writeln('Anda lahir hari ',Tgl.NamaHari);\r\n  end;\r\n\r\n  procedure AmbilData;\r\n  begin\r\n    Writeln('**Semua data dalam angka**'#13#10);\r\n    Writeln('Masukkan data tanggal lahir');\r\n    TglLahir.AmbilTanggal;\r\n  end;\r\n\r\nbegin\r\n  AmbilData;\r\n  DisplayHari(TglLahir);\r\n  Writeln('Tekan Enter');\r\n  Readln;\r\nend.<\/pre>\n<p>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.<\/p>\n<p>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.<\/p>\n<div style=\"width: 96px; margin-left: auto; margin-right: auto;\"><a href=\"\/id\/?p=1400\"><img decoding=\"async\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/arrowleft_green_32.png\" title=\"ParamStr dan ParamCount\"\/><\/a><a href=\"\/id\/?p=1379\"><img decoding=\"async\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/home_green_32.png\" title=\"Tutorial Delphi\"\/><\/a><a href='\/id\/?p=1402'--><img decoding=\"async\" src=\"https:\/\/sulhansetiawan.com\/_wordpress_\/2013\/12\/arrowright_green_32.png\" title=\"Tipe pointer\"\/><\/a><\/div>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>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&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105,104,96,145],"tags":[106],"class_list":["post-1401","post","type-post","status-publish","format-standard","hentry","category-delphi-lazarus","category-programming","category-all","category-tutorial","tag-delphi"],"_links":{"self":[{"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/posts\/1401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/comments?post=1401"}],"version-history":[{"count":0,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/posts\/1401\/revisions"}],"wp:attachment":[{"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/media?parent=1401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/categories?post=1401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sulhansetiawan.com\/id\/wp-json\/wp\/v2\/tags?post=1401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}