Soruların doğru cevaplarını öğrenmek için onları delphiye taşıyıp çalıştırmanız yeterli lakin bunu yapmadan önce kodları inceleyerek sonucu kendiniz bulmaya çalışın. Bunun size faydası biraz oop, biraz sanal metodlar biraz statik metodlar ve çok biçimlilik olacak…

Soru-1 Asagidaki programi calistirdigimizda consoldaki cikti ne olur ?


program Project4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAnaClass = class
  procedure Ad;
  end;

  TCocukClass = class(TAnaClass)
  procedure Ad;
  end;

{ TAnaClass }

procedure TAnaClass.Ad;
begin
 writeln('Ana Class');
end;

{ TCocukClass }

procedure TCocukClass.Ad;
begin
 inherited Ad;
 writeln('Çocuk Class');
end;

var
Cocuk :TAnaClass;
begin
  try
    cocuk :=TCocukClass.Create;
    cocuk.Ad;
    freeandnil(cocuk);
    readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

a) Ana Class
b) Çocuk Class
c) Ana Class
    Çocuk Class

Soru-2 Asagidaki programi calistirdigimizda consoldaki cikti ne olur ?


program Project4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAnaClass = class
  procedure Ad;virtual;//bu metod virtual olarak tanimlaniyor....
  end;

  TCocukClass = class(TAnaClass)
  procedure Ad;
  end;

{ TAnaClass }

procedure TAnaClass.Ad;
begin
 writeln('Ana Class');
end;

{ TCocukClass }

procedure TCocukClass.Ad;
begin
 inherited Ad;
 writeln('Çocuk Class');
end;

var
Cocuk :TAnaClass;
begin
  try
    cocuk :=TCocukClass.Create;
    cocuk.Ad;
    freeandnil(cocuk);
    readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

a) Ana Class
b) Çocuk Class
c) Ana Class
    Çocuk Class

Soru-3 Asagidaki programi calistirdigimizda consoldaki cikti ne olur ?


program Project4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAnaClass = class
  procedure Ad;virtual;
  end;

  TCocukClass = class(TAnaClass)
  procedure Ad;
  end;

{ TAnaClass }

procedure TAnaClass.Ad;
begin
 writeln('Ana Class');
end;

{ TCocukClass }

procedure TCocukClass.Ad;
begin
// inherited Ad; TAnaclass in ad metodunu cagiran komut
 writeln('Çocuk Class');
end;

var
Cocuk :TAnaClass;
begin
  try
    cocuk :=TCocukClass.Create;
    cocuk.Ad;
    freeandnil(cocuk);
    readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

a) Ana Class
b) Çocuk Class
c) Ana Class
    Çocuk Class

Soru-4 Asagidaki programi calistirdigimizda consoldaki cikti ne olur ?


program Project4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAnaClass = class
  procedure Ad;virtual;
  end;

  TCocukClass = class(TAnaClass)
  procedure Ad;override;
  end;

{ TAnaClass }

procedure TAnaClass.Ad;
begin
 writeln('Ana Class');
end;

{ TCocukClass }

procedure TCocukClass.Ad;
begin
 inherited Ad;
 writeln('Çocuk Class');
end;

var
Cocuk :TAnaClass;
begin
  try
    cocuk :=TCocukClass.Create;
    cocuk.Ad;
    freeandnil(cocuk);
    readln;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

a) Ana Class
b) Çocuk Class
c) Ana Class
    Çocuk Class

Cevaplar:

Cevap 1) a şıkkı Ana Class. Cocuk nesnesini TCocukClass sinifini kullanarak Create ediyoruz ama tipi TAnaClass olduğu için ve Ad proseduru de statik bir metod olduğu için nesnenin sınıf türüne ait olan ad proseduru çalıştırılır….

Cevap 2) yine a şıkkı Ana Class. Cocuk nesnesini TCocukClass sinifini kullanarak Create ediyoruz ama tipi TAnaClass olduğu için ve Ad proseduru de sanal bir metod olmasina ragmen TCocukClass sinifinin onu override anahtar kelimesiyle acikca ezmedigi icin yine nesnenin sınıf türüne ait olan ad proseduru çalıştırılır….

Cevap 3) yine a şıkkı Ana Class. Cocuk nesnesine ait Ad metodu calismadigindan burda yaptigimiz degisikliklerin hicbir onemi yoktur.

Cevap 4) c şıkkı Ana Class , Cocuk Class. Cocuk nesnesine ait Ad metodu acik bir sekilde Ana classin ad metodunu ezdiginden ve kalitim yontemiyle ana classin ad metodunu cagirmasindan dolayi consolda hem Ana class hem de Cocuk class satirlarini goruruz.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>