Merhabalar, bugün ki dersimizde, Java’da sınıf ve nesne yapısından bahsedeceğim. Bu yapıları anlamanız, programlama mantığınızın oluşması bakımından oldukça önemlidir. Çünkü, nesneye dayalı programlamanın temelinde bu iki kavram yatar. Yaptığımız ve yapacağımız projelerde, sınıflar yaratır, sınıflardan nesne oluştururuz. Sınıfları, metotları ve değişkenleri, erişim türlerine göre ayırarak, istediklerimizi gerçekleştirmeye çalışırız. Bu yüzden, bu konuyu anlamak oldukça önem arz etmektedir.
Öncelikle class yani sınıf kavramı soyut bir kavramdır. Bizler, her projemizde sınıfları kullanırız. Çünkü yazdığımız Java programları, bir sınıfın içinde çalışmaktadır. Sınıf yani class yapısının içerisinde, değişkenler ve metotlar bulunur. Bu metotları gerekli gördüğümüz yerde kullanmak üzere sınıflardan nesne yaratarak çağırırız.
Sınıf yani Class Üyeleri ve Bazı Kavramları
- Alanlar : Bir sınıfın veya değişkenin durumunu tutan yapıdır.
- Metotlar : Nesneleri ya da değişkenleri veyahut her iki yapıyı kullanarak, belirli bir işlemlerden geçirerek, istediğimiz veriye ulaşmamızı sağlayan yapılardır. Örneğin iki sayının toplama işlemini metotlar aracılığıyla rahatlıkla yapabiliriz. xSayisi ve ySayisi adında iki değişken düşündüğümüzde, bunların toplamını döndüren yapıya metot diyebiliriz. Aşağıdaki örnek, metot yapısına örnektir.
public class SinifYapisi { // SinifYapisi, sınıfımızın adıdır. Burada sınıf oluşumunu görüyoruz. int xSayisi, ySayisi; // tamsayı türünde oluşturduğumuz DEĞİŞKENLER public int toplamaIslemi(){//toplama işlemini yapacağımız metot // int diyerek bu metodun sonunda tamsayı döneceğini ifade ediyoruz // public derken ise, bu metodun, sınıftan nesne oluşturduğumuz // takdirde her yerden erişiminin sağlanabileceği anlamına geldiğini söylüyoruz return xSayisi + ySayisi; // burada ise bu toplama işleminin sonucunu dönüyoruz } }
Sınıf içerisinde, mutlaka olması gereken bir yapı yoktur. Yani metot ya da değişkenler olmasa da olur. (O zaman sınıf hiçbir anlam ifade etmez orası ayrı 🙂 ) Üstte verilen Java kodlarında, basit bir sınıfta, kullanılan yapıları görebiliyoruz.
Şimdi ise, bu sınıf dediğimiz yapıyı yani class yapısını detaylıca inceleyelim. Erişim türü olarak adlandırdığımız, public, private, protected ve friendly yapılarını anlayalım.
- Public : Kullanıldığı zaman, kullanılan yapının bütün class’lardan erişilebilmesini sağlar. Sınıflarda, değişkenlerde ya da metotlarda kullanılabilir.
- Private : Sadece, kullanıldığı sınıf içerisinde, erişilebilen erişim türüdür.
- Protected : Aynı paket içerisinden ve kalıtım yoluyla da erişimin sağlanabildiği erişim türüdür.
- Friendly : Yalnızca aynı paket içerisinden erişimin sağlandığı erişim türüdür.
Evet, erişim türlerini gördük. Şimdi ise, fonksiyon tiplerinden olan void, static, main yapılarını görelim.
- Void : Herhangi bir değer döndürmeyen bir fonksiyon tipidir. Kullanıldığı zaman, belirtilen işlemleri yapar (ekrana yazdırma olabilir)
- Static : Nesne yaratmadan, bir sınıf içerisindeki değişken ya da metodun kullanılmasını sağlar.
- Main : Java’da yapılan programın çalışmasını sağlayan uygulamadır.
Şimdi ise, aşağıda yazdığımız uygulama kodlarını inceleyelim.
public class SinifYapisi { int xSayisi, ySayisi; // tamsayı türünde oluşturduğumuz DEĞİŞKENLER public int toplamaIslemi(){//toplama işlemini yapacağımız metot // int diyerek bu metodun sonunda tamsayı döneceğini ifade ediyoruz // public derken ise, bu metodun, sınıftan nesne oluşturduğumuz // takdirde her yerden erişiminin sağlanabileceği anlamına geldiğini söylüyoruz return xSayisi + ySayisi; // burada ise bu toplama işleminin sonucunu dönüyoruz } public static void main(String[] args) { SinifYapisi sinifYapisi = new SinifYapisi(); // nesnemizi oluşturduk. // eğer nesnemizi oluşturmasaydık, xSayisi ve ySayisina değer atamazdık. // Nesne oluşturmadan direk çağırmamızı sağlamanın bir yolu vardır // O da değişkenleri static tanımlamak sinifYapisi.xSayisi = 5; // değer ataması yaptık sinifYapisi.ySayisi = 4; // değer ataması yaptık int toplam = sinifYapisi.toplamaIslemi(); // metodumuzu çağırdık System.out.println("Toplama işleminin sonucu : "+toplam); } }
Java dosyamızı çalıştırdığımız zaman consol ekranında aşağıdaki çıktı oluşacaktır.
Şimdi ise değişkenlerimizi static tanımlayarak aynı metodu uygulayalım.
public class SinifYapisi { static int xSayisi, ySayisi; // tamsayı türünde oluşturduğumuz DEĞİŞKENLER public int toplamaIslemi(){//toplama işlemini yapacağımız metot // int diyerek bu metodun sonunda tamsayı döneceğini ifade ediyoruz // public derken ise, bu metodun, sınıftan nesne oluşturduğumuz // takdirde her yerden erişiminin sağlanabileceği anlamına geldiğini söylüyoruz return xSayisi + ySayisi; // burada ise bu toplama işleminin sonucunu dönüyoruz } public static void main(String[] args) { SinifYapisi sinifYapisi = new SinifYapisi(); // nesnemizi oluşturduk. xSayisi = 5 ; // static olduğu için direkt değer atayabiliyoruz. ySayisi = 4 ; int toplam = sinifYapisi.toplamaIslemi(); // metodumuzu çağırdık System.out.println("Toplama işleminin sonucu : "+toplam); } }
Static yapısını anladığınızı düşünüyorum.
Bu arada nesne yaratırken new operatörü kullandığımıza dikkat etmişsinizdir. Peki neden new operatörü kullanıyoruz? New operatörü kullanmamızın sebebi, bellekten yarattığımız nesneye yer alma gereksinimidir. Eğer new operatörü kullanmasaydık, bellekten yer alamayacak ve null değerini atayarak, nesneyi tam olarak çağıramamış olacaktık.
Bugün ki dersimiz burada sona ermekte. Anlamadığınız bir konu olursa yorum kısmına yazabilirsiniz. Okuduğunuz için teşekkür ederim.
Abi derslerin devamını bekliyorum kendimi geliştirerek kişisel blogumda bu tür paylaşımlara yer vermek istiyorum