Layar monitor yang sedang Anda gunakan untuk melakukan percobaan ini, di dalamnya terdapat banyak sekali kerumitan yang tidak Anda lihat. Tentu saja karena layar monitor tersebut dibungkus dengan kotak (walaupun tidak benar-benar berbentuk kotak). Kotak layar monitor disamping untuk membuatnya tampak rapi juga berfungsi agar peralatan-peralatan penting di dalamnya tidak dijamah secara langsung. Pada bagian depan terdapat beberapa tombol untuk melakukan pengaturan seperti untuk mengatur kontras dan kecerahan gambar. Hanya melalui tombol-tombol itulah Anda diijinkan untuk melakukan pengaturan terhadap layar monitor Anda.
Visibilitas field dan method
Untuk membentuk class yang memiliki gambaran seperti layar monitor di atas, kita bisa mengatur visibilitas field atau method. Pengaturan visibilitas pada class adalah dengan memberikan kata private, protected, public, dan publish.
- private
Field atau method dengan visibilitas ini hanya bisa diakses dari unit dimana difinisi class berada.
- public
Field atau method dengan visibilitas ini bisa diakses dari mana saja.
- protected
Visibilitas ini adalah public untuk class turunan dan private untuk akses selain class turunan.
- publish
Visibilitas ini adalah seperti public. Field dengan visibilitas ini akan terlihat melalui Object Inspector. Selain visibilitas pada Object Inspector, publish akan memiliki akses yang sama dengan public. Visibilitas publish akan berguna pada pembuatan komponen.
Mengapa kita mengatur visibilitas field dan method
Dalam contoh program Turunan, proses menggambar hanya membuat tulisan untuk menunjukkan bahwa proses tersebut dijalankan. Pada program yang sesungguhnya, proses menggambar tentu akan benar-benar membuat gambar tertentu dan menggunakan variabel posisi untuk menentukan dimana harus menggambar.
Jika variabel posisi ini berubah, maka program harus melakukan penggambaran ulang sesuai dengan posisi yang baru. Jika menggambar ulang ini tidak dilakukan, maka antara gambar dan variabel posisi bisa terjadi ketidaksesuaian atau sering disebut dengan inkonsistensi. Untuk mencegah terjadinya ketidaksesuaian ini, maka akses terhadap variabel posisi tidak boleh dilaksanakan secara langsung.
Untuk mendapatkan nilai variabel ini dilakukan melalui sebuah fungsi yang biasanya diberi nama Get diikuti nama field-nya (misalnya GetPosisi). Sementara untuk merubah nilai variabel ini dilakukan melalui sebuah prosedur yang biasanya diberi nama Set diikuti nama field-nya (misalnya SetPosisi). Sementara variabel (field) itu sendiri ditempatkan pada lokasi yang tersembunyi. Yaitu dengan menempatkan pada bagian private. Dengan cara ini, maka kita bisa memastikan agar isi dari variabel posisi akan konsisten dengan posisi gambar obyeknya.
Contoh program yang menggunakan pengatur visibilitas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | program Visibilitas; {$APPTYPE CONSOLE} type TPoint=record X,Y:integer; end; TGambar=class(TObject) private FPosisi:TPoint; public procedure GambarObyek; function GetPosisi:TPoint; procedure SetPosisi(const Value:TPoint); end; procedure TGambar.GambarObyek; begin Write('Menggambar obyek pada '); Writeln(FPosisi.X,':',FPosisi.Y); end; function TGambar.GetPosisi:TPoint; begin result:=FPosisi; end; procedure TGambar.SetPosisi(const Value:TPoint); begin //tidak ada yang perlu dilakukan jika //Value sama dengan Posisi if(Value.X=FPosisi.X)and(Value.Y=FPosisi.Y) then exit; FPosisi:=Value; //merefleksikan perubahan GambarObyek; end; var Gambar:TGambar; Pilihan:Char; P:TPoint; begin //membuat obyek Gambar:=TGambar.Create; Gambar.GambarObyek; repeat Writeln(#13#10'Tentukan pilihan'); Writeln('1:Melihat posisi'); Writeln('2:Memindah posisi'); Writeln('3:Menggambar ulang'); Writeln('4:Selesai'); Write('Pilihan Anda: '); Readln(Pilihan); Writeln; case Pilihan of '1':begin P:=Gambar.GetPosisi; Write('Posisi gambar pada '); Writeln(P.X,':',P.Y); end; '2':begin Write('Posisi X baru: '); Readln(P.X); Write('Posisi Y baru: '); Readln(P.Y); Gambar.SetPosisi(P); end; '3':Gambar.GambarObyek; '4':Break; else continue; end; until False; //membuang obyek Gambar.Free; end. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | C:\Source>Visibilitas Menggambar obyek pada 0:0 Tentukan pilihan 1:Melihat posisi 2:Memindah posisi 3:Menggambar ulang 4:Selesai Pilihan Anda: 2 Posisi X baru: 0 Posisi Y baru: 0 Tentukan pilihan 1:Melihat posisi 2:Memindah posisi 3:Menggambar ulang 4:Selesai Pilihan Anda: 2 Posisi X baru: 3 Posisi Y baru: 4 Menggambar obyek pada 3:4 Tentukan pilihan 1:Melihat posisi 2:Memindah posisi 3:Menggambar ulang 4:Selesai Pilihan Anda: 1 Posisi gambar pada 3:4 Tentukan pilihan 1:Melihat posisi 2:Memindah posisi 3:Menggambar ulang 4:Selesai Pilihan Anda: 3 Menggambar obyek pada 3:4 Tentukan pilihan 1:Melihat posisi 2:Memindah posisi 3:Menggambar ulang 4:Selesai Pilihan Anda: 4 C:\Source> |
Sebagai informasi tambahan, penamaan field private biasanya diberi huruf depan F.


