Iklan

4/2/14

Method


Method adalah procedure atau function yang dihubungkan dengan sebuahkelas atau sebuah object. Untuk memanggil method dari sebuah kelas kita perlu membubuhkan kelas yang memiliki method tersebut seperti
Sebuah kelas.free;
Artinya kita memanggil method free yang dimiliki kelas sebuahkelas.
Di bawah ini kita akan membahas tentang hal hal yang berkenaan dengan method sebuah kelas antara lain:
Method declaration dan implementation.
Method binding.
Overloading method.
Constructor dan Destructor.
Message method.
Tentang method
Didalam deklarasi sebuah kelas, method akan nampak seperti heading sebuah procedure atau function, yang berfungsi sebagai forward deklarasi. Kemudian kita dapat meletakan dimana saja tetapi masih didalam modul yang sama kita harus mengimplementasikan dengan mendefinisikan method tersebut.sebagai contoh kita dapat mengumpamakan sebuah kelas bernamaTMyclass memiliki method DoSomething:
type
   TMyClass = class(TObject)
      ...
      procedure DoSomething;
      ...
   end;
di bagian implementation kita harus mendefinisikan deklarasi dari method tersebut
procedure Tmyclass.DoSomething;
begin
end;
ketika kita mendefinisikan sebuah deklarasi method dibagian implementation harus menyertakan nama dari kelas pemilik method tersebut. Kita juga dapat mengulang parameter dari method dengan catatan harus sesuai dengan nama dan type yang dideklarasikan dibagian interface begitu juga untuk nilai keluaran sebuah function(return).
Deklarasi sebuah method dapat mengandung spesial direcrtive yang tidak dapat dipakai didalam procedur dan function biasa.penempatan directive tersebut hanya di bagian n deklarasi kelas bukan pada pendefinisian deklarasi dari method tersebut.
Reintroduce
Overload
Binding  yaitu : Virtual, Dynamik, atau override.
Calling convention yaitu : register, pascal, cdecl, stdcall, or safecall.
Abstract
Warning yaitu : platform, deprecated, atau library.

bersambung

3/18/14

Field


Sepertinya untuk pembahasan field tidak akan panjang  lebar karena field seperti variable yang dimiliki kelas dan tentunya sama seperti variabel pada umumnya dapat dideklarasikan dengan berbagai tipe termasuk objek dan kelas.hanya disini saya akan memberikan sebuah kasus yang perlu kita memahami.
type
   TAncestor = class
      Value: Integer;
   end;
   TDescendant = class(TAncestor)
      Value: string;    // hides the inherited Value field
   end;
var
   MyObject: TAncestor;    
begin
   MyObject := TDescendant.Create;
   MyObject.Value := 'Hello!'     // error
  (MyObject as TDescendant).Value := 'Hello!'   // works!
end;

kita dapat melihat contoh diatas dimana nama field yang sama antara parent dan turunannya.
Value sebagai field dari Tancestor memiliki type integer sedangkan Tdecendant memiliki field beranama value tapi bertipe string, dengan begitu bila turunan yang berikutnya akan memiliki duabuah field yang diwariskan memiliki nama yang sama tapi memiliki type yang berbeda, pada kasus ini secara devault kompiler akan menterjemahkan value sebagai type integer.oleh karena itu kita harus secara detail dalam penggunaan field tersebut  seperti (MyObject as TDescendant).Value;

3/6/14

Rahasia User Guid


User guid bagi saya pribadi jarang menjadi perhatian ketika mempelajari sebuah program,bukan karena pa-apa tapi karena bahasa yang digunakan userguid kebanyakan bahasa inggris, mungkin dikarenakan bahasa inggri adalah bahasa global, tapi bagi kita yang kurang atau belum bisa akan terasa sulit sekali jika harus memahami bahasa inggris apa lagi menyangkut bahasa pemrograman, selain kita harus mengerti arti dari bahasa inggri nya tersendiri juga kita harus memahami istilah yang dimaksud sang penulis.”maksud sebuah lafadz didasarkan kepada maksud(niat) yang mengucapkan “(mungkin yang pernah belajar agama islam di pesantren tau ) .namun ketika saya berusaha mempelajari bahasa delphi dari buku yang berbahasa indonesia ada beberapa hal yang tidak dibahas oleh sipenulis entah karena keterbatasan ruang  atau maksud buku tersebut dibuat (karena buku buku yang saya baca bersifat praktis), dan ketika saya membaca user guid ada beberapa rahasia besar mulai terungkap mungkin karena user guid dibuat oleh sang pengembang yang betul betul memahami tujuan dan maksud sebuah kata dari bahasa pascal untuk delphi. Dan juga ada beberapa istilah yang digunakan didalam tulisan berbahasa indonesia,dimana saya rasakan kurang tepat.memang saya pun menyadari betapa sulitnya memaknai sebuah istilah, yang mana istilah tersebut  ditulis, dalam bahas yangberbeda dengan bahasa yang  kita gunakan sehari-hari.
Mungki terasa semerawut ketika anda membaca tulisan saya karena saya bukan seorang ahli bahasa inggris, indonesia maupu delphi. Tapi atas dasar rasa ingin tahu dan berbagi saya berusaha menterjemahkan user guid dengan segala keterbatasan saya.( hasil terjemahan diberi label bahasa delphi). Jika sobat delphi menemukan istilah yang kurang tepat atau lebih jelasnya ngawur mohon tinggalkan komentar,artikel yang berkaitan. Saya pribadi tidak ingin membuat orang lain tersesat di semesta pengetahuan yang begitu luas seperti tak berujung.(kayak pujangga aja :p)
Dengan berbagi dan memberi orang lain tahu(bukan makanan yang saya maksud) apa yang kita tahu, kita akan tahu seberapa besar tahu kita.(kedle lagi mahal banyak makan tahu).

3/2/14

Algoritma Merupakan Jantung Informatika

 (diambil dari buku: Algoritma dan Pemrograman Dalam bahasa Pascal dan C Edisi ke3 buku 1,Renaldi Munir, penerbit Informatika,2005)
Algoritma Adalah Jantung ilmu komputer atau informatika. Banyak Cabang ilmu komputer yang diacu dalam terminologi algoritma.Dalam kehidupan sehari-haripun banyak terdapat proses yang digambarkan dalam suatu algoritma. Cara-cara membuat kue atau masakan, misalnyadinaytakan dalam suatu resep. Resep masakan adalah suatu algoritma,misalnya, resep membuat Otak-otak Ikan bandeng (dikutip dari tabloit Nova 25 agustus 1996) .

Pada setiap resep selalu ada urutan langkah-langkah membuat masakan.ibu-ibu yang mencoba resep sebuah masakan akan membaca satu persatu langkah pembuatannya, lalu ia mengerjakan proses sesuai dengan yang ia baca.secara umum, pihak yang mengerjakan proses disebut pemroses(processor).pemroses tersebut bisa berupa manusia,komputer,robot,atau alat-alat mekanik/elektronik lainnya. pemrosesmelakukan suatu proses dengan mellaksanakan atau mengeksekusi algoritma yang menjabarkan proses tersebut. melaksanakan algoritma,berarti melaksanakan langkah-langkah di dalam algoritma tersebut.

(didalam buku dituliskan resep bagai mana membuat otak-otak. namun saya tidak menuliskannya karena dirasa itu tidak perlu karna mungkin kita sudah tau bagai mana sebuah resep masakan di tulis dimana bahan bahan yang dibutuhkan terlebih dahulu di cantumkan kemudiaan proses bagai mana membuatnya.)

pemroses, mengerjakan proses sesuai dengan algoritma yang diberikan kepadanya. juru masak membuat kue berdasarkan resep yang diberikan kepadany koma pianis memainikan lagu berdasarkan papan not balok, teknisi merakit mobil berdasarkan panduan merakit. karena itu suatu algoritma harus dinyatakan dalam bentuk yang dapat dimengerti oleh pemrooses. seorang pianis tidak dapat memainkan musik bila ia tidak mengerti not balok.
menurut (Goldshlager,Les & Lister,Anfrew,Computer Science, A Modern Introduction, Edisi kedua,Prentice Hall,1988.) suatu pemroses harus:
1. mengerti setia[ lankah dalam algoritma,
2 mengerjakan operasi yang bersesuaian dengan langkah tersebut.

Kelas dan Objek

Sebuah kelas, atau type kelas, menggambarkan sebuah struktur yang terdiri atas field, method dan property, hasil jadi sebuah kelas disebut objek. field,method,dan property dari sebuah kelas di sebut komponen member.
"kelas adalah cetakan bagi objek" (Abdul Kadir: Dasar Pemrograman Perl)


Pada hakikatnya objek adalah pengalokasian blok memory secara dinamis yang strukturnya  ditentukan oleh type class.masing-masing objek memiliki kopian tersendiri dari field yang didefinisikan didalam kelas.akan tetapi objek turunan dari kelas berbagi method yang sama. objek dibuat dan dibebaskan dengan method khusus yang diberi nama constructors dan destructors.


Sebuah variabel kelas sejatinya adalah variabel pointer yang mengacu kepada objek.oleh karenanya beberapa variabel bisa mengacu pada objek yang sama. Seperti variabel pointer umumnya variabel tipe kelas dapat mengandung nilai nil,namun ketika penulisan kita tidak memperlakukan variabel kelas ini sebagai mana kita mengacu pada sebuah variabel pointer.
Contoh : sebuahkelas.ukuran:=100; dimana bila variabel pointer akan dibubuhkan tanda “^”  untuk mengacu variabelnya seperti  sebuahkelas^.ukuran:=100; namun hal ini tidak bisa dilakukan.

 
Sebuah tipe kelas  harus dideklarasikan terlebih dahulu dan diberi nama sebelum di kenali,kita tidak bisa mendefinisikan sebuah kelas didalam deklarasi variabel,pendeklarasian kelas hanya pada bagian terluar dari program atau unit bukan pada bagian procedur atau function.
Kita dapat menuliskan deklarasi sebuah kelas seperti ini:

Type
Namakelas=class (ancestorClass)
//Daftar member
End;

Dimana nama dari kelas adalah valid identifier(lihat aturan identifier dalam elemen sintak). (ancestor class) bersifat opsional ancestor di isi parent kelas yang sudah ada(telah dideklarasikan), daftar member berisi field,method, dan properti dari kelas tersebut.jika kita mengosongkan (ancestor class) maka kelas yang baru akan mewarisi kelas Tobject.tapi jika klita mengisinya dan tidak mengisi memberlist kita tidak perlu membubuhkan kata End diakhir deklarasi.

Method yang di bubuhkan didalam deklarasi sebuah kelas hanya heading dari sebuah fungsi atau prosedur tanpa body. Gambaran body ditempatkan pada bagian lain dari program.
Mari kita lihat contoh berikut sebuah contoh deklarasi TMemoryStream sebuah kelas dari unit classes.

type TMemoryStream = class(TCustomMemoryStream)
            private
              FCapacity: Longint;
              procedure SetCapacity(NewCapacity: Longint);
            protected
              function Realloc(var NewCapacity: Longint): Pointer; virtual;
              property Capacity: Longint read FCapacity write SetCapacity;
            public
              destructor Destroy; override; 
              procedure Clear;
              procedure LoadFromStream(Stream: TStream);
              procedure LoadFromFile(const FileName: string);
              procedure SetSize(NewSize: Longint); override;
              function Write(const Buffer; Count: Longint): Longint; override;
          end;

TmemoryStream adalah turunan dari TcustomMemoryStream. Kebanyakan membernya diwarisi darinya,dengan atau tanpa dideklarasikan ulang.

Warisan
Ketika kita membuat sebuah kelas kita dapat menentukan ancestor(indo:nenek moyang)nya secara langsung, dan secara otomatis mewarisi setiap member yang dimiliki ancestornya ,dan kita dapat menambah atau mendeklarasikan ulang setiap member,tetapi kita tidak bisa menghapus member yang dimiliki oleh ancestornya.

Tobject dan Tclass
Kelas Tobject dideklarasikan didalam unit System ,nenek moyang pertama darisemua kelas yang ada. Tobjek hanya mendefinisikan sebagian kecil dari method-method,termasuk constructor dan destructor. Unit system mendefinisikan kelas acuan untuk tipe-tipe kelas.
Tclass = class of Tobject;
Jika deklarasi sebuah kelas tidak dibubuhi ancestor, kelas tersebut akan mewarisi dari kelas Tobject secara langsung.
Seperti:

Type
        Myclass :class
......
End;

Sama dengan

Type
            Myclass=class(Tobject);
             ......
            End;
Tetapi bentuk yang terakhir direkomendasikan untuk tujuan kemudahan pembacaan.

Compatibility of type class
Sebuah tipe kelas bersifat assignment-compatible dengan nenekmoyangnya(yaitu nilai yang dimasukan kedalam kelas nenek moyang nya dapat juga dimasukan kepada kelas tersebut). 

Type
TFigure=class(TObject);
Trectangle=class(TFigure);
Tsquare=class(TRectangle);
Var
            Fig:Tfigure;

Variabel fig di atas dapat dimasukan nilai dari tipe Tfigure,Trectangle,dan Tsquare.

Tipe Objek
kompiler delphi 32 menyediakan alternatip lain untuk mendeklarasikan sebuah kelas. dan kita dapat mendeklarasikannya seperti:

type
      Objectypename=object(ancestorobjecttype)
      //daftar member;
      end;

Tipe objek bukan turunan dari TObject,artinya objek tidak memilikiwarisan berupa construktor dan destruktor maupun method dan yang lainnya. untuk menciptakan sebuah objeck kita dapat menggunakan kata procedure New dan membebaskan dengan procedure Dispose.atau kita hanya menempatkan variable sebagai mana kita membuat sebuah record.

Visibility of Class Members
 setiap member sebuah kelas memiliki atribut yang disebut visibility, yang mana atribut ini ditandai dengan reservedword private, protected, public, published, atau automated.
contoh :
published property color:TColor read Getcolor write Setcolor;

Visibility menentukan dimana dan bagaimana sebuah member dapat di akses.
untuk tingkatan level pengaksesan sebuah member dapat ditandai privat dengan akses level terrendah protected pertengahan dan public,published atau automated akses level tertinggi.

jika sebuah member ditulis tanpa dibubuhi visibility maka member tersebut akan mengikuti visibility member sebelumnya, dan bila member pertama tidak memiliki visibility maka member tersebut memiliki tingkat visibility default yaitu published.


Namun agar skrip kita readability(mudah dibaca oleh manusia) kida dapat membegi kepada blok-blok seperti dibawah ini

type
    TMyClass = class(TControl)
      private
         ...  { private declarations here }
      protected
         ...  { protected declarations here }
      public
         ...  { public declarations here }
      published
         ...  { published declarations here }
    end;

kita dapat meningkatkan visibility sebuah member dengan mendeklarasikan ulang member tersebut. tapi kita tidak dapat menurunkan visibility dari sebuah member, sebuah protected property dapat kita ubah menjadi public property didalam turunan. tapi tidak bisa dirubah kepad private.dan published member tidak dapat menjadi public.

Private, Protected, dan Public Members

sebuah private member bersifat invisible terhadap modul (unit atau program) diluar modul dimana member tersebut dideklarasikan. dengan kata lain private methodnya tidak dapat dipanggil dari modul lain dan filed ,property method tidak dapat ditulis atau di baca dari luar modul 

protected- field, method dan property dengan sifat ini hanya bisa diakses turunan.

public dapat diakses dari luar unit

published property yang berisfat published ditampilkan pada objectinspector. method dan filed nya dapat diakses dari mana saja.

bersambung

 

Iklan