Objective-C'de Sınıfların ve Nesnelerin Özellikleri ve Davranışları

Objective-C'de Sınıfların ve Nesnelerin Özellikleri ve Davranışları

Objective-C programlama dilinde, sınıflar ve nesnelerin özellikleri ve davranışları, kodların temelini oluşturur Bu yazıda, Objective-C'de sınıfların ve nesnelerin temel yapıları ve özellikleri hakkında bilgi edineceksiniz Kod yazarken sınıfların ve nesnelerin nasıl kullanılacağına dair pratik ipuçları da bulabilirsiniz Başarılı bir iOS geliştiricisi olmak için bu bilgilerden yararlanabilirsiniz

Objective-C'de Sınıfların ve Nesnelerin Özellikleri ve Davranışları

Objective-C, yazılım geliştiriciler tarafından sıklıkla kullanılan bir programlama dilidir. Bu dilde, sınıf ve nesnelerin özellikleri ve davranışları oldukça önemlidir. Bu makalede, Objective-C'de sınıfların ve nesnelerin nasıl oluşturulduğu, davranışları ve kullanımları hakkında bilgi verilecektir.

Sınıflar, Objective-C'de nesnelerin kategorize edildiği ve gruplandırıldığı yapılardır. Bir sınıf, birden çok nesne oluşturma işlemlerini kolaylaştırarak kod tekrarını önlemek açısından oldukça yararlıdır. Sınıf oluşturmak için @interface ve @implementation anahtar kelimeleri kullanılır. Sınıfların özellikleri, attribute adı verilen değişkenlerle tanımlanır. Aynı şekilde methodlar da yine @interface ve @implementation arasında tanımlanır. Sınıfların oluşturulması konusunda daha detaylı bilgi için aşağıdaki tabloya bakabilirsiniz.

Sınıf Oluşturma Objective-C Kullanımı
Sınıf tanımlama @interface ClassName : ParentClassName
Sınıfın özelliklerini belirleme Attribute tanımlama
Method tanımlama @implementation ClassName

Nesne oluşturma, Objective-C'de oldukça kolaydır. Bir nesne oluşturmak için, öncelikle sınıfın bir örneğini oluşturmamız gerekir. Nesneler, attribute adı verilen değişkenlere sahip, bir veya daha fazla methoda sahip yapılardır. Nesne oluşturma konusunda daha ayrıntılı bilgi için aşağıdaki tabloya göz atabilirsiniz.

Nesne Oluşturma Objective-C Kullanımı
Nesne tanımlama ClassName *obj = [[ClassName alloc]init]
Nesnenin değerlerini belirleme obj.attributeName = value
Nesnenin değerlerini okuma obj.attributeName
Method çağırma [obj methodName]

Bu makalede yer alan Objective-C'de sınıf ve nesnelerin özellikleri, davranışları ve kullanımları hakkında detaylı bilgi verilmiştir. Sınıf oluşturma, nesne oluşturma, attribute ve method kullanımı gibi konular ele alınmıştır. Ayrıca miras alma, polimorfizm, abstraction gibi kavramlar da detaylı bir şekilde açıklanmıştır. İstisna yönetimi ise olası hataların tespiti ve ele alınması için önemli bir mekanizmadır.


Sınıfların Oluşturulması

Objective-C, nesne yönelimli bir programlama dilidir ve sınıflar ve nesneler konsepti üzerine kurulu bir yapıya sahiptir. Sınıflar, nesnelerin özelliklerini ve davranışlarını tanımlayan ana yapı taşlarıdır. Sınıfların oluşturulması Objective-C'de oldukça kolaydır.

Objective-C'de sınıflar, @interface ve @end arasındaki kod bloklarıyla oluşturulur. Ayrıca sınıfa ait değişkenler ve metotlar da burada tanımlanır. Sınıfın adı hangi isimle oluşturulduysa @interface bloğunda bu isim kullanılmalıdır. Örneğin:

Syntax Örnek

@interface ClassName : SuperClassName

// sınıfın özelliklerinin ve metotlarının tanımlandığı bölüm

@end

@interface Araba : Arac

//arabanın özelliklerini ve metotlarını tanımlar

@end

Bu örnekte "Araba" sınıfı "Arac" sınıfından kalıtım almıştır. @interface ve @end blokları arasında sınıfa ait özelliklerin ve metotların tanımlandığı bölüm vardır. Bu blokta sınıfın nitelikleri belirtilir ve sınıfa ait değişkenler ve metotlar burada tanımlanır.

Ayrıca sınıfın özelliklerinin ve metotlarının tanımından sonra, sınıfın özellikleri başka bir yerde kullanılmak üzere tanımlanabilir. Örneğin:

Syntax Örnek

@interface ClassName : SuperClassName

// sınıfın özelliklerinin ve metotlarının tanımlandığı bölüm

@property(nonatomic,strong)NSString *yarisDegeri;

@end

@interface Araba : Arac

//arabanın özelliklerini ve metotlarını tanımlar

@property(nonatomic,strong)NSString *model;

@end

Bu örnekte, "Araba" sınıfına, "model" adlı değişken eklenmiştir. "@property" kelimesi, özellik eklemek üzere kullanılır. "nonatomic" ve "strong" öznitelikleri değişkenin davranışlarını belirler.

Objective-C'de sınıf oluşturma konusu oldukça önemlidir. Nesnelerin yaratılmasını ve çeşitli işlemlerin yapılmasını kolaylaştırır. Bunun yanında sınıflar kalıtım, polymorphism ve abstraction kavramlarını da barındırmaktadır.


Nesne Oluşturma

Objective-C programlama dilinde nesne oluşturma oldukça kolaydır. İlk olarak, bir nesne tanımlandıktan sonra oluşturulabilir. Nesne oluşturma ifadesi "alloc" ve "init" metodlarının kullanımıyla gerçekleştirilir. Bu iki adım nesne oluşturma sürecini tamamlar.

Objective-C'de farklı nesne tipleri de kullanılır. "NSString" gibi çeşitli sınıflar, öne çıkan veri tiplerine sahiptir. Nesne oluştururken, hangi sınıfın kullanılacağına karar vermek önemlidir. Nesne türü seçimi duruma ve ihtiyaca göre değişebilir.

Nesne TürleriAçıklama
NSNumberSayısalları temsil etmek için kullanılır
NSMutableArrayDizileri dinamik olarak manipüle etmek için kullanılır
NSDictionaryAnahtar-değer çiftlerini saklamak için kullanılır
  • NSNumber: Sayısal değerler oluşturmak ve saklamak için kullanılır. Örneğin: NSNumber *myNumber = [NSNumber numberWithFloat:3.14];
  • NSMutableArray: Dizileri dinamik olarak manipüle etmek için kullanılır. Örneğin: NSMutableArray *myArray = [[NSMutableArray alloc] init];
  • NSDictionary: Anahtar-değer çiftlerini saklamak için kullanılır. Örneğin: NSDictionary *myDictionary = @{@"ad": @"Ali", @"soyad": @"Yılmaz"};

Nesne oluşturma işlemi temel olarak bu adımlardan oluşur. Farklı sınıflar ve veri tipleri kullanarak, farklı nesne türleri yaratarak, Objective-C programlama dilinde sınıfların ve nesnelerin özelliklerini daha iyi anlayabilirsiniz.


İlk Değerler

Objective-C'de nesnelerin oluşturulması sırasında, nesnenin özellikleri için ilk değerler belirlenir. Bu değerler, sınıfın yapısına ve ihtiyacına göre farklılık gösterir. Örneğin, bir insan nesnesi için ad, soyad ve yaş gibi özellikler için ilk değerler belirlenirken, bir araba nesnesi için marka, model ve renk gibi özellikler için ilk değerler belirtilir.

Objective-C'de ilk değerler, nesne oluşturulmadan önce belirlenir. Bunun için sınıf tanımında attribute'lar ve constructor'lar kullanılır. Attribute'lar, nesnenin özelliklerini tanımlarken, constructor'lar ise nesne oluşturulduğunda ilk değerlerin oluşturulmasını sağlar.

Bir sınıfın attribute'larının İlk Değerleri Varsayılan Olarak Belirlenebilir. Örneğin, bir integer attribute'una varsayılan başlangıç değeri 0 verilebilir. Bunun yanı sıra, attribute'ların ilk değerleri constructor'lar aracılığıyla belirlenebilir. Constructor'lar, sınıfın yapısına göre belirlenir ve nesne oluşturulduğunda çalıştırılır.

Bir başka önemli nokta ise attribute'ların önceden tanımlanmış olan tiplere sahip olmasıdır. Boolean, integer, float, double, string gibi tipler sıklıkla kullanılır. Bunun yanı sıra, Object tipi de sıkça kullanılır ve bu tip sayesinde bir nesne diğer bir nesneye referans gösterilebilir. Nesnenin tipleri attribute'larında belirlenir ve tiplere göre farklı değerler atanabilir.

Bir sınıfın attribute'larının Initializer Methods aracılığıyla da İlk Değerleri Belirlenebilir. Initializer methods, nesne oluşturma işlemi sırasında ilk değerlerin belirlenmesini sağlar. Bu sayede, nesne oluşturulduğu anda ilk değerler atanabilir.


Attribute ve Methodlar

Objective-C programlama dilinde, sınıfların özellikleri attribute'lar ve davranışları method'lar olarak belirtilir. Attribute'lar, sınıfların özellikleri olarak tanımlanır ve bir nesnenin durumunu tutarlar. Örnek olarak, bir araba sınıfı düşünelim ve attribute'ları şöyle belirleyelim: renk, model, hız ve fiyat. Bu attribute'ların her biri, bir arabanın durumunu ifade eder.

Method'lar ise, sınıfların davranışlarını ifade eder. Bir nesnenin yapabileceği işlemleri tanımlarlar. Örneğin, bir araba nesnesi için method'lar şöyle olabilir: hızlan, yavaşla, fren yap ve fiyatı güncelle. Bu method'lar, bir araba nesnesinin yapabileceği işlemleri ifade eder.

Objective-C programlama dilinde, attribute ve methodlar, public, private ve protected gibi farklı erişim seviyelerine sahip olabilir. Public olanlar, sınıf dışından da erişilebilirken private ve protected sadece sınıf içinde kullanılabilirler. Bu da sınıfların güvenliği açısından oldukça önemlidir.

Ayrıca, Objective-C dilinde, attribute'ların özellikleri değişebilir ve bu özellikler runtime sırasında değiştirilebilir. Bu sayede, bir nesnenin özellikleri programın ilerleyişi sırasında değiştirilebilir hale gelir. Bu özelliklerin değişimi, programlama açısından oldukça esnek bir yapı oluşturur.

Attribute ve methodların, Objective-C programlama dilindeki önemi oldukça büyüktür. İyi bir sınıf yapısı için, doğru bir şekilde tanımlanmaları ve erişim seviyesinin belirlenmesi gerekir. Bu şekilde, sınıfların güvenliği ve programın düzeni sağlanır.


Parametrelerin Kullanımı

Objective-C'de parametrelerin kullanımı oldukça önemlidir. Bu sayede fonksiyonlar ve metodlar, işlevlerini daha kolay bir şekilde yerine getirebilirler. Parametreler, bir metoda gönderilen ve işlem gerçekleştirmesi için gerekli olan verilerdir. Metodlar içerisinde kullanılırlar ve değişebilirler.

Objective-C'de iki farklı parametre türü vardır. Bunlar referans ve değerlerdir. Referans parametreleri, verilerin kaynak adreslerinin metoda geçirilmesiyle kullanılır. Bu sayede, değişkene yapılan değişiklikler, parametre olarak verilen orijinal nesne üzerinde etki yapar. Değer parametreler ise, küçük boyutlu veri tipleri ve anahtar sözcükleri içerir. Bu parametreler, yalnızca bir kopyayı içerirler ve orijinal veriyi değiştirmezler.

Referans parametreleri, genellikle yığın bellekte yer alan verileri işlemek için kullanılır. Sabit ve değişken referansları vardır. Sabit referanslar, bir bloğun tamamındaki değerleri işlemek için kullanılır. Değişken referansları ise, özel bir veri setine işlem yapmak adına kullanılır.

- (void)setName:(NSString *)name surname:(NSString *)surname{    NSLog(@"Ad :%@",name);    NSLog(@"Soyad: %@",surname);}

Gördüğünüz gibi, bu örnek kodda iki farklı parametre kullanılmaktadır. Bu parametreler 'name' ve 'surname'dur. Bu iki parametre, bir kullanıcının adı ve soyadını almak için kullanılır. Bu sayede, örneğin bir kullanıcının adını 'Ali', soyadını 'Yılmaz' olarak girdiğinde, yazılım bu iki parametreyi alır ve sonrasında işlem yapar.


Nesne Davranışları

Objective-C'de sınıfların ve nesnelerin davranışları oldukça önemlidir. Nesneler, sınıfların özelliklerini ve metodlarını barındırır. Bu nedenle, nesneleri nasıl yönetebileceğimiz oldukça önemlidir.

Nesnelerin davranışları, özel işlevler ve metodlar ile sağlanır. Bir nesne uzaklaştırılabilir (release) ya da kopyalanabilir (copy). Özellikle, kopyalama işlevi oldukça önemlidir ve genellikle mutable (değiştirilebilir) nesne tiplerinde kullanılır.

Ayrıca, bir nesnenin başka bir nesneyle iç içe geçebilmesine olanak sağlayan "nesting" işlevi de mevcuttur. Bu işlemle birlikte, bir nesne içinde diğerleri kullanılabilir, böylece nesneler arasındaki bağımlılıklar azaltılabilir.

Objective-C'de ayrıca delegasyon işlevi de bulunur, bu da bir nesnenin başka bir nesnenin davranışlarını belirleyebilmesini sağlar. Bu özellik, bir nesnenin performansını ve doğruluğunu arttırmaya yardımcı olabilir.

Metodlar, bir nesnenin davranışlarının tanımlanmasında kullanılan önemli bir araçtır. Bir nesnenin kendisi için tüm davranışları kullanabileceği "instance methods" ve sınıfın tüm örnekleri tarafından kullanılabilen "class methods" gibi farklı türleri vardır. Metodlar aynı zamanda, parametreler aracılığıyla belirli verileri de alabilirler.

Sonuç olarak, Objective-C'de nesnelerin davranışları oldukça esnektir. Nesneleri yönetmek için özel işlevler, metodlar ve parametreler kullanılabilir. Ayrıca, delegasyon ve nesting işlevleri de oldukça önemlidir ve bir nesnenin performansını arttırabilir.


Miras Alma

Objective-C programlama dili sınıfların miras alınması prensibine dayanır. Bu prensip, bir sınıfın sahip olduğu özelliklerin alt sınıflar tarafından da kullanılabilmesini sağlar. Miras alma, Objective-C programlama dili içinde, alt sınıfların oluşturulması için önemli bir kavramdır.

Bir sınıfın alt sınıf oluşturmak için kullanılması, yeni bir sınıf oluşturulmasını gerektirir. Oluşturulacak alt sınıf, ana sınıfın sahip olduğu özelliklere sahip olabilir ama bazı özellikleri değiştirebilir ya da yeni özellikler ekleyebilir. Bu sayede, alt sınıfların kullanması gereken özellikleri tekrar tekrar tanımlamak zorunda kalmazlar. Bu da programlama dilindeki kod tekrarını azaltır ve daha verimli bir yönetim sağlar.

Objective-C'de bir sınıfın alt sınıfını tanımlamak için, ana sınıfın adını takiben iki nokta (:), sonrasında alt sınıf adı yazılır.

Ana Sınıf Alt Sınıf
Vehicle Car
Person Employee

Bu tablo örneğinde, Vehicle sınıfı altında Car sınıfı ve Person sınıfı altında Employee sınıfı oluşturulabilir. Alt sınıfın özellikleri, ana sınıfın özelliklerini devralır ve alt sınıf, yeni özellikler veya işlevler ekleyebilir.

Alt sınıflar, üst sınıfların sahip olduğu tüm özellikleri ve metodları kullanabilir. Ayrıca, alt sınıflar, ana sınıfın özelliklerini değiştirebilir veya özellikler ekleyebilir. Bu esneklik, programlama dilindeki kod tekrarını azaltır ve daha verimli bir yönetim sağlar. Alt sınıfların kullanılması, programlama dili içinde kendi özel sınıflarınızı oluşturmanıza olanak sağlar ve bu, ihtiyacınız olan özellikleri daha kolay bir şekilde kullanmanızı sağlar.


Polimorfizm

Objective-C programlama dilinde polimorfizm, bir nesnenin farklı şekillerde çağrılabilen metotlara sahip olmasıdır. Bu durum, aynı sınıftan türetilmiş farklı nesnelerin farklı işlevleri yerine getirmelerine olanak sağlar. Objective-C'de polimorfizm, iki şekilde gerçekleştirilir:

  • Static Polimorfizm (Statik Polymorphism): Compile time'ında, yani derleme zamanında yapılan bir polimorfizm çeşididir. Bu tür polimorfizm için, fonksiyonların aşırı yüklenmesi (overloading) önemlidir. Aşırı yükleme, aynı isimli farklı parametre tiplerine sahip bir ya da birkaç fonksiyon tanımlamak demektir.
  • Dynamic Polimorfizm (Dynamic Polymorphism): Runtime'ında, yani çalışma zamanında yapılan bir polimorfizm çeşididir. Bu tür polimorfizm için, sanal fonksiyonlar önemlidir. Sanal fonksiyonlar, bir sınıftan türetilen alt sınıfların, temel sınıftaki aynı fonksiyonu çağırmasını sağlayan fonksiyonlardır.

Objective-C, bu iki polimorfizm çeşidini destekler. Static polimorfizmi gerçekleştirmek için, Objective-C'de fonksiyon aşırı yüklemesine ihtiyaç duyulurken, dynamic polimorfizmi sağlamak için sanal fonksiyonlar kullanılır. Ayrıca Objective-C'de, polimorfizm, nesneler arasında referansını koruyarak gerçekleştirilir. Bu, yine programcıya daha fazla esneklik sağlar.

Polimorfizm TürüTanımıKullanılan Sınıflar
Static PolimorfizmCompile time'ında, yani derleme zamanında yapılan bir polimorfizm türüdür. Aşırı yüklemeye dayanır.Aynı isimli farklı parametre tiplerine sahip bir ya da birkaç fonksiyon tanımlamak gereklidir.
Dynamic PolimorfizmRuntime'ında, yani çalışma zamanında yapılan bir polimorfizm türüdür. Sanal fonksiyonlar kullanır.Bir sınıftan türetilen alt sınıfların, temel sınıftaki aynı fonksiyonu çağırması gereklidir.

Polimorfizm, Objective-C'de oldukça güçlü bir araçtır. Bu sayede, kodun daha temiz, anlaşılır ve daha da önemlisi, esnek olması sağlanır. Programcılar, nesnelerin farklı şekillerde çalışmalarını ve farklı işlevleri yerine getirmelerini sağlayarak, kolayca fonksiyonelliklerini artırabilirler. Polimorfizm, ayrıca nesne yönelimli programlama için önemli bir konudur ve Objective-C gibi modern programlama dillerinde yoğun bir şekilde kullanılmaktadır.


Abstraction

Objective-C'de Abstraction konusu oldukça önemlidir. Abstract sınıflar, bir sınıfta tek başına bir nesne olarak tanımlanamayan soyut bir sınıf türüdür. Bu sınıflar, genellikle alt sınıfların kullanabileceği metotları içerirler ancak kendilerinin nesneleri bulunmaz. Abstract sınıfın en önemli özelliği, özetleme işlemlerinde kullanılan bir araç olmasıdır.

Abstract sınıflar genellikle içlerinde bir veya daha fazla Abstract method içerirler. Bu methodlar, sadece isimleri ve parametrelerinin tipi belirlenirken içerikleri belirlenmez. Bu sayede alt sınıflar, Abstract sınıftan miras aldıklarında bu methodları kullanır ve içeriğini kendileri belirlerler. Bu sayede hem kod tekrarı önlenir hem de esnek bir yapı oluşur.

Özetleme işlemleri, nesnelerin belirli özelliklerinin ve metotlarının genelleştirilip özetlenmesi işlemidir. Bu sayede daha az tekrarlanan kod satırları ile program yazılabilir. Özetleme işlemleri, kodun daha anlaşılır olmasına ve programın daha temiz bir yapısı olmasına yardımcı olur.

Objective-C'de sınıfların kullanımı esnek bir yapıya sahip olduğundan, Abstract sınıflar da bu esnekliği sağlamada önemli bir rol oynarlar. Özellikle kalıtım yapısı kullanılarak alt sınıfların oluşturulması sırasında Abstract sınıfların kullanımı oldukça pratik bir çözüm sunar.

Sonuç olarak Abstraction, Objective-C'de önemli bir kavramdır ve programlamada kod tekrarının en aza indirilmesi, kodun daha anlaşılır hale getirilmesi gibi avantajları bulunmaktadır. Abstract sınıfların işlevselliği ve soyut yapısı, programlama yapısının oluşturulmasında yardımcı olur. Bu nedenle bu konuya ayrıntılı bir şekilde hakim olmanız, Objective-C programlama sürecinde önemli bir adım olacaktır.


İstisna Yönetimi

Objective-C'de istisnalar, çeşitli hataların tespit edilmesi ve ele alınması için kullanılır. İstisna yönetimi, programın çalışması sırasında meydana gelen olası hataların işlenmesinde büyük bir rol oynar. Eğer bir istisna oluşursa, program normal işleyiş akışından ayrılır ve hatanın sebebi belirlenir.

Bir istisna genellikle bir hata veya beklenmeyen bir durumun ortaya çıkması sonucu oluşur. İstisnalar, hata mesajları gibi belirli iletişimleri içerebilir ve bu sayede kullanıcıların hatanın kaynağını daha kolay anlamalarına yardımcı olur. İstisna yönetimi sayesinde, hataların nedeni tespit edildikten sonra program normal şekilde devam edebilir veya kullanıcıya bir hata mesajı gösterilir.

Objective-C'de istisna yönetimi kullanmak için try-catch blokları kullanılır. Kod bloğunun içinde oluşabilecek bir hatanın farkına varılırsa, try bloğu durur ve ilgili catch bloğu çalışır. Programın işleyiş akışı burada değişir ve istisnaların tespit edilmesi sağlanır. Çoklu try-catch blokları kullanarak, birçok farklı türde hataların ele alınması mümkündür.

Aşağıdaki örnek kod, bir sayıyı 0'a bölmeye çalıştığımızda ortaya çıkan bir istisnanın nasıl ele alınacağını göstermektedir:

Kod Açıklama
try {  int a = 5;  int b = 0;  int c = a / b;} catch(NSException *exception) {  NSLog(@"%@", [exception description]);}
Burada, a değişkenine 5 ve b değişkenine 0 atanır. c değişkeni, a/b işlemi sonucu elde edilir. Bu işlem, bir sayıyı 0'a böldüğümüzde ortaya çıkan bir istisnanı tetikler ve catch bloğu çalışır. "division by zero" hatası, kullanıcıya gösterilir.

İstisna yönetimi, Objective-C kodunun daha güvenli ve hatasız hale getirilmesine yardımcı olur. Hataya neden olan koşulların önceden belirlenmesi ve ele alınması, programın daha sağlıklı bir şekilde işletilmesini sağlar.