Toplam 3 adet sonuctan sayfa basi 1 ile 3 arasi kadar sonuc gösteriliyor

Konu: [BÖLÜM 1] - [Kısım 2] - Sınıflar ve Sınıf Tanımlamaları

  1. #1
    Profesyonel Android archleo - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    08.Ağustos.2011
    Nereden
    İstanbul
    Mesajlar
    1,615
    Ettiği Teşekkür
    31
    344 mesaja 781 teşekkür aldı

    Post [BÖLÜM 1] - [Kısım 2] - Sınıflar ve Sınıf Tanımlamaları

    facebook müşteri hizmetleri
    2. SINIFLAR VE SINIF TANIMLAMALARI

    Bu kısımda öğreneceğimiz ana kavramlar
    • Alanlar(Fields)
    • Erişim ve Değişim Metotları(Accessor and Mutator Methods)
    • Yapılandırıcılar(Constructors)
    • Atama ve Şartlı İfadeler(Assignment and Conditional Statements)
    • Parametreler(Parameters)
    Bu kısımda ilk kez bir sınıfın kaynak koduna bakarak onu inceleyeceğiz ve bir sınıf tanımlamasının temel ögelerini beraberce tartışacağız: alanlar (fields), yapılandırıcılar (constructors) ve metotlar (methods). Metotların beyanatları vardır (method statements) ve ilk başta basit aritmetik ve yazıcı beyanları olan sınıflara göz atacağız. Daha sonra metotlar içindeki farklı işlemleri yapmak için seçim yapmamıza izin veren şartlı ifadeleri (conditional statemets) inceleyeceğiz.

    2.1. Bir Sınıfın Yapısı
    Bir sınıfın yapısı, yukarıda da bahsedildiği üzere, alanlar, yapılandırıcılar ve metotlardan oluşur. Buna sınıf deklarasyonu (class declaration) adı verilir. Özetle; Java'da bir sınıf aşağıdaki gibi tanımlanır:
    Kod:
    class MyClass {
        /** alan, yapılandırıcı ve
        ** metot beyanları bu alanda yer alır
        **/}
    Burada braketler arasındaki alana Sınıf Gövdesi (Class Body) denir ve bu sınıftan yaratılan nesnelerin yaşam döngüsü (life cycle) için gerekli tüm kodları içerir: Alan (field) deklarasyonları, sınıfın ve nesnelerinin durumunu (state) bildirir; Yapılandırıcılar (constructors) yeni nesneler başlatmak iç***** ve Metotlar (methods) sınıfın ve nesnelerinin davranışlarını uygulamaya koymak iç*****.

    Bu sınıf deklarasyonu en minimal olanıdır ve sadece gerekli olan bileşenleri içermektedir. Bir sınıfın üst sınıfının adı (superclass), hangi arayüzleri (interface) yürüttüğü vb. bilgileri sınıf tanımının başında tanımlayabilirsiniz. Örneğin:
    Kod:
    class MyClass extends MySuperClass implemets MyInterface {
        /** alan, yapılandırıcı ve
        ** metot beyanları bu alanda yer alır
        **/}
    Bu tanım ya da deklarasyon bize MyClass sınıfının MySuperClass sınıfının bir alt-sınıfı olduğunu ve MyInterface arayüzünü yürüttüğünü anlatmaktadır.

    Tanımlamanın başına public ya da private gibi erişim niteleyici (access modifier) ekleyerek, MyClass sınıfına hangi sınıfların erişmesini istediğinizi tanımlayabilirsiniz. İlerleyen derslerimizde Arayüzler (Interfaces) ve Kalıtsallık (Inheritance) konularını işlediğimizde extends ve implements niteleyicileri ile çalışmanın inceliklerine daha çok vakıf olacaksınız.

    Bir sınıf deklarasyonu sırasıyla aşağıdakileri içerir:

    1. Erişim Niteleyici (access modifier): public, private ve daha sonra göreceğimiz diğer erişim niteleyiciler
    2. Sınıf Adı (class name): genel bir kural olarak ilk harfleri büyük yazılır
    3. (varsa) Üst-sınıf adı (superclass name): extends anahtar sözcüğü ile bağlanır. Bir sınıfın sadece bir tane üst sınıfı olabilir.
    4. (varsa) Arayüzler (interfaces): implements anahtar sözcüğü ile bağlanır ve birden fazla ise virgülle ayrılır. Bir sınıf birden fazla arayüzü yönetebilir.
    5. Sınıf Gövdesi (class body): braketler arasındaki alandır.

    2.2. Üye Değişkenlerinin Deklarasyonu
    Birçok değişken tipi vardır:

    1. Sınıf içerisindeki üye değişlenleri - bunlara alan (field) denir
    2. Bir kod bloğundaki veya metot içerisindeki değişkenler - bunlara lokal değişlenler (local variables) denir
    3. Metot deklarasyonundaki değişkenler - bunlara parametre (parameter) denir

    Alanların deklarasyonu 3 ögeden oluşur. Bunlar sırasıyla:
    Kod:
    public int devirSayisi
    1. (varsa) Erişim Niteleyiciler (access modifiers): public veya private veya diğer erişim niteleyiciler (static, final, abstract vb.)
    2. Alanın veri tipi (data type): int, double vb.
    3. Alanın adı
    Konu archleo tarafından (15.Ocak.2013 Saat 07:17 ) değiştirilmiştir.

    ................................... ADVANCED RIDING IS AN ART

  2. 2 kişi archleo üyemize teşekkür etti:

    blueberry (21.Ocak.2013),mrdmrc (25.Ocak.2013)

  3. #2
    Profesyonel Android archleo - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    08.Ağustos.2011
    Nereden
    İstanbul
    Mesajlar
    1,615
    Ettiği Teşekkür
    31
    344 mesaja 781 teşekkür aldı

    Post

    2.3. Erişim Niteleyiciler (Access Modifiers)
    Sınıflara, yapılandırıcılara, metotlara ve alanlara erişim, erişim niteleyiciler (access modifiers) kullanılarak düzenlenir. Veri Sarma avantajlarından faydalanmak için, mümkün olan her zaman erişim minimumda tutulmalıdır.


    Java, sınıflara, yapılandırıcılara, metotlara ve alanların erişim seviyelerinin ayarlanması için bazı erişim niteleyiciler sunar. Hiçbir erişim niyetleyicinin belirtilmediği üyeler paket (package) veya varsayılan (default) veya nitelendiricisiz (no-modifier) erişime sahiptir.


    Erişim niteleyicilerin kullanımı iki seviye ile kısıtlandırılmıştır. Bunlar:


    1. Sınıf seviyesi (class level) erişim niteleyiciler
    2. Üye seviyesi (member level) erişim niteleyiciler

    2.3.1. Sınıf Seviyesi Erişim Niteleyiciler (Class Level Access Modifiers)

    1. Public: Sınıfın her yerden görülebilir ve erişilebilir olmasını sağlar.
    Kod:
    public class A {
         // sınıf tanımları
         }
    }
    2. Private: Sadece ait olduğu Paket (package) tarafından erişilebilir. En üst seviye (top-level) sınıflar asla Private olamazlar. Ancak bir sınıf içerisine yerleştirilmiş iç-sınıf (nested class) tanımları Private olabilir.
    Kod:
    public class A {
         private class B {
         }
    }
    3. Protected: Sadece ait olduğu Paket (package) tarafından erişilebilir. Ancak Java'da paket kalıtımı (package inheritance) ya da alt-paket (sub-package) gibi bir mantık olmadığı için, bir sınıfa Protected olarak erişim vermek aslında hiç erişim tanımlamamak (no-modifier) ile aynıdır. Ancak bir sınıf içerisine yerleştirilmiş iç-sınıf tanımları Protected olabilir.
    Kod:
    public class A {
         protected class B {
         }
    }
    4. Default / Package-Private / No-Modifier: Sınıfa ait hiçbir erişim niteleyicisinin tanımlanmadığı varsayılan durumdur.
    Kod:
    class A {
         // sınıf tanımları
         }
    }
    2.3.2. Üye Seviyesi Erişim Niteleyiciler (Member Level Access Modifiers)

    2.3.2.1. Alan Erişim Niteleyicileri (Field Access Modifiers)

    1. Public: Alan içerisindeki değişkenin global olması, her yerden erişilebilir olmasıdır.
    Kod:
    public int benimYas;
    2. Private: Alan içerisindeki değişkenin sadece bu sınıf ve bu sınıf içerisinde yaratılmış iç sınıflar (nested class) tarafından erişilebilir olmasıdır. Public değişken erişimleri sınıf dışından direk değiştirmelere açıktır. Bu sebeple alanı salt-okunur (read-only) yapmak gerekir. Bunun bir yolu onu final yapmaktır. Ancak bu pek esnek değildir, çünkü ömür boyu değiştirilemez olur. Onun için; alan private olarak tanımlanmalı, sadece okumak için public bir metod eklenmelidir:
    Kod:
    private int y = 10;
    
    public int degerAl() {
        return y;
    }
    3. Protected: Alan içerisindeki değişkenin sadece bu sınıf veya kalıtsallığını aldığı sınıf (inherited, extended) tarafından erişilebilir olmasıdır.
    Kod:
    protected int XYZ_NUM = 10;
    4. Default / Package-Private / No-Modifier: Alan içerisindeki değişkene bir erişim niteleyicisi tanımlanmaması durumudur ve varsayılan ayardır. Değişkenin o andaki paket tarafından erişilebilir olmasıdır.
    Kod:
    double k = 311;
    5. Final: Alan içerisindeki değişkenin ilk tanımlamadan itibaren sürekli olarak korunması ve hiç değişmemesidir. Salt-okunur (read-only) veya sabittir.
    Kod:
    final int w = 12;
    6. Static: Alan içerisindeki değişkenin sınıfın tüm üyeleri ile paylaşılması ve tüm çalıştırma ortamı boyunca var olmasıdır. Statik alan değişkenleri, sınıfın bir örneklemini yaratmadan da referans edilebilir.
    Kod:
    static int z = 10;
    7. Transient: Alan içerisindeki değişkenin file i/o gibi bir seri işlem sırasında transfer edilmesini önlemek iç*****.
    Kod:
    transient int z = 10;
    8. Volatile: Paralel çalışan (multi-threading) birden fazla yönerge esnasında üzerine yazma (overwrite) işlemini engellemek iç*****.
    Kod:
    volatile int z = 10;
    Konu archleo tarafından (15.Ocak.2013 Saat 14:06 ) değiştirilmiştir.

    ................................... ADVANCED RIDING IS AN ART

  4. 2 kişi archleo üyemize teşekkür etti:

    blueberry (21.Ocak.2013),mrdmrc (25.Ocak.2013)

  5. #3
    Profesyonel Android archleo - ait Kullanıcı Resmi (Avatar)
    Üyelik tarihi
    08.Ağustos.2011
    Nereden
    İstanbul
    Mesajlar
    1,615
    Ettiği Teşekkür
    31
    344 mesaja 781 teşekkür aldı

    Post

    2.3.2.2. Metot Erişim Niteleyicileri (Method Access Modifiers)

    1. Public: Metodun global olması, her yerden erişilebilir olmasıdır.
    Kod:
    public long getTimeInSeconds() {}
    2. Private: Metodun sadece bu sınıf ve bu sınıf içerisinde yaratılmış iç sınıflar (nested class) tarafından erişilebilir olmasıdır.
    Kod:
    private long getTimeInSeconds() {}
    3. Protected: Metodun sadece bu sınıf veya kalıtsallığını aldığı sınıf (inherited, extended) tarafından erişilebilir olmasıdır.
    Kod:
    protected getTimeInSeconds() {}
    4. Default / Package-Private / No-Modifier: Metot için bir erişim niteleyicisi tanımlanmaması durumudur ve varsayılan ayardır. Değişkenin o andaki paket tarafından erişilebilir olmasıdır. Genel bir kural olarak kullanılmamaktadır.
    Kod:
    long getTimeInSeconds() {}
    5. Final: Metodun ilk tanımlanmasından itibaren sürekli olarak korunması ve hiç değişmemesidir. Salt-okunur (read-only) veya sabittir.
    Kod:
    public final long getTimeInSeconds() {}
    6. Static: Metodun tüm çalıştırma ortamı boyunca var olmasıdır. Statik metotlar; SADECE VE SADECE diğer statik metot ve değişkenlere erişim sağlayabilir, sınıfın veya örneklemlere ait değişkenlere erişim sağlayamazlar. Yani:
    Kod:
    public class StaticTest {    private String ad = “Mehmet”;
    
    
        public static String getirYazarAd () {
            return ad; //Derleme yapılırken bu kod satırı hata verecektir!!!
        }
    
    
        public int getirYas(){
            return 28; 
        }
    
    
        public static int getirYazarYas() {
            return getirYas(); //Derleme yapılırken bu kod satırı da hata verecektir!!!
        }
    }
    7. Abstract: Kimi zaman bir üst-sınıftaki (superclass) belirli bir metot belirli bir mantığı barındırmaz ve alt-sınıf tarafından geçersiz kılınması gerekir. Böyle durumlarda üst sınıftaki metot "abstract" anahtarı ile deklare edilmelidir. Bu tür metotlar alt-sınıfın sorumluluğundadır zira üst-sınıfta tanımlanmış bir yürütme eylemleri yoktur. Bu yüzden de onu geçersiz kılmak sorumluluğu alt-sınıda aittir. Sentaks aşağıdaki gibidir ve metot gövdesi yoktur. Bir metota abstract erişim niteleyicisi tanımlanacaksa, o takdirde dahil olduğu sınıfa da abstract erişim niteleyicisi tanımlanmalıdır:
    Kod:
    abstract tip metot_adı (parametre_tipi, parametre_adı);
    8. Native: Java içerisinden C/C++ kodlarını çalıştırmak için kullanılan erişim niteleyicisidir. Native erişim niteleyicisi ile yazılan bir metodun da aynı abstract erişim niteleyicisi ile yazılmış metotlar gibi metot gövdesi yoktur ve( ile biter.
    Kod:
    public class JavaToC { 
        public native void helloC();
     
        static {
            System.loadLibrary("HelloWorld");
        }
     
        public static void main(String[] args) {
            new JavaToC().helloC();
        }
    }
    Metotlar, imzaları gereği bir de dönüş değişken değeri (return variable type) taşırlar. Metot çalıştırıldığında herhangi bir veri tipi dönebileceği gibi, void anahtar kelimesi kullanılarak herhangi bir değer geri döndürmemesi de sağlanabilir.
    Kod:
    public static void example4(int x, int y, boolean flag) {}
    2.4. Metot Tipleri

    2.4.1. Yapılandırıcı Metotlar (Constructor Methods)
    Yapılandırıcı metotlar, metodun parametreleri tarafından belirlenmiş ilk değerlere sahip alanların olduğu sınıf nesnelerinin yaratılmasını sağlar. Bu nesnelerin kullanım için uygun değerler veya eşsizliği sağlamak için belirli bir değer artışı ile işlem görmesine olanak tanır.
    Kod:
    public class Kutu {
        int en;
        int boy;
        int yukseklik;
    
    
        public Kutu() {
           en = 10;
           boy = 20;
           yukseklik = 30;
        }
    }
    Yukarıdaki örnek Yapılandırıcı Metot kodunda herhangi bir sınıf anahtarının veya geri dönüş veritipi anahtarının olmadığına ve metot adı ile sınıf adının AYNI olduğuna dikkat edin. Şayet bir sınıf için yapılandırıcı metot tanımlanmazsa, bir varsayılan yapılandırıcı otomatik olarak yaratılır ve tüm alanlara veritipine uygun olarak 0, false veya unicode(0) değerlerini atar.

    2.4.2. Erişim Metotları (Accessor Methods)
    Erişim metotları, alan değişkenleri gibi özelliklerin değerlerini okumak için kullanılır ve genel konvansiyonda getÖzellik_Adı() vb. isimler alırlar.
    Kod:
    public class Kutu {
        int en;
        int boy;
        int yukseklik;
    
    
        public Kutu() {
           en = 10;
           boy = 20;
           yukseklik = 30;
        }
    
        public int getEnDegeri() {
           return en
        }
    }
    2.4.3. Değişim Metotları (Mutator Methods)
    Değişim metotları, alan değişkenleri gibi özelliklerin değerlerini değiştirmek, bu değerlerin hem veri tipi hem de aralık olarak doğru olduğunu teyit etmek için kullanılan metotlardır ve genel konvansiyonda setÖzellik_Adı() vb. isimler alırlar.
    Kod:
    public class Student {
        private String name;
     
        public String getName() {
            return name;
        }
     
        public void setName(String newName) {
            name = newName;
        }
    }

    ................................... ADVANCED RIDING IS AN ART

  6. 4 kişi archleo üyemize teşekkür etti:

    blueberry (21.Ocak.2013),fulyayuksel (20.Nisan.2014),kayhanmedsk (11.Kasım.2013),mrdmrc (25.Ocak.2013)

Yetkileriniz

  • Konu Acma Yetkiniz Yok
  • Cevap Yazma Yetkiniz Yok
  • Eklenti Yükleme Yetkiniz Yok
  • Mesajınızı Değiştirme Yetkiniz Yok
  •  
yayın hakları
5651 sayılı yasaya göre forumumuzdaki mesajlardan doğabilecek her türlü sorumluluk yazan kullanıcılara aittir.

Sitenin adı bildirilerek, ve yazıya link verilerek alıntı yapılabilir. Alıntı yapılan yazının altında, belirgin bir şekilde kaynak olarak “Andronova Forum” ve yazının kendi bağlantı linkinin yer alması gerekmektedir. Herhangi bir yazının izinsiz tamamen veya kısmen kopyalanması durumunda hukuki işlem yapılacaktır. Müşteri hizmetleri 2020

TAVSIYE SITELER
android.com>Android Resmi Sitesi developer.android.com>Android Geliştirici Sitesi play.google.com>Google Play Store apple.com>Apple Resmi Sitesi developer.apple.com>Apple Geliştirici Sitesi itunes.apple.com/us/genre/ios/id36?mt=8>Apple App Store
Bizi Takip Edin