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.
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;
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.
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.
( Sumber : http://contoh-delphi.blogspot.com/2014/03/kelas-dan-objek.html )
0 komentar:
Posting Komentar