Sınıf (programlama): Revizyonlar arasındaki fark

[kontrol edilmemiş revizyon][kontrol edilmemiş revizyon]
İçerik silindi İçerik eklendi
Luckas-bot (mesaj | katkılar)
k r2.7.1) (Bot: Ekleniyor: bg:Клас (програмиране)
Sae1962 (mesaj | katkılar)
k Küçük düzeltmeler yapıldı.
15. satır:
== Sınıf yapısı ==
[[Dosya:Ornek_Sinif.jpg|thumb|[[Sınıf Diyagramı | Sınıfların UML diyagramı üstünde gösterilişi]]]]
* Metotlar
 
* ===Metotlar ===
Metotlar üç ayri erisim kuralına göre tanımlanabilir. Bunlar Public, Private ve Protected olarak adlandırılmıştır. Metotların bir geri dönüş değeri de vardır. Bir metodun geri dönüş değerinin boş olması istendiğinde ise boş veri türü olan Void kullanılmaktadır.
 
Metotlar üç ayri erisim kuralına göre tanımlanabilir. Bunlar Public<code>public</code>, Private<code>protected</code> ve Protected<code>private</code> olarak adlandırılmıştır. Metotların bir geri dönüş değeri de vardır. Bir metodun geri dönüş değerinin boş olması istendiğinde isebir prosedür ya da bunun mümküm olmadığı dillerde boş veri türü olan Void<code>void</code> kullanılmaktadır.
* Veriler
 
* ===Veriler===
 
Verileri de metotlar da olduğu gibi üç erişim kuralı ile tanımlanabilir.
 
* ===Yapıcı ve yıkıcı metotlar===
 
Yapıcı ve yıkıcı metotlar otomatik olarak sistem tarafindantarafından çağrılır. Yıkıcı metotlar, nesnelerin hafizadan[[Bellek (bilgisayar)|bellek]]ten silinmesi sırasında çağrılır. böyleceBöylece işi biten nesne için hafizadabellekte ayrilmisayrılmış olan kısım, yeni nesneler için tekrar kullanılabilir. Yıkıcı ve yapıcı metotlar hiçbir parametre almaz ve değer döndürmez.
 
== Arayüz ve metodlarmetotlar ==
 
ObjelerNesneler, dış dunyadünya ile etkileşimlerini metotlar aracılığı ile tanımlarlar. MetotlarMetotların içinde bulundukları nesnenin verilerine özel erişim hakları vardır. ve nesneninNesnenin verilerini işleyen ve görevlerini yerine getiren bu metotlar, o nesnenin davranışı olarak kabul edilir. Metotlar, dış dunyadünya ile nesnenin arayüzünü oluşturur. Örneğin televizyonun önündeki butonlardüğmeler, televizyonun içinde bulunan elektrik tesisatitesisatı ve kullanıcı arasında kiarasındaki arayüz olarak kabul edilir. Bu butonadüğmeye basarak televizyonu açıp kapatabilir veya başka bir fonksiyonişlev yerine getirilebilir. Bu örnek de kiörnekteki her metot bir butondüğme tarafindantarafından temsil edilmektedir ve birlikte bütün butonlar televizyon nesnesinin arayüzünü ihtiva etmektedirleriçerirler.
 
Arayüzlerin yardımcı metotu olarak bilinen statik metot ([[İngilizce|İng.]] ''static metotmethod'') ise içinde tanimlanmistanımlanmış olduğu sınıfa aittir. Statik metot, nesnelere ait olan bir metot ([[İngilizce|İng.]] ''instance metodsmethod'') ile aynı erişim hakkına sahip degildir. Bir statik metodun ait olduğu sınıfdansınıftan türemiş olan nesnelerin verilerine bu statik metodun erişme hakkı yoktur. Statik metot, ancak ait olduğu sınıfın statik verilerine erişebilmektedir. Televizyon sınıfindansınıfından türemiş olan televizyon neslerinin sayısını bulmak ise televizyon sinifindasınıfında bulunan statik metoda ait bir görev olduğunu örnek olarak verebiliriz.
 
== Bilgi gizleme ve kapsülleme ==
Nesneye yönelik programlama dillerinin çoğu [[kapsülleme]] ve bilgi gizleme konseptinikavramını asağıdaaşağıda sıraladığımız üç özel bilgi erişim belirteçleri ile desteklerler.
 
* '''Public'''<code>public</code> (halka açık, kamu) erişim kuralı ile tanımladığımıztanımlanan metotlara her nesneden erişebilirizerişilebilir.
* '''Private'''<code>protected</code> (özel, gizlikorumalı) erişim kuralı ile tanımladığımız birtanımlanan metoda sadece bu metodun tanımlandığı sınıfdan örneklendirilmiş nesnelerin içinden erişimve bu sınıftan türetilmiş olan hakkınaalt sahipnesnelerden oluruzerişilebilir.
* '''Protected'''<code>private</code> (korumalıözel, gizli) erişim kuralı ile tanımladığımız birtanımlanan metoda isesadece bu metodun tanımlandığı sınıfdan örneklendirilmiş nesnelerin içinden ve bu sınıfdan türetilmiş olan alterişim nesnelerdenhakkı erişebilirizbulunur.
 
== Sınıflar arasıSınıflararası ilişkiler ==
[[Dosya:Baginti_iliskisi.jpg|thumb|500px|[[Sınıf Diyagramı | UML diyagramı üstünde bağıntı ilişkisi]]]]
[[Nesne yönelimli programlama]]da ve [[UML|Birleşik Modelleme Dili]]nde (UML) sınıflar arasısınıflararası ilişkiler 4dört başlık altında toplanabilir.:
* Bağıntı ilişkisi (''association''): Bağıntı ilişkisi, bir nesnenin diğer bir nesneyle olan kavramsal ilişkisini temsil eder. Bu ilişkive iki nesne arasına çizilen düz bir çizgi ile belirtilir. Aradaki bu ilişki bazen çok yönlü, bazen tek yönlüdür. Bağıntının adı, çokluğu ve sınıfın bağıntıdaki rolü, bağıntı ilişkisini tanımlayıcı bilgiler arasında yer alır. Eleman sayısı (''cardinality'')( ''n:m)'' şeklinde belirtilir.
[[Dosya:Olusum_ve_toplama_iliskisi.jpg|thumb|500px|[[Sınıf Diyagramı | UML diyagramı üstünde oluşum ve toplama ilişkisinin gösterilişi]]]]
* Toplama, içerim bağıntısı (''aggregation''): Toplama, içerim bağıntısı ile modellediğimizmodellenen nesneler, genellikle birlikte daha karmaşık bir nesne oluşturmak için bir araya getirilmiştirlergetirilmişlerdir. İçerim bağıntısında nesnelerin arasındaki ilişki zayıftır. İçi boş eş kenar dörtgen (baklava) seklişekli ile gösterilir.
 
* Oluşum, meydana gelme bağıntısı (''composition''): Oluşum bağıntısı, içerim bağıntısında olduğu gibi parça -bütün ilişkisini simgeler. buBu ilişkideki birliktelikler daha kuvvetlidir ve burada yer alan nesneler tek başlarına bir anlam ifade etmezler. İçi dolu eş kenar dörtgen şekli ile gösterilir.
 
* Toplama, içerim bağıntısı (aggregation): Toplama, içerim bağıntısı ile modellediğimiz nesneler, genellikle birlikte daha karmaşık bir nesne oluşturmak için bir araya getirilmiştirler. İçerim bağıntısında nesnelerin arasındaki ilişki zayıftır. İçi boş eş kenar dörtgen (baklava) sekli ile gösterilir.
* Oluşum, meydana gelme bağıntısı (composition): Oluşum bağıntısı, içerim bağıntısında olduğu gibi parça bütün ilişkisini simgeler bu ilişkideki birliktelikler daha kuvvetlidir ve burada yer alan nesneler tek başlarına bir anlam ifade etmezler. İçi dolu eş kenar dörtgen şekli ile gösterilir.
 
 
[[Dosya:Bagimlilik_iliskisi.jpg |thumb|500px|[[Sınıf Diyagramı | UML diyagramı üstünde bağımlılık ilişkisinin gösterilişi]]]]
* Bağımlılık ilişkisi (''dependency''): Bir sınıfın nesnesinin diğer bir sınıfın nesnesini kullanması yadaya da ona bağımlı olması söz konusudur. Bağımlı sınıfdansınıftan bağımsız sınıfa doğru kesik kesik olan düz bir çizgiyle gösterilir. Örnekteki <code>RaporOluştur</code> sınıfı rapor sınıfını kullanmaktadırkullanmak, yani <code>Rapor</code> sınıfına bağlıdırbağlı olmaktadır. <code>Rapor</code> sınıfında yapılacak herhangi bir değişiklik, ise <code>RaporOluştur</code> sınıfında değişiklik yapılmasına neden olacaktır.
 
 
[[Dosya:Kalitim_bil_pr.jpg|thumb|500px|[[Sınıf Diyagramı | UML diyagramı üstünde kalıtım ilişkisinin gösterilişi]]]]
* Kalıtım, genelleştirme ilişkisi (''inheritance''): Önceden oluşturulan sınıflara (''superclass'') dayalı olan yeni altsınıfların (''subclass'') oluşturulmasına ve bubuna dayalı oldukları üstsınıflara ait olan özelliklerin ve davranışların altsınıflarda kullanılabilmesine NYP'de kalıtım denilirdenir. Altsınıflar, içi boş olan bir ok ile üstsınıfa bağlanır.
 
== Sınıflarda kullanılan diğer kavramlar ==
 
* Soyut sınıf (''abstract class''): MetodlarınMetotların başlıklarını taşıyan ve bu metodlarınmetotların tanımlamalarını kendisinden türeyecek olan altsınıflarına bırakmış olan sınıflara soyut sınıflar denir. Bu soyut sınıflardan direk olarakdoğrudan nesne türetilemez. Örneğin "Hayvan" sınıfı soyut bir sınıf olarak düşünülebilir. Cinsi belli olmayan bir hayvanın nasıl ses çıkartacağı bilinemediği için hayvanların ortak olarak paylaştıkları davranışlar soyut "Hayvan" sınıfında soyut metodlar şeklindemetotlarla tanımlanır.
* Arayüz (''interface'') kavramı : [[Çoklu kalıtım]] (''multiple inheritance''), bazı programlama dillerinde arayüz kavramı ile elde edilir. Soyut sınıflarda olduğu gibi sadece soyut metodlardanmetotlardan oluşur ve bu arayüzden türeyen sınıflar, bu soyut metodlarımetotları taşımak zorundadırlar.
 
== Örnekler ==
 
===C#===
* Kalıtım, genelleştirme ilişkisi (inheritance): Önceden oluşturulan sınıflara (superclass) dayalı olan yeni altsınıfların (subclass) oluşturulmasına ve bu dayalı oldukları üstsınıflara ait olan özelliklerin ve davranışların altsınıflarda kullanılabilmesine NYP'de kalıtım denilir. Altsınıflar içi boş olan bir ok ile üstsınıfa bağlanır.
<source lang="csharpCSharp">
public class Sample
static void main (String[] args)
{
System.Console.WriteLine(GetMessage());
}
public String GetMessage()
{
return "Hello World!";
}
</source>
 
== Sınıflarda kullanılan diğer kavramlar ==
 
* Soyut sınıf (abstract class): Metodların başlıklarını taşıyan ve bu metodların tanımlamalarını kendisinden türeyecek olan altsınıflarına bırakmış olan sınıflara soyut sınıflar denir. Bu soyut sınıflardan direk olarak nesne türetilemez. Örneğin "Hayvan" sınıfı soyut bir sınıf olarak düşünülebilir. Cinsi belli olmayan bir hayvanın nasıl ses çıkartacağı bilinemediği için hayvanların ortak olarak paylaştıkları davranışlar soyut "Hayvan" sınıfında soyut metodlar şeklinde tanımlanır.
* Arayüz (interface) kavramı : [[Çoklu kalıtım]] (multiple inheritance) bazı programlama dillerinde arayüz kavramı ile elde edilir. Soyut sınıflarda olduğu gibi sadece soyut metodlardan oluşur ve bu arayüzden türeyen sınıflar bu soyut metodları taşımak zorundadırlar.
 
== Örnekler ==
=== Java ===
 
<source lang="javaJava">
public class Ornek
{
Satır 79 ⟶ 86:
public String metin()
{
return "Merhaba DunyaDünya!";
}
}
Satır 86 ⟶ 93:
=== PHP ===
 
<source lang="phpPHP">
class ZamanObjesi
{
Satır 100 ⟶ 107:
</source>
 
===C#===
<source lang="csharp">
public class Sample
static void main (String[] args)
{
System.Console.WriteLine(GetMessage());
}
public String GetMessage()
{
return "Hello World!";
}
</source>
== Dış bağlantılar ==
 
* [http://www.ensta.fr/~diam/java/online/JavaBasics/oop/oop-10-intro.html Introduction to Classes and Objects]
* [http://people.cs.vt.edu/~kafura/cs2704/oop.swe.html Object-Oriented Programming and Software Engineering]
* [http://staff.science.uva.nl/~heck/JAVAcourse/ch3/s1.html OOP: Class Hierarchy]
* [http://people.cs.vt.edu/~kafura/cs2704/oop.swe.html Object-Oriented Programming and Software Engineering]
 
<!--Kategoriler-->
[[Kategori:Nesne yönelimli programlama]]
 
<!--İntervikiler-->
[[af:Klasse]]
[[ar:صنف (علوم الحاسب)]]