Dear Angoming,
Seperti yang sudah disampaikan Mas Adwin, mau tidak mau anda bisa
menggunakan konsep static variable di classA. Mestinya ini bisa
memecahkan masalah anda :
classA = class
public
procedure Ubah(x,y:integer);
procedure Lihat;
end;
implementation
uses Dialogs, variants;
var
globalX, globalY:integer;
{ classA }
procedure classA.Lihat;
begin
showMessage(varToStr(globalX) + ':' + varToStr(globalY));
end;
procedure classA.Ubah(x, y: integer);
begin
globalX := x;
globalY := y;
end;
end.
///////////////////////////////////////////////////////////////
type
classB = class(classA)
end;
classC = class(classA)
end;
/////////////////////////////////////////////////////////////////
begin
a := classA.Create;
b := classB.Create;
c := classC.Create;
a.Ubah(1, 5);
a.Lihat;
b.Lihat;
c.lihat;
b.Ubah(10, 50);
a.Lihat;
b.Lihat;
c.lihat;
end;
Di sini a, b, dan c akan melihat hal yang sama.
Yang saya herankan mengapa Delphi tidak membuat deklarasi globalX dan
globalY tampak static, tidak seperti di Java. Keyword static membuat
deklarasi variabel menjadi jelas bahwa dia emang static.
Salam,
Wisnu Widiarta
-----Original Message-----
From: bla-bla-bla [mailto:[EMAIL PROTECTED]]
Sent: 09 Desember 2002 12:38
To: [EMAIL PROTECTED]
Subject: Re: [Delphindo] OOP
Wow .. ngak nyangka dapat jawaban yg begitu detail dan sangat jelas.
(saya yang nanya saja ngak bisa nulis begitu terperinci)
Thnx untuk Pak Wisnu.
Ini reply saya :
Kode contoh (bagian atas) yg anda berikan .... persis seperti apa yang
saya
buat.
Dan hasilnya juga persis sama sepertu yang anda terangkan.
> Kalau anda ingin mengubah nilai var1 dan var2 milik aClassB melalui
> aClassC, ada banyak cara. Semuanya tergantung desain OO masalah anda.
> Salah satunya adalah mempassing reference aClassB ke dalam constructor
> aClassC. Lalu pengubahan ChangeVar1 dan ChangeVar2 tidak mengubah
nilai
> var1 dan var2 yang didapat dari aClassA, namun langsung ke reference
> aClassB.
Yg saya inginkan adalah :
=================
ClassA
variable a, b: string
procedure rubah(a,b);
procedure lihat;
procedure rubah(x, y)
begin
a := x;
b := y;
end;
procedure lihat;
begin
ShowMessage('Nilai a : ' + a + ' dan b : ' + b);
end;
=================
ClassB, ClassC, ClassD ...... ClassZ (turunan dari A)
kalau kita memakai procedure "rubah(x,y)" dari Class mana saja .....
maka
ketika kita memakai procedure "lihat" dan yang akan ditampilkan adalah
variable a dan b yang dirubah paling akhir sebelum procedure "lihat"
diakses.
misalnya :
================
ClassB.rubah('saya', kamu');
ClassC.rubah('Dia','Dia');
ClassD.lihat; {yg ditampilkan adalah "a=Dia b=Dia"}
ClassY.rubah('Ayam', 'Sapi');
ClassZ.rubah('Kambing', 'Rusa');
ClassD.rubah('bedak', 'lipstick');
ClassK.lihat; {yg ditampilkan adalah "a=bedak b=lipstick"}
================
Jadi seakan-akan saya mempunyai variable global a dan b untuk semua
kelas
turunan ClassA.
ada ide lainnya nggak ??
thnx en bye
Berlangganan: [EMAIL PROTECTED]
Stop Berlangganan: [EMAIL PROTECTED]
Keluhan Milis(Unbouncing,spam,dll): [EMAIL PROTECTED]
Your use of Yahoo! Groups is subject to
http://docs.yahoo.com/info/terms/
----------------------------------------------------------------------------
Ikuti polling TELKOM Memo 166 di www.plasa.com dan menangkan hadiah masing-masing Rp
250.000 tunai
----------------------------------------------------------------------------
[Non-text portions of this message have been removed]
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Get 128 Bit SSL Encryption!
http://us.click.yahoo.com/CBxunD/vN2EAA/xGHJAA/i7folB/TM
---------------------------------------------------------------------~->
Berlangganan: [EMAIL PROTECTED]
Stop Berlangganan: [EMAIL PROTECTED]
Keluhan Milis(Unbouncing,spam,dll): [EMAIL PROTECTED]
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/