Programlama da programcıların en zorlandığı olaylardan biride Nesneye Dayalı Programlamanın kavramını anlamaktır. Class Nedir? Nesne Nedir? Constuructor(Kurucu) nedir? Vb…
Öncelikle Temelden başlayarak ilkel yöntemleri kullanalım sonra da Modern (Sosyete) kodlama yöntemlerine geçelim. Bakın ben bu yöntemleri Java da öğrenmiştim.
![Smile :)](./images/smilies/icon_smile.gif)
Bir integer dizisinin elemanlarını ListBox’a basan bir program yapalım.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
dizi: Array[0..9]of Integer;
i:Integer;
begin
dizi[0]:= 5;
dizi[1]:= 1;
dizi[2]:= 3;
dizi[3]:= 4;
dizi[4]:= 6;
dizi[5]:= 7;
dizi[6]:= 8;
dizi[7]:= 5;
dizi[8]:= 9;
dizi[9]:= 6; //Dizilere atanan değerler kullanıcıdan alınabilir.
For i:=0 to high(dizi) do
ListBox1.Items.Add(intToStr(Dizi[i]));
End;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
dizi1: Array[0..9]of Integer;
dizi2: Array[0..9]of Integer;
i:Integer;
begin
dizi1[0]:= 5;
dizi1[1]:= 1;
dizi1[2]:= 3;
dizi1[3]:= 4;
dizi1[4]:= 6;
dizi1[5]:= 7;
dizi1[6]:= 8;
dizi1[7]:= 5;
dizi1[8]:= 9;
dizi1[9]:= 6; //Dizilere atanan değerler kullanıcıdan alınabilir.
dizi2[0]:= 7;
dizi2[1]:= 7;
dizi2[2]:= 4;
dizi2[3]:= 3;
dizi2[4]:= 6;
dizi2[5]:= 7;
dizi2[6]:= 8;
dizi2[7]:= 5;
dizi2[8]:= 9;
dizi2[9]:= 9; //Dizilere atanan değerler kullanıcıdan alınabilir.
For i:=0 to high(dizi1) do
ListBox1.Items.Add('Dizi1 ' + intToStr(Dizi1[i]));
For i:=0 to high(dizi2) do
ListBox1.Items.Add('Dizi2 '+intToStr(Dizi2[i]));
End;
Kod: Tümünü seç
Procedure Listele(Dizi: Array of Integer);
var
i:Integer;
begin
For i:=0 to high(dizi) do
Form1.ListBox1.Items.Add(' ' + intToStr(Dizi[i]));
Form1.ListBox1.Items.Add('________');
End;
procedure TForm1.Button1Click(Sender: TObject);
var
Dizi1: Array[0..9]of Integer;
Dizi2: Array[0..9]of Integer;
Begin
dizi1[0]:= 5;
dizi1[1]:= 1;
dizi1[2]:= 3;
dizi1[3]:= 4;
dizi1[4]:= 6;
dizi1[5]:= 7;
dizi1[6]:= 8;
dizi1[7]:= 5;
dizi1[8]:= 9;
dizi1[9]:= 6; //Dizilere atanan değerler kullanıcıdan alınabilir.
dizi2[0]:= 7;
dizi2[1]:= 7;
dizi2[2]:= 4;
dizi2[3]:= 3;
dizi2[4]:= 6;
dizi2[5]:= 7;
dizi2[6]:= 8;
dizi2[7]:= 5;
dizi2[8]:= 9;
dizi2[9]:= 9; //Dizilere atanan değerler kullanıcıdan alınabilir.
Listele(dizi1);
Listele(dizi2);
End;
Kod: Tümünü seç
Function DiziTopla(Dizi: Array of Integer):Integer;
var
Top:Integer;
i:Integer;
begin
Top := 0;
For i:=0 to high(dizi) do
Begin
Top := Top + Dizi[i];
Form1.ListBox1.Items.Add(' ' + intToStr(Dizi[i]));
End;
Form1.ListBox1.Items.Add('________');
Result := Top;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
Dizi1: Array[0..9]of Integer;
Dizi2: Array[0..9]of Integer;
Begin
dizi1[0]:= 5;
dizi1[1]:= 1;
dizi1[2]:= 3;
dizi1[3]:= 4;
dizi1[4]:= 6;
dizi1[5]:= 7;
dizi1[6]:= 8;
dizi1[7]:= 5;
dizi1[8]:= 9;
dizi1[9]:= 6; //Dizilere atanan değerler kullanıcıdan alınabilir.
dizi2[0]:= 7;
dizi2[1]:= 7;
dizi2[2]:= 4;
dizi2[3]:= 3;
dizi2[4]:= 6;
dizi2[5]:= 7;
dizi2[6]:= 8;
dizi2[7]:= 5;
dizi2[8]:= 9;
dizi2[9]:= 9; //Dizilere atanan değerler kullanıcıdan alınabilir.
ShowMessage(intToStr(DiziTopla(dizi1)));
End;
Class veriler ve bu veriler üzerinde yapılacak işlemleri tutan birimdir.
Yukarıdaki örneklere dikkat ettiyseniz hep integer dizisi üzerinde işlem yapmaktadır. O halde bizim class'ın amacı integer dizisi üzerinde işlemler yapmalıdır. Class integer dizisini başlangıçta ister. Böylece hep aynı dizi üzerinde işlem yapar
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TDiziClass = Class
Function DiziSum(dizi:Array of Integer):Integer;
Function DiziMax(dizi:Array of Integer):Integer;
End;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Function TDiziClass.DiziSum(dizi:Array of Integer):Integer;
var
i, Top:Integer;
Begin
Top := 0;
For i := 0 To high(Dizi) do
Begin
Top := Top + Dizi[i];
End;
Result := Top;
End;
Function TDiziClass.DiziMax(dizi:Array of Integer):Integer;
var
i, k, Max, Tmp:Integer;
Begin
i := 0;
MAX := dizi[0];
For i := 0 To high(Dizi)- 1 do
Begin
if max < dizi[i + 1] Then
Begin
max := dizi[i + 1];
End;
End;
Result := Max;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
Dizi:Array[0..9] Of Integer;
i:Integer;
DiziClass:TdiziClass;
begin
DiziClass := TDiziClass.Create;
Dizi[0] := 300;
Dizi[1] := 301;
Dizi[2] := 302;
Dizi[3] := 303;
Dizi[4] := 170;
Dizi[5] := 304;
Dizi[6] := 1210;
Dizi[7] := 1600;
Dizi[8] := 1700;
Dizi[9] := 10000;
ShowMessage(IntToStr(DiziClass.DiziMax(Dizi)));
ShowMessage(IntToStr(DiziClass.DiziSum(Dizi)));
end;
end.