Object-Oriented Programming (OOP) Swift-এ একটি গুরুত্বপূর্ণ ধারণা যা অ্যাপ ডেভেলপমেন্টের সময় খুবই কার্যকর। Swift-এ OOP ধারণাগুলি Classes, Structs, Inheritance, এবং Protocols এর মাধ্যমে বাস্তবায়ন করা হয়। প্রতিটি বিষয় আমি নিচে বিস্তারিতভাবে ব্যাখ্যা করছি:
১. Classes (ক্লাস)
- ক্লাস হল একটি ব্লুপ্রিন্ট যা কোনো অবজেক্টের প্রপার্টি (data) এবং মেথড (functionality) সংজ্ঞায়িত করে।
- Swift-এ ক্লাস তৈরি করতে
classকীওয়ার্ড ব্যবহার করা হয়।
উদাহরণ:
class Person {
// Properties
var name: String
var age: Int
// Initializer
init(name: String, age: Int) {
self.name = name
self.age = age
}
// Method
func introduce() {
print("Hi, my name is \(name) and I am \(age) years old.")
}
}
// ক্লাস থেকে একটি অবজেক্ট তৈরি করা
let person1 = Person(name: "John", age: 30)
person1.introduce() // Output: Hi, my name is John and I am 30 years old.
- ক্লাসে ইনিশিয়ালাইজার মেথড ব্যবহার করে প্রপার্টি সেট করা হয়।
- ক্লাসের মেমোরি ম্যানেজমেন্ট রেফারেন্স টাইপ হিসেবে কাজ করে।
২. Structs (স্ট্রাক্ট)
- স্ট্রাক্ট এবং ক্লাস অনেকটাই একই ধরনের, কিন্তু স্ট্রাক্ট ভ্যালু টাইপ হিসেবে কাজ করে।
- স্ট্রাক্ট তৈরি করতে
structকীওয়ার্ড ব্যবহার করা হয়।
উদাহরণ:
struct Car {
// Properties
var brand: String
var year: Int
// Method
func details() {
print("This is a \(brand) car from \(year).")
}
}
// স্ট্রাক্ট থেকে একটি অবজেক্ট তৈরি করা
var car1 = Car(brand: "Toyota", year: 2020)
car1.details() // Output: This is a Toyota car from 2020.
- স্ট্রাক্টে ইনিশিয়ালাইজার ডিফল্টভাবে থাকে, তাই আলাদাভাবে ডিফাইন করার প্রয়োজন হয় না।
- স্ট্রাক্টে ভ্যালু টাইপ হিসেবে কাজ করে, অর্থাৎ স্ট্রাক্টের একটি কপি তৈরি হয় যখন এটি পাস বা অ্যাসাইন করা হয়।
৩. Inheritance (ইনহেরিটেন্স)
- Swift-এ ইনহেরিটেন্স কেবলমাত্র ক্লাসে সাপোর্টেড, স্ট্রাক্টে নয়।
- ইনহেরিটেন্সে একটি ক্লাস আরেকটি ক্লাসের প্রপার্টি এবং মেথড ইনারহিট করতে পারে, যা কোড রিইউস করার জন্য খুবই উপকারী।
- Swift-এ ইনহেরিটেন্স করতে
: ParentClassNameব্যবহার করা হয়।
উদাহরণ:
class Animal {
var name: String
init(name: String) {
self.name = name
}
func sound() {
print("\(name) makes a sound.")
}
}
class Dog: Animal {
func bark() {
print("\(name) barks!")
}
}
// Dog ক্লাস থেকে একটি অবজেক্ট তৈরি করা
let myDog = Dog(name: "Buddy")
myDog.sound() // Output: Buddy makes a sound.
myDog.bark() // Output: Buddy barks!
Dogক্লাসটিAnimalক্লাস থেকে ইনারহিট করেছে এবং এর প্রপার্টি ও মেথড অ্যাক্সেস করছে।
৪. Protocols (প্রোটোকলস)
- প্রোটোকলস হল এমন কিছু যা একটি ব্লুপ্রিন্ট হিসেবে কাজ করে এবং কোনো ক্লাস, স্ট্রাক্ট, বা এনাম এই প্রোটোকলগুলো ইমপ্লিমেন্ট করতে পারে।
- প্রোটোকল ডিক্লেয়ার করতে
protocolকীওয়ার্ড ব্যবহার করা হয়।
উদাহরণ:
protocol Drivable {
var speed: Int { get set }
func start()
func stop()
}
class Bicycle: Drivable {
var speed: Int = 0
func start() {
print("Bicycle is starting.")
speed = 10
}
func stop() {
print("Bicycle is stopping.")
speed = 0
}
}
// Bicycle থেকে একটি অবজেক্ট তৈরি করা
let myBike = Bicycle()
myBike.start() // Output: Bicycle is starting.
myBike.stop() // Output: Bicycle is stopping.
Drivableএকটি প্রোটোকল যাBicycleক্লাস ইমপ্লিমেন্ট করেছে। এতে আমরা নিশ্চিত হতে পারি যেBicycleক্লাসটি প্রোটোকলের সব মেথড এবং প্রপার্টি ইমপ্লিমেন্ট করবে।
Classes vs. Structs
- ক্লাস রেফারেন্স টাইপ হিসেবে কাজ করে, অর্থাৎ মেমোরিতে একটি রেফারেন্স ধরে রাখে। যখন ক্লাসের একটি অবজেক্ট কপি করা হয়, তখন একই রেফারেন্স ধরে রাখা হয়।
- স্ট্রাক্ট ভ্যালু টাইপ হিসেবে কাজ করে। যখন এটি কপি করা হয়, তখন নতুন একটি কপি তৈরি হয়।
| ফিচার | ক্লাস | স্ট্রাক্ট |
|---|---|---|
| টাইপ | রেফারেন্স টাইপ | ভ্যালু টাইপ |
| ইনহেরিটেন্স | সাপোর্ট করে | সাপোর্ট করে না |
| ডিনিশিয়ালাইজার | ডিফাইন করা যায় | ডিফল্টভাবে থাকে |
| মেমোরি ম্যানেজমেন্ট | ARC (Automatic Reference Counting) | ডিরেক্ট ভ্যালু মেমোরি |
উপসংহার
- Classes এবং Structs iOS অ্যাপ ডেভেলপমেন্টে গুরুত্বপূর্ণ ভূমিকা পালন করে।
- Inheritance কোড রিইউস এবং কাঠামোগততা বৃদ্ধি করে, আর Protocols অনেকটাই ইন্টারফেসের মতো কাজ করে, যা নিশ্চিত করে নির্দিষ্ট মেথড এবং প্রপার্টি থাকা।
- Swift-এ এই OOP কনসেপ্টগুলো দক্ষতার সাথে ব্যবহার করলে অ্যাপগুলোকে বেশি ম্যানেজেবল এবং রিইউজেবল করা যায়।
Content added By
Read more