Objective-C Temelleri: Sınıflar ve Nesneler

Objective-C Temelleri: Sınıflar ve Nesneler

Objective-C Temelleri: Sınıflar ve Nesneler kitabıyla Objective-C öğrenmenin tadını çıkarın! Bu kitap, temel bilgileri öğrenmenizi sağlayarak uygulama geliştirme yolculuğunuzu kolaylaştıracaktır Sınıflar, nesneler ve daha fazlası hakkında kapsamlı bir kılavuz arıyorsanız, Objective-C Temelleri: Sınıflar ve Nesneler bu konuda size yardımcı olacaktır Hemen sipariş verin ve Objective-C'yi öğrenmenin keyfini çıkarın!

Objective-C Temelleri: Sınıflar ve Nesneler

Objective-C programlama dilinde sınıf ve nesnelerin kullanımı oldukça önemlidir. Sınıflar, programda kullanılacak nesnelerin özelliklerini ve yöntemlerini tanımlamak için kullanılırken, nesneler ise sınıfların özelliklerini miras alarak bu özellikleri kullanır. Bu makalede, Objective-C programlama dilinde sınıfların ve nesnelerin nasıl tanımlandığı ve kullanıldığı detaylı bir şekilde ele alınacaktır.


Sınıfların Tanımlanması

Objective-C programlama dilinde, sınıf tanımlamak için @interface anahtar sözcüğü kullanılır. Sınıf, nitelikleri ve yöntemleri içerir. @interface tanımlaması, sınıfın tanımının yapıldığı yerdir. Her sınıf, NSObject sınıfından türetilir. Bu sınıf, Objective-C'nin temel yapısını oluşturur. Tanımlama örneği aşağıdaki gibidir:

Objeler Açıklama
@interface Yeni bir sınıf başlatır
NSObject Temel sınıf
MyClass Sınıf adı

Sınıf tanımı @interface anahtar sözcüğü ile başlar ve sonraki kısım sınıfın adını belirtir. Sınıfın nitelikleri, kendisine ait değişkenleri ve yöntemleri içerir. Özellikler, nitelikleri belirtmek için @property anahtar sözcüğü kullanılarak tanımlanabilir. Örnek olarak aşağıdaki Araba sınıfı verilebilir:

Araba
-marka -model +sur()

Yukarıdaki tablo, Araba sınıfının örneğini göstermektedir. Sınıfın @interface tanımında, arabayla ilgili nitelikler belirtilmiş ve sur() yöntemi tanımlanmıştır. Marka ve model değişkenleri '-', sur() yöntemi '+' ile işaretlenmiştir. Bu işaretler, değişkenlerin ve yöntemlerin erişim türünü belirtir. '-' işareti, öğenin sadece sınıfın içinde erişilebilir olduğunu, '+' işareti ise öğenin bir nesne tarafından erişilebilir olduğunu gösterir.


Nesnelerin Tanımlanması

Objective-C'de sınıfların yanı sıra nesneler de kullanılır. Sınıf örneği olarak adlandırılan bir nesne, sınıfın özelliklerini ve yöntemlerini içerir.

Nesnelerin tanımlanması için @implementation anahtar sözcüğü kullanılır. Bu anahtar sözcüğü ile sınıfın özellikleri ve yöntemleri nesne için tanımlanır. Nesnelerinizi tanımlarken, sınıfın adını ve örneğin adını belirlemeniz gerekir.

Sıra no. Açıklama
1 Sınıfın adı belirtilir. Örneğin, "Araba".
2 Nesne için örnek adı belirlenir.
3 Sınıfın özellikleri ve yöntemleri nesne için tanımlanır.

Birçok sınıfta, nesneler yalnızca sınıfın bir örneğidir. Nesneler, sınıfın yöntemlerini ve özelliklerini kullanarak işlevlerini yerine getirirler. Nesneleri kullanmak için sınıfın yöntemlerini öğrenmek önemlidir.


Örnek

Objective-C programlama dilinde sınıf ve nesne tanımlamak oldukça kolaydır. Sınıf tanımlamak için @interface anahtar sözcüğü kullanılır. Örneğin, bir Araba sınıfı oluşturabiliriz ve bu sınıfın özellikleri nitelikleri (property) ve işlemleri yöntemler (methods) içerir. Araba sınıfı özellikle marka ve model niteliklerine sahip olsun, ayrıca sur() adında bir yöntemi olsun.

@interface Araba : NSObject
  @property NSString *marka;
  @property NSString *model;
  -(void)sur;
@end

Bu kodda, Araba sınıfı NSObject sınıfından türemiştir. Sınıfımızın özellikleri marka ve model nitelikleri olarak belirlenmiştir, ayrıca sur() adında bir yöntemi vardır. Nesne örneği (instance) tanımlamak ise oldukça basittir. Araba sınıfından bir örnek oluşturmak istediğimizde, önce nesnenin adres alanının ayırt edici hafızaya (memory) tahsis edilmesi gerekmektedir. Bu, genellikle alloc yöntemi kullanılarak yapılır. Sonrasında @init yöntemi çağrılarak nesneye bir başlangıç yapılandırması atanır.

Araba *bmw = [[Araba alloc]init];
bmw.marka = @"BMW";
bmw.model = @"3 Serisi";
[bmw sur];

Bu örnekte, Araba sınıfından bir nesne örneği (instance) tanımlandı. Nesne, önce adres alanı tahsis edilerek oluşturuldu ve daha sonra marka ve model niteliklerine değerleri atanarak yapılandırıldı. Ardından, nesnenin sur() yöntemi çağrıldı ve çıktısı @Araç sürüyor.' şeklinde oldu.


Sınıf Tanımlaması:

Sınıf tanımlarken @interface anahtar sözcüğü kullanılır. Sınıf, nitelikleri ve yöntemleri içerir. Nitelikler bir sınıfın özelliklerini belirtir ve yöntemler ise sınıfın davranışlarını tanımlar. @property anahtar sözcüğü, nitelikleri tanımlamak için kullanılır ve bu özelliklere setter ve getter yöntemleri otomatik olarak oluşturulur. @property sözcüğünden sonra özelliğin tipi ve adı belirtilir. Yöntemler @interface içinde tanımlanır ve - işaretiyle başlar. Yöntemin adı, parametreleri ve dönüş değeri belirtilir. Sınıf tanımlaması aşağıdaki gibi yapılabilir:

@interface Araba : NSObject
@property NSString *marka;
@property NSString *model;
- (void)sur;

Bu kod bloğunda Araba sınıfı tanımlanmıştır. Araba sınıfı NSObject sınıfından kalıtım (inheritance) almaktadır. @property sözcüğüyle marka ve model özellikleri tanımlanmıştır. sur yöntemi, Araba sınıfının bir örneği tarafından çağrılabilir ve Araç sürüyor. mesajını konsola yazdırır. Bu yöntem bir fonksiyon (method) olarak da adlandırılabilir.

@interface Araba : NSObject

Objective-C'de sınıf tanımlamak için @interface anahtar sözcüğü kullanılır. @interface Araba : NSObject ifadesi ise Araba adında bir sınıf tanımlandığını gösterir.

Sınıf tanımlaması özellikleri (property) ve yöntemleri (method) içerir. Araba sınıfı örnek olarak; marka ve model özelliklerine sahip olabilir. Araba sınıfının sur() yöntemi, aracın sürmesini sağlar.

Özellik (Property) Açıklama
marka Arabanın markası
model Arabanın modeli

Araba sınıfı tanımlandığında, bu özellikler ve yöntemler her Araba nesnesinde mevcuttur. Nesneler sınıfın özelliklerine ve yöntemlerine erişebilirler. Sınıf özellikleri, nesnelerin özelliklerini sağlayan özellik sabitleri olabilir. Yöntemler ise, nesnelerin belirli bir işlemi gerçekleştirmesini sağlar ve nesnelerin belirli bir davranış sergilemesini sağlar.

@property NSString *marka;

Bir sınıfın nitelikleri, @property anahtar sözcüğü kullanılarak tanımlanır. Nitelikler, nesnelerin özelliklerini tutar.

@property satırında, niteliğin tipi (NSString, NSNumber vb.) belirtilir. marka gibi nitelik adı, nesne oluşturulduğunda kullanılacaktır.

Bu nitelik, örneğin Araba sınıfında bir marka adı saklamak için kullanılabilir. Her Araba nesnesi, marka niteliğini farklı bir dize değeriyle ayarlayabilir.

@property Tanımlama
NSString * marka
NSString * model

Yukarıdaki nitelik tanımı, Araba sınıfının marka ve model niteliklerini tanımlar. Bu nitelikler, ilgili sınıf ve nesneler için özellikleri tutar.

@property NSString *model;

Objective-C programlama dilinde sınıflar ve nesneler üzerine odaklanan bu yazıda @property NSString *model; değişkenine değineceğiz. Bu değişken, Araba sınıfı örneğinde kullanılmıştır. Bu değişken tanımlaması, bir nesnenin modelini belirtir.

Objective-C sınıfları, diğer programlama dillerindeki sınıflar gibi özelliklere (property) sahip olabilir. Bir özellik tanımlamak için, sınıf arayüzünde property anahtar kelimesi kullanılır. Bir sınıfın bir özelliğini kapsayan tanımlama, genellikle sınıf özelliği (class property) olarak adlandırılır. Bu özelliklere, veri depolamak, yönetmek ve yönlendirmek için erişilebilirlik sağlama gibi amaçlarla kullanılabilir.

@property Değişken Açıklama
NSString *model Bir arabanın modelini belirtir
NSString *marka Bir arabanın markasını belirtir

Yukarıdaki tabloda görülebileceği gibi, Araba sınıfı iki özelliğe sahiptir: marka ve model. @property anahtar kelimesi ile tanımlanırken, veri tipi ve değişken adını belirten özellikleri içeren bir değişken olarak düşünülebilir.

Bir nesnenin model özelliği, @property anahtar kelimesi kullanılarak tanımlanabilir ve genellikle sınıf özelliği olarak kullanılır. Nesnenin model özelliği, bir dize (string) türünde bir değer olarak tanımlanır. Nesne örneği oluşturulurken, modele atanacak değer belirtilir. Örneğin, 'bmw.model = @3 Serisi'; Araba sınıfının bir örneği olan bmw'nin model özelliği "3 Serisi" olarak atanmıştır.

-(void)sur;

-(void)sur;

Bu yöntem, Araba sınıfının temel yöntemlerinden biridir, çünkü bir aracın sürülebilmesi için bir metottur. Bu yöntem, "NSLog" kullanılarak gösterilen bir çıktıya sahiptir ve "Araç sürüyor." şeklinde yazdırır.

Bu yöntem, Sınıf ve Nesne arasındaki ilişki için önemli bir örnektir, çünkü bir nesne yaratıldığında (Araba sınıfından örnek olarak), bu yönteme erişilebilir ve yöntemi kullanarak arabayı sürebiliriz.

Örneğin, bmw olarak adlandırılan bir "Araba" nesnesi yarattığımızı varsayalım. Nesnemiz bmw'nin markası "BMW" ve modeli "3 Serisi" olsun. bmw.nesne = "BMW" ve bmw.model = "3 Serisi" olarak belirlendi. Artık bmw'yi sürebilmek için yöntemi çağırabiliriz: [bmw sur]. Bu yöntemi çağırdığımızda "Araç sürüyor." çıktısı alacağız.

@end

Sınıfın tanımlandığı yerde @interface anahtar sözcüğü ile başlayan blok, sınıfın niteliklerini ve yöntemlerini içeren bir liste ile sona erer. Bu bloktan sonra @implementation anahtar sözcüğü ile başlayan bir blok gelir.

@implementation bloğu, sınıfın yöntemlerini ve davranışlarını tanımlayan nitelikleri içerir. Sınıfın etkinliğini sağlar ve işlevselliği belirler. Sınıf ve örnek niteliklerinde veri depolanır ve yöntemler verilerin işlenmesinde kullanılır.


Nesne Tanımlaması:

Sınıf tanımlandıktan sonra, sınıfın örneği nesne olarak adlandırılır ve @implementation anahtar sözcüğü kullanılarak tanımlanır. Sınıfın nitelikleri ve yöntemleri nesne içinde kullanılabilir hale gelir. Yani, nesne, sınıfın özelliklerini ve yöntemlerini miras alır. Nesne tanımlama aşamasında, sınıfın niteliklerine uygun olarak değerler atanır.

Syntax Açıklama
@implementation Araba Sınıfın örneği (nesne) tanımlanır.
-(void)sur{...} Sınıfın yöntemi tanımlanır.

Burada örneğimizde, Araba sınıfı tanımlandı ve sınıfın marka ve model özelliklerine sahip olduğu belirtildi. Ayrıca, Araba sınıfına ait sur() isimli bir yöntem tanımlandı. Daha sonra, bu sınıfın örneği (nesnesi) tanımlandı. Nesnenin marka ve model niteliklerine uygun olarak @property anahtar sözcüğü kullanılarak değer ataması yapıldı. Nesnemiz oluşturulduktan sonra, sur() yöntemi nesne adı ile çağrılarak ilgili mesaj konsola yazdırıldı.

-(void)sur{

-(void)sur{

Araba sınıfı içinde yer alan bir yöntemdir. Bu yöntem, "Araç sürüyor." yazısını ekrana yazdırır ve programı çalıştıran kullanıcıya aracın sürülmekte olduğunu gösterir.

Bu yöntemin kullanımı oldukça basittir. Nesne oluşturma kısmında oluşturulan araba nesnesi için bu yöntem çağırılır ve araç sürülmeye başlar.

Aşağıdaki örnekte, oluşturulan bmw nesnesine sur() yöntemi çağırılır ve BMW marka, 3 Serisi model arabanın sürüldüğü ekranda gösterilir.

Araba *bmw = [[Araba alloc]init];bmw.marka = @BMW;bmw.model = @3 Serisi;[bmw sur];

Yukarıdaki kod parçasında, önce Araba sınıfından bmw nesnesi oluşturulur ve marka ile model nitelikleri atanır. Daha sonra sur() yöntemi çağırılır ve araba sürmeye başlar.

Sur() yöntemi için içerik hazırlamak oldukça önemlidir. Bu yöntem, herhangi bir hata vermemeli ve araba sürme işlemini doğru şekilde gerçekleştirmelidir. Bu nedenle, yöntemin içeriği, programcının dikkatli ve özenli olmasını gerektirir.

NSLog(@

Objective-C programlama dilinde, NSLog() yöntemi, belirtilen bir değeri ekrana yazdırmak için kullanılır. Bu yöntem, metin ve değişken değerleri yazdırmak için kullanılabilir.

NSLog() yöntemi, string biçimleyicileri kullanılabilir. Bu, printf() işlevinde kullanılan aynı biçimleyicilerdir. Örneğin, %@ stringleri ve eşleşen Nesne türleri için; %d sayılar için; %f thamsayılar ve doubles için kullanılabilir.

NSLog() yöntemi, programlama süreci sırasında hata ayıklama çalışmalarında oldukça kullanışlı olabilir.

Araç sürüyor.

Araba sınıfı, sur yöntemiyle sürme işlevine sahiptir. Yukarıdaki kod bloğundaki sur yöntemi, aracın sürülme işlemini temsil eder. Yöntem kullanma .(nokta) notasyonu ile gerçekleştirilir.

Örneğimizde, Araba sınıfından türetilen bmw nesnesi, aracın markasının ve modelinin belirlenmesinin ardından sur () özelliği kullanılarak sürülebilir. Bu, temel bir Objective-C programlama kavramıdır ve nesnelerin sınıfların yöntemlerini kullanmasına örnek verir.

);

Objective-C programlama dilinde sınıflar ve nesneler, programlamanın temel yapı taşlarıdır. Sınıflar, programcının özellikleri ve yöntemleri bir arada bulundurduğu bir nesnedir. Nesneler, ilgili sınıfın özelliklerini ve yöntemlerini miras alarak oluşturulur.

Sınıfların tanımlanması için @interface anahtar sözcüğü kullanılır. Bu sayede sınıfın özellikleri ve yöntemleri belirtilir. Aynı şekilde, nesneler @implementation anahtar sözcüğü ile belirtilir. Bir örnek üzerinden gidelim: Araba sınıfı oluşturulabilir. Bu sınıfın özellikleri marka ve model olarak belirtilir, aynı şekilde sur yöntemi tanımlanır. Bu sınıfın örneği (nesnesi) ise @implementation Araba anahtar sözcüğü ile belirtilir.

Sınıf Tanımlaması:
@interface Araba : NSObject
@property NSString *marka;
@property NSString *model;
-(void)sur;
@end

Nesnelerin oluşturulması için ise @alloc ve @init yöntemleri kullanılır. Bu yöntemler sayesinde ilgili sınıfın özelliklerine göre bir nesne oluşturulur. Bu nesne, ilgili sınıfın yöntemlerini de miras alır. Örneğin, yukarıda belirtilen Araba sınıfı için bir bmw nesnesi oluşturulabilir. Bu nesne markası ve modeli ile belirtilir ve sur yöntemi çağrılır.

Nesne Tanımlaması:
@implementation Araba
-(void)sur{
NSLog(@Araç sürüyor.);
@end
Sınıf Örneği:
Araba *bmw = [[Araba alloc]init];
bmw.marka = @BMW;
bmw.model = @3 Serisi;
[bmw sur];

Sınıflar ve nesneler arasındaki ilişki oldukça önemlidir. Nesneler, ilgili sınıfın özelliklerini ve yöntemlerini miras alarak oluşturulduğundan, sınıfın değişmesi nesnenin de değişmesine sebep olur. Nesne kalıtımı sayesinde, benzer sınıflar arasında kod tekrarını önlemek mümkündür. Örneğin, SporAraba sınıfı Araba sınıfından türetilebilir. SporAraba'nın özellikleri Araba sınıfından miras alınabilir ve SporAraba sınıfına özgü yöntemler tanımlanabilir.

Bir SporAraba sınıfı oluşturulur ve bu sınıfın özellikleri hız ve motor olarak belirtilir. Araba sınıfından miras alınan marka ve model özellikleri de aynen kalır. SporAraba sınıfına özgü nitelikler, örneğin hızlanma hızı gibi, yöntemlerle tanımlanabilir.

}

Objective-C programlama dilinde sınıflar ve nesneler temel kavramlardır. Bu makalede, Objective-C programlama dilinde sınıfların ve nesnelerin nasıl tanımlandığı ve kullanıldığı incelenecektir.

Objective-C'de sınıflar, nitelikleri ve yöntemleri içeren @interface anahtar sözcüğü kullanılarak tanımlanır. Bu nitelikler, sınıfın özelliklerini tanımlayan değişkenlerdir. Yöntemler ise, sınıfın işlevlerini tanımlayan fonksiyonlardır.

Bir sınıfın tanımlanması şu şekilde yapılır:

    @interface Araba : NSObject    @property NSString *marka;    @property NSString *model;    -(void)sur;    @end

Bu örnekte, Araba sınıfı oluşturuluyor. Araba sınıfı, marka ve model adında iki nitelik içerir. Ayrıca Araba sınıfına sur() adında bir yöntem tanımlanmıştır.

Bir nesne, bir sınıfın örneklemesi olarak düşünülebilir. Objective-C'de bir sınıfın örneği nesne olarak adlandırılır ve @implementation anahtar sözcüğü kullanılarak tanımlanır. Nesneler, bir sınıfın niteliklerini ve yöntemlerini içerir.

Bir nesnenin tanımlanması şu şekilde yapılır:

    @implementation Araba    -(void)sur {        NSLog(@"Araç sürüyor.");    }    @end

Bu örnekte, Araba sınıfının sur() yöntemi tanımlanıyor. Sur() yöntemi, araç sürmek için kullanılabilir.

Bir Araba sınıfı örneği oluşturmak için ilk olarak bir değişken tanımlamalısınız.

    Araba *bmw = [[Araba alloc]init];    bmw.marka = @"BMW";    bmw.model = @"3 Serisi";    [bmw sur];

Bu örnekte, Araba sınıfından bir nesne olan bmw oluşturulur. Araba nesnesinin markası BMW ve modeli 3 Serisi olarak ayarlanır. Daha sonra bmw'nin sur() yöntemi çağrılır ve "Araç sürüyor." mesajı görüntülenir.

Sınıf ve nesne arasındaki ilişki, kalıtım ve miras yöntemleriyle gerçekleştirilir. Kalıtım, bir sınıfın özelliklerinin başka bir sınıfa aktarılmasıdır. Miras, bir sınıfın bir başka sınıftan türetilmesidir.

Bir SporAraba sınıfı, Araba sınıfından türetilebilir. SporAraba, Araba sınıfından miras aldığı özelliklerin yanı sıra SporAraba sınıfına özgü yöntemlere de sahip olabilir.

Objective-C'de SporAraba sınıfı, Araba sınıfından türetmek için aşağıdaki gibi bir kod kullanılabilir.

    @interface SporAraba : Araba    @property NSString *sporModeli;    @property int hiz;    -(void)yavasla;    @end

Bu örnekte, SporAraba sınıfı Araba sınıfından türer. SporAraba sınıfı aynı zamanda sporModeli ve hiz niteliklerini içerir ve yavasla() yöntemini tanımlar.

Sınıfların ve nesnelerin doğru şekilde tanımlanması ve kullanılması, Objective-C programlama dilinde başarılı bir uygulama oluşturmak için önemlidir. Bu temel kavramları öğrenerek, uygulamanızın geliştirilmesine yardımcı olabilirsiniz.

@end

@end anahtar sözcüğü, @interface ve @implementation bloklarının sonlandırılmasında kullanılır. Bu anahtar sözcüğü, sınıf ve nesne tanımlamalarını sonlandırdığı için oldukça önemlidir. Eğer bir sınıfı tanımlarken, @interface ve @implementation bloklarını kullanmazsanız, hata almanıza neden olacaktır. Benzer şekilde, @interface veya @implementation bloklarını sonlandırmadığınızda da hata alırsınız.


Nesne Oluşturma

Objective-C'de, sınıfların tanımlandıktan sonra kullanılabilmesi için nesneler oluşturulmalıdır. Nesneler, @alloc ve @init yöntemleri kullanılarak oluşturulur. @alloc yöntemi, nesne için bellek alanı ayırırken @init yöntemi, nesnenin özelliklerini başlatır.

Örneğin, bir Araba sınıfı oluşturduktan sonra, bu sınıfın bir örneğini (nesnesini) oluşturmak için aşağıdaki kod parçasını kullanabiliriz:

Kod Satırı Açıklama
Araba *bmw = [[Araba alloc]init]; Nesne oluşturma ve bellekte yer ayırma
bmw.marka = @"BMW"; Nesne özelliği belirleme
bmw.model = @"3 Serisi"; Nesne özelliği belirleme
[bmw sur]; Nesnenin bir yöntemini çağırma

Bu kod, Araba sınıfından bmw adında bir nesne tanımlar ve bmw'nin özelliklerini belirler. Son olarak, nesnenin sur() yöntemi çağırılır, bu yöntem "Araç sürüyor" mesajını ekrana yazar.


Örnek

Bir örnekle açıklamak gerekirse, yukarıdaki kodda Araba sınıfından bir nesne oluşturuldu. Nesne, Araba sınıfındaki özellikleri ve yöntemleri miras alacaktır. Araba *bmw = [[Araba alloc]init]; kodu ile bmw isimli bir Araba nesnesi oluşturuldu. Daha sonra, bmw nesnesinin marka ve model özelliklerine değer atandı. bmw.marka = @"BMW"; bmw.model = @"3 Serisi"; Bu kodlar ile bmw nesnesinin marka özelliği BMW, model özelliği ise 3 Serisi olarak ayarlandı.

Ardından, bmw nesnesinin "sur" metodunu çağırdık. Bu sayede, "Araç sürüyor." mesajını consol ekranında görebiliriz. [bmw sur];

bmw.marka

bmw.marka = @ kullanımı, Araba sınıfındaki marka niteliğine BMW değerinin atanması anlamını taşır. Bu örnekte, BMW marka araç oluşturulurken Araba sınıfının tüm özelliklerini ve yöntemlerini kullanabilirsiniz. marka ve model gibi nitelikler, araçların tanımlanması için önemlidir ve araçlar oluşturulurken Araba sınıfının tanımlı nitelikleri kullanılmalıdır. Nesne yönelimli programlama, sınıfların ve nesnelerin programlama sürecine egemen olduğu bir programlama biçimidir ve Objective-C bu yaklaşımı benimser. Dolayısıyla, BMW markalı bir araç oluşturulmak istendiğinde, öncelikle Araba sınıfındaki nitelikler kullanarak bir nesne oluşturulur.