উত্তরাধিকারের কীভাবে প্রয়োজনীয়তা ব্যাখ্যা করতে পারি? [বন্ধ]


16

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

সুতরাং, উত্তরাধিকার ব্যবহার করে সমাধান করা একটি দুর্দান্ত, সাধারণ এবং কংক্রিট সমস্যা কী হবে?


1
"সাধারণ উদাহরণটি প্রায়শই স্তন্যপায়ী প্রাণী"? আপনি কি বোঝাতে চেয়েছেন? আপনি কি এর জন্য কোনও লিঙ্ক, রেফারেন্স বা উদ্ধৃতি সরবরাহ করতে পারেন?
এস .লট


3
উত্তরাধিকার = বিল গেটসের বাচ্চাদের বিশ্বাস তহবিলের কার্যকারিতা ব্যাখ্যা করার সর্বোত্তম বাস্তব উদাহরণটি কী হবে?
মার্টিন বেকেট

1
@ ক্রিস: এই প্রশ্নটি কীভাবে গঠনমূলক নয়? আপনি কি ঘোষণা করছেন যে একজন প্রশ্নকারী এবং 14 জন উত্তরদাতারা সবার সময় নষ্ট করছেন?
ড্যান ড্যাসক্লেস্কু

@ ড্যানডাসকলেস্কু - এটি একটি পতাকাবাহী প্রতিক্রিয়া হিসাবে দু'বছর আগে বন্ধ হয়ে গিয়েছিল "" দয়া করে বন্ধ হওয়াটিকে গঠনমূলক নয় বলে বিবেচনা করুন: উত্তরগুলি লিখে রেখে বিচার করা, এটি একটি সাধারণ তালিকা / পোল প্রশ্নের মতো দেখায় "। আপনি যদি মনে করেন এটি এটিকে ভুল বলে মনে হয় এটি এটিকে পরিষ্কার করার জন্য এটি ঠিক না এবং সম্প্রদায়টিকে পুনরায় পর্যালোচনা সারির মাধ্যমে সিদ্ধান্ত নিতে দিন।
ক্রিসএফ

উত্তর:


15

স্তন্যপায়ী প্রাণীর মতো নিখুঁত একাডেমিক উদাহরণে কোনও ভুল নেই। আমি আয়তক্ষেত্র / বর্গক্ষেত্রের উদাহরণটিও পছন্দ করি কারণ এটি নির্দেশ করে যে বাস্তব-বিশ্বকোনাগুলি সর্বদা আপনার যে উত্তরাধিকার সম্পর্কের প্রত্যাশা করতেন তা সরাসরি অনুবাদ করে না।

আমার মতে, প্রতিদিনের সর্বাধিক প্রচলিত উদাহরণটি একটি জিইউআই টুলকিট। এটি এমন কিছু যা প্রত্যেকে ব্যবহার করেছে, তবে তারা কীভাবে পলকের নীচে কাজ করে সে সম্পর্কে প্রাথমিকভাবে যুক্তি থাকতে পারে না। কোনও প্রয়োগের বিশদ জ্ঞানের প্রয়োজন ছাড়াই আপনি সমস্ত ধারক, সমস্ত উইজেট, ইভেন্ট ইত্যাদির মধ্যে কী আচরণগুলি সাধারণ তা সম্পর্কে কথা বলতে পারেন।


5
জিইউআই টুলকিটগুলির জন্য +1 ... এবং আমি আকারগুলির উদাহরণটিও পছন্দ করি, একটি ন্যূনতম অঙ্কন () এর বেস হিসাবে আকৃতি এবং কাস্টমাইজড ড্র () এর বংশধর আকারগুলি।
ইয়তি সাগাদ

14

আমার আসল বিশ্বের উদাহরণটি একটি সাধারণ এইচআর অ্যাপ্লিকেশনটির ডোমেন মডেল। আমি বলি যে আমরা কর্মচারী নামে একটি বেস ক্লাস তৈরি করতে পারি , কারণ ম্যানেজাররাও কর্মচারী।

public class Employee
{
    public string FirstName { get; set; }

    public string LastName { get; set; }

    public int Code { get; set; }

    public string GetInsuranceHistory()
    {
        // Retrieving insurance history based on employee code.
    }
}

তারপর আমি ব্যাখ্যা করেন যে ডেভেলপারদের হয় কর্মচারীদের , পরীক্ষকগণ হয় কর্মচারীদের , প্রকল্প পরিচালকদের হয় কর্মচারীদের । সুতরাং তারা সবাই কর্মী বর্গ থেকে উত্তরাধিকারী হতে পারে ।


2
উত্তরাধিকার সুবিধাগুলি প্রদর্শনের জন্য, বিকাশকারীরা কীভাবে কর্মচারীদের থেকে পৃথক হন তাও দেখানো আকর্ষণীয় হতে পারে। যদি কোনও পার্থক্য না থাকে, তবে একেবারেই বিকাশকারী শ্রেণি তৈরি করার দরকার নেই।
ডেভিড

3
দেখে মনে হচ্ছে যেন খুব ক্লাসও Employeeহতে পারে abstract
স্টুপার ইউজার

+1 এটি আমার বেশিরভাগ শিক্ষক ব্যবহৃত উদাহরণ এবং আমি এটি সত্যই পছন্দ করেছি। এটি পুরোপুরি উপলব্ধি করে এবং উত্তরাধিকার কীভাবে ব্যবহার করতে হয় তার জন্য একটি বাস্তব বিশ্বের উদাহরণ দিয়েছে।
ডেভিড পিটারম্যান

18
ব্যতীত এটি কখনই অনুশীলনে কাজ করে না কারণ সর্বদা কমপক্ষে একজন ব্যক্তি যিনি উভয়ই Developerএবং এ উভয়ই হওয়া দরকার Tester। আর একটি অনুরূপ পরিস্থিতি আপনার যেখানে রয়েছে Customerএবং একটি যোগাযোগের ডাটাবেস Supplier, কিন্তু যেহেতু যে কেউ এমন একটি সিস্টেম তৈরি করেছেন তিনি আপনাকে বলবেন, সবসময়ই একটি ক্ষেত্রে Companyউভয়ই থাকে। এই কারণেই এই উদাহরণগুলির বেশিরভাগই আপনাকে ভুল দিকে পরিচালিত করে।
স্কট হুইটলক

11

যা পরিবর্তিত হয় তা encapsulate ... তাদের একটি টেমপ্লেট পদ্ধতি প্যাটার্ন দেখান, এটি একটি বেস শ্রেণিতে সাধারণ আচরণ স্থাপন করে এবং উপশ্রেণীতে পৃথক পৃথক আচরণকে আবদ্ধ করে উত্তরাধিকারের কার্যকারিতা প্রদর্শন করে।

UI controlsএবং Streamsউত্তরাধিকারের দরকারীতার জন্য খুব ভাল উদাহরণ।


আমি মনে করি যে কারখানাটি আরও ভাল উদাহরণ হতে পারে।
আসুন_আমি_পরে

1
@ লেট_মে_বি: আমি মনে করি কারখানা এবং উত্তরাধিকারের সম্পর্কটি প্রকৃতির ক্ষেত্রে খুব অপ্রত্যক্ষ। অবশ্যই, এটি কংক্রিটের ধরণের উত্পাদন করে এবং বিমূর্ত / বেস প্রকারগুলি প্রদান করে, তবে এটি কেবল একটি ইন্টারফেস টাইপও ফিরে আসতে পারে! ইমো এটি ক্লাসিক প্রাণীর উদাহরণের চেয়ে ভাল নয়।
ফ্যালকন

@ লেট_মে_বি: এছাড়াও, একটি বিমূর্ত কারখানা বিভিন্ন উত্তরাধিকারের শ্রেণিবদ্ধতা সম্পর্কিত একটি জটিল উদাহরণ (আইটেমগুলির জন্য একটি, কারখানার জন্য একটি)। আমি মনে করি এটি উত্তরাধিকারের একটি ভাল ব্যবহার, তবে একটি ভাল এবং সাধারণ উদাহরণ নয়।
ফ্যালকন

3

মনে রাখা

কোনও জিনিসের প্রতিটি উদাহরণ হ'ল উত্তরাধিকারের কার্যকারিতার দৃ concrete় উদাহরণ!

যদি আপনি নির্দিষ্টভাবে শ্রেণীর উত্তরাধিকার বলতে চাচ্ছেন তবে এখন আপনি ট্যাক্সনোমির জগতে রয়েছেন এবং এগুলি ব্যবহার করে সিস্টেমের লক্ষ্য অনুসারে এগুলি পৃথকভাবে পরিবর্তিত হবে। প্রাণী / স্তন্যপায়ী প্রাণীর উদাহরণ জীববিজ্ঞান থেকে একটি সাধারণ এবং আশাবাদী পরিচিত টেকনোমি ব্যবহার করে, তবে এটি (যেমন আপনি উল্লেখ করেছেন) বেশিরভাগ প্রোগ্রামিং সমস্যার জন্য প্রায় অকেজো।

সুতরাং সর্বজনীন কিছু চেষ্টা করুন: একটি প্রোগ্রামের ধারণা। প্রতিটি প্রোগ্রাম শুরু হয়, রান করে এবং শেষ হয়। প্রতিটি প্রোগ্রামের একটি নাম এবং commandচ্ছিক কমান্ড-লাইন পরামিতি রয়েছে। সুতরাং একটি বেস প্রোগ্রাম শ্রেণি কার্যকর হবে, কার্যকর করা শুরু করতে, কমান্ড-লাইন আর্গুমেন্টগুলি ধরে ফেলতে এবং প্রক্রিয়া করার জন্য, মূল যুক্তি চালাতে এবং নিখুঁতভাবে বন্ধ করে দেওয়া।

এ কারণেই এতগুলি অবজেক্ট-ভিত্তিক প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি একটি প্রোগ্রাম ক্লাস, বা এমন কিছু যা প্রোগ্রাম শ্রেণীর মতো আচরণ করে provide


তো, আপনি এমন একটি প্রোগ্রাম প্রোগ্রাম করেন যার এতে অনেকগুলি প্রোগ্রাম রয়েছে? :) আমার অভিজ্ঞতায় প্রোগ্রামাম অবজেক্টস প্রায় সর্বদা সিঙ্গেলন যার কোনও উত্তরাধিকার নেই, তাই ইমো সেগুলি সেরা উদাহরণ নয়।
কেপলা

@ কেপ্পলা: আপনি কি কখনও জাভা বা। নেট ব্যবহার করেছেন? .NET এর একটি সুস্পষ্ট প্রোগ্রাম ক্লাস রয়েছে, জাভা অন্তর্ভুক্ত। তারা সিঙ্গেলন নয়
স্টিভেন এ। লো

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

@ কেপ্পলা: জাভার স্ট্যাটিক অকার্যকর মূলটি এন্ট্রি ক্লাসটিকে প্রোগ্রামের প্রতিনিধিত্ব করে। আপনার প্রোগ্রামটি পরিচালনা করে এমন প্রতিটি ব্যবহারকারী এটির একটি নতুন উদাহরণ তৈরি করে। এই মুহুর্তে আমার কাছে গুগল ক্রোম চলার তিনটি উদাহরণ, চারটি ওয়ার্ড ডকুমেন্ট, তিনটি নোটপ্যাড এবং দুটি উইন্ডোজ এক্সপ্লোরার রয়েছে। যদি তারা সবাই সিঙ্গেলন হত তবে আমি কখনই এটি করতে পারব না।
স্টিভেন এ লো।

1
আমি মনে করি আপনি সংজ্ঞাটি কিছুটা প্রসারিত করছেন। class Programm { public static void main(String[] args) { system.out.println('hello world'); }}একটি ন্যূনতম জাভা প্রোগ্রাম। আমি যখন এটি কল করি তখন প্রোগ্রামের কোনও উদাহরণ নেই। প্রোগ্রাম কোনও কিছু থেকে উত্তরাধিকারী হয় না। আমি যখন 3 টি প্রক্রিয়া শুরু করি (যেমন আপনি ক্রোম দিয়ে করেন) তখন 3 টি প্রোগ্রাম থাকতে পারে তবে তাদের মেমরির পৃথক ক্ষেত্রে এখনও একটি মাত্র প্রোগ্রাম আছে। ইমো, সিঙ্গলটন 'মেশিন প্রতি নয়, প্রতি প্রক্রিয়াতে কেবলমাত্র একটি উদাহরণ' বোঝায়। যদি তা হয় তবে সিলেটলেট তৈরি করা অসম্ভব, কোনও কিছুই আপনাকে কোনও কোড দুবার চালানো থেকে বিরত রাখে না।
কেপলা

3

আমি কর্মস্থলে ক্যামেরা নিয়ে কাজ করছি। আমাদের কাছে এমন ডিভাইস রয়েছে যা বিভিন্ন মডেলের সাথে সংযুক্ত থাকে, তাই আমাদের কাছে একটি বিমূর্ত "ক্যামেরা ক্লাস" রয়েছে এবং প্রতিটি ক্যামেরা সেই শ্রেণীর বংশগতভাবে সেই ক্যামেরার নির্দিষ্ট কার্যকারিতা সমর্থন করে। এটি একটি বাস্তব বিশ্বের উদাহরণ এবং বুঝতে অসুবিধা নয়।


2
আপনার যদি এটি থাকে তবে এটি ভেঙে যেতে পারে, উদাহরণস্বরূপ এমন একটি মডেল যা উভয় Cameraএবং ক উভয়ই Phone(যেমনটি আমরা এখন আমাদের পকেটে করি)। এটি কোন বেস শ্রেণীর হতে হবে? বা এটি কেবল উভয় ICameraএবং IPhoneইন্টারফেস বাস্তবায়ন করা উচিত নয় ? (হা হা)
স্কট হুইটলক

2
@ স্কট: আপনি আইফোন ইন্টারফেস বাস্তবায়ন করতে পারবেন না, বা আপনি অ্যাপল দ্বারা মামলা করবেন।
ম্যাসন হুইলারের

3

রসায়ন উপাদানগুলির উদাহরণ

এটি আমার মস্তিষ্ক থেকে বেরিয়ে আসা আরও একটি উদাহরণ:

ক্লাস এলিমেন্ট_
{
    ডাবল অ্যাটমিক ওয়েট; // উপাদানটির পারমাণবিক ওজন
    ডাবল পারমাণবিক সংখ্যা; // উপাদানটির পারমাণবিক সংখ্যা
    স্ট্রিং প্রোপার্টি; // উপাদান বৈশিষ্ট্য
    // অন্যরা, যদি থাকে
}


ক্লাস আইসোটোপ এলিমেন্ট_ // প্রসারিত করে সেখানে এলিমেন্টের আইসোটোপ থাকতে পারে
{
    ডাবল হাফ লাইফ;
   // অন্য কোন যদি

}

2
যদিও পারমাণবিক সংখ্যাটি (উচিত?) সম্ভবত পূর্ণসংখ্যা হতে পারে ...
অ্যান্ড্রু

আমি এর জন্য উত্তরাধিকার ব্যবহার করব না। isotopeএকটি বিশেষ ক্ষেত্রে নয় Elemenet। আমি বরং একটি Elementসম্পত্তি আছে Isotope
কোডসইনচাউস

2

বাস্তব-বিশ্বের উদাহরণগুলি প্রায়শই এটি ভুল হয়ে যায় কারণ তারা উদাহরণ দেয় যেখানে সর্বদা দুজনেরই কিছু হওয়ার সম্ভাবনা রয়েছে TypeAএবং TypeBঅনেক ভাষার একক উত্তরাধিকার শ্রেণিবিন্যাস এটির অনুমতি দেয় না।

আমি যত বেশি প্রোগ্রাম করি আমি উত্তরাধিকার থেকে দূরে থাকি get

এমনকি "উত্তরাধিকারী" শব্দটি এখানে ভুলভাবে ব্যবহৃত হয়েছে। উদাহরণস্বরূপ, আপনি আপনার পিতার বৈশিষ্ট্যের প্রায় 50% এবং আপনার মায়ের বৈশিষ্ট্যের 50% উত্তরাধিকারী। সত্যিই আপনার ডিএনএ আপনার পিতার অর্ধেক ডিএনএ এবং অর্ধেক আপনার মায়ের ডিএনএর সংমিশ্রণ। এর কারণ জীববিজ্ঞান আসলে উত্তরাধিকারের তুলনায় রচনাকে সমর্থন করে এবং আপনারও উচিত।

কেবল ইন্টারফেস বাস্তবায়ন করা বা আরও ভাল, "হাঁসের টাইপিং", পাশাপাশি নির্ভরতা ইনজেকশন, এমন ব্যক্তিদেরকে শেখানো যা আরও বেশি ভাল বস্তু-ওরিয়েন্টেড প্রোগ্রামিংয়ে নতুন।


1

আমি কেবল তাদের বাস্তব জীবনের উদাহরণ দেখাব। উদাহরণস্বরূপ, বেশিরভাগ ইউআই ফ্রেমওয়ার্কগুলিতে আপনি নিজের তৈরি করতে কোনও ধরণের "ডায়ালগ" বা "উইন্ডো" বা "নিয়ন্ত্রণ" শ্রেণি থেকে উদ্ভূত হন।


1

বাছাইয়ের ক্ষেত্রে তুলনামূলক কার্যকারিতাটি ভাল উদাহরণ:

template<class T>
class CompareInterface {
public:
   virtual bool Compare(T t1, T t2) const=0;
};
class FloatCompare : public CompareInterface<float> { };
class CompareImplementation : public FloatCompare {
public:
   bool Compare(float t1, float t2) const { return t1<t2; }
};
template<class T>
void Sort(T*array, int size, CompareInterface<T> &compare);

একমাত্র সমস্যা নবাবিরা প্রায়শই ভাবেন যে ভাল কোডের চেয়ে পারফরম্যান্স আরও গুরুত্বপূর্ণ ...


0

আমার আসল বিশ্বের উদাহরণটি একটি বাহন:

public class Vehicle
{
    public Vehicle(int doors, int wheels)
    {
        // I describe things that should be
        // established and "unchangeable" 
        // when the class is first "made"
        NumberOfDoors = doors;
        NumberOfWheels = wheels;
    }

    public void RollWindowsUp()
    {
        WindowsUp = true;
    }

    // I cover modifiers on properties to show
    // how to protect certain things from being
    // overridden
    public int NumberOfDoors { get; private set; }
    public int NumberOfWheels { get; private set; }

    public string Color { get; set; }
    public bool WindowsUp { get; set; }
    public int Speed { get; set; }
}

public class Car : Vehicle
{
    public Car : base(4, 4)
    {

    }
}

public class SemiTruck : Vehicle
{
    public SemiTruck : base(2, 18)
    {

    }
}

এই উদাহরণটি আপনার পছন্দ মতো বিশদ পেতে পারে এবং আপনি যে কোনও সংশোধনকারীকে শেখাতে চান তার ব্যবহার ব্যাখ্যা করতে যানবাহনের সাথে সংযুক্ত সমস্ত ধরণের সম্পত্তি রয়েছে।


2
উদাহরণস্বরূপ যানবাহন ব্যবহার করা আমি সর্বদা ঘৃণা করি , কারণ কোডটি উন্নত করার জন্য উত্তরাধিকার কীভাবে ব্যবহার করা যেতে পারে তা বোঝার কোনও নতুন প্রোগ্রামার এটি পায় না। যানবাহনগুলি এমন জটিল মেশিন যা নন-প্রোগ্রামারদের মনে প্রচুর নন-অ্যাবস্ট্রাক্ট ধারণাগুলি মনে রাখে। কোডটিতে এটি বর্ণনা করার চেষ্টা করা গড় নবাগত বিশ্বাস করে যে উদাহরণ থেকে অনেকগুলি বিবরণ বাকি রয়েছে এবং এই অনুভূতি দেয় যে তারা কোনও কাজ পাওয়ার কাছাকাছি নেই। আমি এটি অভিজ্ঞতা থেকে বলি, যখন কেউ আমাকে বোঝানোর জন্য যানবাহন ব্যবহার করার চেষ্টা করেছিল ঠিক তখনই আমি অনুভব করেছি।
রিওয়ালক

@ স্টারগাজার 12১২: আমি মূলত যানবাহন ব্যবহার করি কারণ এগুলি আপনার পছন্দ মতো জটিল বা সাধারণ হতে পারে। আমি তার ছাত্রের স্তর নির্ধারণের জন্য এটি প্রশিক্ষকের রায়তে রেখেছি। আমি আমার স্ত্রীর (যিনি শূন্য প্রোগ্রামিংয়ের অভিজ্ঞতা আছে) সাধারণ বুনিয়াদি বর্ণনা করে গাড়ির সাধারণ বৈশিষ্ট্যগুলি ব্যবহার করে বুনিয়াদি OOP ব্যাখ্যা করেছি। সমস্ত যানবাহনের দরজা রয়েছে, সমস্ত গাড়ির চাকা রয়েছে ইত্যাদি etc. বস্তুর উদাহরণটি খারাপ পাঠ পরিকল্পনার জন্য দোষ দেওয়া যায় না।
জোয়েল ইথারটন

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

@ স্টারগাজের 12১২: আমি আপনার প্রাথমিক অক্ষমতা পাঠ পরিকল্পনার ভিত্তিতে উত্তরাধিকার বুঝতে অক্ষম করব। আমি যে জুনিয়রদের সাথে কাজ করি তাদের উত্তরাধিকার ব্যাখ্যা করতে আমি যানবাহনও ব্যবহার করেছি এবং ধারণাটি আসার ক্ষেত্রে আমার কখনও সমস্যা হয়নি। আমার মতে, যদি পাঠ পরিকল্পনাটি পুঙ্খানুপুঙ্খভাবে এবং যথাযথভাবে নির্মিত হয় তবে কোনও গাড়ির বিষয় সম্পূর্ণ এবং ব্যবহারিক উভয়ই। ইন্টারনেটে 1 জন এলোমেলো লোক যে ওওপি শিখিয়েছে 30 বা ততোধিক ইন্টার্ন এবং জুনিয়র দেবের মুখে এটি পরিবর্তন করবে না। আপনি যদি যানটি পছন্দ না করেন তবে ডাউন-ভোট দিয়ে এগিয়ে যান।
জোয়েল ইথারটন

আপনার
ইচ্ছামতো

0

এই অ-স্তন্যপায়ী, পাখিবিহীন, মাছেহীন উদাহরণগুলি সাহায্য করতে পারে:

public abstract class Person {

    /* this contains thing all persons have, like name, gender, home addr, etc. */

    public Object getHomeAddr() { ... }

    public Person getName() { ... }

}

public class Employee extends Person{

    /* It adds things like date of contract, salary, position, etc */

    public Object getAccount() { ... }

}

public abstract class Patient extends Person {
    /* It adds things like medical history, etc */
}

তারপর

public static void main(String[] args) {

    /* you can send Xmas cards to patients and employees home addresses */

    List<Person> employeesAndPatients = Factory.getListOfEmployeesAndPatients();

    for (Person p: employeesAndPatients){
        sendXmasCard(p.getName(),p.getHomeAddr());
    }

    /* or you can proccess payment to employees */

    List<Employee> employees = Factory.getListOfEmployees();

    for (Employee e: employees){
        proccessPayment(e.getName(),e.getAccount());
    }       

}

দ্রষ্টব্য: কেবল গোপন কথাটি বলবেন না: ব্যক্তি স্তন্যপায়ী প্রসারিত করে।


1
আপনার কর্মচারীদের একজনও একজন রোগী না হওয়া পর্যন্ত কাজ করে।
স্কট হুইটলক

এই ক্ষেত্রে, আমি মনে করি যে রোগী এবং কর্মচারীকে বিমূর্ত শ্রেণির পরিবর্তে ইন্টারফেস হিসাবে ঘোষণা করা আরও বোধগম্য। এটি আপনাকে একাধিক ইন্টারফেস প্রয়োগ করার জন্য স্বচ্ছতা দেয়।
জিন কিম

@ জিনকিম - আমি সম্পূর্ণরূপে একমত, এটি আরও ভাল পদ্ধতির।
স্কট হুইটলক

@ জিনকিম তারা একচেটিয়া নয়। আপনি কোনও নির্দিষ্ট সময়ে কোনও ব্যক্তিকে কর্মচারী বা রোগী হিসাবে আচরণ করেন তবে একই সময় নয় but দুটি ইন্টারফেস ঠিক আছে কিন্তু তারপরে আপনি উভয় প্রয়োগকারী কংক্রিট শ্রেণিকে কী বলে, কর্মচারী? আপনার কত সংমিশ্রণ হবে?
তুলিনস কর্ডোভা

আপনি যা চান কংক্রিট ক্লাস কল করতে পারেন। কোডটি যদি কেবলমাত্র কর্মচারীদের সাথে ডিল করার প্রত্যাশা করে তবে আপনি রেফারেন্সটিকে একজন কর্মী হিসাবে ঘোষণা করেন। (যেমন কর্মচারী কর্মচারী = নতুন ব্যক্তি ();) কোডটি যদি কেবলমাত্র একজন রোগীর সাথে ডিল করার প্রত্যাশা করে তবে আপনি রোগী হিসাবে রেফারেন্সটি ঘোষণা করেন। কদাচিৎ আপনি কংক্রিট বর্গ হিসাবে সরাসরি একটি রেফারেন্স ঘোষণা করতে চান।
জিন কিম

0

বীজগণিতীয় এক্সপ্রেশনগুলির একটি শ্রেণিবিন্যাস সম্পর্কে কীভাবে। উত্তম কারণ এটির উত্তরাধিকার এবং রচনা উভয়ই অন্তর্ভুক্ত রয়েছে:

+--------------------+------------------------+
| Expression         |<------------------+    |
+--------------------+----------+        |    |
| + evaluate(): int  |<---+     |        |    |
+--------------------+    |     |        |    |
          ^               |     |        |    |
          |               |     |        |    |
   +--------------+  +---------------+  +-------------+  ...
   | Constant     |  | Negation      |  | Addition    |
   +--------------+  +---------------+  +-------------+
   | -value: int  |  |               |  |             |
   +--------------+  +---------------+  +-------------+
   | +evaluate()  |  | +evaluate()   |  | +evaluate() |
   | +toString()  |  | +toString()   |  | +toString() |
   +--------------+  +---------------+  +-------------+

   Addition(Constant(5), Negation(Addition(Constant(3),Constant(2))))
   (5 + -(3 + 2)) = 0

কনস্ট্যান্টের মূল অভিব্যক্তি ব্যতীত অন্য সমস্ত এক্সপ্রেশন দুটিই একটি এক্সপ্রেশন এবং এতে এক বা একাধিক এক্সপ্রেশন থাকে।


-1

আমি উদাহরণ হিসাবে পাখি ব্যবহার করব

চিকেন, হাঁস, eগলের মতো

আমি উভয়কেই পাখি, ঠোঁট এবং ডানা রয়েছে তা ব্যাখ্যা করব তবে তাদের বৈশিষ্ট্যগুলি পৃথক।

মুরগি উড়তে পারে না, সাঁতার কাটতে পারে না, কৃমি খেতে পারে, শস্য খেতে পারে

হাঁস উড়তে পারে না, সাঁতার কাটতে পারে, শস্য খেতে পারে, কীটপতঙ্গ খেতে পারে না

Agগল উড়তে পারে, সাঁতার কাটতে পারে না, কৃমি খেতে পারে, শস্য খেতে পারে না


4
আমি একবার পড়েছি যে রচনা এবং ইন্টারফেসগুলি সম্ভবত এই ধরণের ধারণাটি যেমন উড়ে, সাঁতার কাটা ইত্যাদি বোঝানোর সর্বোত্তম উপায়
dreza

একটি হাঁস উড়তে পারে না ?!
অ্যাডাম ক্যামেরন

-3

আপনার সাধারণ রেল-ক্লোনটি অনেকগুলি ব্যবহারিক উদাহরণ সরবরাহ করে : আপনার (বিমূর্ত) বেস মডেল শ্রেণি রয়েছে, যা সমস্ত ডেটা ম্যানিপুলেশনকে আবদ্ধ করে এবং আপনার কাছে বেস কন্ট্রোলার শ্রেণি থাকে, যা সমস্ত এইচটিটিপি-যোগাযোগকে আবদ্ধ করে।


এই উত্তরটি কেন খারাপ তা বিশদ দেওয়ার জন্য যত্ন নিন?
কেপলা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.