sınıf nedir? obje nedir? bunların veritipi ile bağlantısı nedir?
sınıf nedir? obje nedir? bunların veritipi ile bağlantısı nedir?
benim anladigim kadariyla;
sinif : cesitli veri tiplerini ve cesitli fonksiyonlari bir araya toplayarak olusturulan yeni bir veri tipi. Fonksiyonlari sayesinde bu tur cok fonksiyonel tabi...
obje: bu yarattigin yeni veri tipini kullanarak yarattigin degiskenlerdir.
veri tipi ile baglantisi: int a =10 ; orneginde,
"int" sinifa,
"a" objeye (nesne),
"=" eger bu sinif icin yeni bir operator tanimladiysan; bu da tanimladigin yeni operatore karsilik olabilir,
cok mu basit bi aciklama oldu ?![]()
Yo, teşekkür ederim.. anladım.. ama yinede bu konuda değişik bir fikri olanları duymak isteriz...neolion, mesajından alıntı:
......
Enson 18/07/2005 14:38 tarihinde nilsonmandela tarafından düzenlenmiştir.
Bunu açıklamak için yapılardan bir giriş yapılabilir.Yapılar bir konuyla ilgili(ortak yönleri olan)çeşitli verileri tutmaya yarar.Örneğin:
struct Araba
{
float fiyat;
int parca_no;
};
Sınıflar ise yapıların fonksiyonlarında dahil edilmiş hali olarak tanımlanabilir.Buda nesne yönelimli programlamanın getirmiş olduğu bir avantajdır.Böylece yazmış olduğunuz kod daha anlaşılır ve derli toplu bir hal alır.Objelere (nesne) geldiğimizde ise şunları söyleyebiliriz:Nesneleri , tanımlandıkları sınıfın birer örneği olarak düşünebilirsiniz.Nesneler tanımlanmış oldukları sınıfın veri ve fonksiyonlarına sahiptirler.Fakat main() içinden bunlara ulaşmaları hakkında bazı kurallar da vardır.
Aşağıdaki örnek bir sınıfın ve bu sınıfa ait bazı nesnelerin (obje) tanımlanmasını göstermektedir.
class Araba
{
private:
float fiyat;
int seri_no;
public:
void veri_al()
{
cout<<"arabanin fiyat ve seri no sunu giriniz:";
cin>>fiyat>>seri_no;
cout<<endl;
}
void goster() const
{cout<<"fiyat:"<<fiyat<<" "<<"seri no:"<<seri_no;}
};
////////////////////////////////////////////////////////////////////////
int main()
{
Araba arb1;
arb1.veri_al();
arb1.goster();
return 0;
}
Sınıflar ve objelerle ilgili kısa bir bilgi böyle olabilir.Fakat sınıflar ve nesneler hakkında bilinmesi gereken çok daha fazla şey vardır.Sınıflar kalıtım gibi başka uygulamalarada imkan vermektedir.
Bir örnek verelim; bir bisiklet yapacaksın bunun için öncelikle bir kağıt üzerinde bisikleti tasarlarsın
bu bisikletin özelliklerini(properties):yani hangi renklerde olacağını, kaç vites olacağını, zincir uzunluğu gibi bilgileri,
hareketlerini(methods): hızlanması, yavaşlaması gibi
bunlar kağıt üzerindedir yani şablondur. İşte programlamadaki Class budur şablon yani.
Ben bisiklet şablonunu bir bilgisayar dilinde referans vererek tanımlarsam bu da bir Object(nesne) dir.Yani bir sınıfın object haline gelmesi için ilgili sınıfı kullanmam(referans etmem) gerekir.
Veri tipi ile ilgisi şudur ki;
Programlama dillerinde veri tipleri vardır nedir bunlar?
int
long
short
boolean
char vb gibi..
bunlar basit veri tipleridir.
Birde kullanıcı tanımlı veri tipi vardır(UDT) yani kullanıcının yarattığı veritipi
dikkat ediyoruz
Bisiklet veri tipi(class[sınıf]--->Bu şablon unutma)
Arama için anahtar kelime(Object oriented design)
şimdi zehirli soruyu sorma zamanı geldi...
class ile yapılabilecek herşey tıpa tıp aynı şekilde(hiçbir fazlalık olmadan) struct ile de yapılabildiğinde göre neden class'a ihtiyaç duyulur ? neden kullanılır ?
C deki struct yapısı , pascaldaki record gibi, sadece veritipi tanımlıyordu...Euclides, mesajından alıntı:
nesne yönelimli programlama için değildi..
C++ da bu yapı genişletilmiş class becerisine kavuşmuş ( erişim belirteçleri ve türetme beceresi ),
bence eski C programları( code ) ile sadece sentax açısından uyumluluk için yapılmış birşey bu..
class ın farkı, varsayılan-olarak private kuralı..
OO programlama , class sözcüğü ve information-hiding kavramları sloganlaştırılmış olduğu için ,belki C++ prestij için bunlara ihtiyaç duydu..
bence eğer fonksiyonlar varsayılan olarak virtual tanımlanmış olsaydı , class-struct ayrımı daha anlamlı olurdu..
Hayıri, structlar fonskiyonda içerebilir tıpkı class'lar gibi....mr1yh1, mesajından alıntı:
önceki mesajımda da dediğim gibi bir değişiklik yapmadan bir class'ı struct haline getirebilirsiniz...
hayır struct'lar private öğeler içerebilir...mr1yh1, mesajından alıntı:
private ve public onlar içinde tanımlı kelimelerdir...
Bu tamamiyle geliştiriciye kalmış durum. Geliştirici(software developer ve/veya software designer) hem class hem de struct için + lar ve - ler teraziye konur ona göre bir yapılandırma seçilir. Ancak Aşağıdaki gözardı edilmemesi gereken birkaç nokta var.
1)struct value type dır belirli durumlarda stack de aynı üyeler tekrarlanır bu da performansı etkiler
2)struct da Inheritance(kalıtım) desteklenmez
3)struct da parametik constructorlar yoktur çünkü default const vardır.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks