Sınıflar ve Nesneler
Gün 2: Nesne Yönelimli Programlama (OOP) | OOP temelleri: sınıf tanımlama, nesne oluşturma, handle kavramı
Kaynak Kod
// =============================================================================
// GUN 2 - Konu 1: OOP Temelleri - Siniflar (Classes) ve Nesneler (Objects)
// =============================================================================
class Packet;
// Ozellikler (Properties)
int id;
bit [7:0] data;
string name;
// Constructor (Kurucu Metod)
function new(int id = 0, bit [7:0] data = 0, string name = "default");
this.id = id;
this.data = data;
this.name = name;
endfunction
// Metod: Paketi yazdir
function void display();
$display(" Packet: id=%0d, data=0x%02h, name=%s", id, data, name);
endfunction
endclass
module siniflar_ve_nesneler;
initial begin
Packet pkt1, pkt2, pkt3;
$display("=== Siniflar ve Nesneler ===\n");
// --- Nesne Olusturma (Instantiation) ---
$display("--- Nesne Olusturma ---");
pkt1 = new(); // Varsayilan degerlerle
pkt2 = new(1, 8'hAB, "veri_paketi"); // Parametreli
pkt3 = new(2, 8'hFF, "kontrol"); // Parametreli
pkt1.display();
pkt2.display();
pkt3.display();
// --- Nesne Ozelliklerine Erisim ---
$display("\n--- Ozellik Erisimi ---");
pkt1.id = 99;
pkt1.data = 8'hDE;
pkt1.name = "guncellenmis";
$display(" Guncellenen pkt1:");
pkt1.display();
// --- Handle (Referans) Davranisi ---
$display("\n--- Handle (Referans) ---");
begin
Packet pkt_ref;
pkt_ref = pkt2; // Kopyalama degil, ayni nesneye referans
pkt_ref.data = 8'h00;
$display(" pkt_ref.data = 0x%02h (degistirildi)", pkt_ref.data);
$display(" pkt2.data = 0x%02h (ayni nesne!)", pkt2.data);
end
// --- null Kontrolu ---
$display("\n--- null Kontrolu ---");
begin
Packet pkt_null; // Baslatilmamis -> null
if (pkt_null == null)
$display(" pkt_null henuz olusturulmadi (null)");
pkt_null = new(10, 8'hBB, "yeni");
if (pkt_null != null)
$display(" pkt_null artik mevcut:");
pkt_null.display();
end
// --- Nesne Dizisi ---
$display("\n--- Nesne Dizisi ---");
begin
Packet pkt_arr [5];
foreach (pkt_arr[i]) begin
pkt_arr[i] = new(i, i * 16, $sformatf("pkt_%0d", i));
end
foreach (pkt_arr[i])
pkt_arr[i].display();
end
$display("\n=== Siniflar ve Nesneler Sonu ===");
$finish;
end
endmodule