Sınıf, nesne yönelimli programlama dillerinde nesnelerin özelliklerini, davranışlarını ve başlangıç durumlarını tanımlamak için kullanılan şablonlara verilen addır. Bir sınıftan türetilmiş bir nesne ise o sınıfın örneği olarak tanımlanır. Sınıflar genelde şahıs, yer ya da bir nesnenin ismini temsil ederler. Sınıflar metotları ile nesnelerin davranışlarını, değişkenleri ile ise nesnelerin durumlarını kapsül ederler. Sınıflar hem veri yapısına hem de bir ara yüze sahiptirler. Sınıflar ile nasıl etkileşime girileceği bu ara yüzler sayesinde sağlanır. Örneğin bir sınıf şablonu ile renk özelliğine, tekerleklere ve sür metoduna sahip olan bir araba temsil edebilir.
Sınıf kullanılmasının başlıca nedenleri
Gerçek hayat problemleri sınıf şablonları kullanılarak bilgisayar ortamına daha kolay ve anlaşılabilir bir biçimde aktarılabilir.
Sınıflar ve kodlar düzenli bir biçimde saklanarak zaman kaybı yaşanmaz.
Nesne yönelimli programlamada herhangi bir projede kullanılmak üzere yaratılan bir sınıf başka projelerde tekrar kullanılabilir.
Düzgün arabirimlerle birleşen sınıflar yaratabilir ve bu sınıfların birbirlerini minimum düzeyde etkileyecek şekilde programlar tasarlanarak birimsellik özelliğinden faydalanılabilir.
Sınıf yapısı
Metotlar
Metotlar üç ayri erisim kuralına göre tanımlanabilir. Bunlar public
, protected
ve private
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 bir prosedür ya da bunun mümküm olmadığı dillerde boş veri türü olan void
kullanılmaktadır.
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 (constructor, destructor) otomatik olarak sistem tarafından çağrılır. Yıkıcı metotlar, nesnelerin bellekten silinmesi sırasında çağrılır. Böylece işi biten nesne için bellekte ayrılmış olan kısım, yeni nesneler için tekrar kullanılabilir. Yıkıcı metotlar hiçbir parametre almaz ve değer döndürmez.
Arayüz ve metotlar
Nesneler, dış dünya ile etkileşimlerini metotlar aracılığı ile tanımlarlar. Metotların içinde bulundukları nesnenin verilerine özel erişim hakları vardır. Nesnenin verilerini işleyen ve görevlerini yerine getiren bu metotlar, o nesnenin davranışı olarak kabul edilir. Metotlar, dış dünya ile nesnenin arayüzünü oluşturur. Örneğin televizyonun önündeki düğmeler, televizyonun içinde bulunan elektrik tesisatı ve kullanıcı arasındaki arayüz olarak kabul edilir. Bu düğmeye basarak televizyonu açıp kapatabilir veya başka bir işlev yerine getirilebilir. Bu örnekteki her metot bir düğme tarafından temsil edilmektedir ve birlikte bütün butonlar televizyon nesnesinin arayüzünü içerirler.
Arayüzlerin yardımcı metodu olarak bilinen statik metot (İngilizce: static method) ise içinde tanımlanmış olduğu sınıfa aittir. Statik metot, nesnelere ait olan bir metot (İngilizce: instance method) ile aynı erişim hakkına sahip değildir. Bir statik metodun ait olduğu sı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ıfından türemiş olan televizyon nesnelerinin sayısını bulmak ise televizyon sı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 kavramını aşağıda sıraladığımız üç özel bilgi erişim belirteçleri ile desteklerler.
public
(halka açık, kamu) erişim kuralı ile tanımlanan metotlara her nesneden erişilebilir.protected
(korumalı) erişim kuralı ile tanımlanan metoda bu metodun tanımlandığı sınıfdan örneklendirilmiş nesnelerin içinden ve bu sınıftan türetilmiş olan alt nesnelerden erişilebilir.private
(özel, gizli) erişim kuralı ile tanımlanan metoda sadece bu metodun içinden erişim hakkı bulunur.
Sınıflararası ilişkiler
Nesne yönelimli programlamada ve Birleşik Modelleme Dilinde (UML) sınıflararası ilişkiler dö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 ve 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.
- Toplama, içerim bağıntısı (aggregation): Toplama, içerim bağıntısı ile modellenen nesneler, genellikle birlikte daha karmaşık bir nesne oluşturmak için bir araya getirilmişlerdir. İçerim bağıntısında nesnelerin arasındaki ilişki zayıftır. İçi boş eş kenar dörtgen (baklava) ş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. 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.
- Bağımlılık ilişkisi (dependency): Bir sınıfın nesnesinin diğer bir sınıfın nesnesini kullanması ya da ona bağımlı olması söz konusudur. Bağımlı sınıftan bağımsız sınıfa doğru kesik kesik olan düz bir çizgiyle gösterilir. Örnekteki
RaporOluştur
sınıfı rapor sınıfını kullanmak, yaniRapor
sınıfına bağlı olmaktadır.Rapor
sınıfında yapılacak herhangi bir değişiklik,RaporOluştur
sınıfında değişiklik yapılmasına neden olacaktır.
- 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 buna dayalı oldukları üstsınıflara ait olan özelliklerin ve davranışların altsınıflarda kullanılabilmesine NYP'de denir. 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): Metotların başlıklarını taşıyan ve bu metotların tanımlamalarını kendisinden türeyecek olan altsınıflarına bırakmış olan sınıflara denir. Bu soyut sınıflardan doğ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 metotlarla 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 metotlardan oluşur ve bu arayüzden türeyen sınıflar, bu soyut metotları taşımak zorundadırlar.
Örnekler
C#
public class Sample { static void main (String[] args) { System.Console.WriteLine(GetMessage()); } public String GetMessage() { return "Hello World!"; } }
Java
public class Ornek { public static void main (String args[]) { System.out.println(metin()); } public String metin() { return "Merhaba Dünya!"; } }
PHP
class ZamanNesnesi { public function zamanıAl() { return(time()); } public function tarihiAl() { return(date('jS F, Y', $this->zamaniAl()); } }
Dış bağlantılar
- Object-Oriented Programming and Software Engineering27 Eylül 2009 tarihinde Wayback Machine sitesinde .
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Sinif nesne yonelimli programlama dillerinde nesnelerin ozelliklerini davranislarini ve baslangic durumlarini tanimlamak icin kullanilan sablonlara verilen addir Bir siniftan turetilmis bir nesne ise o sinifin ornegi olarak tanimlanir Siniflar genelde sahis yer ya da bir nesnenin ismini temsil ederler Siniflar metotlari ile nesnelerin davranislarini degiskenleri ile ise nesnelerin durumlarini kapsul ederler Siniflar hem veri yapisina hem de bir ara yuze sahiptirler Siniflar ile nasil etkilesime girilecegi bu ara yuzler sayesinde saglanir Ornegin bir sinif sablonu ile renk ozelligine tekerleklere ve sur metoduna sahip olan bir araba temsil edebilir Siniflarin UML diyagrami ustunde gosterilisiSinif kullanilmasinin baslica nedenleriGercek hayat problemleri sinif sablonlari kullanilarak bilgisayar ortamina daha kolay ve anlasilabilir bir bicimde aktarilabilir Siniflar ve kodlar duzenli bir bicimde saklanarak zaman kaybi yasanmaz Nesne yonelimli programlamada herhangi bir projede kullanilmak uzere yaratilan bir sinif baska projelerde tekrar kullanilabilir Duzgun arabirimlerle birlesen siniflar yaratabilir ve bu siniflarin birbirlerini minimum duzeyde etkileyecek sekilde programlar tasarlanarak birimsellik ozelliginden faydalanilabilir Sinif yapisiSiniflarin UML diyagrami ustunde gosterilisiMetotlar Metotlar uc ayri erisim kuralina gore tanimlanabilir Bunlar public protected ve private olarak adlandirilmistir Metotlarin bir geri donus degeri de vardir Bir metodun geri donus degerinin bos olmasi istendiginde bir prosedur ya da bunun mumkum olmadigi dillerde bos veri turu olan void kullanilmaktadir Veriler Verileri de metotlar da oldugu gibi uc erisim kurali ile tanimlanabilir Yapici ve yikici metotlar Yapici ve yikici metotlar constructor destructor otomatik olarak sistem tarafindan cagrilir Yikici metotlar nesnelerin bellekten silinmesi sirasinda cagrilir Boylece isi biten nesne icin bellekte ayrilmis olan kisim yeni nesneler icin tekrar kullanilabilir Yikici metotlar hicbir parametre almaz ve deger dondurmez Arayuz ve metotlarNesneler dis dunya ile etkilesimlerini metotlar araciligi ile tanimlarlar Metotlarin icinde bulunduklari nesnenin verilerine ozel erisim haklari vardir Nesnenin verilerini isleyen ve gorevlerini yerine getiren bu metotlar o nesnenin davranisi olarak kabul edilir Metotlar dis dunya ile nesnenin arayuzunu olusturur Ornegin televizyonun onundeki dugmeler televizyonun icinde bulunan elektrik tesisati ve kullanici arasindaki arayuz olarak kabul edilir Bu dugmeye basarak televizyonu acip kapatabilir veya baska bir islev yerine getirilebilir Bu ornekteki her metot bir dugme tarafindan temsil edilmektedir ve birlikte butun butonlar televizyon nesnesinin arayuzunu icerirler Arayuzlerin yardimci metodu olarak bilinen statik metot Ingilizce static method ise icinde tanimlanmis oldugu sinifa aittir Statik metot nesnelere ait olan bir metot Ingilizce instance method ile ayni erisim hakkina sahip degildir Bir statik metodun ait oldugu siniftan turemis olan nesnelerin verilerine bu statik metodun erisme hakki yoktur Statik metot ancak ait oldugu sinifin statik verilerine erisebilmektedir Televizyon sinifindan turemis olan televizyon nesnelerinin sayisini bulmak ise televizyon sinifinda bulunan statik metoda ait bir gorev oldugunu ornek olarak verebiliriz Bilgi gizleme ve kapsullemeNesneye yonelik programlama dillerinin cogu kapsulleme ve bilgi gizleme kavramini asagida siraladigimiz uc ozel bilgi erisim belirtecleri ile desteklerler public halka acik kamu erisim kurali ile tanimlanan metotlara her nesneden erisilebilir protected korumali erisim kurali ile tanimlanan metoda bu metodun tanimlandigi sinifdan orneklendirilmis nesnelerin icinden ve bu siniftan turetilmis olan alt nesnelerden erisilebilir private ozel gizli erisim kurali ile tanimlanan metoda sadece bu metodun icinden erisim hakki bulunur Siniflararasi iliskilerUML diyagrami ustunde baginti iliskisi Nesne yonelimli programlamada ve Birlesik Modelleme Dilinde UML siniflararasi iliskiler dort baslik altinda toplanabilir Baginti iliskisi association Baginti iliskisi bir nesnenin diger bir nesneyle olan kavramsal iliskisini temsil eder ve iki nesne arasina cizilen duz bir cizgi ile belirtilir Aradaki bu iliski bazen cok yonlu bazen tek yonludur Bagintinin adi coklugu ve sinifin bagintidaki rolu baginti iliskisini tanimlayici bilgiler arasinda yer alir Eleman sayisi cardinality n m seklinde belirtilir UML diyagrami ustunde olusum ve toplama iliskisinin gosterilisiToplama icerim bagintisi aggregation Toplama icerim bagintisi ile modellenen nesneler genellikle birlikte daha karmasik bir nesne olusturmak icin bir araya getirilmislerdir Icerim bagintisinda nesnelerin arasindaki iliski zayiftir Ici bos es kenar dortgen baklava sekli ile gosterilir Olusum meydana gelme bagintisi composition Olusum bagintisi icerim bagintisinda oldugu gibi parca butun iliskisini simgeler Bu iliskideki birliktelikler daha kuvvetlidir ve burada yer alan nesneler tek baslarina bir anlam ifade etmezler Ici dolu es kenar dortgen sekli ile gosterilir UML diyagrami ustunde bagimlilik iliskisinin gosterilisiBagimlilik iliskisi dependency Bir sinifin nesnesinin diger bir sinifin nesnesini kullanmasi ya da ona bagimli olmasi soz konusudur Bagimli siniftan bagimsiz sinifa dogru kesik kesik olan duz bir cizgiyle gosterilir Ornekteki RaporOlustur sinifi rapor sinifini kullanmak yani Rapor sinifina bagli olmaktadir Rapor sinifinda yapilacak herhangi bir degisiklik RaporOlustur sinifinda degisiklik yapilmasina neden olacaktir UML diyagrami ustunde kalitim iliskisinin gosterilisiKalitim genellestirme iliskisi inheritance Onceden olusturulan siniflara superclass dayali olan yeni altsiniflarin subclass olusturulmasina ve buna dayali olduklari ustsiniflara ait olan ozelliklerin ve davranislarin altsiniflarda kullanilabilmesine NYP de denir Altsiniflar ici bos olan bir ok ile ustsinifa baglanir Siniflarda kullanilan diger kavramlarSoyut sinif abstract class Metotlarin basliklarini tasiyan ve bu metotlarin tanimlamalarini kendisinden tureyecek olan altsiniflarina birakmis olan siniflara denir Bu soyut siniflardan dogrudan nesne turetilemez Ornegin Hayvan sinifi soyut bir sinif olarak dusunulebilir Cinsi belli olmayan bir hayvanin nasil ses cikartacagi bilinemedigi icin hayvanlarin ortak olarak paylastiklari davranislar soyut Hayvan sinifinda soyut metotlarla tanimlanir Arayuz interface kavrami Coklu kalitim multiple inheritance bazi programlama dillerinde arayuz kavrami ile elde edilir Soyut siniflarda oldugu gibi sadece soyut metotlardan olusur ve bu arayuzden tureyen siniflar bu soyut metotlari tasimak zorundadirlar OrneklerC public class Sample static void main String args System Console WriteLine GetMessage public String GetMessage return Hello World Java public class Ornek public static void main String args System out println metin public String metin return Merhaba Dunya PHP class ZamanNesnesi public function zamaniAl return time public function tarihiAl return date jS F Y this gt zamaniAl Dis baglantilarObject Oriented Programming and Software Engineering27 Eylul 2009 tarihinde Wayback Machine sitesinde