Anotasyon

Java Dersleri – Nesne ve Sınıf Yapısı

Merhaba arkadaşlar,
mobilhanem.com üzerinden anlattığımız/yayınladığımız derslerimize, Temel Java Dersleri serisi altında Java Nesne ve Sınıf Yapısı konusuyla devam ediyoruz.

Önceki derslerimizde gördüğümüz Java Operatörler, Döngüler, Diziler ve diğer konular Java’nın temel yapısı için büyük önem arzetmektedir. Temel yapıları iyi öğrenmek Java ile kodlama da büyük önem taşımaktadır. Java ile kodlanan büyük ve kapsamlı projelerde hepimizin daha önceden duyduğu Nesne Yönelimli Programlama yani Object-Oriented Programming yapısı kullanılmaktadır. Nesne Yönelimli Programlama nedir sorusunun cevabını yazı dizimizin bu ve sonraki derslerinde anlatıyor olacağım. Bu ders Java Nesne ve Sınıf Yapısı ile aslında Nesne Yönelimli Programlamaya giriş yaptığımız dersimizdir.

Nesne ve Sınıf Yapısı

Java Nesne ve Sınıf yapısı kullanılarak Nesneye dayalı programlama yapılmaktadır. Aslında nesneler sınıflardan oluşmaktadır. Java’da bir sınıfı class anahtar kelimesini kullanarak tanımlayabiliriz.

Sınıf;  Nesnelerin özelliklerini ve işlevlerini tanımlayan bir şablondur.
Nesne; Çevremizde gördüğümüz özellikleri ve işlevleri olan herşeyi nesne olarak tanımlayabiliriz. Bu canlı veya cansız bir varlık olabilir. Örn: Telefon, bilgisayar, araba, hayvan vs. Nesnelerin özellikleri önceki derslerimizde gördüğümüz Java Veri Tipleri ile belirtilebileceği gibi yine bizim tarafımızdan oluşturulan sınıflar aracalığı ile de belirtilebilir. Nesnelerin işlevleri ise yine daha önceden gördüğümüz Metot Yapısı ile belirtilerek nesnelerin birbirleri arasındaki iletişimi sağlanır.

Sınıf

Java Nesne ve Sınıf Yapısı nda nesneler sınıflardan oluşur demiştik, o halde öncelikle sınıf yapısı nasıl oluşur ona bakalım;

Genel olarak Java’da sınıf tanımlaması yukarıdaki şekilde yapılmaktadır. Daha iyi anlaşılabilmesi için bir Araba sınıfı üretelim ve bu sınıf üzerinden örneklerimize devam edelim.

Sanırım şimdi özellik ve işlevsellik demekle neyi kastettiğim daha iyi anlaşıldı. Bir araba sınıfı içerisinde arabaların genel bir özelliği olarak motorHacmi tanımlanmıştır. Ayrıca işlevsellik olarakta calistir() metodu oluşturulmuştur. Burada özellik olarak rengi, yapısı, ağırlığı vb. bir sürü özellik eklenebilir. Yine aynı şekilde sinyalVer(), camAc() veya bagajAc() gibi bir çok işlevsellik eklenebilir. Özellikler ve işlevsellikler tamamen geliştiricinin ihtiyacına göre düzenlenebilir.

Constructor (Yapıcı Metot)

Burada daha önce görmediğimiz constructor yapısı bulunmaktadır. Aslında Java’da bir sınıf oluşturduğumuzda constructor yani yapıcı metotlar büyük önem taşımaktadır. Biz kod yazarken herhangi bir constructor metot tanımlamasak bile Java bizim için bir tane constructor metot oluşturmaktadır. Constructor metotlar bir sınıftan bir nesne oluşturulduğunda ilk çalışan metotlardır. Bu metotlar aracılığı ile sınıflara ilk çalıştıklarında vermek istediğimiz değerleri verebilir, varsayılan değerlere farklı değerler atayabilir veya bir metot çalıştırabiliriz.

Oluşturduğumuz sınıfın yapısını daha net görebilmek adına görsel olarak bir tanımlama yapabilir.z Bir sınıfı görsel olarak anlatmanın yöntemi Unified Modeling Language yani UML kullanarak UML class diagram oluşturmakla mümkündür. Burada sınıfın adı, içindeki veri tipi alanları, constructor ve metotları görüntülenebilir. Yukarıda bizim tanımladığımız Araba sınıfına ait Sınıf Diagramı şu şekildedir;

 

Nesne

Java Nesne ve Sınıf Yapısında nesnelerin sınıflardan oluştuğunu daha önce söylemiştim. Sınıf yapısını gördüğümüze göre artık sınıflardan nasıl nesne oluşturulduğunu görebiliriz. En basit ve genel yöntemle;

şeklinde bir tanımlama ile sinifAdi nesnesi oluşturulabilir. Yine daha iyi anlaşılması için Araba sınıfımız üzerinden devam edelim. Öncelikle Araba sınıfımızda biraz değişiklik yapalım ve araba nesnemizi oluşturalım.

Araba sınıfında yaptığımız değişiklikler sonucu, bu sınıftan nesne oluşturduğumuzda konsoladaki çıktılarla nesne oluşurken işlemlerin hangi sırayla çalıştığını daha net anlayacağız. Bir tane ArabaTest sınıfı oluşturalım ve bu sınıf içerisinde Araba sınıfından bir nesne oluşturalım ve calistir() metodunu çağıralım.

Öncelikle yukarıdaki kodu çalıştırdığımızda çıktısının ne olacağına bir göz atalım.

Araba arabaNesnesi = new Araba(); şeklinde oluşturduğumuz nesnemizde sizlerinde dikkatinden kaçmayacağı gibi parametre almayan constructor kullanılarak bir nesne oluşturuldu. Sınıftan yeni bir nesne oluşturulurken constructor devreye girdi ve görevini yerine getirdi. Aynı şekilde Araba baskaArabaNesnesi = new Araba(2997); şeklinde oluşturulan nesnede ikinci constructor yani içerisine double yeniMotorHacmi değerini alan constructor devreye girdi ve görevini tamamladı. Araba sınıfından nesne oluşturduktan sonra calistir() methodunu yine bizim tetiklememiz gerekti, işte metotlarla constructor farkı burada ortaya çıkıyor. Kısaca toparlamak gerekirse; constructor lar sınıflardan nesne oluşturuluğu esnada tetiklenmekte, metotlar ise nesne oluşturulup çağırıldıktan sonra tetiklenmektedir.

Getter ve Setter Metotlar

Değinmemiz gereken önemli, bir o kadar kullanışlı ve işimize yarayacak bir konuda getter ve setter metotlarıdır. Sınıflar içerisinde tanımlanan constructor ve metotların yanı sıra birde değişkenler vardır. Değişkenler bir sınıf tanımlanırken ulaşım yapısı dikkat edilerek tanımlanması gereken yapılardır. Bu dersimizde getter ve setter metotlarından değişkenlere erişimin nasıl sağlanacağıyla ilgili fikir vermesi için bahsediyor olacağız. Erişim yetkilerine yönelik dersimizde getter ve setter yapısından daha kapsamlı bir şekilde bahsedeceğiz. Araba sınıfımız içerisinde varsayilanMotorHacmi değişkeni bulunmaktadır. Eğer varsayilanMotorHacmi değişkenimizin değerini değiştirmek istiyorsak direk olarak çağırarak değilde getter setter yapısını kullanarak yapmak en doğru yaklaşımdır. Aşağıdaki örneği inceleyerek ne demek istediğimi daha net bir şekilde anlayabilirsiniz.

yerine Araba sınıfını aşağıdaki gibi tanımladıktan sonra;

ArabaTest sınıfında varsayilanMotorHacmi değişkeniyle ilgili değişiklikleri aşağıdaki gibi yapmak daha doğru bir yaklaşım olacaktır.

Sonuç

Object Oriented Programming yapısının temel taşlarından olan Nesne ve Sınıf Yapısı’nı iyi kavramakta fayda var. Sonraki derslerimizde Nesne ve Sınıf Yapısını ne kadar çok kullandığımızı görünce sizlerde bana hak vereceksiniz.

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm Temel Java Dersleri için tıklayınız..

Eren Başaran

Software Developer
Mobilhanem Yazarı

5 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?