Java Sınıf Oluşturma ve Instance Alma
Java meraklısı yazılımcılara selamlar :)
Önceki Java makalemizde metot konusunu geliştirip parametreleri metotları öğrenmiş bu makalemizde ise daha profesyonel bir yazılımcı olma yolunda nesne yönelimli programlama (object orianted programming - oop)
konusunu daha detaylı olarak öğreneceğiz.
Aslında object orianted programming konusuna metotlar ile ilgili giriş yapmıştık ve metot kavramını öğrendiğinizi varsayarak bu makalemizde programlama hiyerarşisinde metotların üst kümesi olan sınıfları (class) öğreneceğiz.
Konuya girmeden önce object orianted programming konusunun ne olduğunu bilirsek birazdan öğreneceğimiz konuları
daha rahat anlayabiliriz ;)
Object orianted programming adından da anlaşılacağı gibi nesne tabanlı programlamadır ve buradaki nesne sözcüğü
gerçek dünyadaki nesnelerin karşılığıdır, evet ciddiyim nesne tabanlı programlamanın temel öğesi nesnedir ve herşeyin
nesneden türediği varsayılmaktadır.
Yıllar önce bilgisayar programcıları karmaşık ve öğrenilmesi hatta geliştirilmesi zor olan bilgisayar kodlarını belli bir düzene oturtarak daha sağlıklı ve verimli bir kod yazma stili üzerinde kafa yormuşlardır.Uzun uğraşları sonucu bilgisayar programını gerçek dünya ile benzeterek konuya bir felsefi olarak yaklaşmışlar ve dünyadaki her şeyin birer nesne (object) olduğuna kanaat getirerek yazılan kodların da birer nesne olabileceğini düşünmüşlerdir.
Sonunda herşey nesne ise o halde programlamanın temellerine nesne olarak yaklaşmışlar ve yazılan her kodun birer nesne ya da nesneden türeyen başka bir nesne - o da nesiyse artık :) - olacağını düşünerek nesne yönelimli programlama olayını geliştirmişler.
Örneğin; öğrenci bir nesnedir dersek pek mantıklı gelmeyebilir ancak öğrenci bir insandır dersek insan nesnesinden
öğrenci nesnesinin türeyebileceği konusundan bahsedebiliriz.
Bu kadar object orianted programming felsefesi konuyu anlamanıza yardımcı olmuştur o halde biraz kod yazma zamanı :)
Ana konumuz olan sınıflara dönersek Java'da (hatta diğer oop destekli dillerde) sınıfların kendileri birer nesnedir diyebiliriz ve sınıfları tıpkı gerçek bir insana benzeterek nesne yönelimli bir programlama oluşturmuş oluruz.
Şimdi NetBeans IDE'mizi açıyor ve yeni bir Java uygulaması oluşturuyoruz.Aşağıdaki gibi projeler sekmesinden yeni bir
sınıf oluşturuyoruz:
ve karşımızda henüz boş bir Java class'ı yer alıyor:
Nesne yönelimli programlama konusunda nesneleri gerçek dünyadaki nesnelere benzetebildiğimiz için "öğrenci" isimli sınıfımızı da tıpkı gerçek bir öğrenciye benzetebiliriz ve hemen diyoruz:
Bir öğrencinin neyi vardır?
Adı,soyadı,yaşı,okulu,sınıfı (gerçek sınıf) ...
Bu bahsettiklerimiz sınıfın öznitelikleridir (property) ve her bir özniteliğin tipi vardır (int,String gibi), o halde öğrencimizin
özniteliklerini yazıyoruz:
ve bunun gibi daha birçok öznitelik ekleyebiliriz..Şimdi de şu soruyu soruyoruz:
Bir öğrenci ne yapar?
Ders çalışır,oyun oynar,okula gider...
İşte bu noktada önceki makalemizde öğrendiğimiz konu olan metotlar devreye giriyor ve hatırlarsanız metotlar iş yapan ve değer döndüren program parçacıklarıdır demiştik, madem öğrenci ders çalışıp oyun oynuyorsa demek ki "Ogrenci" sınıfının metotları da olabilir:
Artık "Ogrenci" sınıfımızı gerçek dünyadaki nesne olan öğrenci ile modelledik,son olarak değer döndüren bir metot eklersek Java sınıflarında metotlar konusunu da pekiştirmiş oluruz :)
YasGetir() metodumuzda öğrenci sınıfının yaş bilgisini getirecek.
Peki Java sınıflar nasıl kullanılır?
Oluşturulan bir sınıfı kullanmanın iki yolu vardır; eğer sınıflar dinamik yapıdaysa (buradaki gibi) örnek kopya (instance)
oluşturularak özniteliklerine ve içerdiği metotlar erişilebilir,eğer statik yapıdaysa (ileride göreceğiz) doğrudan ismi
yazılarak kullanılabilirler.
Bu örneğimizde dinamik Java sınıflarını öğrendiğimiz için projemize JFrame ekleyerek oluşturduğumuz öğrenci sınıfını kullanacağız:
JFrame'mize buton ekleyip "ActionPerformed" eventine geçiyor ve oluşturduğumuz öğrenci sınıfından bir instance alıyoruz.Sınıf farketmeksizin bir nesnenin kopyasını oluşturabilmek için "new" anahtar kelimesini kullanırız ve öğrenci sınıfından şu şekilde bir kopya çağırıyoruz:
Tabi henüz "öğrenci" nesnesini kullanmadığımız için altı yeşil renkle çizili görüyoruz,şimdi ise az önce oluşturduğumuz öğrenci sınıfının property'lerini ve metotlarını görelim,bunun için instance aldığımız öğrenci sözcüğünün sonuna nokta işareti koyup intellisense'in seçenekleri göstermesini bekliyoruz:
Kırmızı alan içerisinde gösterdiklerimiz az önce oluşturduğumuz sınıfın öznitelikleri ve metotlarıdır,dikkat ederseniz yazdıklarımız dışında ek property ve metotları da görüyoruz.Bunun nedeni oluşturduğumuz öğrenci sınıfının Java üst sınıflarından türemesidir,hatırlarsanız "herşey bir başka nesneden türeyebilir" demiştik, ya da dememişsek bile şimdi demiş oldum :)
Madem öğrenci sınıfından bir kopya oluşturduk o halde property'lere değerler verelim:
Artık oluşturduğumuz classa ait kopyamız daha anlamlı hale geldi ama metotlarımızı da unutmayalım di mi :)
Makaleye noktayı koymadan önce değer döndüren metotları da unutmamak gerek,hatırlarsanız değer döndüren metotları aynı türde bir değişkene atayabiliyorduk o halde öğrencinin YasGetir() metodundan gelecek değeri değişkenimize atayalım:
Buradaki YasGetir() metodu oluşturduğumuz öğrenci instance'ına verdiğimiz 26 değerini geri döndürecektir,eğer öğrenci sınıfından oluşturduğumuz örnekte öğrencinin yaş bilgisine herhangi bir değer vermeseydik YasGetir() metodu null (boş) bir değer döndürecek ve bir programalama hatasına sebep olacaktı.Neyse ki ileriki makalelerimizde null geçilebilir değişkenler konusunu öğrenip önlemler alabileceğiz.
Java sınıfları hakkında bugünkü makalemizin sonuna gelmiş bulunuyoruz,bir sonraki makalemizde Java ile nesne yönelimli programlama derslerimizi öğrenmeye devam edeceğiz.O zamana dek kendinize iyi bakın hoşçakalın :)
Önceki Java makalemizde metot konusunu geliştirip parametreleri metotları öğrenmiş bu makalemizde ise daha profesyonel bir yazılımcı olma yolunda nesne yönelimli programlama (object orianted programming - oop)
konusunu daha detaylı olarak öğreneceğiz.
Aslında object orianted programming konusuna metotlar ile ilgili giriş yapmıştık ve metot kavramını öğrendiğinizi varsayarak bu makalemizde programlama hiyerarşisinde metotların üst kümesi olan sınıfları (class) öğreneceğiz.
Konuya girmeden önce object orianted programming konusunun ne olduğunu bilirsek birazdan öğreneceğimiz konuları
daha rahat anlayabiliriz ;)
Object orianted programming adından da anlaşılacağı gibi nesne tabanlı programlamadır ve buradaki nesne sözcüğü
gerçek dünyadaki nesnelerin karşılığıdır, evet ciddiyim nesne tabanlı programlamanın temel öğesi nesnedir ve herşeyin
nesneden türediği varsayılmaktadır.
Yıllar önce bilgisayar programcıları karmaşık ve öğrenilmesi hatta geliştirilmesi zor olan bilgisayar kodlarını belli bir düzene oturtarak daha sağlıklı ve verimli bir kod yazma stili üzerinde kafa yormuşlardır.Uzun uğraşları sonucu bilgisayar programını gerçek dünya ile benzeterek konuya bir felsefi olarak yaklaşmışlar ve dünyadaki her şeyin birer nesne (object) olduğuna kanaat getirerek yazılan kodların da birer nesne olabileceğini düşünmüşlerdir.
Sonunda herşey nesne ise o halde programlamanın temellerine nesne olarak yaklaşmışlar ve yazılan her kodun birer nesne ya da nesneden türeyen başka bir nesne - o da nesiyse artık :) - olacağını düşünerek nesne yönelimli programlama olayını geliştirmişler.
Örneğin; öğrenci bir nesnedir dersek pek mantıklı gelmeyebilir ancak öğrenci bir insandır dersek insan nesnesinden
öğrenci nesnesinin türeyebileceği konusundan bahsedebiliriz.
Bu kadar object orianted programming felsefesi konuyu anlamanıza yardımcı olmuştur o halde biraz kod yazma zamanı :)
Ana konumuz olan sınıflara dönersek Java'da (hatta diğer oop destekli dillerde) sınıfların kendileri birer nesnedir diyebiliriz ve sınıfları tıpkı gerçek bir insana benzeterek nesne yönelimli bir programlama oluşturmuş oluruz.
Şimdi NetBeans IDE'mizi açıyor ve yeni bir Java uygulaması oluşturuyoruz.Aşağıdaki gibi projeler sekmesinden yeni bir
sınıf oluşturuyoruz:
ve karşımızda henüz boş bir Java class'ı yer alıyor:
Nesne yönelimli programlama konusunda nesneleri gerçek dünyadaki nesnelere benzetebildiğimiz için "öğrenci" isimli sınıfımızı da tıpkı gerçek bir öğrenciye benzetebiliriz ve hemen diyoruz:
Bir öğrencinin neyi vardır?
Adı,soyadı,yaşı,okulu,sınıfı (gerçek sınıf) ...
Bu bahsettiklerimiz sınıfın öznitelikleridir (property) ve her bir özniteliğin tipi vardır (int,String gibi), o halde öğrencimizin
özniteliklerini yazıyoruz:
ve bunun gibi daha birçok öznitelik ekleyebiliriz..Şimdi de şu soruyu soruyoruz:
Bir öğrenci ne yapar?
Ders çalışır,oyun oynar,okula gider...
İşte bu noktada önceki makalemizde öğrendiğimiz konu olan metotlar devreye giriyor ve hatırlarsanız metotlar iş yapan ve değer döndüren program parçacıklarıdır demiştik, madem öğrenci ders çalışıp oyun oynuyorsa demek ki "Ogrenci" sınıfının metotları da olabilir:
Artık "Ogrenci" sınıfımızı gerçek dünyadaki nesne olan öğrenci ile modelledik,son olarak değer döndüren bir metot eklersek Java sınıflarında metotlar konusunu da pekiştirmiş oluruz :)
YasGetir() metodumuzda öğrenci sınıfının yaş bilgisini getirecek.
Peki Java sınıflar nasıl kullanılır?
Oluşturulan bir sınıfı kullanmanın iki yolu vardır; eğer sınıflar dinamik yapıdaysa (buradaki gibi) örnek kopya (instance)
oluşturularak özniteliklerine ve içerdiği metotlar erişilebilir,eğer statik yapıdaysa (ileride göreceğiz) doğrudan ismi
yazılarak kullanılabilirler.
Bu örneğimizde dinamik Java sınıflarını öğrendiğimiz için projemize JFrame ekleyerek oluşturduğumuz öğrenci sınıfını kullanacağız:
JFrame'mize buton ekleyip "ActionPerformed" eventine geçiyor ve oluşturduğumuz öğrenci sınıfından bir instance alıyoruz.Sınıf farketmeksizin bir nesnenin kopyasını oluşturabilmek için "new" anahtar kelimesini kullanırız ve öğrenci sınıfından şu şekilde bir kopya çağırıyoruz:
Tabi henüz "öğrenci" nesnesini kullanmadığımız için altı yeşil renkle çizili görüyoruz,şimdi ise az önce oluşturduğumuz öğrenci sınıfının property'lerini ve metotlarını görelim,bunun için instance aldığımız öğrenci sözcüğünün sonuna nokta işareti koyup intellisense'in seçenekleri göstermesini bekliyoruz:
Kırmızı alan içerisinde gösterdiklerimiz az önce oluşturduğumuz sınıfın öznitelikleri ve metotlarıdır,dikkat ederseniz yazdıklarımız dışında ek property ve metotları da görüyoruz.Bunun nedeni oluşturduğumuz öğrenci sınıfının Java üst sınıflarından türemesidir,hatırlarsanız "herşey bir başka nesneden türeyebilir" demiştik, ya da dememişsek bile şimdi demiş oldum :)
Madem öğrenci sınıfından bir kopya oluşturduk o halde property'lere değerler verelim:
Artık oluşturduğumuz classa ait kopyamız daha anlamlı hale geldi ama metotlarımızı da unutmayalım di mi :)
Makaleye noktayı koymadan önce değer döndüren metotları da unutmamak gerek,hatırlarsanız değer döndüren metotları aynı türde bir değişkene atayabiliyorduk o halde öğrencinin YasGetir() metodundan gelecek değeri değişkenimize atayalım:
Buradaki YasGetir() metodu oluşturduğumuz öğrenci instance'ına verdiğimiz 26 değerini geri döndürecektir,eğer öğrenci sınıfından oluşturduğumuz örnekte öğrencinin yaş bilgisine herhangi bir değer vermeseydik YasGetir() metodu null (boş) bir değer döndürecek ve bir programalama hatasına sebep olacaktı.Neyse ki ileriki makalelerimizde null geçilebilir değişkenler konusunu öğrenip önlemler alabileceğiz.
Java sınıfları hakkında bugünkü makalemizin sonuna gelmiş bulunuyoruz,bir sonraki makalemizde Java ile nesne yönelimli programlama derslerimizi öğrenmeye devam edeceğiz.O zamana dek kendinize iyi bakın hoşçakalın :)