PENGENALAN KEPADA OBJECT PASCAL 2.1...

37
Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002 1 BAHAGIAN 1 PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubah Setiap pembolehubah mempunyai jenis data dan skop capaian Jenis data boleh dibahagikan kepda 3 kategori: ?? Asas ?? Blok ?? Takrifan pengguna (user-defined) Jenis data asas: integer, real, string, etc Jenis data blok merupakan jenis data yang diterbitkan daripada gabungan data asas. Contoh: tatasusunan dan rekod. Jenis data takrifan-pengguna pula merupakan jenis data yang ditakrifkan sendiri oleh pengaturcara. Jenis data ini boleh diterbitkan daripada dua jenis data tadi. Skop capaian- Sejauh mana kita boleh mencapai suatu pembolehubah. Ada dua jenis skop capaian pembolehubah : ?? Tempatan (local) ?? Sejagat (global) Pembolehubah local Boleh dicapai/dirujuk dalam procedure/function yang menakrifkan (declare) pembolehubah tersebut.

Transcript of PENGENALAN KEPADA OBJECT PASCAL 2.1...

Page 1: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

1

BAHAGIAN

1 PENGENALAN KEPADA OBJECT PASCAL

2.1 Pembolehubah

Setiap pembolehubah mempunyai jenis data dan skop capaian

Jenis data boleh dibahagikan kepda 3 kategori:

?? Asas

?? Blok

?? Takrifan pengguna (user-defined)

Jenis data asas: integer, real, string, etc

Jenis data blok merupakan jenis data yang diterbitkan daripada gabungan data

asas. Contoh: tatasusunan dan rekod.

Jenis data takrifan-pengguna pula merupakan jenis data yang ditakrifkan

sendiri oleh pengaturcara. Jenis data ini boleh diterbitkan daripada dua jenis

data tadi.

Skop capaian- Sejauh mana kita boleh mencapai suatu pembolehubah. Ada

dua jenis skop capaian pembolehubah :

?? Tempatan (local)

?? Sejagat (global)

Pembolehubah local

Boleh dicapai/dirujuk dalam procedure/function yang menakrifkan (declare)

pembolehubah tersebut.

Page 2: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

2

Contoh: Pembolehubah local Function LuasBulatan(jejari:real):real; Var p:real; //pembolehubah local Begin P:=3.1415; Result:=p*jejari*jejari; End;

Pembolehubah global

Boleh dirujuk dalam mana-mana procedure.function

ditakrif diluar procedure/function

Dalam Delphi ada dua jenis pembolehubah global iaitu

?? Antara unit:

Pembolehubah boleh dirujuk dimana-mana saja

Ditakrif pada bahagian Interface

?? Dalam unit

Pembolehubah hanya boleh dirujuk dalam unit/fail yang sama

Ditakrif pada bahagian Implementation

Contoh: Pembolehubah global “Dalam Unit” tidak boleh dicapai diluar unit. Unit unit1 Interface Var Variable1:integer; Implementation Uses Unit2; Procedure MyProc1; Begin Variable1:=100; Variable2:=Variable1*3;//unknown Variable2 End;

Unit unit2 Interface Implementation Uses Unit1; Var Variable2:integer; Procedure MyProc2; Begin Variable2:=0;

Variable1:=100; End;

Nota: Procedure dan function juga mempunyai skop capaian- sama seperti

pembolehubah.

Page 3: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

3

2.2 Jenis Data

Jenis Data Asas

Jenis data asas yang biasa digunakan: String,integer,char dan

boolean.

Yang paling kerap digunakan adalah string Berikut merupakan beberapa

fungsi untuk manipulasi string:

Copy,Delete,Pos,UpperCase,Format,IntToStr, StrToInt,

Length.

Contoh: Read/Write from/to GUI control

Var StartNode:integer; Begin StartNode:=StrToInt(Edit1.Text); End;

Contoh: Banner-animasi string Var BannerMsg:string=’This is my Banner’; FirstChar:string; Begin While (true) do Begin //print message

FirstChar:=Copy(BannerMsg,1,1); delete(BannerMsg,1,1); BannerMsg:=BannerMsg+FirstChar; //delay

End; End;

Page 4: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

4

Null-Terminated String (PChar)

Sama seperti string dalam dalam Bahasa Pengaturcaraan C, misalnya

char StrBuff[255]

Sering digunakan sebagai parameter kepada fungsi-fungsi Windows API

(Application Programming Interface).

Contoh: Penggunaan jenis data PChar. Var MyMsg:string Begin MyMsg:=’This is my message’; MessageBox(MyMsg,’Hello’,mbOKCancel); //salah MessageBox( PChar(MyMsg),’Hello’,mbOKCa ncel); //typecasting –convert string to Pchar End;

Berikut merupakan beberapa fungsi untuk manipulasi PChar:

StrNew, StrPos, StrPCopy,StrDispose

Jenis Data Blok

Dua jenis data blok yang biasa digunakan- rekod (record) dan tatasusunan

(array).

Rekod merupakan blok data yang dibentuk daripada kombinasi jenis data yang

berlainan

Contoh: Pengisytiharan rekod. Person=record Name:string; IC:string; Age:integer; End; Tatasusunan merupakan blok data yang dibentuk daripada jenis data yang

sama.

Contoh: Pengisytiharan tatasusunan.

Var Nodes:array[1..100] of integer;

Berikut ditunjukkan dua cara untuk mengira gred peperiksaan. Cara pertama

menggunakan pernyataan if yang banyak dan cara kedua menggunakan

Page 5: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

5

gabungan tatasusunan dan rekod untuk mengurangkan kod aturcara dan

menjadikan penulisan kod aturcara lebih kemas.

Contoh: Cara biasa Function CalcGrade(mark:real):string; Begin if (85<=mark) and (mark<=100) then Result:='A' else if (81<=mark) and (mark<=84) then Result:='A -' else if (75<=mark) and (mark<=80) then Result:='B+' else if (70<=mark) and (mark<=74) then Result:='B' else if (65<=mark) and (mark<=69) then Result:='B -' else if (60<=mark) and (mark<=64) then Result:='C+' else if (55<=mark) and (mark<=59) then Result:='C' else if (50<=mark) and (mark<=54) then Result:='C -' else if (45<=mark) and (mark<=49) then Result:='D+' else if (40<=mark) and (mark<=44) then Result:='D' else Result:='E'; End;

Contoh: Menggunakan tatasusunan dan rekod Function CalcGrade(mark:real):string; Type TGrade=record lower,upper:real; grade:string; end; const GradeList:array[1..10] of TGrade=( (lower:85; upper:100; grad:'A'),(lower:81; upper:84; grad:'A-'), (lower:75; upper:80; grad:'B+'),(lower:70; upper:74; grad:'B'), (lower:65; upper:69; grad:'B-'),(lower:55; upper:59; grad:'C'), (lower:50; upper:54; grad:'C-'),(lower:45; upper:49; grad:'D+'), (lower:40; upper:44; grad:'D') ) var i:integer; g:TGrade; begin Result:='E'; for i:=1 to 10 do begin g:=GradeList[i]; if (g.lower<=mark) and (mark<=g.upper) then begin Result:=g.grade; break; end; end; end;

Page 6: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

6

Set

Lebih kurang sama seperti array kecuali ia mempunyai operasi-operasi khusus,

seperti persilangan (*), kesatuan (+), perbezaan (-)

Contoh: Type SetOfChar=set of char; Const A:SetOfChar=['A','B','C','D']; B:SetOfChar=['M','N','A','B']; var C,,D,E,F:SetOfChar; begin C:=A+B; //C=['A','B','C','D','M','N']; D:=A*B; //D=['A','B']; E:=A-B; //E=['C','D']; F:=B-A; //F=['M','N'] end;

Contoh: Semak sama ada huruf vokal (a,e,i,o,u) Function IsVowel(ch:char):boolean; Begin ch:=upcase(ch); if (ch in [‘A’,’E’,’I’,’O’,’U’]) then Result:=TRUE else Result:=FALSE; End;

Page 7: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

7

Jenis Data Takrifan Pengguna (User Data Type)

Jenis data baru ditakrifkan dengan menggunakan katakunci type

Diterbitkan daripada jenis data yang sedia ada

Contoh: Type TSetChar=set of char; Tday=(Monday, Tuesday, Wednesday, Thursday, Friday,Saturday, Sunday); TSedDay=set of Tday; Tperson=record name:string; ic:string; age:integer; end;

Enumarated Data Types

Digunakan untuk membentuk jenis data yang mempunyai julat nilai yang tetap

Contoh: Type Tday=(Monday, Tuesday, Wednesday, Thursda y, Friday,Saturday, Sunday); Tsex=(Male,Female); TPrimerColor=(Red,Green,Blue);

Page 8: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

8

2.3 Pernyataan Kawalan

Terdapat tiga jenis pernyataan kawalan dalam Delphi:

?? if …then

?? if… then…else

?? case

Contoh: Pernyataan if …then var n:integer; loop:boolean; begin n:=0; loop:=TRUE; while (loop) do begin n:=n+1; if n>100 then loop:=FALSE; //stop loop when n reach to 100 end; end;

Aturcara berikut akan melakukan pengiraan daripada 1 ke 100, apabila telah

sampai 100, ia berpatah balik ke 0.

Contoh: Pernyataan if..then..else var n:integer; begin n:=0; while (true) do if n>0 then n:=n+1 else n:=0; end;

Contoh: Pernyataan Case case ch of ‘a’..’z’:writeln (‘lowercase c haracter’); ‘A’..’Z’:writeln (‘upper case character’); ‘0’..’9’:writeln(‘number’); else writeln(‘unknown character’); end;

Page 9: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

9

2.4 Blok Aturcara

Terdapat dua jenis blok aturcara dalam Delphi:

?? function -memulangkan nilai

?? procedure -tidak memulangkan nilai

Contoh: Procedure dan Function

Procedure DisplayValue(n:integer); begin writeln(n); end; Function CalcSquare(n:integer):integer; begin Result:=n*n; //CalcSquare:=n*n - old version end; procedure MyMain; var m:integer; begin m:=CalcSquare(2); DisplayValue(m); end;

Nota: Result adalah nama pembolehubah yang khusus (Reserved Variable)

dalam Delphi. Ia akan dijana secara automatik dalam function. Fungsinya

sama seperti Return dalam Bahasa Pengaturcaraan C

Fungsi Rekursif

Fungsi rekursif merupakan fungsi yang memanggil dirinya sendiri.

Contoh: Procedure TrackNode(n:Tnode); Begin if n<>NIL then begin //process n TrackNode(n^.next);//TrackNode call itself - Track to next node end; End;

Page 10: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

10

Penghantaran Parameter

Terdapat dua jenis penghantaran parameter kepada fungsi atau prosedur:

?? Passing by value

?? Passing by reference

Passing by value

Hantar nilai (atau kandungan) parameter tersebut. .

Tidak menggunakan katakunci var.

Dalam Delphi terdapat tiga cara untuk menghantar parameter secara passing

by value: Value parameter, constant parameter, Open-Array parameters

Contoh: Value parameter procedure PrintUpperCase(txt:string); begin txt:=UpperCase(txt); writeln(txt); end; Contoh: Constant parameter

Procedure PrintUpperCase(const txt:string);

var s:string;

begin

txt:=UpperCase(txt); //error: can’t edit constant parameter

s:=UpperCase(txt); //solution

writeln(s);

End;

Constant parameter lebih kurang sama dengan Value Parameter, kecuali nilai

parameter tidak boleh diubah.

Page 11: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

11

Contoh: Open-Array parameter Function Average(A:array of integer):real; var i,sum,count:integer; begin sum:=0; for i:=Low(A) to High(A) do sum:=sum+A[i]; count:=SizeOf(A); Result:=Sum/count; end; var av1,av2:real; begin av1:=Average([1,2,3,4,5]); av2:=Average([1,3,4]); end;

Open-Array parameter membolehkan anda menghantar bilangan argumen

yang berbeza-beza. Ia menggunakan array

Fungsi-fungsi yang biasanya digunakan untuk memanipulasi Open-Array

parameter adalah seperti berikut:

Low - get lowest index

High- get highest index

SizeOf - get size of array (in byte)

Page 12: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

12

Passing By Reference

Menghantar alamat pembolehubah.

Ia menggunakan katakunci var.

Untuk Passing by value- kita boleh menghantar sama ada pemalar atau

pembolehubah, tetapi Passing by reference pula, kita hanya dibenarkan

menghantar pembolehubah sahaja.

Contoh: Passing parameter by reference Procedure Square(var n:integer); //passing by references begin n:=n*n; end; Procedure Display(n:integer); //passing by value begin writeln(n); end; var m:integer; Begin square (2); //error-cannot pass constant m:=2; square(m); //new value: m=4 Display(m); Display(8); End;

Page 13: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

13

2.5 Pernyataan Kawalan

Pernyataan Goto dan Exit

Goto - melompat ke suatu label. Label ditakrifkan dengan menggunakan

katakunci Label.

Exit - keluar daripada blok aturcara (procedure atau function)

Contoh: Pernyataan Goto

Procedure MyLoop; label exitloop; var f:text; i:integer; Begin Assign(f,’data.txt’); reset(f); while not (eof) do begin read(f,I); if {error occurs } then goto exitloop; end; exitloop: Close(f); End;

Contoh: Pernyataan Exit. Fungsi berikut mengira hasil tambah m hingga n.

Function Sum(m,n:integer) Begin if m>n then exit; Result:=m+Sum(m+1,n); End;

Page 14: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

14

Pernyatan Gelung

Terdapat tiga jenis gelung:

?? for .. do

?? while .. do

?? repeat ..until

Gelung For -Do

Gelung for biasanya digunakan untuk lelaran yang tetap atau diketahui

bilangan lelarannya.

Contoh: Gelung for .. next function Average(A:array of integer; count):real; var sum:integer; i:integer; begin sum:=0; for i:=0 to count-1 do sum:=sum+A[I]; Result:=sum/count; end;

Gelung While – Do

Gelung while lebih powerfull dan lebih flexible berbanding dengan gelung

for kerana syarat lelaran (kawalan gelung) tidak tetap seperti dalam gelung

for.

Untuk menggunakan gelung while dua perkara perlu diberi perhatian:

?? Initialize kawalan/syarat sebelum gelung

?? Ubah nilai kawalan semasa gelung (untuk mengelakkan gelung tak

terhingga)

Page 15: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

15

Contoh: Gelung while .. do var n, sum:integer; begin sum:=0; n:=1; //initialize kawalan while (n<=100) do begin sum:=sum+n; n:=n+1; //ubah nilai kawalan end; end;

Contoh: Gelung tak terhingga while (true) do //syarat gelung sentiasa TRUE begin writlen(‘loop forever’); end;

Gelung Repeat -Until

Gelung ini adalah hampir sama dengan gelung while kecuali kawalan gelung

diletakkan di bawah atau dipenghujung gelung. Dengan menggunakan gelung

repeat, lelaran akan dilakukan sekurang-kurangnya sekali.

Contoh: Gelung repeat .. until var sum,i:integer; begin sum:=0; i:=1; repeat sum:=sum+n; n:=n+1; until I>100; end;

Page 16: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

16

Pernyataan Break dan Continue

Seperti pernyataan goto dan exit, kedua-dua arahan break dan

continue digunakan untuk mengawal aliran perlaksanaan aturcara.

Perbezaannya adalah, kalau goto dan exit digunakan untuk dalam

procedure atau function; Pernyataan kawalan break dan continue

digunakan dalam gelung.

Fungi pernyataan break adalah mengarahkan aliran perlaksanaan aturcara

supaya keluar daripada gelung atau berhentikan gelung. Manakala pernyataan

continue pula berfungsi untuk memindahkan aliran perlaksanaan ke lelaran

seterusnya. Apabila arahan ini dilaksanakan arahan-arahan selepasnya akan

diabaikan.

Contoh: Pernyataan break.Mengira hasil tambah nombor diantara 1-100

while (true) do begin sum:=sum+n; n:=n+1; if n>=100 then break; end;

Contoh: Pernyataan continue. Mengira hasil tambah nombor ganjil.

for I:=1 to 100 do begin if (n mod 2)=0 then continue; sum:=sum+n; end;

Page 17: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

17

BAHAGIAN

2 PENGATURCARAAN BERORIENTASIKAN OBJEK

2.1 Pengenalan

Pengaturcaraan Berorientasikan Objek (Object Oriented Programming –OOP)

merupakan satu pendekatan pembangunan perisian berdasarkan objek.

Menerusi pendekatan ini, sebuah perisian boleh dilihat sebagai koleksi objek-

objek yang saling berkaitan diantara satu dengan yang lain.

Terdapat tiga konsep penting dalam OOP:

?? Encapsulation (Pembungkusan)

?? Inheritance (Perwarisan)

?? Polymorphism

2.2 Pembungkusan

Data dan fungsi dibungkus/digabungkan dalam satu struktur yang sama yang

dikenali sebagai objek. Hubungan ini boleh dianalogikan seperti persamaan

berikut:

Encapsulation: object= code(method)+ Data(properties)

Berikut merupakan beberapa istilah penting yang berkaitan dengan OOP:

?? Property - Medan data.

??Method -Kelakuan/Perbuatan suatu objek. Secara umumnya, ia adalah

function atau procedure.

?? Event – Peristiwa yang berlaku ke atas sesuatu objek. Objek-objek

berinteraksi di antara satu dengan yang lain melalui Event.

Page 18: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

18

Perbezaan diantara OOP dan Teknik Pengaturcaraan Berstruktur

Contoh: Pengaturcaraan berstruktur Type TLinkList=^Tnode; Tnode=record i:integer; next:Tnode; end; procedure InitList(var L:TLinkList); begin L:=NIL; end; procedure InsertItem(var L:TLinkList; I:integer); begin //insert I into L end;

Contoh: Pengaturcaraan Berorientasikan Objek (OOP). Type TNodePtr=^Tnode; Tnode=class i:integer; next:TNodePtr; end; TLinkList=class private L:TNodePtr; public constructor InitList; procedure InsertItem(I:integer); end; contructor TLinkList.Init; begin L:=NIL; end; procedure TLinkList.InsertItem(I:integer); begin //insert I into L end;

Data1 Data2 function( ) procedure( )

OOP

function( )

procedure( )

Data1

Data2

Pengaturcaraan berstruktur

Page 19: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

19

2.3 Perwarisan

Perwarisan merupakan hubungan diantara kelas-kelas secara hirarki (anak dan

bapa), yang mana kelas anak mewarisi semua ciri-ciri kelas bapa disamping

menambah ciri-ciri baru. Berikut ditunjukkan analogi bagi perwarisan:

Inheritance: child= parent +new properties/method

Contoh:

type TSortedList=class(TLinkList) public procedure Sort; end;

TSortedList (child1)

TLinkList (parent)

L:TNodePtr; procedure Insert(..)

L:TNodePtr; procedure Insert(..) procedure Sort (); (new method)

Child2 Child3

Page 20: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

20

2.4 Polymorphism

Method yang sama tetapi mempunyai fungsi yang berbeza. Sebagai contoh,

Queue dan Stack adalah jenis link list. Oleh itu mereka mempunyai ciri-ciri

yang sama bagi suatu link list, misalnya initialize link list (method init) dan

untuk menyelit item (method insert). Perhatikan bahawa, walaupun Queue dan

Stack mempunyai method insert yang sama, tetapi kedua method ini bertindak

dengan cara yang berlainan. Queue menyelit item dari depan, manakala Stack

pula menyelit item dari belakang. Ini dikenali sebagai polymorphism.

Perwarisan untuk objek-objek tersebut ditunjukkan seperti berikut. Perhatikan

kelas TsortedList; satu method baru ditambah iaitu Sort(). Perhatikan kelas

TStack dan TQueue; kedua-duanya menakrifkan semula method Insert(),

walaupun parent mereka (TLinkList) telah mewariskan method tersebut

kepada mereka. Ketiga-tiga kelas anak tersebut akan mempunyai method

Insert() dengan nama yang sama, tetapi kelakuan method tersebut adalah

berbeza di antara satu dengan yang lain.

TLinkList contructor Init; procedure Insert();

TSortedList procedure Sort()

TStack procedure Insert();

TQueue procedure Insert();

Page 21: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

21

LATIHAN

1. Tulis sebuah fungsi (function) untuk mengira purata jujukan nombor yang

disimpan dalam tatasusunan.

2. Tulis sebuah fungsi untuk mengira hasil tambah semua nombor genap

daripada 1 hingga ke-n.

3. Selesaikan masalah dalam soalan 2 dengan menggunakan kaedah rekursif

4. Takrifkan struktur data penunding (pointer) menggunakan record. (medan-

i:integer; next:NextPtr )

5. Dengan menggunakan gelung while, setkan semua nilai i kepada sifar.

6. Selesaikan masalah 5 dengan menggunakan kaedah rekursif

JAWAPAN

1. function Average(const A:array of integer):real; var i,count,sum:integer; begin count:=High(A)-Low(A)+1; sum:=0; for i:=0 to count-1 do sum:=sum+A[i]; Result:=sum/count; end; 2. function SumEvenNumber(n:integer):integer; var i:integer; begin Result:=0; for i:=1 to n do if (i mod 2=0) then Result:=Result+i; end; 3. function RecursiveSumEvenNumber(n:integer):integer; begin if n mod 2=0 then Result:=n else Result:=0; if n>1 then Result:=Result+RecursiveSumEvenNumber(n -1); end;

Page 22: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

22

4. type TPointer=^TRecord; TRecord=record i:integer; Next:TPointer; end; var list:TPointer; 5. procedure ZerorizeList; var node:TPointer; begin node:=List; //point to the first node while node<>NIL do begin node^.i:=0; node:=node^.next; //point to the next node end; end; 6.

procedure RecursiveZerorizeList(node:TPointer);

begin

if node=NIL then exit;

node^.i:=0;

RecursiveZerorizeList(node^.next);

end;

//to start the recursive function

RecursiveZerorizeList(List);

Page 23: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

23

TUTORIAL 1: Dialog Box Project: Project1.dpr

Form: frmDialog (FDialog.dfm)

Form: frmPassword (FPassword.dfm)

Source: FDialog.pas procedure TfrmDialog.btnShowMsgClick(Sender: TObject); begin ShowMessage('From ShowMessage function'); end; procedure TfrmDialog.btnMsgBoxClick(Sender: TObject); var Button: Integer; begin Button := Application.MessageBox('I Love Delphi', 'Message Box', mb_Ok+mb_DefButton1); end; procedure TfrmDialog.btnInputBoxClick(Sender: TObject); var InputString: string; begin InputString:= InputBox('Input Box', 'from InputBox function', ''); edtInputBox.Text:=InputString; end; procedure TfrmDialog.btnPasswordClick(Send er: TObject); begin frmPassword.ShowModal; end; procedure TfrmDialog.btnOpenFileClick(Sender: TObject); var open:string; begin if not OpenDialog1.Execute then exit; open:=OpenDialog1.FileName; end; procedure TfrmDialog.btnSaveFileClick(Send er: TObject); var save:string; begin if not SaveDialog1.Execute then exit; save:=SaveDialog1.Filename; end;

Page 24: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

24

TUTORIAL 2: Progress Bar & Gauge

Project: Project2.dpr Form: Form1 (FProgress.dfm)

Source: FProgress.pas procedure TForm1.Button1Click(Sender: TObject); begin with ProgressBar1 do begin Position:=0; Step:=1; Min:=0; Max:=100; while (position<Max) do begin StepIt; Sleep(50); end; end; end; procedure TForm1.Button2Click(Sender: TObject); begin With Gauge1 do begin MinValue:=0; MaxValue:=100; Progress:=0; while (Progress<MaxValue) do begin Progress:=Progress+1; Sleep(50); end; end; end;

Page 25: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

25

TUTORIAL 3: Timer

Project: Project3.dpr Form: Form1 (FTimer.dfm)

Source: FTimer.pas procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled:=FALSE; end; procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:=FALSE; Timer1.Interval:=1000; Timer1.Enabled:=TRUE; end; procedure TForm1.Timer1Timer(Sender: TObject); var t:TDateTime; begin t:=Now; Panel1.Caption:=DateTimeToStr(t); end; procedure TForm1.Button3Click(Sender: TObject); begin Timer2.Enabled:=FALSE; Banner:=InputBox('Banner','Enter your Banner',''); if Banner='' then exit; Timer2.Interval:=200; Timer2.Enabled:=TRUE; end;

Page 26: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

26

procedure TForm1.Timer2Timer(Sender: TObject); var first:string; begin first:=Copy(Banner,1,1); Delete(Banner,1,1); Banner:=banner+first; StatusBar1.SimpleText:=banner; end; procedure TForm1.Button4Click(Sender: TObject); begin Timer2.Enabled:=FALSE; StatusBar1.SimpleText:=''; end; procedure TForm1.Button5Click(Sender: TObject); var interv:string; begin Timer3.Enabled:=FALSE; interv:=InputBox('Animation','Enter the interval',''); if interv='' then exit; Timer3.Interval:=StrToInt(interv); Timer3.Enabled:=TRUE; end; var increment:integer=5; procedure TForm1.Timer3Timer(Sender: TObject); begin Image1.Left:=Image1.Left+Increment; if (Image1.Left>Panel2.Width) or (Image1.Left<0) then Increment:=-Increment; end; procedure TForm1.Button6Click(Sender: TObject); begin Timer3.Enabled:=FALSE; end;

Page 27: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

27

TUTORIAL 4: A Simple Application-Text Editor

Project: Project4.dpr ?? Create & use main menu and pop up menu ?? Use TopenDialog & TsaveDialog ?? Create Toolbar ?? Create AboutBox ?? Create Splash Form

Source: SDIMain.pas procedure TSDIAppForm.ExitItemClick(Sender: TObject); begin Close; end; procedure TSDIAppForm.OpenItemClick(Sender: TObject); begin if not OpenDialog.Execute then exit; Memo1.Lines.LoadFromFile(OpenDialog.FileName); end; procedure TSDIAppForm.SaveItemClick(Sender: TObject); begin if not SaveDialog.Execute then exit; Memo1.Lines.SaveToFile(SaveDialog.FileName); end;

Popup Menu

Main menu

Main Form

Page 28: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

28

procedure TSDIAppForm.About1Click(Sender: TObject); begin AboutBox.ShowModal; end; Form: About Box (About.dfm)

Form: frmSplash (FSplash.dfm)

Source: Project4.dpr (goto menu Project|View Source) var splash:TfrmSplash; begin Application.Initialize; Splash:=TfrmSplash.Create(Application); Splash.Show; Splash.Update; Sleep(5000); Application.CreateForm(TSDIAppForm, SDIAppForm); Application.CreateForm(TAboutBox, AboutBox); Application.Run; end.

Page 29: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

29

TUTORIAL 5: Cascading Menu & WinExec

Project: Project5.dpr Form: Form1 (FConnect.dfm)

Page 30: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

30

Source: FConnect.pas procedure TForm1.Exit1Click(Sender: TObject); begin Close; end; procedure TForm1.pszutmmy1Click(Sender: TObject); var site:string; begin if (Sender is TMenuItem) then begin site:=(Sender as TMenuItem).Caption; delete (site,1,1); //remove & character WinExec( PChar('Telnet '+site),SW_SHOW); end; end; procedure TForm1.C1Click(Sender: TObject); var drive:string; begin if (Sender is TMenuItem) then begin drive:=(Sender as TMenuItem).Caption; delete (drive,1,1); //remove & character WinExec( PChar('explorer '+drive),SW_MAXIMIZE); end; end; procedure TForm1.LamanWebGUI1Click(Sender: TObject); var ie:string; begin ie:='C:\Program Files\Internet Explorer\iexplore.exe'; WinExec( PChar(ie+' http://gmm.fsksm.utm.my/~gui'),SW_MAXIMIZE); end;

Page 31: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

31

TUTORIAL 6: Create object dynamically (at run time)

Project: Project6.dpr ?? Create new class – inherit/derive from existing class ?? Set the properties ?? Create event and Assign it to the new class Form: Form1 (FDynamic.dfm)

Page 32: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

32

Source: FDynamic.pas

type TMyPanel=class(TPanel) public constructor Create(AOwner:TControl; x,y:integer); procedure ClickEvent(Sender:TObject); end; constructor TMyPanel.Create(AOwner:TControl; x,y:integer); begin inherited Create(AOwner); left:=x; top:=y; width:=50; height:=50; Caption:=''; Onclick:=ClickEvent; end; procedure TMyPanel.ClickEvent(Sender:TObject); var name:string; begin name:=InputBox('Panel clicked','Enter the name of this panel',''); if name<>'' then Caption:=name; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var panel:TMyPanel; begin panel:=TMyPanel.Create(form1,x,y); form1.InsertControl(panel); end;

Page 33: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

33

TUTORIAL 7: Using standard GUI controls

Project: Project7.dpr Form:

Source: Type TForm1 = class(TForm) …. …. …. private { Private declarations } public { Public declarations } procedure SaveQA(fname:string); procedure OpenQA(fname:string); end; procedure TForm1.SaveQA(fname:string); var fout:TextFile; begin AssignFile(fout,fname); Rewrite(fout); writeln(fout,Nama.Text); writeln(fout,KP.Text); writeln(fout,Email.Text); writeln(fout,Seksyen.ItemIndex); writeln(fout,Semester.ItemIndex); writeln(fout,Sessi.ItemIndex);

Page 34: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

34

if (lelaki.Checked) then writeln(fout,1) else writeln(fout,2); writeln(fout,Kaum.ItemIndex); if (ya.Checked) then writeln(fout,1) else writeln(fout,2); writeln(fout,cpa.ItemIndex); writeln(fout,pas.ItemIndex); writeln(fout,c.ItemIndex); writeln(fout,sdata.ItemIndex); CloseFile(fout); end; procedure TForm1.OpenQA(fname:string); var fin:TextFile; s:string; i:integer; begin AssignFile(fin,fname); Reset(fin); Readln(fin,s); Nama.Text:=s; Readln(fin,s); KP.Text:=s; Readln(fin,s); Email.Text:=s; Readln(fin,i); Seksyen.ItemIndex:=i; Readln(fin,i); Semester.ItemIndex: =i; Readln(fin,i); Sessi.ItemIndex:=i; Readln(fin,i); if (i=1) then lelaki.checked:=True else Perempuan.Checked:=True; Readln(fin,i); Kaum.ItemIndex:=i; Readln(fin,i); if (i=1) then ya.checked:=True else tidak.Checked:=True; Readln(fin,i); cpa.ItemIndex:=i; Readln(fin,i); pas.ItemIndex:=i; Readln(fin,i); c.ItemIndex:=i; Readln(fin,i); sdata.ItemIndex:=i; CloseFile(fin); end; procedure TForm1.SaveClick(Sender: TObject); var f:string; begin f:=Kp.Text+'.txt'; SaveQA(f); end; procedure TForm1.OpenClick(Sender: TObject); var f:string; begin if not OpenDialog1.Execute then exit; f:=OpenDialog1.FileName; OpenQA(f); end;

Page 35: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

35

TUTORIAL 8: Create forms within a form.

Project: Project8.dpr

Form: frmMain (FMain.dfm)

Form: frmClient1 (FClient.dfm)

Page 36: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

36

Source: FMain.pas type TfrmMain = class(TForm) ………… ………… ………… private { Private declarations } ActiveClientForm:TForm; ClientForms:TList; public { Public declarations } procedure ActivateClientForm(clienttag:integer); end; implementation uses FClient1, FClient2, FClient3, FClient4; {$R *.DFM} procedure TfrmMain.ActivateClientForm(clienttag:integer); var f:TForm; begin f:=TForm(ClientForms[clienttag]); if f=ActiveClientForm then exit; if ActiveClientForm<>NIL then ActiveClientForm.Hide; ActiveClientForm:=f; ActiveClientForm.Show; end; procedure TfrmMain.Exit1Click(Sender: TObject); begin Application.Terminate; end; procedure TfrmMain.SpeedButton1Click(Sender: TObject); var btn:TSpeedButton; begin btn:=(Sender as TSpeedButton); pnlStatus.Caption:=btn.Caption; imgStatus.Picture.Assign(btn.glyph); ActivateClientForm(btn.tag); end; procedure TfrmMain.FormCreate(Sender: TObject); begin ActiveClientForm:=NIL; Client1:=TClient1.Create(Application); Client1.Parent:=pnlClient; Client2:=TClient2.Create(Application); Client2.Parent:=pnlClient; Client3:=TClient3.Create(Application); Client3.Parent:=pnlClient; Client4:=TClient4.Create(Application); Client4.Parent:=pnlClient; ClientForms:=TList.Create; ClientForms.Add(Client1); ClientForms.Add(Client2); ClientForms.Add(Client3); ClientForms.Add(Client4); end; procedure TfrmMain.FormDestroy(Sender: TObject); begin ClientForms.Free; end;

Page 37: PENGENALAN KEPADA OBJECT PASCAL 2.1 Pembolehubahgmm.fsksm.utm.my/~gui/files/Asas_Pengaturcaraan_Delphi.pdf · (array). Rekod merupakan blok data yang dibentuk daripada kombinasi jenis

Asas Pengaturcaraan Delphi - Jumail, GMM, FSKSM, UTM © 2002

37

DELPHI TOOLS ?? Designs Tools

1. Form Wizard: File|New| page Forms, Dialogs, Projects, etc 2. Alignment Palette: View|Alignment Palette

??Message Box – Syntax Checking ?? Debugging Tools

1. Run to cursor : F4 2. Trace Into: F7 3. Step Over: F8 4. Breakpoint: Run|BreakPoint 5. Watches: View|Watches