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/ 


Kirim email ke