Properties এর জন্য Accessors এবং Mutators তৈরি

Properties এবং Instance Variables (প্রপার্টি এবং ইনস্ট্যান্স ভেরিয়েবলস) - অবজেক্টিভ-সি (Objective-C) - Computer Programming

240

Properties অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের (OOP) একটি গুরুত্বপূর্ণ অংশ, যা ক্লাসের মধ্যে ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। Objective-C তে accessor এবং mutator মেথড ব্যবহার করে প্রপার্টি মান অ্যাক্সেস এবং পরিবর্তন করা হয়। এখানে আমরা accessor এবং mutator মেথড তৈরি করার প্রক্রিয়া এবং তার ব্যবহার নিয়ে আলোচনা করব।


1. Properties এবং Accessors (Getter)

Accessor মেথডগুলি এমন মেথড যা প্রপার্টির মান রিটার্ন করে (অথবা অ্যাক্সেস করে)। সাধারণত এই মেথডগুলিকে getter বলা হয়।

Accessor (Getter) মেথডের গঠন:

- (dataType) propertyName;  // Getter মেথড

এখানে dataType হলো প্রপার্টির ডেটা টাইপ এবং propertyName হলো প্রপার্টির নাম।

Example:

@interface Car : NSObject
@property NSString *model;  // Property Declaration
@end

@implementation Car

- (NSString *) model {  // Getter Method (Accessor)
    return _model;
}

@end

এখানে model একটি property এবং model এর জন্য একটি getter method তৈরি করা হয়েছে, যা _model (instance variable) রিটার্ন করবে।


2. Mutators (Setter)

Mutator মেথডগুলি এমন মেথড যা প্রপার্টির মান পরিবর্তন করে। এই মেথডগুলিকে setter বলা হয়।

Mutator (Setter) মেথডের গঠন:

- (void) setPropertyName:(dataType)value;  // Setter Method

এখানে value হলো নতুন মান যা প্রপার্টিতে অ্যাসাইন করা হবে।

Example:

@interface Car : NSObject
@property NSString *model;  // Property Declaration
@end

@implementation Car

- (void) setModel:(NSString *)newModel {  // Setter Method (Mutator)
    _model = newModel;
}

@end

এখানে model এর জন্য একটি setter method তৈরি করা হয়েছে, যা _model (instance variable) এ newModel এর মান অ্যাসাইন করবে।


3. @property এবং @synthesize

Objective-C তে, @property এবং @synthesize কিওয়ার্ডগুলি ব্যবহার করে প্রপার্টির জন্য getter এবং setter মেথড তৈরি করা হয়।

  • @property: এটি একটি প্রপার্টি ঘোষণা করে এবং সেই প্রপার্টির জন্য getter এবং setter মেথড তৈরি করতে সহায়তা করে।
  • @synthesize: এটি প্রপার্টি জন্য getter এবং setter মেথড তৈরি করে এবং অভ্যন্তরীণ ভেরিয়েবল (instance variable) ম্যানেজ করতে সহায়তা করে। আধুনিক Objective-C তে @synthesize কিওয়ার্ডটি সাধারণত স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়, তবে এটি কাস্টমাইজ করা সম্ভব।

Example with @property and @synthesize:

@interface Car : NSObject
@property NSString *model;  // Property Declaration
@property int year;         // Property Declaration
@end

@implementation Car

// @synthesize automatically creates getter and setter methods
@synthesize model = _model;  // Custom instance variable
@synthesize year = _year;

@end

এখানে @property কিওয়ার্ড ব্যবহার করা হয়েছে model এবং year প্রপার্টির জন্য এবং @synthesize কিওয়ার্ড ব্যবহার করে getter এবং setter মেথডগুলি স্বয়ংক্রিয়ভাবে তৈরি করা হয়েছে। _model এবং _year হল অভ্যন্তরীণ ভেরিয়েবল (instance variables), যা প্রপার্টির জন্য ব্যবহৃত হবে।


4. Custom Accessor এবং Mutator

কখনও কখনও প্রপার্টি ম্যানিপুলেশনের জন্য কাস্টম getter এবং setter মেথড তৈরি করতে হয়। আপনি যদি চান যে প্রপার্টির মান সেট করার সময় কিছু অতিরিক্ত লজিক প্রয়োগ হোক, তাহলে আপনি কাস্টম getter এবং setter ব্যবহার করতে পারেন।

Custom Accessor (Getter) Example:

- (NSString *) model {
    if (_model == nil) {
        _model = @"Unknown";  // Default value
    }
    return _model;
}

এখানে getter মেথডটি চেক করবে যে _model যদি nil হয়, তবে একটি ডিফল্ট মান "Unknown" প্রদান করবে।

Custom Mutator (Setter) Example:

- (void) setModel:(NSString *)newModel {
    if (![newModel isEqualToString:@""]) {  // Check if the value is not an empty string
        _model = newModel;
    } else {
        NSLog(@"Invalid model value");
    }
}

এখানে setter মেথডটি চেক করবে যে newModel এর মান যদি খালি (empty string) না হয়, তবে সেটি _model এ অ্যাসাইন করবে, অন্যথায় একটি ত্রুটি বার্তা দেখাবে।


5. @dynamic

@dynamic কিওয়ার্ডটি তখন ব্যবহৃত হয় যখন আপনি getter এবং setter মেথডগুলি কাস্টমভাবে সরবরাহ করতে চান এবং Core Data বা অন্যান্য লাইব্রেরি স্বয়ংক্রিয়ভাবে তাদের তৈরি করবে না। এটি নির্দেশ করে যে, মেথডগুলো রানটাইম এ প্রাপ্ত হবে, কম্পাইলার এটি স্বয়ংক্রিয়ভাবে তৈরি করবে না।

উদাহরণ:

@interface Car : NSObject
@property NSString *model;
@end

@implementation Car
@dynamic model;  // Custom getter and setter provided at runtime
@end

এখানে, @dynamic ব্যবহার করা হয়েছে, যা নির্দেশ করে যে model প্রপার্টির জন্য কাস্টম getter এবং setter মেথড প্রস্তুত করা হবে।


সারাংশ

  • Accessors (Getter): প্রপার্টির মান রিট্রিভ (retrieve) করার জন্য ব্যবহৃত মেথড।
  • Mutators (Setter): প্রপার্টির মান সেট (set) করার জন্য ব্যবহৃত মেথড।
  • @property: প্রপার্টি ডিক্লেয়ার করার জন্য ব্যবহৃত হয় এবং স্বয়ংক্রিয়ভাবে getter ও setter তৈরি করে।
  • @synthesize: getter এবং setter তৈরি করতে ব্যবহৃত হয়, তবে আধুনিক Objective-C এ এটি স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়।
  • Custom Accessor & Mutator: প্রপার্টির মানে কাস্টম লজিক প্রয়োগ করতে কাস্টম getter এবং setter তৈরি করা হয়।

এই প্রক্রিয়াটি কোডকে আরও পরিষ্কার এবং সুরক্ষিত করে, কারণ ডেটা ম্যানিপুলেশন শুধুমাত্র নির্দিষ্ট মেথডের মাধ্যমে করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...