বস্তু-ভিত্তিক প্রোগ্রামিংয়ে কোডটি পুনরায় সাধারণ to শ্রেণীর অস্তিত্ব যাতে আপনি বারবার একই ভেরিয়েবল এবং ফাংশন না লিখে অবজেক্ট তৈরি করতে পারেন।
কিন্তু নিজেরাই ক্লাস সম্পর্কে কী? কখনও কখনও ক্লাস এছাড়াও খুব অনুরূপ। উদাহরণস্বরূপ, একটি গাছের শাখা, শিকড় এবং একটি ট্রাঙ্ক থাকে। এটি এলমস, ওকস এবং পন্ডেরোসা পাইনেসের ক্ষেত্রে প্রযোজ্য।
আপনি যদি কোনও গেমটিতে একটি গাছ যুক্ত করে থাকেন তবে আপনি কয়েক ডজন গাছের জন্য গাছের অংশ তৈরি করতে পারেন। তবে একটি গাছের শ্রেণি তৈরি করা আরও সহজ হবে এবং অন্য প্রতিটি গাছ তার বৈশিষ্ট্যের অধিকারী হবে।
উত্তরাধিকার কেন গুরুত্বপূর্ণ?
অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে একটি ধারণা আছে "এটিকে ডিআরওয়াই রাখুন"। DRY এর অর্থ "নিজেকে পুনরাবৃত্তি করবেন না" " যদি আপনি নিজেকে প্রচুর কোড অনুলিপি করা এবং আটকানো দেখতে পান তবে আপনি অনেক ভুলের জন্য রুমও প্রবর্তন করছেন।
ধরা যাক আপনি একটি নতুন তামাগোচি গেমের জন্য কোড লিখছেন। প্রথম ভার্চুয়াল পোষা পোলার ভাল্লুক হবে। সুতরাং আপনি জাভাস্ক্রিপ্ট / টাইপস্ক্রিপ্টে পোলারবিয়ার নামে একটি শ্রেণি তৈরি করেন।
class PolarBear {
private _weight: number = 990;
constructor(weight: number = 0) {
this._weight = weight
}
makeNoise() {
console.log("made a roar");
}
eat() {
console.log("eats whatever it wants");
}
sleep() {
console.log("got a good night's sleep");
}
roam() {
console.log("wandered about aimlessly");
}
}
তারপরে আপনার বস আপনাকে বলবে যে আপার ম্যানেজমেন্টের একটি বিশাল অগ্রগতি ছিল। তারা বুঝতে পেরেছিল যে এটি আর 90 এর দশকের নয় এবং তারা তামাগোচ্চিতে 5K এর বেশি মেমরি ফিট করতে পারে। এবং এখন তারা সব ভালুক চায়।
আপনি ভাল হাতের ক্লিপগুলির অনুলিপি তৈরি করে আপনার আস্তিনগুলি গুটিয়ে নিয়ে আবার কাজে ফিরে আসুন। তারপরে আপনার বস আপনার দরজায় আবার নক করে। দেখা যাচ্ছে যে তারা চায় খেলাটি আরও শিক্ষামূলক হোক। এখন আপনাকে প্রতিটি পোষা প্রাণীর উত্সের তথ্য যুক্ত করতে হবে।
আপনি আর কোড নকল করছেন না। এখন আপনি আটটি প্রজাতির ভালুকের জন্য কয়েকশ লাইন কোড পরিবর্তন করছেন। ভুলগুলি এইভাবে ঘটে এবং বাগগুলি প্রবর্তিত হয়।
আপনি যখন দূরে সরে যাচ্ছেন, আপনার বস আবার হাঁটছেন। এখন আপার ম্যানেজমেন্ট গেমের সমস্ত ইঁদুরও চায়। ওহ, এবং একটি জিরাফ
আপনি জানেন যে আপনি যখন হয়ে গেছেন, তারা বানর বা অন্য কিছু চাইবে want আরও ভাল উপায় থাকতে হবে।
পরের প্রজন্মের তমোগাচি তৈরি করার পরিবর্তে আপনি সর্বদা বিদ্যমানদের সাথে খেলতে পারেন।
উদ্ধারকৃতদের উত্তরাধিকার

আপনার ভার্চুয়াল মেনেজারিকে নিয়ন্ত্রণ করার জন্য, আপনাকে সংগঠিত করা দরকার। উত্তরাধিকার আপনার পিতামাতার এবং সন্তানের সম্পর্কগুলিতে যোগ করে আপনার ক্লাসগুলি সাজিয়ে তুলতে সহায়তা করে।
কালো ভাল্লুক, গ্রিজলি এবং আস্তে আস্তে ভালুক সব ভাল্লুক। ভাল্লুক, ইঁদুর এবং বানর সবই প্রাণী। এবং এভাবেই আমরা আমাদের পারিবারিক গাছকে কাঠামো করব।

কোডের কোনও অংশটি দেখতে এটির মতো:
class Animal {
private _weight: number;
private _origin: string;
constructor(weight: number = 0, origin: string = "") {
this._weight = weight;
this._origin = origin;
}
makeNoise(noise: string = "") {
console.log("made a noise that sounded like: " + noise);
}
eat(food: string = "") {
console.log("eats " + food);
}
sleep() {
console.log("got a good night's sleep");
}
roam() {
console.log("wandered about aimlessly");
}
}
class Bear extends Animal {
constructor(weight: number, origin: string) {
super(weight, origin);
}
makeNoise(noise: string = "roar") {
super.makeNoise(noise);
}
eat(food: string = "whatever it wants") {
super.eat(food);
}
}
class GrizzlyBear extends Bear {
constructor(weight: number = 600, origin: string = "North America") {
super(weight, origin);
}
}
class Panda extends Bear {
constructor(weight: number = 230, origin: string = "China") {
super(weight, origin);
}
makeNoise() {
super.makeNoise("squeek");
}
eat() {
super.eat("shoots and leaves");
}
}
আপনি টাইপস্ক্রিপ্ট স্যান্ডবক্সে কোড সহ খেলতে পারেন।
এটি একটি বড় নমুনা ছিল, তবে কোডটি যথেষ্ট সহজ এবং সমস্ত শ্রেণি পশুর শ্রেণী থেকে এসেছে। আপনি দেখতে পারেন যে বিয়ার প্রসারিত প্রাণী। এবং গ্রিজলিবিয়ার এবং পান্ডা ভালুক শ্রেণি প্রসারিত করে। বিয়ার ক্লাস ডিফল্ট শব্দ এবং খাওয়ার ফাংশন তৈরি করে। গ্রিজলিবিয়ার ক্লাস সেই ডিফল্ট ফাংশনগুলি ব্যবহার করে তবে পান্ডা তা দেয় না।
অন্য কথায়, গ্রিজলিবার ক্লাস বিয়ার ফাংশনগুলিকে ওভাররাইড করে না। কারণ GrizzlyBear বিয়ার প্রসারিত, এটা ফাংশন স্বয়ংক্রিয়ভাবে বিয়ার দ্বারা সংজ্ঞায়িত ব্যবহার করবে। তবে পান্ডা যেহেতু মেকনোইজকে ও খাওয়ার ফাংশনগুলিকে ওভাররাইড করে, এটি পরিবর্তে সেগুলি ব্যবহার করবে।
"Is-a, has-a" প্রযুক্তিযুক্তের সাথে সম্পর্ক সন্ধান করা
কোনও শ্রেণীর সত্যই অন্য শ্রেণি বাড়ানো উচিত কিনা তা নির্ধারণের জন্য, আপনি নিজেকে জিজ্ঞাসা করতে পারেন যে তাদের মধ্যে "হ'ল" বা "আছে" আছে কি না।
- একটি লেমুর "হয়-একটি" বানর।
- একটি ক্যাঙ্গারু "হ'ল" মারসুপিয়াল।
- যদিও খরগোশের পা কোনও খরগোশ নয়। একটি খরগোশ "আছে – একটি" পা।
এই উদাহরণটি সামান্য সরল, তবে বাস্তব-বিশ্ব শ্রেণীর সাথে কাজ করার সময় এটি খুব সহায়ক হতে পারে।
হ্যান্ডস অন উত্তরাধিকার অনুশীলন এবং বোঝার

আপনি যা শিখেছেন তা প্রয়োগ করতে প্রস্তুত?
- স্যান্ডবক্স দেখুন এবং উপরের উদাহরণ থেকে বাকী প্রাণীর ক্লাসগুলি পূরণ করুন।
- একটি বানরের ক্লাস যুক্ত করুন।
- এমন একটি প্রোবসিসমোনকি ক্লাস যুক্ত করুন যা আপনার বানর শ্রেণিকে প্রসারিত করে।
উত্তরাধিকার হ'ল সুসংহত কোডের চেয়ে বেশি। এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের মূল অংশ। উত্তরাধিকার বস্তুগুলির মধ্যে যোগাযোগকে প্রবাহিত করতে সহায়তা করে। এবং এটি পলিমারফিজমের মতো আরও উন্নত অবজেক্ট-ওরিয়েন্টেড ডিজাইনের অনুমতি দেয়। আপনি টাইপস্ক্রিপ্ট ডকুমেন্টেশন থেকে উত্তরাধিকার সম্পর্কে আরও শিখতে পারেন।