Method Overloading এবং Method Overriding এর মধ্যকার পার্থক্য নিম্নরূপ:
|
Method
Overloading |
Method
Overriding |
|
Method
overloading হচ্ছে কম্পাইল টাইম পলিমরফিজম। |
Method
overriding হচ্ছে রান টাইম পলিমরফিজম। |
|
একই ক্লাসের মধ্যে হয়। |
দুইটি ক্লাসের মধ্যে হয় inheritance সম্পর্কের মাধ্যমে। |
|
Method
overloading এ
inheritance ব্যবহার হতেও পারে নাও হতে পারে। |
Method
overriding এ
inheritance অবশ্যই ব্যবহার হবে। |
|
Method
overloading এ
দুই মেথডের নাম একই কিন্তু প্যারামিটারগুলোর সংখ্যা, টাইপ আলাদা হয়। |
Method
overriding এ
দুই মেথডের নাম এবং প্যারামিটারগুলোর সংখ্যা, টাইপ একই হয়। |
|
অভারলোডেড মেথডে স্ট্যাটিক বাইন্ডিং ব্যবহার করা হয়। |
অভারিডেড মেথডে ডায়নামিক বাইন্ডিং ব্যবহার করা হয়। |
|
কম্পাইল টাইম পলিমরফিজম এর
জন্য এর কার্যকারিতা খুবই কম। |
এর
কার্যকারিতা তুলনামূলক বেশী। |
|
প্রাইভেট এবং ফাইনাল মেথড overloaded করা সম্ভব। |
প্রাইভেট এবং ফাইনাল মেথড overloaded করা সম্ভব নয়। |
নোটঃ শুধু পার্থক্য আসলে কোড দেয়া লাগবেনা। কিন্তু উদাহরণ লিখতে বলা হলে তখন কোড লিখতে হবে।
Polymorphism
•
এটি একটি অবজেক্টের বিভিন্ন রূপ ধারণ করার ক্ষমতা।
•
Benefit:
কোডের Flexibility, Extensibility এবং সংক্ষিপ্ততা নিশ্চিত করে।
•
এটি একটি সিঙ্গেল ইন্টারফেসকে বিভিন্ন ফর্মে রিপ্রেজেন্ট করার সুযোগ দেয়।
Note: Poly অর্থ অনেক আর Morph অর্থ
রূপ। একই জিনিসকে স্থানভেদে বিভিন্ন রূপে ব্যবহার করার পদ্ধতিই মূলত Polymorphism।
Polymorphism এর প্রকারভেদ:
1.
Compile-time Polymorphism
✓
একে Static Binding বা Early Binding বলা হয়।
✓
এটি Function/Method Overloading-এর মাধ্যমে অর্জিত হয়।
✓
এক্ষেত্রে ফাংশনের নাম একই থাকে, কিন্তু parameters ভিন্ন হয়।
2.
Runtime Polymorphism
✓
একে Dynamic Binding বা Late Binding বলা হয়।
✓
এটি Function/Method Overriding-এর মাধ্যমে অর্জিত হয়।
✓
এটি মূলত ইনহেরিটেন্সের ক্ষেত্রে দেখা যায় যেখানে চাইল্ড ক্লাস প্যারেন্ট ক্লাসের মেথডকে নতুন রূপ দেয়।
Runtime এবং Compile time polymorphism
এর মধ্যকার পার্থক্য
|
কম্পাইল টাইম পলিমরফিজম |
রান টাইম পলিমরফিজম |
|
কম্পাইল টাইম পলিমরফিজম কম্পাইলার দ্বারা সমাধান করা হয়। |
রান টাইম পলিমরফিজম কম্পাইলার দ্বারা সমাধান করা হয় না। |
|
এটা স্ট্যাটিক বাইন্ডিং, আর্লি বাইন্ডিং এবং ওভারলোডিং নামেও পরিচিত। |
এটা ডাইনামিক বাইন্ডিং, লেট বাইন্ডিং এবং ওভাররাইডিং নামেও পরিচিত। |
|
এটা ফাংশন ওভারলোডিং এবং অপারেটর ওভারলোডিং দ্বারা অর্জিত হয়। |
এটা ভার্চুয়াল ফাংশন এবং পয়েন্টার দ্বারা অর্জিত হয়। |
|
এটা দ্রুত কার্যকরী। |
এটা ধীর কার্যকরী। |
|
কম্পাইল টাইম পলিমরফিজম কম
ফ্লেক্সিবল। |
রান টাইম পলিমরফিজম বেশি ফ্লেক্সিবল। |
|
ইনহেরিটেন্স জড়িত নয়। |
ইনহেরিটেন্স জড়িত। |
Inheritance
একটি নতুন ক্লাস ইতোমধ্যে বিদ্যমান অন্য একটি ক্লাস থেকে ফিল্ড এবং মেথড ব্যবহার করে তাকে Inheritance বলা হয়। এটা কোড পুনঃব্যবহার করার সুযোগ দেয়।
ইনহেরিটেন্সের মূল পয়েন্টসমূহ
•
বেস ক্লাস (সুপারক্লাস)- যে ক্লাসের গুণাবলী এবং আচরণ উত্তরাধিকার সূত্রে পাওয়া হয়, তাকে বেস ক্লাস বা সুপারক্লাস বলা হয়।
•
ড্রাইভ ক্লাস (সাবক্লাস) - যে
ক্লাস অন্য ক্লাস থেকে উত্তরাধিকার সূত্রে পায়, তাকে ডেরাইভড ক্লাস বা সাবক্লাস বলা হয়।
ইনহেরিটেন্সের প্রকারভেদ
1.
Single Inheritance: যখন একটি সাব-ক্লাস কেবল একটি সুপার-ক্লাস থেকে বৈশিষ্ট্য গ্রহণ করে, তাকে সিঙ্গেল ইনহেরিটেন্স বলে।
2.
Multilevel Inheritance: যখন একটি ক্লাস অন্য একটি চাইল্ড ক্লাস থেকে বৈশিষ্ট্য ইনহেরিট করে, অর্থাৎ এটি একটি চেইন বা শিকলের মতো কাজ করে।
3.
Multiple Inheritance: যখন একটি চাইল্ড ক্লাস একাধিক প্যারেন্ট ক্লাস থেকে বৈশিষ্ট্য গ্রহণ করে। জাভা এবং সি-শার্প (C#) সরাসরি
এটি সাপোর্ট করে না (ইন্টারফেসের মাধ্যমে করতে হয়), তবে পাইথন বা সি++ এ এটি ব্যবহার করা যায়।
4.
Hierarchical Inheritance: যখন একটি মাত্র প্যারেন্ট ক্লাস থেকে একাধিক চাইল্ড ক্লাস তৈরি হয়।
5.
Hybrid Inheritance: উপরের একাধিক ইনহেরিটেন্সের সংমিশ্রণকে হাইব্রিড ইনহেরিটেন্স বলে।
ইনহেরিটেন্সের ডায়াগ্রাম (টেক্সট আকারে):
|
Single
Inheritance |
Multilevel
Inheritance |
Hierarchical
Inheritance |
Multiple
/ Hybrid Inheritance |
|
ClassA ↓ ClassB |
ClassA ↓ ClassB
↓ ClassC |
ClassA ↙
↘ ClassB ClassC |
Multiple: ClassA +
ClassB ↓ ClassC Hybrid: ClassA ↙ ↘
ClassB ClassC ↘ ↙
ClassD |
ইনহেরিটেন্সের সুবিধাসমূহ
•
কোড পুনঃব্যবহারযোগ্যতা বাড়ায়
•
এর মাধ্যমে পলিমরফিজম এচিভ করা যায়
•
ওভাররাইডিং এচিভ করা যায়
ইনহেরিটেন্সের অসুবিধাসমূহ
•
এটা ক্লাসগুলোর মধ্যে নির্ভরতা তৈরি করতে পারে।
•
কোডের পারফরম্যান্স কমায়
•
এনক্যাপসুলেশন ভায়োলেশন
Written Question
1.
Overloading এবং overriding কি? এর মধ্যে পার্থক্য লিখুন? মার্ক -3/5 (১৫তম)
2.
Function Overloading কী? উদাহরণসহ ব্যাখ্যা করুন। মার্ক ৫ (১৮তম)
3.
Inheritance ব্যাখ্যা করুন। এর সুবিধাসমূহ কি কি? মার্ক - 3 (১৭তম)
4.
Polymorphism কি? উদাহরণসহ বিভিন্ন প্রকার polymorphism লিখুন? মার্ক - 5
5.
Runtime & Compile time Polymorphism এর মধ্যকার পার্থক্য লিখুন?
Constructor and Destructor
Constructors
✓
Constructor হলো একটি বিশেষ ধরনের মেথড যা কোনো ক্লাসের অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়।
✓
এর প্রধান উদ্দেশ্য হলো অবজেক্টের state (ইনস্ট্যান্স
ভেরিয়েবল) ইনিশিয়ালাইজ বা শুরু করা।
✓
একটি constructor-এর নাম অবশ্যই সেই ক্লাসের নামের সাথে হুবহু এক হতে হবে।
✓
এর কোনো return type থাকে না, এমনকি void-ও নয়।
✓
Constructor সাব-ক্লাস দ্বারা ইনহেরিট (Inherited) হয় না।
✓
একটি সাব-ক্লাস super() কিওয়ার্ড
ব্যবহার করে তার সুপার-ক্লাসের কনস্ট্রাক্টরকে কল করতে পারে।
✓
একটি ক্লাসে ভিন্ন ভিন্ন প্যারামিটার লিস্টসহ একাধিক কনস্ট্রাক্টর থাকতে পারে, যাকে constructor overloading বলা হয়।
Destructors
✓
Destructor হলো একটি বিশেষ মেথড যা কোনো অবজেক্ট ডিলিট হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়।
✓
এর প্রধান উদ্দেশ্য হলো অবজেক্টটি যে রিসোর্সগুলো (Memory, Files) ধরে রেখেছিল সেগুলো মুক্ত করে দেওয়া।
✓
C++ এ ডিস্ট্রাক্টরের নাম ক্লাসের নামের মতোই হয়, তবে তার আগে একটি টিল্ড (~) চিহ্ন
থাকে।
✓
Java-তে ডিস্ট্রাক্টরের সরাসরি বা এক্সপ্লিসিট ব্যবহার নেই।
✓
Return Type: এর কোনো রিটার্ন টাইপ নেই এবং এটি কোনো প্যারামিটার গ্রহণ করে না।
✓
যখন কোনো অবজেক্টের স্কোপ শেষ হয়ে যায় বা সেটি ডিলিট করা হয়, তখন ডিস্ট্রাক্টর নিজে থেকেই কল হয়।
✓
জাভা মেমোরি ম্যানেজমেন্টের জন্য garbage collector ব্যবহার করে, যা অব্যবহৃত অবজেক্টগুলোকে স্বয়ংক্রিয়ভাবে ধ্বংস করে মেমোরি খালি করে।
কোডের উদাহরণ
#include <iostream>
using namespace std;
class Library {
public:
Library() { // Constructor তৈরি
cout <<
"ICT Wizard Books Handed over" << endl;
}
~Library() {
cout <<
"Book Backed" << endl;
} // Destructor তৈরি
};
int main() {
Library myBook;
cout <<
"read end" << endl;
return 0; //
Destructor কল হলো
}
সহজ বাংলায়ঃ
Constructor - যখন আপনি লাইব্রেরি থেকে বইটা হাতে নিলেন, তখন লাইব্রেরিয়ান আপনার নাম খাতায় লিখলেন এবং বইটা পড়ার জন্য প্রস্তুত করে দিলেন। এটাই হলো Constructor। এটি অবজেক্ট তৈরির সাথে সাথেই সব কাজ গুছিয়ে দেয়।
Destructor - আপনার পড়া শেষ হয়ে গেলে আপনি যখন বইটা ফেরত দিতে গেলেন, লাইব্রেরিয়ান খাতা থেকে আপনার নাম কেটে দিলেন এবং বইটা আবার শেলফে তুলে রাখলেন। এটাই হলো Destructor। এটি অবজেক্টের কাজ শেষ হয়ে গেলে সব পরিষ্কার করে ফেলে।
Constructor এর প্রকারভেদ
১. Default Constructor
যে কনস্ট্রাকটরের কোনো প্যারামিটার বা আর্গুমেন্ট থাকে না, তাকে ডিফল্ট কনস্ট্রাকটর বলে। যদি কোনো কনস্ট্রাকটর লেখা হয়, তবে কম্পাইলার নিজে থেকেই একটি ডিফল্ট কনস্ট্রাকটর তৈরি করে নেয়।
•
কাজ: এটি ভেরিয়েবলগুলোকে শূন্য (Default) মান দিয়ে শুরু করে।
২. Parameterized Constructor
যে কনস্ট্রাকটরের মাধ্যমে অবজেক্ট তৈরির সময় বাইরে থেকে মান পাঠানো যায়, তাকে প্যারামিটারাইজড কনস্ট্রাকটর বলে।
•
কাজ: এটি বিভিন্ন অবজেক্টকে আলাদা আলাদা মান দিয়ে শুরু করতে সাহায্য করে।
•
উদাহরণ: Student s1("Rahim"); এখানে "Rahim" নামটি প্যারামিটার হিসেবে পাঠানো হচ্ছে।
৩. Copy Constructor
যখন একটি পুরানো অবজেক্টের সব মান ব্যবহার করে একটি নতুন অবজেক্ট তৈরি করা হয়, তখন তাকে কপি কনস্ট্রাকটর বলে।
•
কাজ: এটি একটি অবজেক্টের হুবহু নকল বা কপি তৈরি করতে ব্যবহৃত হয়।
Friend Function
সাধারণত একটি ক্লাসের প্রাইভেট ডেটা অন্য কোনো ফাংশন থেকে সরাসরি দেখা বা ব্যবহার করা যায় না। কিন্তু যদি কোনো ফাংশনকে ওই ক্লাসের Friend ফাংশন
করা হয়, তবে সে সেই ক্লাসের সব Data অ্যাক্সেস
করতে পারে।
সুবিধাসমূহ
•
ফ্রেন্ড ফাংশনকে কোডের যেকোনো স্থানে ডিক্লার করা সম্ভব, যা কোডের flexibility বাড়ায়।
•
ফ্রেন্ড ফাংশনকে কল করার জন্য কোনো অবজেক্ট তৈরি করার প্রয়োজন নেই, যা প্রোগ্রামিংকে সহজ করে।
•
এটা বিভিন্ন ক্লাসের মধ্যে সম্পর্ক তৈরি করতে পারে এবং অতিরিক্ত কার্যকারিতা যোগ করতে পারে।
•
ফ্রেন্ড ফাংশন private এবং
protected মেম্বারদের তথ্য দেখানোর সুযোগ দেয়, যা ক্লাসের তথ্যের অ্যাক্সেস বাড়ায়।
•
এটা প্রোগ্রামকে আরও কার্যকরী করে তোলে।
অসুবিধাসমূহ
•
এটা ক্লাসের নন-পাবলিক সদস্যদের অ্যাক্সেসের মাধ্যমে নিরাপত্তা ঝুঁকি সৃষ্টি করতে পারে।
•
এটা কিছু ক্ষেত্রে কোডের জটিলতা বাড়াতে পারে।
1.
Friend Function কি উহার সুবিধা-অসুবিধাগুলো লিখুন? মার্ক - ৩ (১৬তম, ১৮তম)
2.
উদাহরণ সহ constructors and destructors লিখুন? মার্ক-3
Introductory Programming with C++/JAVA
C++
•
::
(Scope Resolution): Used to define a member function outside of its class or to
access a global variable hidden by a local variable.
•
.
(Member Access): Used to access a member of an object.
•
->
: (Member Pointer) Used to access a member of an object pointed to by a
pointer.
•
<<
(Insertion) and >> (Extraction): Used for input/output operations with
streams (e.g., cout << "Hello";).
•
In
C++, cout is used for output and cin is used for input.
•
Some
of the operators cannot be overloaded.
▪ "."
Member access or dot operator
"? :"
Ternary or conditional operator
"::"
Scope resolution operator
".*"
Pointer to member operator
"sizeof"
The object size operator
"typeid"
Object type operator
Java:
•
Java
is famous for its platform independence Language
•
In
Java, compiling source code into an intermediate format called bytecode
•
bytecode
executed on any machine that has a Java Virtual Machine (JVM)
•
Java
uses automatic memory management through a process called Garbage Collection
•
In
Java, System.out.println() is used for output,
•
Scanner
class is commonly used for user input.
•
Java
is used to develop mobile apps, web apps, desktop apps, games and much more.
•
In
Java, super keyword is used to refer to the parent class of a subclass.
•
Java
also does not support direct multiple inheritance
OOP এর মূল ধারণা ও বৈশিষ্ট্য
ক্লাস ও অবজেক্ট
ওভারলোডিং ও ওভাররাইডিং
কনস্ট্রাক্টর ও ডেস্ট্রাক্টর
Inheritance
ফ্রেন্ড ফাংশন ও নিরাপত্তা
অ্যাবস্ট্রাকশন ও ইনক্যাপসুলেশন
বিবিধ ও থ্রেড
|
নং |
প্রশ্ন |
উত্তর |
|
১৪০ |
OOP
এর পূর্ণরূপ কী? (ক) Object Oriented
Program (খ) Object Oriented
Programming (গ)
Object Oriented Procedure (ঘ) Objective Oriented
Programming |
উত্তরঃ খ |
|
১৪১ |
কোনটি বাস্তব জীবনের ব্লুপ্রিন্ট বা
টেমপ্লেট হিসেবে কাজ করে? (ক) অবজেক্ট (খ)
ক্লাস (গ)
মেথড (ঘ)
ভেরিয়েবল |
উত্তরঃ খ |
|
১৪২ |
অবজেক্ট যখন তৈরি হয়, তখন মেমরিতে কী
ঘটে? (ক) মেমরি ডিলিট হয় (খ)
মেমরি বরাদ্দ হয় (গ)
মেমরি শেয়ার হয় (ঘ)
কিছুই হয় না |
উত্তরঃ খ |
|
১৪৩ |
একটি ক্লাসের Instance কী
বলা হয়? (ক) পলিমরফিজম (খ)
ইনহেরিটেন্স (গ)
অবজেক্ট (ঘ)
ইন্টারফেস |
উত্তরঃ গ |
|
১৪৪ |
ডেটা এবং মেথডকে একত্রে একটি ইউনিটে বা
প্যাকেজে রাখার প্রক্রিয়াকে কী বলে? (ক) অ্যাবস্ট্রাকশন (খ)
ইনক্যাপসুলেশন (গ)
ইনহেরিটেন্স (ঘ)
ওভারলোডিং |
উত্তরঃ খ |
|
১৪৫ |
অপ্রয়োজনীয় জটিলতা লুকিয়ে ব্যবহারকারীর সামনে সহজ ইন্টারফেস রাখাকে কী
বলে? (ক) ইনক্যাপসুলেশন (খ)
অ্যাবস্ট্রাকশন (গ)
পলিমরফিজম (ঘ)
ইনহেরিটেন্স |
উত্তরঃ খ |
|
১৪৬ |
একটি ক্লাস অন্য একটি ক্লাসের বৈশিষ্ট্য গ্রহণ করলে তাকে কী
বলে? (ক) এনক্যাপসুলেশন (খ)
পলিমরফিজম (গ)
ইনহেরিটেন্স (ঘ)
বাইন্ডিং |
উত্তরঃ গ |
|
১৪৭ |
পলিমরফিজম শব্দের অর্থ কী?
(ক) এক রূপ (খ)
বহু রূপ (গ)
রূপহীন (ঘ)
নির্দিষ্ট রূপ |
উত্তরঃ খ |
|
১৪৮ |
নিচের কোনটি ক্লাসের লজিক্যাল রিলেশন প্রকাশ করে? (ক)
অবজেক্ট (খ)
মেথড (গ)
ক্লাস (ঘ)
ডাটা মেম্বার |
উত্তরঃ গ |
|
১৪৯ |
একটি ক্লাসের কয়টি অবজেক্ট থাকতে পারে? (ক)
একটি (খ)
দুটি (গ)
অনেকগুলো (ঘ)
নির্দিষ্ট কোনো সীমা নেই |
উত্তরঃ গ |
|
১৫০ |
ক্লাসের সদস্যদের এক্সেস করার জন্য অবজেক্টের সাথে কোন অপারেটর ব্যবহৃত হয়? (ক)
+ (খ) . (গ) , (ঘ)
& |
উত্তরঃ খ |
|
১৫১ |
ক্লাস এবং অবজেক্টের মধ্যে কোনটি Physical Entity? (ক)
ক্লাস (খ)
অবজেক্ট (গ)
হেডার ফাইল (ঘ)
ফাংশন |
উত্তরঃ খ |
|
১৫২ |
একই ক্লাসে একই নামে একাধিক মেথড কিন্তু প্যারামিটার ভিন্ন হওয়াকে কী
বলে? (ক) মেথড ওভাররাইডিং (খ)
মেথড ওভারলোডিং (গ)
ডাইনামিক বাইন্ডিং (ঘ)
ইনহেরিটেন্স |
উত্তরঃ খ |
|
১৫৩ |
মেথড ওভারলোডিং কোন ধরনের পলিমরফিজম? (ক)
রান-টাইম (খ)
কম্পাইল-টাইম (গ)
লেট-বাইন্ডিং (ঘ)
ডাইনামিক |
উত্তরঃ খ |
|
১৫৪ |
মেথড ওভাররাইডিংয়ের জন্য কোন সম্পর্কটি আবশ্যক? (ক)
এনক্যাপসুলেশন (খ)
ইনহেরিটেন্স (গ)
কম্পোজিশন (ঘ)
অ্যাগ্রিগেশন |
উত্তরঃ খ |
|
১৫৫ |
রান-টাইম পলিমরফিজম অর্জিত হয় কোনটির মাধ্যমে? (ক)
ওভারলোডিং (খ)
ওভাররাইডিং (গ)
ইনলাইন ফাংশন (ঘ)
কনস্ট্রাক্টর |
উত্তরঃ খ |
|
১৫৬ |
ওভারলোডেড মেথডে কোন ধরনের বাইন্ডিং ব্যবহৃত হয়? (ক)
ডাইনামিক বাইন্ডিং (খ)
স্ট্যাটিক বাইন্ডিং (গ)
লেট বাইন্ডিং (ঘ)
রান-টাইম বাইন্ডিং |
উত্তরঃ খ |
|
১৫৭ |
ক্লাসের নামের সাথে মিল থাকা বিশেষ ফাংশনকে কী
বলে? (ক) ডেস্ট্রাক্টর (খ)
কনস্ট্রাক্টর (গ)
স্ট্যাটিক ফাংশন (ঘ)
ফ্রেন্ড ফাংশন |
উত্তরঃ খ |
|
১৫৮ |
অবজেক্ট যখন মেমরি থেকে মুছে ফেলা হয় তখন কোনটি কল
হয়? (ক) কনস্ট্রাক্টর (খ)
ডেস্ট্রাক্টর (গ)
অপারেটর (ঘ)
ভেরিয়েবল |
উত্তরঃ খ |
|
১৫৯ |
ডেস্ট্রাক্টর চিহ্নিত করার জন্য কোন চিহ্ন ব্যবহৃত হয়? (ক)
# (খ) @ (গ) ~ (ঘ)
& |
উত্তরঃ গ |
|
১৬০ |
কনস্ট্রাক্টরের মূল কাজ কী?
(ক) ডাটা ডিলিট করা (খ)
অবজেক্ট ইনিশিয়ালাইজ করা (গ)
লুপ চালানো (ঘ)
ইনপুট নেওয়া |
উত্তরঃ খ |
|
১৬১ |
যে
ক্লাস থেকে গুণাবলী পাওয়া যায় তাকে কী বলা হয়? (ক) সাব-ক্লাস (খ)
বেস ক্লাস বা সুপার ক্লাস (গ)
ডেরাইভড ক্লাস (ঘ)
চাইল্ড ক্লাস |
উত্তরঃ খ |
|
১৬২ |
একটি সাব-ক্লাস একাধিক সুপার-ক্লাস থেকে ইনহেরিট করলে তাকে কী
বলে? (ক) সিঙ্গল ইনহেরিটেন্স (খ)
মাল্টিপল ইনহেরিটেন্স (গ) মাল্টিলেভেল ইনহেরিটেন্স (ঘ)
হাইব্রিড ইনহেরিটেন্স |
উত্তরঃ খ |
|
১৬৩ |
ইনহেরিটেন্সের প্রধান সুবিধা কোনটি? (ক)
মেমরি ম্যানেজমেন্ট (খ)
কোড পুনঃব্যবহারযোগ্যতা (গ)
স্পিড বাড়ানো (ঘ)
জটিলতা বাড়ানো |
উত্তরঃ খ |
|
১৬৪ |
মাল্টিলেভেল ইনহেরিটেন্স নিচের কোনটির মতো কাজ করে? (ক)
চেইন (খ)
সার্কেল (গ)
গ্রাফ (ঘ)
সিঙ্গেল নোড |
উত্তরঃ ক |
|
১৬৫ |
ক্লাসের প্রাইভেট ডেটা এক্সেস করার জন্য কোন বিশেষ ফাংশন ব্যবহৃত হয়? (ক)
পাবলিক ফাংশন (খ)
ফ্রেন্ড ফাংশন (গ)
ভার্চুয়াল ফাংশন (ঘ)
স্ট্যাটিক ফাংশন |
উত্তরঃ খ |
|
১৬৬ |
ফ্রেন্ড ফাংশন কল
করার জন্য নিচের কোনটি প্রয়োজন নেই? (ক) ক্লাস (খ)
অবজেক্ট (গ)
রিটার্ন টাইপ (ঘ)
আর্গুমেন্ট |
উত্তরঃ খ |
|
১৬৭ |
প্রাইভেট সদস্যদের অ্যাক্সেসের মাধ্যমে কোন ঝুঁকি তৈরি হতে পারে? (ক)
স্টোরেজ ঝুঁকি (খ)
নিরাপত্তা ঝুঁকি (গ)
নেটওয়ার্ক ঝুঁকি (ঘ)
হার্ডওয়্যার ঝুঁকি |
উত্তরঃ খ |
|
১৬৮ |
ডেটাকে বাইরের হস্তক্ষেপ থেকে রক্ষা করতে কোনটি ব্যবহৃত হয়? (ক)
অ্যাবস্ট্রাকশন (খ)
এনক্যাপসুলেশন (গ)
পলিমরফিজম (ঘ)
ইনহেরিটেন্স |
উত্তরঃ খ |
|
১৬৯ |
অ্যাবস্ট্রাকশন বাস্তবায়নে কোনটি ব্যবহৃত হয়? (ক)
গেটার ও সেটার (খ)
ইন্টারফেস এবং অ্যাবস্ট্রাক্ট ক্লাস (গ)
প্রাইভেট ভেরিয়েবল (ঘ)
লুপ |
উত্তরঃ খ |
|
১৭০ |
এনক্যাপসুলেশন বাস্তবায়নে কোন মডিফায়ার ব্যবহৃত হয়? (ক)
static (খ) public, private, protected
(গ) constant (ঘ)
void |
উত্তরঃ খ |
|
১৭১ |
কোনটি মূলত একটি "রক্ষাকবচ" বা
Shield হিসেবে কাজ করে? (ক) ইনহেরিটেন্স (খ)
এনক্যাপসুলেশন (গ)
পলিমরফিজম (ঘ)
থ্রেড |
উত্তরঃ খ |
|
১৭২ |
প্রোগ্রামের একটি ছোট সেট যা
একসাথে একাধিক কাজ করতে পারে তাকে কী বলে? (ক) ফাংশন (খ)
থ্রেড (গ)
মেথড (ঘ)
অবজেক্ট |
উত্তরঃ খ |
|
১৭৩ |
রান-টাইম পলিমরফিজমকে আর
কী নামে ডাকা হয়? (ক) আর্লি বাইন্ডিং (খ)
লেট বাইন্ডিং (গ)
স্ট্যাটিক বাইন্ডিং (ঘ)
ফিক্সড বাইন্ডিং |
উত্তরঃ খ |
|
১৭৪ |
প্রাইভেট এবং ফাইনাল মেথড ওভাররাইড করা কি
সম্ভব? (ক) হ্যাঁ (খ)
না (গ)
শর্তসাপেক্ষে (ঘ)
শুধু জাভাতে |
উত্তরঃ খ |
|
১৭৫ |
OOP
এর ফলে প্রোগ্রামারদের প্রডাক্টিভিটি কেমন হয়? (ক) কমে (খ)
বাড়ে (গ)
অপরিবর্তিত থাকে (ঘ)
শূন্য হয় |
উত্তরঃ খ |
|
১৭৬ |
ক্লাসের বডির শেষে কোন চিহ্ন দিতে হয়? (ক)
; (খ) : (গ) . (ঘ)
, |
উত্তরঃ ক |
|
১৭৭ |
inheritance
এর ফলে ক্লাসগুলোর মধ্যে কী তৈরি হয়? (ক) স্বাধীনতা (খ)
নির্ভরতা (গ)
বিভাজন (ঘ)
দূরত্ব |
উত্তরঃ খ |
|
১৭৮ |
কোনটি ডাইনামিক মেমরি রিলিজ করতে ব্যবহৃত হয়? (ক)
কনস্ট্রাক্টর (খ)
ডেস্ট্রাক্টর (গ)
অপারেটর (ঘ)
গেটার |
উত্তরঃ খ |
|
১৭৯ |
কোডকে মডুলার ও
বোঝার জন্য সহজ করে কোনটি? (ক) জটিল লুপ (খ)
অ্যাবস্ট্রাকশন (গ)
গ্লোবাল ভেরিয়েবল (ঘ)
বড় ফাংশন |
উত্তরঃ খ |
|
১৮০ |
অবজেক্ট তৈরি করাকে আর
কী বলা হয়? (ক) Initialization (খ)
Instantiation (গ) Declaration (ঘ)
Definition |
উত্তরঃ খ |
|
১৮১ |
মেথড ওভারলোডিং এ
কী এক থাকে? (ক) প্যারামিটার সংখ্যা (খ)
ফাংশনের নাম (গ)
ডেটা টাইপ (ঘ)
মেমরি লোকেশন |
উত্তরঃ খ |
|
১৮২ |
'Man'
যদি একটি ক্লাস হয়, তবে 'Uncle' কী? (ক) মেথড (খ)
অবজেক্ট (গ)
হেডার ফাইল (ঘ)
কনস্ট্রাক্টর |
উত্তরঃ খ |
|
১৮৩ |
এনক্যাপসুলেশন নীতির লঙ্ঘন ঘটতে পারে কোনটির ব্যবহারে? (ক)
ফাংশন (খ)
ইনহেরিটেন্স (গ)
মেমরি (ঘ)
লুপ |
উত্তরঃ খ |
|
১৮৪ |
কোনটি দ্রুত কার্যকরী? (ক)
রান-টাইম পলিমরফিজম (খ)
কম্পাইল-টাইম পলিমরফিজম (গ) ডাইনামিক বাইন্ডিং (ঘ)
লেট বাইন্ডিং |
উত্তরঃ খ |
|
১৮৫ |
ভার্চুয়াল ফাংশন কোনটির সাথে জড়িত? (ক)
কম্পাইল-টাইম পলিমরফিজম (খ)
রান-টাইম পলিমরফিজম (গ) স্ট্যাটিক বাইন্ডিং (ঘ)
ইনলাইন ফাংশন |
উত্তরঃ খ |
|
১৮৬ |
একটি ডেরাইভড ক্লাস প্যারেন্ট ক্লাসের কোন মেম্বার সরাসরি একসেস করতে পারে না?
(ক) public (খ)
private (গ) protected (ঘ)
static |
উত্তরঃ খ |
|
১৮৭ |
'Getter'
এবং 'Setter' মেথড কোনটির সাথে সম্পর্কিত? (ক) ইনহেরিটেন্স (খ)
এনক্যাপসুলেশন (গ)
পলিমরফিজম (ঘ)
ওভারলোডিং |
উত্তরঃ খ |
|
১৮৮ |
OOP
এর মাধ্যমে সফটওয়্যারকে বড় পরিসরে বাড়ানোকে কী বলে? (ক) মডুলারিটি (খ)
স্কেলেবিলিটি (গ)
সিকিউরিটি (ঘ)
ফ্লেক্সিবিলিটি |
উত্তরঃ খ |
|
১৮৯ |
ইন্টারনাল ডাটা সিকিউর রাখার জন্য কোনটি সবচেয়ে বেশি কার্যকর? (ক)
অ্যাবস্ট্রাকশন (খ)
এনক্যাপসুলেশন (গ)
ইনহেরিটেন্স (ঘ)
ওভারলোডিং |
উত্তরঃ খ |
বিভিন্ন Program Example:
১. Write a program using Object, Class,
Inheritance, Polymorphism, Encapsulation, overridden
Answer:
#include <iostream>
using namespace std;
// এটা Base class
class Shape {
// ICT WIZARD নোটঃ Shape এটা বেইস বা মূল ক্লাস যেটাকে আমরা ইনহেরিট করব
public:
virtual int getArea()
{
return 0;
} // এখানে getArea হচ্ছে Shape ক্লাসের মেম্বার ফাংশন যা পরবর্তি ড্রাইভ ক্লাসগুলোতে অভাররাইড করব।
};
// এটা Derived class
class Rectangle: public Shape { // এখানে Rectangle নামে মূল ক্লাস shape কে ইনহেরিট করা হইছে
public:
Rectangle(int a = 0,
int b = 0) {
width = a;
height = b;
}
int getArea() {
return (width *
height);
}
private:
int width;
int height;
};
int main() {
Shape *shape; // এখানে Shape ক্লাসের পয়েন্টার ক্রিয়েট করা হইছে।
Rectangle rec(10,7);
// rec নামে অবজেক্ট ক্রিয়েট করা হইছে Rectangle ক্লাসের
shape = &rec; //
rec এর এড্রেসকে shape এর মধ্যে রাখা হয়েছে।
cout <<
"Rectangle area: " << shape->getArea() << endl;
// এখানে getArea ওভাররিডেনের মাধ্যমে পলিমরফিজম এচিভ হইছে।
return 0;
}
২. সি
প্রোগ্রামিং ব্যবহার
করে Array তে সংখ্যা
নিয়ে তার
গড় বের
করুন। মার্ক
-৫ (১৬তম)
ANSWER:
#include <stdio.h>
int main() {
int arr[4] = {10, 20,
30, 40};
int sum = 0;
float average = 0.0;
for (int i = 0; i <
4; i++) {
sum += arr[i];
}
average = sum / 4;
printf("The
average of the array elements is %.2f\n", average);
return 0;
}
৩. Array তে ৪টি
সংখ্যা নিয়ে
তার যোগফল/গুণ
#include <stdio.h>
int main() {
int arr[4] = {10, 20,
30, 40};
int sum = 0;
int product = 1;
for (int i = 0; i <
4; i++) {
sum += arr[i];
product *= arr[i];
}
printf("The sum
of the array elements is %d\n", sum);
printf("The
product of the array elements is %d\n", product);
return 0;
}
৪. সি
প্রোগ্রামিং ব্যবহার
করে Leap Year বের করুন।
মার্ক - ৫
ANSWER:
#include <stdio.h>
int main() {
int year;
printf("Enter a
year: ");
scanf("%d",
&year);
if ((year % 4 == 0
&& year % 100 != 0) || year % 400 == 0) {
printf("%d is
a leap year.\n", year);
}
else {
printf("%d is
not a leap year.\n", year);
}
return 0;
}
৫. সি
প্রোগ্রামিং ব্যবহার
করে Prime number বের করুন।
মার্ক - ৫
Answer:
#include <stdio.h>
int main() {
int num, i, count=0;
printf("Enter a
number: ");
scanf("%d",
&num);
if(num<2) {
printf("%d is
not a prime number", num);
}
else {
for(i=1; i<num;
i++) {
if(num%i == 0)
{
count=count+1;
}
}
}
if(count == 1) {
printf("%d is
a prime number", num);
}
else {
printf("%d is
not a prime number", num);
}
return 0;
}
৬. সি
প্রোগ্রামিং ব্যবহার
করে Odd or Even বের করুন।
মার্ক -৫
ANSWER:
#include <stdio.h>
int main() {
int num;
printf("Enter a
number: ");
scanf("%d",
&num);
if(num % 2 == 0) {
printf("%d is
an even number", num);
}
else {
printf("%d is
an odd number", num);
}
return 0;
}
৭. লসাগু
এবং গসাগু
বের করার
প্রোগ্রাম লিখুন?
মার্ক - ৫
ANSWER:
লসাগু বের
করার প্রোগ্রাম:
#include <stdio.h>
int main() {
int num1, num2, max,
lcm_found = 0;
printf("Enter two
positive integers: ");
scanf("%d
%d", &num1, &num2);
if (num1 > num2) {
max = num1;
} else {
max = num2;
}
while (lcm_found == 0)
{
if (max % num1 ==
0 && max % num2 == 0) {
printf("The LCM of %d and %d is %d.\n", num1, num2, max);
lcm_found = 1;
}
max++;
}
return 0;
}
গসাগু বের
করার প্রোগ্রামঃ
#include <stdio.h>
int main() {
int num1, num2, min,
gcd_found = 0;
printf("Enter two
positive integers: ");
scanf("%d
%d", &num1, &num2);
if (num1 < num2) {
min = num1;
} else {
min = num2;
}
while (gcd_found == 0)
{
if (num1 % min ==
0 && num2 % min == 0) {
printf("The GCD is %d.\n", min);
gcd_found = 1;
}
min--;
}
return 0;
}
৮. ৩
টি সংখ্যার
গড় বের
করার জন্য
একটা প্রোগ্রাম
লিখুন?
Answer:
#include <stdio.h>
int main() {
int a, b, c;
float average;
printf("Enter
three numbers: ");
scanf("%d %d
%d", &a, &b, &c);
average = (a + b + c)
/ 3;
printf("Average
of three numbers is: %.2f\n", average);
return 0;
}
৯. এমন
একটি C program লিখুন যা
একটি array তৈরি করে
কতগুলো ডেটা
রাখবে, তারপর
ফলাফল হিসেবে
ডেটাগুলোকে বিপরীত
দিক থেকে
print করবে। মার্ক
৬ (১৭তম)
ANSWER:
#include <stdio.h>
int main() {
int size, i;
printf("Enter
Size of Array: ");
scanf("%d",
&size);
int arr[size];
printf("%d:\n", size);
for(i = 0; i <
size; i++) {
scanf("%d", &arr[i]);
}
// মূল অ্যারে প্রিন্ট করা
printf("\nমূল অ্যারে: ");
for(i = 0; i <
size; i++) {
printf("%d
", arr[i]);
}
// অ্যারে রিভার্স করে প্রিন্ট করা
printf("\n
Reverse Array: ");
for(i = size - 1; i
>= 0; i--) {
printf("%d
", arr[i]);
}
return 0;
}
১০. Fibonacci number প্রদর্শনের জন্য
একটি C program লিখুন। মার্ক
৬ (১৭তম)
ANSWER:
#include <stdio.h>
int main() {
int n = 10;
int first = 0, second
= 1, next;
printf("First %d
Fibonacci numbers:\n", n);
for (int i = 0; i <
n; ++i) {
if (i <= 1) {
next = i;
} else {
next = first +
second;
first =
second;
second = next;
}
printf("%d
", next);
}
printf("\n");
return 0;
}
১১. ax²+bx+c=0 সমীকরণটির x চলকের
মান নির্ণয়ের
জন্য একটি
কোড লিখুন।
মার্ক ৫
(১৬তম)
Answer:
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c;
double discriminant,
root1, root2, realPart, imagPart;
printf("a, b, c:
");
scanf("%lf %lf
%lf", &a, &b, &c);
discriminant = b * b -
4 * a * c;
// প্রকৃত ও ভিন্ন মূল
if (discriminant >
0) {
root1 = (-b +
sqrt(discriminant)) / (2 * a);
root2 = (-b -
sqrt(discriminant)) / (2 * a);
printf("root1
= %.2lf\nroot2 = %.2lf\n", root1, root2);
}
// প্রকৃত ও সমান মূল
else if (discriminant
== 0) {
root1 = root2 = -b
/ (2 * a);
printf("root1
= root2 = %.2lf\n", root1);
}
// জটিল মূল (complex roots)
else {
realPart = -b / (2
* a);
imagPart =
sqrt(-discriminant) / (2 * a);
printf("root1
= %.2lf + %.2lfi\n", realPart, imagPart);
printf("root2
= %.2lf - %.2lfi\n", realPart, imagPart);
}
return 0;
}
১২. ৩টি
সংখ্যার মধ্যে
বড়/ছোট
সংখ্যা বের
করার জন্য
একটা প্রোগ্রাম
লিখুন?
ANSWER:
#include <stdio.h>
int main() {
int num1, num2, num3;
int largest, smallest;
printf("Enter 3
Number:");
scanf("%d %d
%d", &num1, &num2, &num3);
// সবচেয়ে বড় সংখ্যা বের করা
if (num1 >= num2
&& num1 >= num3) {
largest = num1;
} else if (num2 >=
num1 && num2 >= num3) {
largest = num2;
} else {
largest = num3;
}
// সবচেয়ে ছোট সংখ্যা বের করা
if (num1 <= num2
&& num1 <= num3) {
smallest = num1;
} else if (num2 <=
num1 && num2 <= num3) {
smallest = num2;
} else {
smallest = num3;
}
printf("\n Large
Number: %d\n", largest);
printf(" Small
Number: %d\n", smallest);
return 0;
}