Dalam rangka menyambut kedatangan Delphi 2009, saya akan menulis beberapa artikel tentang dasar-dasar Delphi. Ide kode-kode yang ditampilkan diambil dari buku C# How To Program. Susah lagi cari ide sendiri
. Ini adalah bagian kedua.
1. Membuat Sebuah Class yang Memiliki Satu Method:
unit GradeBook;
interface
type
// Class declaration with one method
TGradeBook = class(TObject)
public
procedure displayMessage();
end;
implementation
procedure TGradeBook.displayMessage();
begin
Writeln('Welcome to the Grade Book!');
Readln;
end;
end.
2. Membuat Instan Obyek dari Class No. 1 di Atas.
Ingat bahwa kode no. 2 dan no. 1 di atas berada di dalam satu project.
program GradeBookTest;
{$APPTYPE CONSOLE}
uses
SysUtils,
GradeBook in 'GradeBook.pas';
var
GradeBook : TGradeBook;
begin
// Creating an object of class GradeBook and
// calling its displayMessage method
try
GradeBook := TGradeBook.Create;
GradeBook.displayMessage();
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
3. Membuat Sebuah Class dengan Satu Method yang Memiliki Parameter:
unit GradeBook;
interface
uses SysUtils;
type
// Class declaration with a method that has a parameter
TGradeBook = class(TObject)
public
procedure displayMessage(courseName: String);
end;
implementation
procedure TGradeBook.displayMessage(courseName: String);
begin
Writeln(Format('Welcome to the grade book for' + #13#10
+ '%s' ,[courseName]));
Readln;
end;
end.
4. Membuat Instan Obyek dari Class No. 3 di Atas.
Ingat bahwa kode no. 4 dan no. 3 di atas berada di dalam satu project.
program GradeBookTest;
{$APPTYPE CONSOLE}
uses
SysUtils,
GradeBook in 'GradeBook.pas';
var
GradeBook : TGradeBook;
NameOfCourse : String;
begin
// Create GradeBook object and pass a string to
// its DisplayMessage method
try
GradeBook := TGradeBook.Create;
Write('Please enter the course name: ');
Readln(NameOfCourse);
GradeBook.displayMessage(NameOfCourse);
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
5. Membuat Sebuah Class dengan Sebuah Property.
unit GradeBook;
interface
uses SysUtils;
type
// GradeBook class that contains a property
// to get (read) and set (write) its value.
TGradeBook = class(TObject)
private
FCourseName: String;
procedure SetCourseName(const Value: String);
public
property CourseName: String read FCourseName write SetCourseName;
procedure displayMessage();
end;
implementation
procedure TGradeBook.displayMessage();
begin
Writeln(Format('Welcome to the grade book for' + #13#10
+ '%s' ,[CourseName]));
Readln;
end;
procedure TGradeBook.SetCourseName(const Value: String);
begin
FCourseName := Value;
end;
end.
6. Menggunakan Property dari Class No. 5 di Atas.
Ingat bahwa kode no. 6 dan no. 5 di atas berada di dalam satu project.
program GradeBookTest;
{$APPTYPE CONSOLE}
uses
SysUtils,
GradeBook in 'GradeBook.pas';
var
GradeBook : TGradeBook;
NameOfCourse : String;
begin
// Create and manipulate a GradeBook object.
try
GradeBook := TGradeBook.Create;
WriteLn(Format('Initial course name is:' + #13#10 +
'%s', [GradeBook.CourseName]));
WriteLn('Please enter the course name: ');
Readln(NameOfCourse);
GradeBook.CourseName := NameOfCourse;
GradeBook.displayMessage();
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
7. Inisialisasi Obyek dengan Constructor.
unit GradeBook;
interface
uses SysUtils;
type
// GradeBook class with a constructor
// to initialize the course name
TGradeBook = class(TObject)
private
FCourseName: String;
procedure SetCourseName(const Value: String);
public
constructor Create(Name :String);
property CourseName: String read FCourseName write SetCourseName;
procedure displayMessage();
end;
implementation
constructor TGradeBook.Create(Name: String);
begin
CourseName := Name;
end;
procedure TGradeBook.displayMessage();
begin
Writeln('Enjoy the Courses');
Readln;
end;
procedure TGradeBook.SetCourseName(const Value: String);
begin
FCourseName := Value;
end;
end.
8. Menggunakan Constructor dari Class No. 7 di Atas.
Ingat bahwa kode no. 8 dan no. 7 di atas berada di dalam satu project.
program GradeBookTest;
{$APPTYPE CONSOLE}
uses
SysUtils,
GradeBook in 'GradeBook.pas';
var
GradeBook1 : TGradeBook;
GradeBook2 : TGradeBook;
begin
// GradeBook constructor used to specify the course name at the
// time each GradeBook object is created
try
GradeBook1 := TGradeBook.Create('D101 Introduction to Delphi Programming');
GradeBook2 := TGradeBook.Create('D102 Data Structures in Delphi');
WriteLn(Format('GradeBook1 course name is::' + #13#10 +
'%s', [GradeBook1.CourseName]));
WriteLn('');
WriteLn(Format('GradeBook1 course name is::' + #13#10 +
'%s', [GradeBook2.CourseName]));
WriteLn('');
GradeBook1.displayMessage;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
9. Class dengan Constructor yang Membatasi Nilai Inisialisasi.
Diperkenalkan pula penggunaan decimal type atau currency type.
unit Account;
interface
type
// Account class with a constructor to
// initialize instance variable balance
TAccount = class(TObject)
private
FBalance: Currency;
procedure SetBalance(const Value: Currency);
public
property Balance : Currency read FBalance write SetBalance;
constructor Create(InitialBalance: Currency);
procedure Credit(Amount: Currency);
end;
implementation
{ TAccount }
constructor TAccount.Create(InitialBalance: Currency);
begin
// Constructor will use method SetBalance to write the
// initial balance. If InitialBalance < 0 then balance = 0.
Balance := InitialBalance;
end;
procedure TAccount.Credit(Amount: Currency);
begin
Balance := Balance + Amount;
end;
procedure TAccount.SetBalance(const Value: Currency);
begin
if Value >= 0 then
FBalance := Value;
end;
end.
10. Menggunakan Class No. 9 di Atas.
Ingat bahwa kode no. 10 dan no. 9 di atas berada di dalam satu project.
Diperkenalkan pula memformat angka ke dalam bentuk currency dan number.
program AccountTest;
{$APPTYPE CONSOLE}
uses
SysUtils,
Account in 'Account.pas';
var
Account1 : TAccount;
Account2 : TAccount;
DepositAmount : Currency;
begin
try
Account1 := TAccount.Create(50.25);
Account2 := TAccount.Create(-1.50);
// Use %.2m format to display currency symbol
WriteLn(Format('Account1 balance: %n', [Account1.Balance]));
WriteLn(Format('Account2 balance: %n', [Account2.Balance]));
WriteLn('');
WriteLn('Enter deposit amount for Account1: '); // example: 34.54
ReadLn(Currency(DepositAmount));
WriteLn(Format('Adding %n to Account1 balance', [DepositAmount]));
Account1.Credit(DepositAmount);
WriteLn('');
WriteLn('Enter deposit amount for Account2: '); // example: 34.54
ReadLn(Currency(DepositAmount));
WriteLn(Format('Adding %n to Account2 balance', [DepositAmount]));
Account2.Credit(DepositAmount);
WriteLn('');
WriteLn(Format('Account1 balance: %n', [Account1.Balance]));
WriteLn(Format('Account2 balance: %n', [Account2.Balance]));
ReadLn;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.


