Ders 2- Class (Sınıf) Tanımı

0
601

Merhaba arkadaşlar.

Bu dersimizde Objective-C’ class(sınıf) yapısını basit bir şekilde inceleyeceğiz. Class (Sınıf) metodları, değişkenleri (variables), özellikleri (properties) ve bunun yanında daha birçok özelliği barındırabilen bir yapıdır. Fakat şimdilik çok basit bir şekilde bu yapıyı inceleyeceğiz. Her sınıf aşağıdaki kurallara uymak zorundadır :

  • Her sınıf muhakkak başka bir sınıftan türetilmek zorundadır. NSObject ve NSProxy gibi sınıflar bunun dışındadır. Çünkü bu sınıflar zaten kök sınıflardır. Kök sınıflar başka bir sınıftan türetilemezler.
  • Her sınıfın bir ismi olmak zorundadır.
  • Her sınıfın tanımını yapan bir interface (.h) dosyası olmak zorundadır.
  • Her sınıfın bir implementation (.m) dosyası olmak zorundadır. Implementation içerisinde, interface dosyasında söz vermiş olduğumuz şeyleri yaparız.(örn. Metod gövdelerini yazmak gibi)
  • Şimdi öncelikle bir proje oluşturalım ve bu projeye “Person” adında bir sınıf ekleyelim. Bu eklediğimiz sınıfta personName ve personSurname adında iki özellik (property) olacak.

    Aşağıdaki resimlerden, bir projeye nasıl yeni bir sınıf eklenir görebilirsiniz.

    1

    2

    3

    Şimdi Person.h (interface) dosyasını açalım ve aşağıdaki kodları ekleyelim.

    @property (nonatomic, copy) NSString *personName;
    @property (nonatomic, copy) NSString *personSurname;

    Property değişik niteleyiciler (strong, weak, copy, assign, unsafe_unretained) kullanabilir.

    Şimdi oluşturmuş olduğumuz Person sınıfımızı projemizde kullanalım. Projemizdeki ViewController.m dosyasını açıyoruz ve ViewDidLoad metodu içerisine PErson sınıfımızı oluşturan kodlarımızı yazıyoruz. ViewDidLoad metodunun son hali aşağıdaki gibidir.


    - (void)viewDidLoad {

    [super viewDidLoad];

    Person *person1 = [[Person alloc] init];
    person1.personName = @"Erdinç";
    person1.personSurname = @"Kolukısa";

    }

    Şimdi oluşturmuş olduğumuz Person sınıfımıza işlevsellik kazandıralım.

    Gerçek hayatımızda bir kişi yeme, içme, koşma, uyuma gibi aktiviteler gerçekleştirir. Program dünyasında bu tür aktiviteleri method (metod) ile gerçekleştirebiliriz. Gelin bir method tanımlayalım ve bu method üzerinde biraz inceleme yapalım.

    Öncelikle Person.m dosyamızın içerisine aşağıdaki kodları ekleyelim.


    - (void) walkAtKilometersPerHour: (CGFloat) speedToWalk{
    //Metod Gövdesi
    }

    Oluşturmuş olduğumuz bu metodu Person.h dosyamıza şu şekilde ekleyelim.

    - (void) walkAtKilometersPerHour: (CGFloat) speedToWalk

    Objective-C’ de metodlar şu şartları sağlamış olmalıdır :

    1- Öncelikler metodun instance method (-) veya class method (+) olacağı belirtilmelidir. Instance method ancak oluşturmuş olduğumuz sınıf örneklendiğinde (alloc ve init işleminden sonra) erişilebilir. Class method ise oluşturmuş olduğumuz sınıftan direk olarak çağırılabilir.

    2- Metodun geri dönüş değeri var ise belirtilir. Örneğimizde biz herhangi bir tip döndürmediğimiz için void olarak belirledik.

    3- Metod ismi ve parametre listesi. Metodunuzun her zaman parametre almasına gerek olmayabilir. Parametresiz metodlar da yazılabilir. Bazı durumlarda metoda birden fazla parametre göndermek gerekebilir. Aşağıdaki metod buna bir örnektir. Bu metodu da Person.m dosyamıza ekleyelim.


    - (void) singSong:(NSData *) songData loudly:(BOOL) singLoudly{

    }

    Person sınıfımızda oluşturmuş olduğumuz bu metodlara şu şekilde ulaşabiliriz. (ViewController.m son hali aşağıdaki gibidir)


    - (void)viewDidLoad {

    [super viewDidLoad];

    Person *person1 = [[Person alloc] init];
    person1.personName = @"Erdinç";
    person1.personSurname = @"Kolukısa";

    [person1 walkAtKilometeresPerHour:10];

    }

    Burada metodu nasıl çağırdığımzı ve parametre gönderdiğimizi görebilirsiniz. Eğer singSong metoduna ulaşmaya çalışırsanız XCode hata verecektir. Bunun sebebi singSong metodununun Person.h dosyası içerisinde tanımlamamış olmamızdır.

    Herkese bol şans.

    HENÜZ YORUM YOK

    CEVAP VER