Sınıflar (Classes) (Classes

)
•Static yöntemler (Methods) •Sınıfların temel özellikleri
•Yöntem (method) • Alan (field) •Yapılandırıcı (constructor)

•Kalıtım (Inheritance)

Yöntem (method) tanımlamaları (method)
• static yöntem
• erişim static donüşTipi yöntemAdı(değişken1, …,değişkenn)
Public Private Protected int double[] String … int double[] String …

• Statik olmayan yöntemde static tanımlaması kaldırılır

Yöntem aynı sınıf içinde kullanıldığından sınıf adı belirtmeden de çağırılabilir. .Örnek: Static Yöntem (method) tanımlamaları (method) Main sınıfına ait yöntem static olarak tanımlandığı için direkt çağırıldı.

Örnek: Static Yöntem (method) tanımlamaları (method) Klavyeden sayı okuyan ve double formatında döndüren yöntem Sonucu ekrana yazdıran yöntem .

Static yöntemleri kulanmak için nesne oluşturmak gerekmez .static ve nonstatic Statik tanımlanmış bir yöntem (ya da değişken) statik olmayan bir yöntem içinden çağrılabilir Statik bir yöntem içinden statik olmayan yöntem ya da değişken doğrudan çağırılamaz. Yöntemi çağırmak için nesne oluşturmak gerekir.

– Kimlik (identity): Bir sınıftan üretilen nesneler (identity): farklı kimliklere sahiptir. Bunlar nesnenin durumunu tanımlar. – Durum (state): Her nesne mevcut durumu ile ilgili (state): bilgileri saklar. .Sınıfların temel özellikleri • Bir nesneyi tanımlayan özellikler: – Davranış (behavior): Nesne ile yapılabilecek işleri (behavior): tanımlar. Sahip olduğu yöntemlerle belirlenir.

Sınıflar Nesneler oluşturur Nesnenin özelliklerini tanımlayan kalıp Nesne Nesne Object (Instance of Class) Sınıf (Class) Nesne Nesne .Sınıfların temel özellikleri • Nesne yönelimli programlamanın (Object Oriented Programming –OOP ) temelini.

alanlar ve yöntemler tanımlanırken – Sınıflar için. Public. (sınıfa ait değişkenler) Yapılandırıcı (constructor) Yöntemler (methods) • Sınıflar. Protected gibi erişim düzenleyicileri (access modifier) kullanılır. Public.Sınıfların temel özellikleri • Java’da bir sınıf temel olarak üç ana kısımdan oluşur. . Bunlar: Alanlar ( fields). Private. Friendly – Alanlar ve yöntemler tanımlanırken.

c değişkenlerinin yalnızca sınıfa açık olacağı – işareti ile (encapsulation). hesapla fonksiyonunun diğer sınıflara da açık olacağı + işareti ile belirtilmiştir. . 2 Fonksiyon -a:double -b:double -c:double +hesapla(double):double Burada a. Bu sınıf içinde girilen bir x için fonksiyonun değerini hesaplayan bir yönteme sahip olsun.Örnek: Sınıflar f ( x) = ax + bx + c Yukarıda verilen ikinci dereceden bir fonksiyona ait hesaplamaları yapan bir sınıf tanımlanacaktır.b.

Örnek: Sınıflar .

Verilen örnekte bu değişkenler fonksiyonun katsayılarını tanımlar. Bu işlem sınıftan bir nesne oluşturulurken yapılandırıcı ile sağlanmıştır. Burada this deyimi ile alan değişkenleri.Örnek: Sınıflar Alan değişkenleri private erişim belirleyicisi ile yalnızca sınıf içinden erişilebilecek şekilde tanımlanmıştır Yapılandırıcı ile nesnenin alan değişkenlerinin başlangıçta alacağı durum tanımlanmış olur. Yapılandırıcının aldığı değişkenler yeni isimler tanımlamak yerine sınıfın alan değişkenleri ile aynı isimde tanımlanmıştır. yapılandırıcının aldığı aynı isimli değişkenlerden ayırt edilmektedir. . Fonksiyonun hesaplanması için önce fonksiyonu tanımlayan bu katsayıların girilmesi gerekir.

. f(x)=x2+x+1 Fonksiyon sınıfından oluşturulan f nesnesinin hesapla() farklı bir sınıf içinden çağrılabilmesine karşın.Örnek: Sınıflar Fonksiyon sınıfından bir f nesnesi oluşturuldu. sınıf içinde kullanılan bilen yazdir() yöntemi private erişim belirleyicisinden dolayı sınıf dışarısından ulaşılamaz.

Aynı sınıftan birden fazla nesne tanımlanabilir Sınıf (Class) Nesne (Instance of Class) f(x)=x2+x+1 Fonksiyon f(x)=x2-2x+5 f(x)=x2+5x+10 .

Örnek: Sınıflar • Belirtilen üst sınıra kadar yukarı doğru sayan bir sayıcı sınıfı oluşturalım. • Bu sınıf için UML aşağıdaki gibi tanımlanabilir Sayıcı +maksDeğer:int +sayac:int +artır() +sıfırla() +yazdir() yazdir() SAYICI + .

Örnek: Static Yöntem (method) tanımlamaları (method) instance of class sayıcı1 Sayıcı Sınıfı (class) + sayıcı2 instance of class + .

Bunlardan biri String formatındaki diziyi diğeri de int formatındaki diziyi yazdırır.Method overloading Aynı yöntem farklı parametreler ile çalıştırılmak istendiğinde kullanılır. Yöntemin yaptığı işin değiştirilmesi karışıklığa yol açabileceğinden tavsiye edilmeyen durumdur. Program çıktısı . Bunun için yöntem aynı isimle tekrar yazılır fakat yaptığı iş temelde aynıdır. Yandaki örnekte diziYazdir isimli iki yöntem tanımlanmıştır.

Örnek: Method overloading Verilen örnekte adam sınıfının ad. soyad. Adam sınıfı . yas alanları tanımlanmıştır.

Uygulama: • Fonksiyon sınıfına ait hesapla() yöntemi Bir x değeri için fonksiyonun değerini döndürsün Uygulanan bir x dizisi için fonksiyonun değerini dizi formatında döndürsün Belirtilen başlangıç. bitiş ve nokta adedi için fonksiyonun değerini dizi formatında döndürsün. • Hesaplanan sonuçları görmek için Fonksiyon sınıfına ait static formda yazdir() isimli bir yönteme sahip olsun. .

• Kompozisyon (composition): önceki örneklerdeki gibi daha önce yazdığımız bir sınıfı yeni bir sınıf içinde tekrar kullanmasıdır • Kalıtım (inheritance): yeni yazılan sınıfın daha önce yazılmış sınıftan türetilmesidir. Yeni sınıf türetildiği sınıfın özelliklerine sahip olur .Sınıfların Kullanılması • Daha önce yazılmış sınıfları başka bir sınıf içerisinden kullanmak komposizyon ve kalıtım olarak adlandırılan iki şekilde gerçekleştirilebilir.

….KOMPOZİSYON class Elma{ …. } class Elma extends Meyve{ … } . } KALITIM class Meyve{ Elma m=new Elma(). } class Meyve{ ….

B sınıfı da alt sınıf (sub class) olarak adlandırılır. super()ifadesiyle bir alt sınıf en yakın süper sınıfının yapılandırıcı metodunu çağırabilir. Bir alt sınıf süper sınıf tarafından tanımlı bütün değişkenleri ve metotları kalıtım yoluyla elde eder ve bunlara kendi metotlarını ve özelliklerini ekler.Inheritance (Kalıtım) Mevcut sınıflar geliştirilerek yeni sınıflar elde edilebilir Kodun yeniden kullanımını kolaylaştırır Genel bir sınıf geliştirerek daha özel sınıfları türetilebilir B sınıfı. A sınıfının özelliklerini almışsa. super() referansını kullanarak süper sınıfın bütün metotlarına ve değişkenlerine erişebiliriz (kalıtım yoluyla alt sınıfa geçmemiş olsalar bile). . B sınıfı A sınıfından türetilerek elde edilmiş demektir. extends anahtar kelimesi mevcut bir sınıftan yeni bir sınıfı türetmek için kullanılır. A sınıfı bir süper sınıf (super class).

Örnek: • Vites değiştirme. Araba +vites: +vites:int +hız: +hız:int -motorKatsayı:double motorKatsayı: +vitesDegiştir(int) vitesDegiştir(int) +frenYap() frenYap() +hızArtır(void) hızArtır(void) +durumYazdır() durumYazdır() .fren yapma ve hız artırma özelliklerine sahip bir araba sınıfının UML diyagramı yandaki gibi verilmiştir.

Araba sınıfından üretilen 1600 motorlu araba .

Araba +vites: +vites:int +hız: +hız:int -motorKatsayı:double motorKatsayı: +vitesDegiştir(int) vitesDegiştir(int) +frenYap() frenYap() +hızArtır(void) hızArtır(void) +durumYazdır() durumYazdır() Spor Araba -turbo:boolean turbo: +durumYazdır() durumYazdır() Konforlu Araba -klima:boolean klima: +durumYazdır() durumYazdır() .

SporAraba ek olarak olarak turbo açma ve kapatma yöntemlerine sahiptir Dikkat edilirse durumYazdır yöntemi tekrar tanımlanmıştır.Verilen örnekte önceden tanımladığımız Araba sınıfının özelliklerini taşıyan ve buna ek olarak yeni özelliklere sahip Spor Araba sınıfı tanımlanmıştır. Süper sınıfta (super class) var olan bir yöntemin alt sınıfta (sub class) tekrar tanımlanarak üst sınıftakinin yerine kullanılması method overriding olarak adlandırılır. . Yöntemin yaptığı işin mantık olarak aynı olmasına dikkat edilir.

.Araba ile ilgili sınıfları ayrı bir paket içerisinde bir araya toplayabiliriz.

Örnek: Yukarı Aşağı sayıcı Daha önce tanımlamış olduğumuz Sayıcı sınıfından tanımlanan YukarıAşağıSayıcı. aşağıda görüldüğü gibi Sayıcı sınıfının özelliklerine ek olarak azalt yöntemine sahiptir. .

Erişim Belirleyiciler: • Public : Farklı paket ya da sınıflar dahil olmak üzere herhangi bir yöntem tarafından erişilebilir. Diğer paketlerin içindeki sınıflar tarafından erişilemez. Yalnızca Private: tanımlandığı sınıf içinden erişilebilir. Buna ek Protected: olarak inheritance (kalıtım) ile tanımlanmış alt sınıflardan da erişilebilir. • Friendly: Friendly: Erişim belirleyici belirtilmemesi durumu friendly olarak isimlendirilir. • Protected: Aynı paket ya da sınıf içinden erişilebilir. . Paket içindeki sınıflar tarafından erişilebilir. • Private: Farklı ya da aynı paket içinden erişilemez.

Sınıflar için erişim yapılandırıcıları Aynı Paket public friendly Erişebilir Erişebilir Ayrı Paket Erişebilir Erişemez Ayrı paket Erişebilir Erişemez Yöntemler için erişim yapılandırıcıları Aynı Paket public private friendly protected Erişebilir Erişebilir Erişebilir Erişemez Ayrı Paket Erişebilir Erişemez Erişemez Erişemez Ayrı paket Erişebilir Erişebilir Erişemez Erişemez Alanlar için erişim yapılandırıcıları Aynı Paket public private friendly protected Erişebilir Erişebilir Erişebilir Erişemez Ayrı Paket Erişebilir Erişemez Erişemez Erişemez Türetilmiş Erişebilir Erişebilir Erişemez Erişemez .

Sign up to vote on this title
UsefulNot useful