1. Ana Sayfa
  2. Mobil Yazılım
  3. Objective-C Ders Notları – Nedir? Nasıl Çalışır? Amacı Nedir?

Objective-C Ders Notları – Nedir? Nasıl Çalışır? Amacı Nedir?

Objective-C nedir? Hangi zamanlarda ne amaçla kullanılır? Nasıl çalışır ya da çalıştırılır gelin bu başlangıç yazısında bu konuları irdelemeye çalışalım.

Class ve Objeler:

Objective-C’de objeler diğer Object oriented dillerde olduğu gibi datalar ve bunlarla ilişkili davranışlardan oluşmuş nesneler olarak tanımlanabilir.

Objeler, Object oriented programlamanın temel taşlarıdır. Bir uygulamada yapmak ya da çözmek istediğimiz problemler objelerle ve bu objelerin birbiri ile etkileşimini kullanarak çözülür. Özetle uygulama dediğimiz, belirli bir problem ya da problemler grubunu çözmek için yaratılmış objeler ve bu objelerin birbirleriyle etkileşiminin bir bütünüdür.

Class ise objelerin davranışlarını ve özelliklerinin tanımıdır. Bu konuyu somut bir örnek ile açıklamak gerekirse, bir araba sınıfı o arabayı yaratmak için kullanılacak şablonu bize verir. Arabanın kendisi ise objedir. Yani araba dünya üzerinden bir yer kaplar ve bizim bazı ihtiyaçlarımızı karşılar. Biz araba objesini bizim ihtiyaçlarımız doğrultusunda tasarladığımız şablon yani class ile yaratırız. Yarattığımız araba objesinin bazı özelliklerini kullanarak ve onun ile iletişime girerek ulaşım problemimizi çözmüş oluruz.

Özetle obje, class’in hayat bulmuş yani fiziksel olarak memory’de yer kaplayan halidir.

Değiştirilebilen ve Değiştirilemeyen Class’lar

Objective-C”de bazı sınıflar, objeleri değiştirilebilir olarak tanımlar(mutable), bazıları ise değiştirilemez objeler(immutable) olarak tanımlar.

Değiştirilemez objeler(immutable) yaratılırken set edilmelidir, daha sonradan set edilemezler. Yani bu objeler bir kere yaratıldıktan sonra programın çalışma zamanı içerisinde kesinlikle değiştirilemezler. Bu davranış diğer programlama dillerindeki constant objelere benzetilebilir. NSString, NSArray, NSNumber bu objelere örnek olarak verilebilir.

Bazı immutable classlarin mutable versiyonları da mevcuttur. Yani buradan anlamamız gereken bu objelerin içeriğinin programın çalışma zamanı içerisinde değiştirilebileceğidir. Buna örnek olarak NSMutableString ve NSMutableArray objeleri verilebilir. Mutable objelerin davranışları immutable versiyonları ile ayni özellikleri taşır ayrıca buna ek olarak bu objelerin içerikleri de değiştirilebilir. Yani NSString objesi ile NSMutableString objesi benzer fonksiyonlara sahiptir. Örnek olarak NSMutableString objesinin içerisindeki bir karakter değiştirilebilirken NSString objesinin taşıdığı string içerisinde herhangi bir değişiklik yapılamaz. Ya da NSArray dizisine çalışma zamanı sırasında herhangi bir eleman eklenemez ya da çıkartılamazken NSMutableArray dizisine farklı türden objeler eklenebilir ya da çıkartılabilir.

Sonuç:

Immutable objeler mutable objelere göre daha performanslı çalışır. Yani biz değişmeyeceğinden emin olduğumuz değerleri mutable objelerde tutmalıyız. Örneğin login ekranı olan bir uygulamada, login ekranında “Kullanici Adi”, “Sifresi” başlıklarının değiştirilmesine gerek yoktur. Bu değerlerin NSString objesinde tutulması NSMutableString objesinde tutulmasından daha uygun olacaktır.

Mutable objeler uygulama sırasında dinamik olarak değişen değerleri tutmak için kullanılmalıdır. Örneğin bir haber uygulaması düşünelim. Dinamik olarak haber verileri sürekli güncelleniyor. Bu içerikle ilgili kullanılacak değerler NSMutableArray dizisinde tutulmalıdır. Çünkü veriler dinamik olarak güncellenmektedir.

Root Class (NSObject):

Objective-C’de bir obje başka bir obje ile çalışmak istediği zaman birlikte çalışacağı objenin bazı temel özellikleri desteklemesini bekler. Yani en temel seviyedeki özelliklerin bütün class’lar tarafından temel alınması gerekir. İşte Objective-C’de Root Class olarak tanımlanan bu class’in adi NSObject class’idir.

Yani kendi custom class’imizi tasarlarken en az NSObject class’indan türetmemiz gerekmektedir.

Apple tarafından sunulan mevcut class’lar her zaman bizim ihtiyaçlarımızı karşılamayabilir. Yani biz bu class’a kendi ihtiyaçlarımız doğrultusunda yeni fonksiyonaliteler eklemek isteyebiliriz. Bu işlemi yaparken en temel class olan NSObject class’indan türeterek değil, yeni özellikler eklemek istediğimiz class’tan direk olarak türeterek yapmalıyız. Eğer bu şekilde yapmazsak ara türetmelerdeki bütün işlemleri tekrar implimente etmemiz gerekir. Bu da geliştirme hızını düşürür, uygulama içerisindeki bug’lari arttırır. Örneğin biz bir custom button yapmak istiyorsak bu butonu NSObject class’indan turetmek yerine UIButton class’indan türetme yolunu seçmeliyiz.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

Yaklaşık 10 senedir mobil uygulama geliştirme ile uğraşıyorum. Su ana kadar üzerinde çalıştığım, içerisinde olduğum veya yönetiminde bulunduğum uygulamalardan birkaç örnek vermem gerekirse; Kurumsal Uygulamalar; - Estruct Kantar Programı: Bir gömülü karst içerisine Platform Builder ile konfigure edilerek derlenmiş Windows CE işletim sistemi üzerinde çalışan bir kantar programıdır. - Windows Mobile İşletim Sistemi Türkçeleştirmesi: İşletim sistemi içerisindeki resource’lar yazılan bir programla çekilerek Türkçeleştirip tekrar exe’lerin kullanımı için işletim sistemine entegre edildi. - Sıcak-soğuk Satış Programı: Windows Mobile işletim sisteminde çalışan ve Netsis’in ERP’sine entegre, fatura kesilebilen, stokların takip edilebildiği bir mobil ERP programıdır. - Stok Takip Programı: Windows Mobile işletim sistemi üzerinde çalışan bir stok takip programıdır. Bireysel Uygulamalar: - Ntv Haber Uygulamaları: iOS işletim sistemi ve Samsung Bada işletim sistemi için ayrı ayrı yazılmıştır. - Cnbc-e Televizyon Rehberi Uygulaması: iPhone için geliştirilmiştir. - Cinebonus Sinema Uygulaması: iPhone için geliştirilmiştir. - Akbank Wings Uygulaması: iPhone için geliştirilmiştir. - İstanbul Shopping Fest Uygulamaları: iPhone ve Blackberry için geliştirilmiştir.

Yorum Yap