Dear Angoming,
type
TClassA = class(Tobject)
protected
var1, var2:String; //available for TClassA's descendants
public
constructor Create;
procedure Problem;
end;
TClassB = class(TClassA)
public
procedure ShowVariables;
end;
TClassC = class(TClassA)
public
procedure ChangeVar1;
procedure ChangeVar2;
end;
implementation
uses Dialogs;
procedure TClassB.ShowVariables;
begin
ShowMessage('Nilai var1 : ' + Var1 + ' dan var2 : ' + Var2);
end;
procedure TClassC.ChangeVar1;
begin
var1 := 'Happy Iedl Fitri';
end;
procedure TClassC.ChangeVar2;
begin
var2 := 'Please forgive me.. I know what I do.. I can''t stop
loving you';
end;
constructor TClassA.Create;
begin
inherited;
var1 := 'Selamat hari raya Idul Fitri';
var2 := 'Mohon maaf lahir dan batin';
end;
//Let's say kita punya suatu procedure untuk menguji masalah anda.
procedure TClassA.Problem;
var
aClassA:TClassA;
aClassB:TClassB;
aClassC:TClassC;
begin
aClassA := TClassA.Create;
{ variable aClassA memiliki sendiri alokasi memori untuk var1 dan
var2 }
aClassB := TClassB.Create;
{ variable aClassB memiliki sendiri alokasi memori untuk var1 dan
var2 }
aClassC := TClassC.Create;
{ variable aClassB memiliki sendiri alokasi memori untuk var1 dan
var2 }
aClassC.ChangeVar1;
{nilai variable var1 milik aClassC berubah, tapi milik aClassB dan
aClassA
tidak, karena ketiga variable tidak sharing alokasi memori yang
sama}
aClassC.ChangeVar2;
{nilai variable var2 milik aClassC berubah, tapi milik aClassB dan
aClassA
tidak, karena ketiga variable tidak sharing alokasi memori yang
sama}
aClassB.ShowVariables; //var1 dan var2 tetap tidak berubah
end;
////////////////////////////////////////////////////////////////////////
/
{
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.
TClassC = class(TClassA)
public
ReferenceToClassB:TClassB;
constructor Create(aClassB:TClassB);
procedure ChangeVar1;
procedure ChangeVar2;
end;
constructor TClassC.Create(aClassB:TClassB);
begin
ReferenceToClassB := aClassB;
end;
procedure TClassC.ChangeVar1;
begin
ReferenceToClassB.var1 := 'Happy Iedl Fitri';
end;
procedure TClassC.ChangeVar2;
begin
ReferenceToClassB.var2 := 'Please forgive me.. I know what I do.. I
can''t ' +
'stop loving you';
end;
}
//Nah jika anda menjalankan method Problem milik aClassA, maka
seharusnya
//aVar1 dan aVar2 milik aClassB berubah.
aClassC.ChangeVar1;
{nilai variable var1 milik aClassC tidak berubah, tapi milik
aClassB
berubah}
aClassC.ChangeVar2;
{nilai variable var2 milik aClassC tidak berubah, tapi milik
aClassB berubah}
aClassB.ShowVariables; //var1 dan var2 sudah berubah
Semoga sedikit mencerahkan. Mohon maaf kalau ada kesalahan. Namanya juga
lebaran.
Salam,
Wisnu Widiarta
-----Original Message-----
From: bla-bla-bla [mailto:[EMAIL PROTECTED]]
Sent: 05 Desember 2002 14:37
To: Delphindo@yahoogroups. com
Subject: [Delphindo] OOP
saya punya
class A mempunyai : var1 dan var2 type string
class B ... turunan dari A mempunyai method "tampilkan"
var1dan var2.
class C .... turunan dari A mempunyai method "editing"
var1 dan var2
waktu saya tampilkan C dan saya edit var1 dan var 2, kemudian saya
tampilkan
B .... koq var1 dan var2 pada B ngak berubah ??
padahal maksud saya ketika var1 dan var2 diedit pada B, maka ketika C
ditampilkan ... otomatis var1 dan var2 yg ditampilkan haruslah sama
dengan
yg diedit pada B.
kira kira gimana caranya ??
thnx
----------------------------------------------------------------------------
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/