Author Topic: PBO  (Read 347 times)

0 Members dan 1 Pengunjung melihat topik ini.

Offline Nezz

  • Mahasiswa
  • Newbie
  • *
  • Posts: 81
  • Reputasi Poin: 14
  • Gender: Female
  • whadup??
    • View Profile
PBO
« on: Oktober 11, 2008, 01:33:08 pm »
da yang bisa jelasin ttg encapsulation, public, private ma private protected public data??  ???
truzz ttg bikin sub class itu t maksudnya gimana y?? ???

Offline Dhanny

  • Administrator
  • Expert
  • *
  • Posts: 1,080
  • Reputasi Poin: 41
  • Gender: Male
    • View Profile
Re: PBO
« Reply #1 on: Oktober 11, 2008, 04:47:01 pm »
public : berarti boleh dipake dimana aja
private : berarti hanya bisa dipake untuk class tersebut
private protected public : berarti hanya bisa dipake untuk class tersebut n diprotek nilainya

Mr. Y bisa tolong kasi penjelasan yg lebih?

Offline Mr.Y

  • Dosen
  • Beginner
  • *
  • Posts: 111
  • Reputasi Poin: 8
  • Gender: Male
  • d beginning is d end is d beginning
    • View Profile
Re: PBO
« Reply #2 on: Oktober 22, 2008, 08:46:54 am »
Private => field dan method dari sebuah class tidak dapat diakses di luar unit yang mendeklarasikan class.
Protected => field dan method dari sebuah class hanya dapat diakses oleh module yang mendeklarasikan class ybs atau dari subclass nya.
Public => field dan method dari sebuah class dapat diakses secara bebas.

kurang lebih seperti itu..
Tetapi mengenai implementasi nya mungkin berbeda2 pada tiap2 bahasa pemrograman.

Offline Nezz

  • Mahasiswa
  • Newbie
  • *
  • Posts: 81
  • Reputasi Poin: 14
  • Gender: Female
  • whadup??
    • View Profile
Re: PBO
« Reply #3 on: November 05, 2008, 09:18:13 am »
klo da program ky gini :

==================================================================================
unit ULat9_classAssign;

interface
uses SysUtils, DateUtils, Controls;
type
  TMyDate = class
  private
    FMyDate : TDateTime;
  public
    constructor create; overload;
    constructor create(y,m,d : integer); overload;
    function GetText : string;
    procedure Tambah; overload;
    procedure Tambah(n:integer); overload;
    procedure Kurang; overload;
    procedure Kurang(n:integer); overload;
    procedure Assign(source:TMyDate);
  end;


implementation

{ TMyDate }

procedure TMyDate.Assign(source: TMyDate);
begin
   FMyDate := Source.FMyDate;
end;
====================================================================================
teks yang warna ungu di atas,maksudnya tu gimana y?? assign itu t apa?? knapa ada source??

Offline Nezz

  • Mahasiswa
  • Newbie
  • *
  • Posts: 81
  • Reputasi Poin: 14
  • Gender: Female
  • whadup??
    • View Profile
Re: PBO
« Reply #4 on: November 05, 2008, 09:23:06 am »
unit ULat9_classAssign;

interface
uses SysUtils, DateUtils, Controls;
type
  TMyDate = class
  private
    FMyDate : TDateTime;
  public
....
=============================================

mo nanya lagi ttg penggunaan uses knapa si sebagian class ada yang pake dan gak?? mo nanya kapan kita pake uses kapan gak usah?? klo diperhatiin dari latihan2 yang dah da setiap prog yang berhubungan dengan date paseti di tambah uses date utils.. klo jenis uses yang lain seperti diatas gunanya buat apa aja??fungsinya??
thx sebelumnya.. :)

Offline Anta

  • Developer
  • Advanced
  • *
  • Posts: 710
  • Reputasi Poin: 39
  • Gender: Male
    • View Profile
Re: PBO
« Reply #5 on: November 28, 2008, 12:22:07 pm »
Quote
==================================================================================
unit ULat9_classAssign;

interface
uses SysUtils, DateUtils, Controls;
type
  TMyDate = class
  private
    FMyDate : TDateTime;
  public
    constructor create; overload;
    constructor create(y,m,d : integer); overload;
    function GetText : string;
    procedure Tambah; overload;
    procedure Tambah(n:integer); overload;
    procedure Kurang; overload;
    procedure Kurang(n:integer); overload;
    procedure Assign(source:TMyDate);
  end;


implementation

{ TMyDate }

procedure TMyDate.Assign(source: TMyDate);
begin
   FMyDate := Source.FMyDate;
end;

====================================================================================
teks yang warna ungu di atas,maksudnya tu gimana y?? assign itu t apa?? knapa ada source??
Assign itu dipergunakan untuk mengidentikkan suatu variabel dengan kelas yang sama,

contoh
Code: [Select]
var d1, d2 : TMyDate;
begin
     //inisialisasi
     d1 := TMyDate.Create(2002,12,12);  
     d2 := TMyDate.Create(2003,1,1);
        
     //proses
     Showmessage('tanggal d1 '+d1.GetText);
     Showmessage('tanggal d2 '+d2.GetText);
    
     // nah misalnya sekarang kita mau nyamain tanggal d1 dengan tanggal d2
     // d1 = 2002-12-12 mau jadi 2003-1-1   
     d1.Assign(d2);

     Showmessage('tanggal d1 '+d1.GetText);
     Showmessage('tanggal d2 '+d2.GetText);
 
    //destruksi
     d1.Free;
     d2.Free;
end;
gitu lho maksudnya Assign.
Pertanyaan: kenapa sih ga bisa langsung d1 := d2;
Jawaban: yang anda set kalo begitu adalah Pointernya saja (karena variabel setiap object pada sisi delphi hanya diwakilkan oleh pointer saja). Jadi sangat diharamkan untuk d1 := d2 langsung pada variabel bertipe class/object.

Quote
Insert Quote
unit ULat9_classAssign;

interface
uses SysUtils, DateUtils, Controls;
type
  TMyDate = class
  private
    FMyDate : TDateTime;
  public
....
=============================================

mo nanya lagi ttg penggunaan uses knapa si sebagian class ada yang pake dan gak?? mo nanya kapan kita pake uses kapan gak usah?? klo diperhatiin dari latihan2 yang dah da setiap prog yang berhubungan dengan date paseti di tambah uses date utils.. klo jenis uses yang lain seperti diatas gunanya buat apa aja??fungsinya??
thx sebelumnya..
Kapan kita pake uses Sysutils, DateUtils adalah jika kita memakai fungsi fungsi didalam unit tersebut.

whew kalo tanya fungsinya setiap unit apa aja, kayanya semua programmer enggak bakal hapal mati dhe, bisa dilihat di "Delphi -> Help -> Delphi Help".

terus ketik aja misalnya kita membutuhkan fungsi IntToStr, jika ketemu keyword tersebut tekan Enter dan situ ada penjelasan dimanakah unit dari fungsi tersebut berada (SysUtils).

ato bisa pula ketik nama unitnya, misalnya DateUtils, jika ketemu keyword tersebut tekan enter dan disitu bisa dilihat fungsi fungsi apa saja yang ada di dateutils. (DayOf, MonthOf, dll)

so, rajin rajinlah baca Delphi Help. ntar pasti tau sendiri fungsi tersebut adanya di unit mana.  ^-^


Offline Nezz

  • Mahasiswa
  • Newbie
  • *
  • Posts: 81
  • Reputasi Poin: 14
  • Gender: Female
  • whadup??
    • View Profile
Re: PBO
« Reply #6 on: Desember 12, 2008, 04:05:58 pm »
mo nanya lagi nih... orang2 yang yang mengerti delphi bisa bantuin..help :(  :on3 ada latihan gini nih programnya... tolong y ...
====================================================================================
unit SimpleProp;

interface

uses
  Windows, Messages, SysUtils, Classes;

type
  TSimpleProp = class(TComponent)
  private
    FPropChar: char;
    FPropInteger: Integer;
    FPropString: string;
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    property PropInteger : Integer read FPropInteger write FPropInteger;
    property PropString : string read FPropString write FPropString;
    property PropChar : char read FPropChar write FPropChar;
    { Published declarations }
  end;

  TEnum = (eNol,eSatu,eDua,eTiga);  
 TEnumProp = class(TComponent)
  private
    FPropBool: Boolean;
    FPropEnum: TEnum;
  published
    property PropEnum : TEnum read FPropEnum write FPropEnum;
    property PropBool : Boolean read FPropBool write FPropBool;
  end;

  TSetPropOption = (oNol,oSatu,oDua,oTiga);
  TSetPropOptions = set of TSetPropOption;

  TSetProp = class(TComponent)
  private
    FOptions: TSetPropOptions;
  published
    property Options : TSetPropOptions read FOptions write FOptions;
  end;

  TSomeObject = class(TPersistent)
  private
    FProp1: integer;
    FProp2: string;
  public
    procedure Assign(Source:TPersistent);override;
  published
    property Prop1 : integer read FProp1 write FProp1;
    property Prop2 : string read FProp2 write FProp2;
  end;

  TObjectProp = class(TComponent)
  private
    FSomeObject: TSomeObject;
  public
    constructor Create(AOwner:TComponent);override;
    destructor Destroy;override;
  published
    property SomeObject : TSomeObject read FSomeObject write FSomeObject;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('2006130004', [TObjectProp,TSetProp,TEnumProp,TSimpleProp]);
end;

{ TSomeObject }

procedure TSomeObject.Assign(Source: TPersistent);
begin
  if Source is TSomeObject then
  begin
    FProp1 := TSomeObject(Source).Prop1;
    FProp2 := TSomeObject(Source).Prop2;
    inherited Assign(Source);
  end;
end;

{ TObjectProp }

constructor TObjectProp.Create(AOwner: TComponent);
begin
  inherited;
  FSomeObject := TSomeObject.Create;
end;

destructor TObjectProp.Destroy;
begin
  FSomeObject.Free;
  inherited;
end;

end.
====================================================================================
daftar pertanyaan nya:  :D
a. TEnim (enol,esatu,  )...diatas knapa pake(enol,esatu...)?kya parameter y? ato mak kudu pke ada parameternya y??
b.TsetPropOption pake = set of TsetProp option itu knapa y perlu diset dulu ???
c.class Tpersistent itu untuk apa y??soalnya kebanyakan pake class component,button dll hehehe
d.destructor itu fungsinya buat apa y??
e.kenapa di bagian register arraynya yang class T persistent Tsome Object gak di ikut ditambah di array y??
dah segitu aja dulu untuk sekarang...hehehe kemaren ga sempet nanya diklas..telat mulu juga soalnya datangnya..hahahaha

Offline Anta

  • Developer
  • Advanced
  • *
  • Posts: 710
  • Reputasi Poin: 39
  • Gender: Male
    • View Profile
Re: PBO
« Reply #7 on: Desember 13, 2008, 12:46:21 am »
Quote
a. TEnim (enol,esatu,  )...diatas knapa pake(enol,esatu...)?kya parameter y? ato mak kudu pke ada parameternya y??
itu sama kaya isi variabel yang di perbolehkan untuk tipe variabel tersebut....

sama aja kaya gini:
TKendaraan = (KenMobil, KenMotor, KenPesawat, KenBajaj); //<- pilihan nilai variabel

nah nanti waktu dipake misalnya:
var Kendaraan : TKendaraan;

begin
    Kendaraan := KenMobil; // ga error
    Kendaraan := KenMotor; // ga error
    Kendaraan := KenKeretaApi; // error <- karena tidak ada pada pilihan nilai variabel;


Quote
b.TsetPropOption pake = set of TsetProp option itu knapa y perlu diset dulu
set of berarti menjadikan nilai variabel pada tipe variabel tersebut bisa dipilih secara berulang.

misalnya:
TPropFasilitasKost = (FasTvKabel, FasAirPanas, FasAC, FasSpringbed, FasLemariBaju);
TFasilitasKost = set of TPropFasilitasKost;

nah nanti bisa jadi gini dipakenya
var Kamar1,Kamar2 : TFasilitasKost;

begin
    Kamar1 := [FasTvKabel, FasAirPanas, FasAC, FasLemariBaju, FasSpringBed];
    Kamar2 := [FasLemariBaju, FasSpringBed];
end;

buat ngecek apakah fasilitas ada dalam suatu variabel adalah

begin
    if FasTvKabel in Kamar1 then Writeln('Kamar 1 ada Tv Kabel');
    if FasTvKabel in Kamar2 then Writeln('Kamar 2 ada Tv Kabel');
end

// buat nambahin fasilitas pada suatu kamar adalah:
begin
     Include(Kamar1, FasTVKabel);
end;
   
// buat ngurangin fasilitas pada suatu kamar adalah:
begin
    Exclude(Kamar1, FasAirPanas);
end;



Quote
c.class Tpersistent itu untuk apa y??soalnya kebanyakan pake class component,button dll hehehe
TPersistent sebenernya mirip seperti TObject cuma dia punya procedure turunan yaitu Assign.
dimana procedure turunan dari Assign tersebut dipakai untuk mengkopi nilai object itu dari suatu object lain... untuk lebih jelasnya tanya dengan dosen yang bersangkutan :D

contohnya sama aja kaya gini loh:
var A : TBitmap;
begin
    A := TBitmap.Create;
    A.LoadFromFile('c:\somebitmap.bmp');
    Image1.Picture.Assign(A);
    FreeAndNil(A);
end;



Quote
d.destructor itu fungsinya buat apa y??
fungsi destructor itu bakalan dipanggil jika object itu di hapus dari memory (di free).

fungsi destructor tersebut biasa digunakan untuk membebaskan (free) object object private dari komponen tersebut.

contohnya:
Code: [Select]

...

uses Graphics;
type
  TMyImageResizer = class(TComponent)
                    private
                       FSourceImage : TBitmap;
                       FDestImage : TBitmap;
                    public
                        constructor Create(AOwner : TComponent);
                        destructor destroy;
                        procedure Resize(Width, Height : Integer);
                        property SourceImage : TBitmap read FSourceImage write FSourceImage;
                        property DestImage : TBitmap read FDestImage write FDestImage;

                    end;

implementation

{ TMyImageResizer }

constructor TMyImageResizer.Create(AOwner: TComponent);
begin
   FSourceImage := TBitmap.Create;
   FDestImage := TBitmap.Create;
end;

destructor TMyImageResizer.destroy;
begin
   FSourceImage.Free;
   FDestImage.Free;
end;

procedure TMyImageResizer.Resize(Width, Height: Integer);
begin
   FDestImage.Width := Width;
   FDestImage.Height := Height;
   FDestImage.Canvas.CopyRect(Rect(0,0,Width, Height), FSourceImage.Canvas, Rect(0,0,FSourceImage.Width, FSourceImage.Height));
end;
                           
nah component yang dibuat diatas kan memerlukan 2 buah object tbitmap nah itu harus di create dan di free kan?
create 2 object bitmap ada di constructor dan free 2 object bitmap tersebut ada di destructor



Quote
e.kenapa di bagian register arraynya yang class T persistent Tsome Object gak di ikut ditambah di array y??
karena biasanya yang bisa di register adalah turunan dari TComponent aja, jarang banget (walaupun suka suka ada, Turunan sebelum TComponent di Register pada bagian Register Component).



Quote
dah segitu aja dulu untuk sekarang...
hehehe kemaren ga sempet nanya diklas..telat mulu juga soalnya datangnya..hahahaha

makanya jangan telat aja... hehehe...
gw juga dulu jarang masuk, makanya bego soal pbo