sinif ve interface

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
korendon1971
Üye
Mesajlar: 52
Kayıt: 03 May 2005 06:16

sinif ve interface

Mesaj gönderen korendon1971 »


Merhabalar.

Benim iki sinifim var.

Tozellik=class
renk:tcolor;
function miktar:integer;
function doku:string;
end;

Taraba=class
function ozellgi:Tozellik;
end;

izninizle sunu sormak istiyorum.
Bir degisken tanimladim.
var araba:taraba;

Derleme yaparken
araba.ozelligi.renk
araba.ozellgi.miktar arabanin sartlarina uyuyor.
fakat doku uygun degil.Buna kisitlama getiremez miyiz?
Yani araba.ozelligi.doku gorulmeyecek....Yoksa bunun icin ayri bir sinif acmamiz mi gerekiyor?Umarim anlatabilmisimdir....

Diger sorum ise interface olayini anlamak icin kisa ise bir ornek yazabilirmisiniz? Tesekkur ederim.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

iki clas tanımla en basiti bu olur.

interface ise bu unitin dışardan kullanılacak method procedure fonksiyon değişken vs herşeyin gösteren bölümdür. implemantation ise karşılık kodların yazıldığı yerdir.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

protected ve private özellikler diğer unitlerden görünemezler. Mesela TEdit bileşeninin kodlarına bakarsanız TCustomEdit bileşeninden türemiştir ve hiç kod yoktur. Sadece protected özelliklerin birçoğunu published olarak tekrar tanımlamış ve dışarıdan görünebilir yapmıştır. Ek olarak başka da hiç kod yoktur.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

yapilmak istenen cok net degil.
TAraba sinifinda ve diger benzer siniflarda Ozelligi alanin tipinin illa TOzellik mi olmasi gerekiyor ? Eger gerekmiyorsa TAraba sinifina ve diger benzer siniflara uygun degisik TOzellik sinifi olusturman lazim.

Kod: Tümünü seç

TOzellik = class
Renk:TColor
end;

TArabaOzellik = Class(TOzellik)
Miktar:Integer;
end;

TBenzerOzellik = Class(TOzellik)
Doku:String
end;

TAraba = Class
Ozelligi:TArabaOzellik
end;

TBenzerSinif = Class
Ozelligi:TBenzerOzellik
end;
interfaceler ile de yine ayni sekilde ozellikleri uygun guruplara ayirip bu ozelligi iceren siniflara bunlari uygulaman lazim.


mesela TOzellik, TArabaOzellik, TBenzerOzellik siniflarini birer interface olarak dusunursek bu ozellikleri diledigin kadar siniflara uygulayabilirsin.

mesela TAraba soyle olabilir.

Kod: Tümünü seç

TAraba = Class(TInterfacedObject, IArabaOzellik)
ya da daha kompleks bir sinif icin butun ozellikleri icermesini saglayabilirsin.

Kod: Tümünü seç

TKompleksNesne = Class(TInterfacedObject, IArabaOzellik,IBenzerOzellik)
vs.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Cevapla