অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে মূলটির দায়বদ্ধতাগুলি কী কী?


10

আমি ওরিয়েন্টেড প্রোগ্রামিংয়ের জন্য নতুন এবং আমি বুঝতে পারি না মূলটির উদ্দেশ্য কী।

হ্যাঁ, আমি পড়েছি যে এটি প্রোগ্রামের "এন্ট্রি পয়েন্ট" তবে যা আমি বুঝতে পারছি না সেটি প্রধান কী হওয়া উচিত? এবং এর দায়িত্বগুলি কী কী?

এটি ঘটতে পারে যে মূল লিখিত কিছু অন্য কোনও বস্তুতে আবদ্ধ হতে পারে, তবে আপনার এই পদ্ধতির কতটা ব্যবহার করা উচিত?

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

আমার প্রশ্নটি উত্থাপিত হয়েছিল যে ইন্টারফেসটি অন্য কোনও বস্তুতে আবদ্ধ হতে পারে এবং সেই দায়িত্বটি মূলটিকে না দেয়।

    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);

    System.out.println("What type of animal do you want to create? \n dog cat");
    String type = input.nextLine();
    if ( Objects.equals(type, "dog")){
        System.out.println("Enter the animal's age: ");
        int age = input.nextInt(); // Scans the next token of the input as an int.
        System.out.println("Enter the animal's name: ");
        String name = input.next();
        Dog first = new Dog(name, age);
    }
    else if ( Objects.equals(type, "cat")) {
        System.out.println("Enter the animal's age: ");
        int age = input.nextInt(); // Scans the next token of the input as an int.
        System.out.println("Enter the animal's name: ");
        String name = input.next();
        Cat first = new Cat(name, age);
    }

    else{
        System.out.println("Error: the specified type does not exist.");
    }
    System.out.println("The number of animals is:" + numberOfAnimals);
}

2
mainফাংশন গলি থেকে একটি ধারণা নয়।
অ্যান্ড্রেস এফ

উত্তর:


10

প্রথমত, আপনার উদাহরণ কোনও অবজেক্ট-ভিত্তিক প্রোগ্রাম নয়। এটি একটি প্রক্রিয়াভিত্তিক প্রোগ্রাম যা বস্তুগুলিতে ডেটা সঞ্চয় করতে ঘটে, কারণ এটি সেই সরঞ্জাম যা আপনার ভাষা (জাভা?) কাঠামোগত ডেটার জন্য সরবরাহ করে।

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

সত্যিকারের অবজেক্ট-ভিত্তিক প্রোগ্রামে আমি যে সংজ্ঞাটি ব্যবহার করি তা অনুসারে, আপনার কাছে স্বতন্ত্র অবজেক্টগুলি একে অপরের সাথে ইন্টারঅ্যাক্ট করছে। mainফাংশনের ভূমিকা হ'ল প্রাথমিক অবজেক্ট তৈরি করা এবং সেগুলি একসাথে তারের করা।

একটি সাধারণ উদাহরণ হিসাবে, একটি ওয়েব-অ্যাপ্লিকেশন বিবেচনা করুন যা একটি ডাটাবেসের শীর্ষে নির্মিত। এই অ্যাপ্লিকেশনটি বিভিন্ন উপায়ে বিভক্ত হতে পারে, তবে এর মধ্যে একটি এখানে রয়েছে: একটি Networkingবস্তু যা সংযোগ গ্রহণ করে, এইচটিটিপি অনুরোধটিকে বিশ্লেষণ করে এবং একটি উপযুক্ত Controllerঅবজেক্টে প্রেরণ করে , যা কোনও Databaseবস্তুর সাথে ইন্টারেক্ট করে এবং প্রতিক্রিয়া তৈরি করে (যদি আপনি চান) Viewপ্রতিটি নিয়ামকের সাথে এক বা একাধিক অবজেক্ট সংযুক্ত করতে , এটি করতে নির্দ্বিধায়)। Threadpoolএক্সিকিউশনের পৃথক স্ট্রিম সরবরাহ করতে আপনি কোনও বস্তু যুক্ত করতে পারেন ।

mainএই অ্যাপ্লিকেশনটির ভূমিকা হতে পারে:

  1. Databaseঅবজেক্টটি তৈরি করুন
  2. সমস্ত Controllerবস্তু তৈরি করুন এবং Databaseবস্তুর সাথে তাদের যুক্ত করুন
  3. Networkঅবজেক্টটি তৈরি করুন এবং এর সাথে সমস্ত Controllerবস্তু যুক্ত করুন ।
  4. Networkঅবজেক্টটি চলমান শুরু করুন (যার Threadpoolমধ্যে এটি তৈরি করতে এবং তারে তারে জড়িত থাকতে পারে Network)।

এই সেটআপ পদক্ষেপগুলিতে স্পষ্টভাবে নির্দিষ্ট করা যেতে পারে mainবা এগুলি অন্য কোনও বিষয় দ্বারা পরিচালিত হতে পারে। উদাহরণস্বরূপ, একটি সাধারণ স্প্রিং অ্যাপ্লিকেশনে, mainফাংশনটি যা করে তা হ'ল অ্যাপ্লিকেশন প্রসঙ্গ তৈরি করে (একক বস্তু)। এটি সেই অ্যাপ্লিকেশন প্রসঙ্গে কনফিগারেশনে উল্লিখিত সমস্ত বস্তুর তৈরি এবং তারের ট্রিগার করে।


1
এমন ভাষার জন্য উদাহরণস্বরূপ দেখুন যা ওওকে এত গুরুতর করে তোলে যে কোনও mainপদ্ধতির মতো কিছু উপস্থিতও হতে পারে না।
Jörg ডব্লু মিটাগ

1
উত্তম উত্তর, তবে আমি যদি আপনি হতাম তবে আমি নির্ভরতা ইনজেকশনটিও উল্লেখ করতাম।
আর্সেনী মরজেনকো

আমার কোডটি অবজেক্ট ওরিয়েন্টেড না হওয়ার বিষয়ে আপনি কী বোঝাতে চেয়েছি তা আমি দেখতে পাচ্ছি। আমি লক্ষ্য করিনি, তবে বাস্তবে, আমি যে জিনিসগুলি তৈরি করেছি তার কোনও আচরণ নেই। এটিকে "আরও ওও" করার জন্য একটি ধারণা অন্যান্য কিছু অবজেক্ট তৈরি করতে পারে যা আমার কাছে ইতিমধ্যে রয়েছে যা "ব্যবহার" করে, তবে পদ্ধতি ছাড়া বিন্দুমাত্র বিন্দু না থাকাই ভাল কি?
এলিয়া

@ এলিয়া - না, এটি ভাল না। কাঠামোগত ডেটা টাইপ এবং নামকরণের মূল্য রয়েছে (বনাম কেবল এটি একটিতে ফেলে দেওয়া Map)। তবে জাভা এটি করার একমাত্র উপায় সরবরাহ করে (বনাম সি ++, যা স্ট্রাক্ট এবং ক্লাসগুলির মধ্যে পার্থক্য করে)। সুতরাং আচরণ ছাড়াই ক্লাসগুলি সংজ্ঞায়িত করুন, কারণ এটি আপনার প্রোগ্রামটি বোঝা সহজ করে তোলে, তবে স্বীকার করুন যে এটি করা আপনার প্রোগ্রামটিকে "অবজেক্ট-ওরিয়েন্টেড" করে না।
কেডিগ্রিগরি

1

ঠিক আছে, এটা নির্ভর করে। এটিকে দুটি চূড়ান্ত দিকে নিয়ে যান:

  1. সমস্ত কোড লাইন আপনার লাইনে রাখুন main। এটি সংকলন করবে এবং সুন্দরভাবে চলবে। তবে মানুষের জন্য কোডটি হজমযোগ্য হবে না।
  2. কেবলমাত্র একটি একক ফাংশন এতে রেখে mainকল করুন doWhatNeedsToBeDoneএবং শেষ পর্যন্ত একই নিয়মে একই পদ্ধতিতে চালিয়ে যান। এখন আপনার খুব ঝরঝরে রয়েছে mainতবে অবশ্যই যা করা দরকার তা আপনি পান না।

সুতরাং, সত্য মধ্যে কোথাও হয়। mainএকটি পৃষ্ঠার সাথে মানানসই এমন একটি তৈরি করার চেষ্টা করুন , যাতে যে কেউ প্রধান নির্দেশাবলী যা সম্পাদন করা প্রয়োজন তা পেতে পারে। ডান সীমানা পাওয়া কেবল অভিজ্ঞতার বিষয়।

উপরেরটি একটি সাধারণ নিয়ম এবং ওও পাশাপাশি কার্যকরী প্রোগ্রামিংয়ের ক্ষেত্রেও প্রযোজ্য।


1

স্থির মূল পদ্ধতিটি অ-অবজেক্ট ওরিয়েন্টেড ওয়ার্ল্ড থেকে অবজেক্ট অরিয়েন্টেড ওয়ার্ল্ডে স্থানান্তর হিসাবে উপস্থিত রয়েছে exists 80 এর দশকে কমপক্ষে C ++ থেকে এটি এভাবে করা হয়েছে।

স্থিতিশীল পদ্ধতিগুলি মূলত অ-অবজেক্ট ওরিয়েন্টেড পদ্ধতি: সেগুলি পদ্ধতিগত পদ্ধতি হতে পারে; তারা কার্যকর পদ্ধতি হতে পারে। স্ট্যাটিক পদ্ধতির ধারণাটি মূলত অন্যান্য প্রোগ্রামিং প্যারাডিমগুলিতে ওওপি-র পলায়ন।

জাভা, সি #, এবং সি ++ সবাই স্ট্যাটিক মেইনটিকে চিরাচরিত সি-স্টাইল প্রধান থেকে তাদের নিজ নিজ প্রোগ্রামিং ভাষায় রূপান্তর হিসাবে ব্যবহার করেন, যেখান থেকে আপনি এখন ইচ্ছামত অবজেক্টগুলি (বা না) ব্যবহার করতে বেছে নিতে পারেন।

এই ভাষাগুলিতে স্থির প্রধানের পরিবর্তে একটি প্রাথমিক উদাহরণ বস্তুর প্রয়োজন হতে পারে, তবে পরিবর্তে স্থিতিশীল মূল পদ্ধতির পছন্দ করেছেন। দৃষ্টান্তের বিকল্পের বিকল্পটি ব্যবহার করে, mainক্লাসটি শ্রেণীর একটি উপক্লাস হবে threadএবং ভাষা রানটাইম ক্লাসের একটি প্রাথমিক অবজেক্ট দৃষ্টিকোণকে সাজিয়ে তোলে mainএবং তারপরে তার runপদ্ধতি পদ্ধতিটি শুরু করে, অতিরিক্ত যেভাবে থ্রেড চালু করা / তৈরি করা হয় সেভাবেই।

তবে এটি historতিহাসিকভাবে পরিবর্তে অন্যভাবে করা হয়েছে: কিছু অংশে, এই ভাষাগুলি কেবল অনুসরণ করছে এবং কিছু অংশ, কারণ সেই দিনগুলিতে থ্রেডিং অগ্রাধিকার ছিল না তাই তারা সহজ স্ট্যাটিক পদ্ধতির ব্যবহার করেছিল।

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


-1

মূল () পদ্ধতিটি প্রোগ্রামটি চালাতে ব্যবহৃত হয়

দায়িত্ব - একবার আপনি আপনার প্রোগ্রাম চালানো শুরু করার পরে, মূল () পদ্ধতিটি আপনার প্রোগ্রামটি চালানো শুরু করার জন্য অন্যান্য পদ্ধতিগুলিকে কল করে।

এটি একটি সাধারণ উত্তর যা আমাকে বুঝতে সহায়তা করে যে মেইন () পদ্ধতির কী দায়িত্ব।

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