Bu makalede, Objective-C'de class, instance ve global variable'ların doğru kullanımını öğreneceksiniz Yeni başlayanlar için mükemmel bir kaynak!
Objective-C programlama dili, yeni bir öğrenenler için kafa karıştırıcı olabilir. Ancak, kodlama ile daha fazla zaman geçirildikçe dilin kavramları anlaşılır hale gelir. Bu kavramlar arasında da Class, Instance ve Global Variables yer alır. Bu kavramların ne olduğu ve doğru kullanımlarının önemi açıklanacak.
Class ve Instance, yazılım mühendisliği alanında sık sık kullanılan kavramlardan biridir. Class, nesnelerin tanımlanması için kullanılan bir kalıptır. Instance ise bir sınıfın örneğidir. Sınıflar, belirli bir amaç için kullanılan bir çerçeve sunar. Örneğin, bir araba sınıfı oluşturabilirsiniz. Bu sınıf, arabanın özelliklerini ve fonksiyonlarını içerecektir. Ardından, bu sınıftan birkaç tane örnek oluşturabilir ve her biri farklı bir aracı temsil edebilir.
Class Variables ve Instance Variables, Class ve Instance'ın iki tür değişkenidir. Class Variables, bir sınıfa atadığınız değerlerdir. Bu değerler, sınıftaki her örnekte paylaşılır. Örneğin, bir araba sınıfında motor gücünü bir Class Variable olarak belirleyebilirsiniz. Bu şekilde, araçlardaki her cins, aynı motor gücüne sahip olur. Instance Variables ise her bir örneğe ait olan değişkenlerdir. Örneğin, aynı sınıftaki farklı arabaların rengi farklı olabilir. Bunun için, renk bir Instance Variable olarak tanımlanabilir.
Global Variables ise tüm programda erişilebilen değişkenlerdir. Bu değişkenler, programın herhangi bir yerinde değer atamak veya okumak için kullanılabilir. Ancak, tüm program tarafından erişilebileceği için, doğru kullanılmaları önemlidir. Global Variables, gereksiz kullanımı sınırlamak için dikkatle ele alınmalıdır.
Özetle, Class, Instance ve Global Variables kullanmanın önemi, doğru kullanımlarının anlaşılmasıyla artar. Doğru kullanıldığında, bu kavramlar kodun daha okunaklı ve anlaşılır hale gelmesine yardımcı olur.
Class ve Instance nedir?
Objective-C programlama dilinde, sınıfları ve nesneleri (object) kullanarak kodlamak mümkündür. Sınıf, içinde belirli özelliklerin ve fonksiyonların tanımlandığı bir varlıktır. Nesne ise, bu sınıfın özellikleriyle oluşturulan bir örnektir. Yani, sınıf özelliklerinin belirli bir örneği olarak düşünülebilir.
Sınıfların ve nesnelerin kullanımı, kodlama işlemini daha kolay ve esnek hale getirir. Sınıflar, birbirlerine benzeyen özellikleri olan nesnelerin yaratılmasını sağlar. Nesneler ise, bu özelliklerinin değerlerini alarak farklı hale gelebilirler.
- Sınıflar, özellik ve fonksiyonları içerirken, nesneler sınıfın özelliklerinin bir kopyasıdır.
- Sınıflar olmadan, aynı özelliklerin farklı nesnelerde nasıl kullanılacağı belirsiz olurdu.
Örneğin, bir araba sınıfında, hız, renk, model gibi özellikler tanımlanır. Bu sınıftan yaratılan nesneler ise, belirtilen özelliklere sahip farklı araçlardır.
Class Variables ve Instance Variables nedir?
Objective-C programlama dilinde, değişkenler iki farklı tipe ayrılırlar. Bunlar Class Variables ve Instance Variables olarak adlandırılırlar. Her ikisi de farklı amaçlar için kullanılır ve aralarındaki fark önemlidir.
Class Variables, bir sınıfın tüm örnekleri tarafından paylaşılan değişkenlerdir. Yani, farklı örneklerde aynı sonra erişilebilir bir değişken tanımlamak için kullanılırlar. Bir sınıfın tüm örnekleri, Class Variables'ı görüntüleyebilir ve değiştirebilirler. Aynı zamanda, Class Variables, başka bir Class içinde de erişilebilir.
Instance Variables ise, her örnekte ve her bir örneğin kendine özgü olan değişkenlerdir. Bir sınıfın her örneği kendine ait Instance Variables'a sahip olabilir ve bunları kendi amaçları doğrultusunda değiştirebilirler. Instance Variables, sadece kendi sınıfı içerisinde kullanılabilirler ve farklı bir Class'tan erişilemezler.
Özetle, Class Variables ve Instance Variables, Objective-C programlama dilinde oldukça önemlidir. Her birinin kendine özgü kullanım amacı vardır ve uygulamanın amaçlarına doğru şekilde uyarlanmaları, daha okunaklı ve anlaşılır kod yazmamıza olanak sağlar.
Class Variables nasıl kullanılır?
Objective-C’de Class Variables, sınıflara ait değişkenlerdir. Class Variables tanımlamak için değişkenin önünde static şeklinde bir belirteç kullanılır. Ayrıca Class Variables, sınıfın tüm örnekleri tarafından paylaşılır. Yani bir sınıfın bir nesnesinde yapılan değişiklik, diğer nesnelere de yansır. Bu özellik bazen faydalıdır, bazen de programcılar için karmaşık hatalar yapılırsa tehlikeli olabilir.
Bir örnek verelim. Sınıfımızın adı “Person” olsun ve tüm insanların ortak özelliği olan “yaş” özelliğini tutalım. Person sınıfında, tüm nesnelerin yaşını tutacak bir Class Variable tanımlayabiliriz.
Kodu: | Sonuç: |
---|---|
@interface Person : NSObject+ (int)commonAge;@end@implementation Personstatic int _commonAge = 20;+ (int)commonAge { return _commonAge;}@end | int age = [Person commonAge]; |
Burada, _commonAge değişkeni tüm Person nesneleri arasında paylaşılan bir değişkendir ve başlangıçta 20 olarak ayarlanır. Sınıf adıyla, commonAge Class Method’ı tanımlanır, bu method, _commonAge’yi döndürür.
Daha sonra bir nesne oluşturmadan, Person sınıfının ortak yaşı için commonAge fonksiyonunu çağırabiliriz. Özellikle, herhangi bir “Person” nesnesinde değişiklik yapmadan sınıfın yaşını güncelleyebiliriz:
Kodu: | Sonuç: |
---|---|
[Person setCommonAge:30];int age = [Person commonAge]; | age is 30 |
Burada, setCommonAge methodu ile sınıfın yaşını güncelliyoruz, daha sonra commonAge methodunu çağırarak yaşın güncellendiğini kontrol ediyoruz. Person sınıfının her örneği için, setCommonAge ve commonAge fonksiyonları çağrıldığında, örneklerin tuttuğu değişkenler güncellenecektir.
Instance Variables nasıl kullanılır?
Instance Variables, Class Variables gibi, bir sınıfta tanımlanır ama her bir örneğin kendi özel değişkeni olarak hareket eder. Bu, herhangi bir örnekte değişkenlerin değiştirilmesi diğer örneklerde etkilenmeyeceği anlamına gelir. Kullanımı, sınıfın nesneleri için özel olarak tutulması gereken verileri saklamak için idealdir.
Aşağıdaki örnek, Car sınıfı için bir Instance Variable kullanımını göstermektedir:
```@interface Car : NSObject{ float _tankCapacity; //Instance Variable}
@property NSString *model;@property NSString *brand;@end
@implementation Car@synthesize model = _model, brand = _brand;
-(id) initWithTankCapacity:(float)tankCapacity { self = [super init]; if (self) { _tankCapacity = tankCapacity; } return self;}@end```
Yukarıdaki sınıfın _tankCapacity değişkeni, her örneğin kendi yakıt kapasitesini depolamasını sağlar. İlk değeri initWithTankCapacity: yöntemi aracılığıyla girilir. Instance Variables ayrıca sınıfın bir örneği olarak oluşturulduktan sonra değerlerine doğrudan erişilebilir. Aşağıdaki örnek, Car sınıfının iki farklı örneğinde değişkenlere erişerek değerleri ayarlamaya ve çağırmaya örnek vermektedir:
```//Create car objectsCar *car1 = [[Car alloc] initWithTankCapacity:50.0f];Car *car2 = [[Car alloc] initWithTankCapacity:60.0f];
//Set and get instance variable values[car1 setModel:@"Camry"];[car1 setBrand:@"Toyota"];NSLog(@"Car1 Model: %@ Brand: %@ Tank Capacity: %f", [car1 model], [car1 brand], [car1 _tankCapacity]);
[car2 setModel:@"Accord"];[car2 setBrand:@"Honda"];NSLog(@"Car2 Model: %@ Brand: %@ Tank Capacity: %f", [car2 model], [car2 brand], [car2 _tankCapacity]);```
Yukarıdaki örneklerde, _tankCapacity eşit olarak 50.0f ve 60.0f olarak ayarlanır ve her araba nesnesi kendi _tankCapacity değişkenini tutar. Her iki değişken de farklı değerlere sahip olduğu için, her araba için ayrı ayrı çağrılabiliyor ve farklı sonuçlar döndürülebiliyor.
Instance Variables, sınıfın özelliklerine özel olarak erişim imkanı sağlar ve her bir örneğin özel verileri saklamasını sağlamak için idealdir. Bu, Objective-C programlama dilindeki kod okunabilirliğini artırır ve anlaşılır kod tasarımına yardımcı olur.
Global Variables nedir?
Global Variables (Global Değişkenler), fonksiyon veya sınıf için geçerli olan değişkenlerdir. Yani, tüm program boyunca erişilebilir ve kullanılabilirler. Bu nedenle, bir fonksiyon içinde tanımladığınız bir global değişken, o fonksiyondan çıktıktan sonra da kullanılabilir.
Global değişkenler, bir dosyada tanımlanır ve o dosyada kullanılırlar. İzin verilen en yüksek erişim seviyesine sahiptirler, bu nedenle programın herhangi bir noktasından erişilebilirler. Global değişken tanımlama işlemi, bir fonksiyon ile benzerdir. Sadece anahtar kelime olarak "static" yerine "global" kullanılır.
Global değişkenlerin kullanımı, bazı durumlarda faydalı olabilir. Örneğin, bir dosya içindeki tüm fonksiyonlarda ortak olan bir değişkeni tanımlamak için kullanılabilirler. Böylece, bu değişkenin değeri, tüm fonksiyonlar tarafından kullanılabilir ve düzenlenebilir.
Global değişkenleri kullanırken, özellikle büyük programlarda, isimlendirme olarak dikkatli olmak önemlidir. Çünkü programın farklı bölümlerinde aynı isimlendirme kullanılarak farklı değişkenler tanımlanabilir. Bu nedenle, isimlendirme konusunda standart bir yöntem belirlemek, kodun okunaklılığını arttırabilir.
Global Variables nasıl tanımlanır ve kullanılır?
Global Variables, yani genel değişkenler, Objective-C programlama dilinde kullanılan önemli bir kavramdır. Global değişkenler, kodun herhangi bir yerinde tanımlanabilir ve herhangi bir sınıf veya instance için erişilebilir. Bu nedenle, bir uygulamanın birden fazla yerinde kullanılacak veriler için kullanışlı bir seçenektir.
Global Variables tanımlamak çok basittir. Kodun herhangi bir yerinde tanımlanabilen ve yaşam döngüsü uygulama süresince olan bu değişkenler için genellikle dosya başında bir header dosyası oluşturulur. Bu header dosyasında global değişkenler tanımlanır ve uygulamanın her yerinde erişilebilir hale getirilir.
Örneğin, bir uygulamanın ayarları için global değişkenler tanımlayabilirsiniz. Bu değişkenler uygulamanın herhangi bir yerinde kullanılabilir ve kullanıcının seçtiği ayarlara göre değişebilir. Ayrıca, belirli bir konumda yer alan bir dosya yolunu veya sıklıkla kullanılan bir veriyi global değişken olarak tanımlayabilirsiniz.
Aşağıda, global değişkenlerin tanımlanması ve kullanımı ile ilgili örnek bir kod bloğu bulunmaktadır:
```// Header dosyasında global değişken tanımlanırextern NSString * const kAppVersion;extern NSString * const kServerURL;
// Implementation dosyasında global değişken tanımlanırNSString * const kAppVersion = @"v1.0";NSString * const kServerURL = @"https://www.myserver.com";
// Kodun herhangi bir yerinde global değişkene erişilebilirNSLog(@"Uygulama sürümü: %@", kAppVersion);NSLog(@"Server URL: %@", kServerURL);```
Yukarıdaki örnekte, kAppVersion ve kServerURL global değişkenleri örnek olarak tanımlanmıştır. Bu değişkenlerin değerleri uygulama başlatıldığında başlatılır ve uygulama süresince erişilebilir hale getirilir. Bu global değişkenler, çalışma zamanında uygulamanın herhangi bir yerinde kullanılabilir.
Sonuç olarak, global değişkenler Objective-C kod yazarken büyük önem taşır. Uygulama içindeki verileri saklamak için önemli bir yapısal unsur olan global değişkenler, herhangi bir yerden erişim sağlanabilmesi nedeniyle kullanışlıdır. Global değişkenleri kullanmak, programcıların kod yazmasını kolaylaştırmak için doğru bir tercihtir.
Conclusion
Objective-C'de kod yazarken Class, Instance ve Global Variables kullanımı oldukça önemlidir. Bu değişkenlerin farklı amaçları vardır. Class ve Instance değişkenleri nesnelerin yapısını tanımlamak için kullanılırken, Global Variables tüm uygulama tarafından erişilebilir değişkenleri ifade eder.
Class ve Instance değişkenleri arasındaki farkı anladıktan sonra, doğru kullanımları daha kolay hale gelir. Class Variables, sınıfın tüm örneklemleri tarafından paylaşılan bir değişkendir. Öte yandan Instance Variables, sadece belirli bir örnekleme özgüdür.
Bunun yanı sıra, Global Variables tüm sınıfların erişebileceği bir değişkeni ifade eder. Global Variables tanımlarken dikkat edilmesi gereken, diğer değişkenlerden farklı olarak belirli bir sınıf içerisinde tanımlanmamasıdır.
Class, Instance ve Global Variables doğru kullanıldığında, kod daha okunaklı ve anlaşılır hale gelir. Bu da yazım ve bakım süreçlerini kolaylaştırır. Objective-C'de Class, Instance ve Global Variables kullanımının öğrenilmesi, kod yazımında daha profesyonel bir yaklaşım sergilemenizi sağlar.