PL/SQL, Oracle Database-এর একটি শক্তিশালী প্রোগ্রামিং ভাষা, যা object-oriented প্রোগ্রামিং ধারণা গ্রহণ করে। এটি Object Types এবং Object-Oriented বৈশিষ্ট্যগুলো সমর্থন করে, যা ডেভেলপারদের ডেটাবেসে অবজেক্ট-ভিত্তিক মডেল তৈরি করতে সহায়ক। PL/SQL Object Types ব্যবহার করার মাধ্যমে আপনি ডেটাবেসে জটিল ডেটা কাঠামো তৈরি করতে পারেন, যা সাধারণভাবে Structured Types বা Object Types নামে পরিচিত।
PL/SQL Object Types
PL/SQL Object Types হল ব্যবহারকারী-সংজ্ঞায়িত ডেটা টাইপ, যা একটি অবজেক্টের মতো আচরণ করে। এগুলি সাধারনত অবজেক্টের অ্যাট্রিবিউট এবং পদ্ধতিগুলি ধারণ করে। একটি Object Type একটি Class এর মতো কাজ করে এবং একটি Instance হিসাবে ব্যবহৃত হয়।
Object Type গঠনের মৌলিক অংশসমূহ:
- Specification: এটি অবজেক্ট টাইপের ইন্টারফেস নির্ধারণ করে, যেখানে অ্যাট্রিবিউট এবং মেথডের ডেফিনিশন থাকে।
- Body: এটি অবজেক্ট টাইপের ইমপ্লিমেন্টেশন প্রদান করে, যেখানে মেথডগুলির বাস্তবায়ন থাকে।
Object Type তৈরি করা
নিচে একটি সাধারণ Object Type তৈরি করার উদাহরণ দেওয়া হল, যেখানে একটি Employee অবজেক্ট টাইপ তৈরি করা হয়েছে:
-- Object Type Specification
CREATE OR REPLACE TYPE EmployeeType AS OBJECT (
emp_id NUMBER,
emp_name VARCHAR2(50),
emp_salary NUMBER,
MEMBER FUNCTION get_salary RETURN NUMBER
);
/
-- Object Type Body
CREATE OR REPLACE TYPE BODY EmployeeType AS
MEMBER FUNCTION get_salary RETURN NUMBER IS
BEGIN
RETURN emp_salary;
END get_salary;
END;
/
ব্যাখ্যা:
- EmployeeType হল একটি Object Type যার তিনটি অ্যাট্রিবিউট (emp_id, emp_name, emp_salary) এবং একটি মেথড (get_salary) আছে।
- Specification এ আমরা Object Type-এর অ্যাট্রিবিউট এবং মেথড ডিফাইন করেছি।
- Body তে আমরা
get_salaryমেথডের বাস্তবায়ন করেছি, যাemp_salaryরিটার্ন করে।
Object Type এর ব্যবহার
Object Type তৈরি করার পরে, আপনি এটি ব্যবহার করে Object Instances তৈরি করতে পারেন, যা অ্যাট্রিবিউটগুলির মান ধারণ করে এবং মেথড ব্যবহার করতে পারে।
Object Instance তৈরি এবং ব্যবহার
DECLARE
-- Declare an object instance of EmployeeType
emp_obj EmployeeType;
BEGIN
-- Instantiate the object
emp_obj := EmployeeType(1001, 'John Doe', 50000);
-- Access the object attributes and methods
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || emp_obj.emp_id);
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp_obj.emp_name);
DBMS_OUTPUT.PUT_LINE('Employee Salary: ' || emp_obj.get_salary);
END;
/
ব্যাখ্যা:
- emp_obj হল
EmployeeTypeএর একটি অবজেক্ট ইনস্ট্যান্স। - EmployeeType(1001, 'John Doe', 50000) এই ভাবে অবজেক্টটি ইনস্ট্যান্সিয়েট করা হয়।
- আপনি অবজেক্টের অ্যাট্রিবিউট এবং মেথডগুলি অ্যাক্সেস করতে পারেন যেমন
emp_obj.emp_idএবংemp_obj.get_salary।
Object-Oriented PL/SQL: Object Attributes এবং Methods
PL/SQL-এ Object-Oriented Programming (OOP) ধারণাগুলি প্রয়োগ করা সম্ভব। অবজেক্ট টাইপ তৈরি করার মাধ্যমে আপনি encapsulation, inheritance, এবং polymorphism প্রয়োগ করতে পারেন।
Encapsulation:
Encapsulation হল ডেটা এবং সেই ডেটার সাথে কাজ করার জন্য ব্যবহৃত মেথডগুলির একত্রিতকরণ। PL/SQL এর Object Types-এর মধ্যে encapsulation নিশ্চিত করতে আপনি attributes এবং methods একসাথে সংজ্ঞায়িত করেন।
Inheritance:
PL/SQL Object Types তে আপনি এক Object Type থেকে অন্য Object Type তৈরি করতে পারেন। এটি inheritance বা উত্তরাধিকার ধারণা চালু করে। উদাহরণস্বরূপ, একটি Employee অবজেক্ট থেকে একটি Manager অবজেক্ট তৈরি করা যায়।
Polymorphism:
Polymorphism অর্থ একই মেথডের ভিন্ন বাস্তবায়ন হতে পারে, যা overloading বা overriding এর মাধ্যমে সম্ভব।
Object-Oriented Features - উদাহরণ
Inheritance Example:
ধরা যাক, আমরা একটি Manager অবজেক্ট তৈরি করতে চাই যা Employee অবজেক্ট থেকে উত্তরাধিকার পাবে।
-- Create a Manager Object Type inheriting from EmployeeType
CREATE OR REPLACE TYPE ManagerType UNDER EmployeeType (
dept_id NUMBER,
MEMBER FUNCTION get_department RETURN NUMBER
);
/
-- Create the Body for ManagerType
CREATE OR REPLACE TYPE BODY ManagerType AS
MEMBER FUNCTION get_department RETURN NUMBER IS
BEGIN
RETURN dept_id;
END get_department;
END;
/
এখানে:
- ManagerType
EmployeeTypeথেকে উত্তরাধিকার করেছে এবং তার সাথে একটি নতুন অ্যাট্রিবিউট (dept_id) এবং মেথড (get_department) যোগ করেছে।
PL/SQL Object Types এর সুবিধা
- Complex Data Models: Object Types ডেভেলপারদের একটি শক্তিশালী ডেটা মডেল তৈরি করার সুযোগ দেয়, যেখানে অ্যাট্রিবিউট এবং মেথড একত্রিত থাকে।
- Code Reusability: Object-Oriented ধারণাগুলির মাধ্যমে কোড পুনঃব্যবহারযোগ্য হয়, বিশেষত
inheritanceব্যবহার করে। - Data Integrity: Encapsulation এর মাধ্যমে ডেটা সুরক্ষিত থাকে, কারণ অ্যাট্রিবিউটের মান এবং তার ব্যবহার করা মেথডগুলো একসাথে থাকে।
- Real-world Mapping: Real-world অবজেক্ট মডেলগুলি সহজে মডেল করা যায় PL/SQL-এর Object Types এর মাধ্যমে, যা ডেটাবেসে বাস্তব জীবনের সিস্টেমের প্রতিনিধিত্ব করতে সহায়ক।
- Performance Improvement: Object Types ব্যবহার করে আপনি কোড কম্প্যাক্ট এবং ম্যানেজযোগ্য করতে পারেন, যা ডেটাবেস পারফরম্যান্সে উন্নতি সাধন করতে সহায়ক হতে পারে।
PL/SQL Object Types এর সীমাবদ্ধতা
- Complexity: Object Types এবং Object-Oriented PL/SQL কোড অনেক বেশি জটিল হতে পারে এবং ছোট প্রকল্পের জন্য এটি অতিরিক্ত হতে পারে।
- Compatibility: অন্য ডেটাবেস সিস্টেমে Object Types এর সমর্থন সীমিত হতে পারে, তাই এই ধরনের কোড পোর্টেবল নাও হতে পারে।
- Resource Intensive: Object Types এবং তাদের মেথডগুলি ব্যবহার করা অনেক বেশি মেমরি এবং প্রসেসিং শক্তির প্রয়োজন হতে পারে, যা সিস্টেমের পারফরম্যান্সে প্রভাব ফেলতে পারে।
উপসংহার
PL/SQL এর Object Types এবং Object-Oriented বৈশিষ্ট্যগুলি ডেটাবেসের মধ্যে জটিল ডেটা কাঠামো তৈরি এবং পরিচালনা করার জন্য অত্যন্ত কার্যকরী। এগুলি ডেভেলপারদের অবজেক্ট-ভিত্তিক ডেটাবেস মডেল তৈরি করতে সহায়ক, যা প্রকল্পগুলির স্কেল এবং উন্নতির জন্য উপযুক্ত।
PL/SQL Object Types হল এক ধরনের ডেটা টাইপ যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে সমর্থন করে। এই ধরনের ডেটা টাইপ ব্যবহার করে আপনি কাস্টম ডেটা স্ট্রাকচার তৈরি করতে পারেন, যা Attributes এবং Methods ধারণ করতে পারে। এটি আপনাকে একটি অবজেক্টের মতো ডেটা এবং ফাংশনালিটি সংরক্ষণ এবং পরিচালনা করার সুযোগ দেয়।
এটি Object-Oriented Programming (OOP) এর ধারণাকে PL/SQL-এ অন্তর্ভুক্ত করে, যেখানে আপনি একাধিক অ্যাট্রিবিউট ও কার্যকারিতা (Methods) সহ একত্রিত ডেটা ধারণ করতে পারেন।
PL/SQL Object Types ব্যবহারের মাধ্যমে আপনি ডেটাবেসে একটি বাস্তববিশ্বের অবজেক্টের প্রতিনিধিত্ব করতে পারেন এবং সেই অনুযায়ী কোড লেখার সময় একটি ক্লাস বা অবজেক্টের মতো কাজ করতে পারেন।
PL/SQL Object Types এর উপাদানসমূহ:
- Attributes: অবজেক্টের ডেটা অংশ। এটি ঐ অবজেক্টের বৈশিষ্ট্য এবং স্টেট।
- Methods: অবজেক্টের কর্ম, যা অ্যাট্রিবিউটগুলোর উপর কাজ করে।
Object Type তৈরি করার Syntax:
PL/SQL-এ একটি Object Type দুটি প্রধান অংশে বিভক্ত:
- Object Type Specification: এটি অবজেক্ট টাইপের স্কিমা ঘোষণা করে, যেখানে তার অ্যাট্রিবিউট এবং মেথডের তালিকা থাকে।
- Object Type Body: এটি অবজেক্ট টাইপের শরীর, যেখানে মেথডগুলোর বাস্তবায়ন করা হয়।
Syntax:
-- 1. Object Type Specification (ওবজেক্ট টাইপের ঘোষণা)
CREATE OR REPLACE TYPE <object_type_name> AS OBJECT (
attribute1 <data_type>,
attribute2 <data_type>,
...
MEMBER FUNCTION <function_name> RETURN <data_type>
);
-- 2. Object Type Body (ওবজেক্ট টাইপের শরীর)
CREATE OR REPLACE TYPE BODY <object_type_name> AS
MEMBER FUNCTION <function_name> RETURN <data_type> IS
BEGIN
-- function logic
END <function_name>;
END;
PL/SQL Object Types এর উদাহরণ:
1. Object Type Declaration:
ধরা যাক, আমরা একটি Employee নামক অবজেক্ট টাইপ তৈরি করতে চাই, যার দুটি অ্যাট্রিবিউট হবে: emp_id এবং emp_name।
-- Object Type Declaration
CREATE OR REPLACE TYPE Employee AS OBJECT (
emp_id NUMBER,
emp_name VARCHAR2(50)
);
এখানে, আমরা একটি Employee নামক অবজেক্ট টাইপ ঘোষণা করেছি, যার দুটি অ্যাট্রিবিউট রয়েছে: emp_id এবং emp_name।
2. Object Type Body:
এখন, আমরা Employee অবজেক্ট টাইপের জন্য একটি মেথড তৈরি করি, যা কর্মচারীর নামের দৈর্ঘ্য ফেরত দেবে।
-- Object Type Body
CREATE OR REPLACE TYPE BODY Employee AS
MEMBER FUNCTION get_name_length RETURN NUMBER IS
BEGIN
RETURN LENGTH(emp_name);
END get_name_length;
END;
এখানে, get_name_length মেথড emp_name এর দৈর্ঘ্য ফেরত দিবে।
3. Object Type ব্যবহার:
এখন, যখন একটি Employee অবজেক্ট তৈরি করতে হবে, তখন সেই অবজেক্টের অ্যাট্রিবিউট এবং মেথড ব্যবহার করা যাবে।
DECLARE
e Employee; -- Employee টাইপের একটি অবজেক্ট
BEGIN
-- অবজেক্টের ভ্যালু সেট করা
e := Employee(101, 'John Doe');
-- মেথড কল করা
DBMS_OUTPUT.PUT_LINE('Employee name length: ' || e.get_name_length);
END;
এখানে, আমরা একটি Employee অবজেক্ট তৈরি করেছি এবং তার get_name_length মেথড ব্যবহার করেছি। এই কোডটি John Doe নামের দৈর্ঘ্য প্রিন্ট করবে, অর্থাৎ 8।
Object Types এর সুবিধা:
- Encapsulation: ডেটা এবং তার সাথে সম্পর্কিত কার্যক্রম একত্রিত করা যায়। এটা একটি অবজেক্টের মতো ডেটা স্ট্রাকচার তৈরি করতে সাহায্য করে, যার মাধ্যমে ডেটার সুরক্ষা এবং সংগঠন সহজ হয়।
- Code Reusability: একবার অবজেক্ট টাইপ তৈরি করলে, আপনি সহজেই সেটি পুনরায় ব্যবহার করতে পারেন।
- Complex Data Representation: আপনি বাস্তব বিশ্বে যেসব জটিল ডেটা ধারণ করতে চান (যেমন পণ্য, কর্মচারী, স্টুডেন্ট) তা সহজে PL/SQL অবজেক্ট টাইপ দিয়ে সংজ্ঞায়িত করতে পারেন।
- Method Integration: অবজেক্ট টাইপে ডেটার সাথে সম্পর্কিত কার্যক্রম (মেথড) একত্রিত করতে পারেন।
Object Types এর সীমাবদ্ধতা:
- Complexity: যখন আপনি অধিক জটিল অবজেক্ট টাইপ তৈরি করেন, তখন কোড কিছুটা জটিল হয়ে যেতে পারে।
- Performance Overhead: কিছু অবজেক্ট টাইপ বেশি জটিল হলে এর পারফরম্যান্সে প্রভাব ফেলতে পারে, বিশেষত যখন অনেক বড় ডেটা সেট নিয়ে কাজ করতে হয়।
- Database Storage: অবজেক্ট টাইপের ডেটা অ্যাট্রিবিউটগুলি ডেটাবেসে সংরক্ষিত হলে সেগুলোর জন্য অতিরিক্ত স্টোরেজ জায়গার প্রয়োজন হতে পারে।
Conclusion:
PL/SQL এর Object Types একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে ডেটাবেসে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ধারণা ব্যবহার করতে সহায়তা করে। এটি ডেটা এবং কার্যকারিতাকে একত্রিত করতে, কোড পুনঃব্যবহারযোগ্য করতে, এবং বাস্তব বিশ্বের ডেটা মডেলিং করার জন্য একটি কার্যকর উপায়। তবে, তার জটিলতা এবং পারফরম্যান্স বিবেচনায় রাখতে হবে।
PL/SQL একটি শক্তিশালী প্রোগ্রামিং ভাষা যা object-oriented programming (OOP) ধারণাগুলিকে সমর্থন করে। Oracle Database-এ Object-Oriented PL/SQL ব্যবহার করে আপনি Object Types তৈরি করতে পারেন, যার মধ্যে attributes (বৈশিষ্ট্য) এবং methods (পদ্ধতি) থাকে। এটি OOP এর মূল ধারণা ব্যবহার করে ডেটাবেসের ভিতরে অবজেক্ট মডেল তৈরি করতে সাহায্য করে।
Object Types in PL/SQL
Object Types হল একটি ডেটা টাইপ যা একটি অবজেক্টের বৈশিষ্ট্য এবং আচরণ (অথবা attributes এবং methods) ধারণ করে। একটি object type তৈরি করতে, আপনাকে দুটি প্রধান অংশ তৈরি করতে হয়:
- Specification (স্পেসিফিকেশন): এখানে অবজেক্টের attributes এবং methods ডিফাইন করা হয়।
- Body (বডি): এখানে methods এর বাস্তবায়ন বা লজিক লিখা হয়।
Object Type সাধারণত attributes এবং methods এর সমন্বয়ে গঠিত।
১. Object Attributes (বৈশিষ্ট্য)
Object Attributes হল সেই ডেটা ফিল্ড বা ভ্যালু যা একটি অবজেক্টে সংরক্ষিত থাকে। এটি সাধারণত variables বা fields হিসেবেও পরিচিত, যা অবজেক্টের প্রতিটি instance-এ থাকতে পারে।
Object Attributes-এর উদাহরণ:
ধরা যাক, আপনি একটি Person নামক অবজেক্ট তৈরি করতে চান, যার দুটি attribute থাকবে: name এবং age।
Object Type Specification (স্পেসিফিকেশন):
CREATE OR REPLACE TYPE person AS OBJECT (
name VARCHAR2(50),
age NUMBER
);
এখানে person অবজেক্টের দুটি attribute আছে: name এবং age।
Object Type Body (বডি):
এটি অবজেক্টের কোনো methods বা functionality নির্ধারণ করে।
CREATE OR REPLACE TYPE BODY person AS
MEMBER FUNCTION display_info RETURN VARCHAR2 IS
BEGIN
RETURN 'Name: ' || name || ', Age: ' || age;
END display_info;
END;
এখানে, display_info একটি method যা person অবজেক্টের attributes name এবং age ব্যবহার করে একটি স্ট্রিং আউটপুট প্রদান করবে।
২. Object Methods (পদ্ধতি)
Methods হল অবজেক্টের আচরণ বা কার্যকলাপ। এটি একটি ফাংশন বা প্রক্রিয়া যা অবজেক্টের attribute বা ভ্যালুর সাথে কাজ করে এবং সাধারণত একটি নির্দিষ্ট কাজ সম্পাদন করে। PL/SQL-এ methods কে member functions হিসেবে ডিফাইন করা হয়, যা অবজেক্টের attribute বা অন্যান্য ডেটার সাথে কাজ করে।
Method এর উদাহরণ:
আমরা উপরে যে person অবজেক্টটি তৈরি করেছি, সেখানে একটি display_info method আছে, যা অবজেক্টের name এবং age attribute এর মান প্রদর্শন করবে।
CREATE OR REPLACE TYPE BODY person AS
MEMBER FUNCTION display_info RETURN VARCHAR2 IS
BEGIN
RETURN 'Name: ' || name || ', Age: ' || age;
END display_info;
END;
এখানে, display_info হল একটি method যা name এবং age attribute থেকে তথ্য সংগ্রহ করে এবং একটি স্ট্রিং রিটার্ন করে।
৩. Methods-এ Parameter Pass করা
PL/SQL object methods এ parameters পাঠানো যেতে পারে, এবং তা object-এ stored data বা attributes-এর ভিত্তিতে বিভিন্ন কার্যকলাপ সম্পাদন করতে ব্যবহার করা যায়।
Method with Parameter:
CREATE OR REPLACE TYPE person AS OBJECT (
name VARCHAR2(50),
age NUMBER,
MEMBER FUNCTION greet (greeting VARCHAR2) RETURN VARCHAR2
);
এখানে, greet একটি method যা greeting নামক parameter গ্রহণ করে এবং সেই greeting-এর সাথে অবজেক্টের name attribute মিশিয়ে একটি বার্তা রিটার্ন করবে।
Method Implementation:
CREATE OR REPLACE TYPE BODY person AS
MEMBER FUNCTION greet (greeting VARCHAR2) RETURN VARCHAR2 IS
BEGIN
RETURN greeting || ', ' || name;
END greet;
END;
এখন, আপনি greet method ব্যবহার করে person অবজেক্টের name-এর সাথে একটি custom greeting বার্তা তৈরি করতে পারবেন।
৪. Object Methods ব্যবহার
একবার যখন আপনি একটি object type এবং তার attributes এবং methods তৈরি করবেন, তখন সেই object type-এর instance তৈরি করতে পারবেন এবং methods ব্যবহার করতে পারবেন।
Object Creation এবং Method Call:
DECLARE
p person;
result VARCHAR2(100);
BEGIN
-- Create an instance of the person object
p := person('John Doe', 30);
-- Call the display_info method
result := p.display_info;
-- Print result
DBMS_OUTPUT.PUT_LINE(result); -- Output: Name: John Doe, Age: 30
-- Call the greet method
result := p.greet('Hello');
-- Print result
DBMS_OUTPUT.PUT_LINE(result); -- Output: Hello, John Doe
END;
এখানে:
pএকটিpersonঅবজেক্টের instance।p.display_infomethod অবজেক্টেরnameএবংageattribute এর মান প্রদর্শন করবে।p.greetmethod ব্যবহারকারী-প্রদত্তgreetingসহname-এর মান রিটার্ন করবে।
Object-Oriented PL/SQL এর সুবিধা
- Encapsulation: Attributes এবং Methods একটি অবজেক্টের মধ্যে encapsulate (গোপন) থাকে, যা নিরাপত্তা এবং রিয়ূজেবিলিটি উন্নত করে।
- Code Reusability: আপনি একবার object type তৈরি করলে, সেটি অনেক জায়গায় ব্যবহার করতে পারবেন, ফলে কোডের পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায়।
- Modularity: Object-Oriented PL/SQL প্রোগ্রামিং কোডকে আরও বেশি সংগঠিত এবং মডুলার করে তোলে। এতে এক্সটেনশন এবং রক্ষণাবেক্ষণ সহজ হয়।
- Data Integrity: Object-oriented programming এর মাধ্যমে ডেটার এনক্যাপসুলেশন এবং বিশুদ্ধতা রক্ষা করা যায়।
শেষ কথা
Object-Oriented PL/SQL ব্যবহার করে আপনি শক্তিশালী, পুনঃব্যবহারযোগ্য এবং মডুলার কোড তৈরি করতে পারেন যা ডেটাবেসের ভিতরে বাস্তব বিশ্বে ব্যবহৃত বস্তুসমূহের প্রতিনিধিত্ব করে। Attributes এবং Methods হল এই কোডের দুটি প্রধান অংশ, যা অবজেক্টের গঠন এবং তার আচরণ নির্ধারণ করে। PL/SQL-এর মাধ্যমে OOP পদ্ধতি ব্যবহার করার ফলে আপনি আরও উন্নত এবং নমনীয় ডেটাবেস অ্যাপ্লিকেশন তৈরি করতে পারবেন।
PL/SQL-এ Object-Oriented Programming (OOP) এর ধারণা ব্যবহার করে আপনি Object Types তৈরি করতে পারেন, যা ক্লাসের মত আচরণ করে। এতে constructor functions এবং object inheritance দুটি গুরুত্বপূর্ণ ধারণা রয়েছে।
১. Constructor Functions
Constructor Functions হল বিশেষ ধরনের ফাংশন যা একটি Object Type ইনস্ট্যান্স (অবজেক্ট) তৈরি করতে ব্যবহৃত হয়। এগুলি পদ্ধতিগতভাবে একটি ক্লাসের কনস্ট্রাক্টরের মতো কাজ করে। যখন আপনি একটি নতুন অবজেক্ট তৈরি করেন, তখন কনস্ট্রাক্টর ফাংশনটি সেই অবজেক্টটির প্রাথমিক মান প্রদান করে।
PL/SQL-এ কনস্ট্রাক্টর ফাংশন সাধারণত INITIALIZE নামের থাকে (যদিও এটি যে কোনো নাম হতে পারে), এবং এটি Object Type এর এক বা একাধিক ফিল্ডে প্রাথমিক মান সেট করে।
Syntax:
TYPE object_type IS OBJECT (
field1 datatype,
field2 datatype,
CONSTRUCTOR FUNCTION initialize (value1 datatype, value2 datatype)
RETURN OBJECT_TYPE
);
উদাহরণ:
-- Object Type Definition
CREATE OR REPLACE TYPE person_type IS OBJECT (
first_name VARCHAR2(50),
last_name VARCHAR2(50),
-- Constructor Function
CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
RETURN SELF AS RESULT
);
/
-- Constructor Function Implementation
CREATE OR REPLACE TYPE BODY person_type IS
-- Constructor Implementation
CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
RETURN SELF AS RESULT IS
BEGIN
self.first_name := fname;
self.last_name := lname;
RETURN;
END;
END;
/
এখানে, person_type নামে একটি Object Type তৈরি করা হয়েছে। এর কনস্ট্রাক্টর ফাংশন person_type নামে এবং first_name এবং last_name ফিল্ডে প্রাথমিক মান সেট করে।
Object Instantiation:
DECLARE
person1 person_type;
BEGIN
-- Create an object using constructor
person1 := person_type('John', 'Doe');
DBMS_OUTPUT.PUT_LINE('Name: ' || person1.first_name || ' ' || person1.last_name);
END;
এখানে, person_type অবজেক্ট টাইপের একটি নতুন ইনস্ট্যান্স person1 তৈরি করা হয়েছে এবং কনস্ট্রাক্টর ফাংশন ব্যবহার করে প্রথম এবং শেষ নাম সেট করা হয়েছে।
২. Object Inheritance
Object Inheritance হল এক ধরনের বৈশিষ্ট্য যেখানে একটি অবজেক্ট টাইপ অন্য একটি অবজেক্ট টাইপ থেকে বৈশিষ্ট্য (ফিল্ড এবং ফাংশন) উত্তরাধিকারসূত্রে পায়। এই পদ্ধতির মাধ্যমে আপনি একটি সাধারণ অবজেক্ট টাইপ তৈরি করতে পারেন এবং তারপর সেটি থেকে অন্যান্য অবজেক্ট টাইপ তৈরি করতে পারেন।
PL/SQL-এ, Object Inheritance ব্যবহার করার জন্য UNDER কীওয়ার্ডটি ব্যবহার করা হয়, যার মাধ্যমে একটি অবজেক্ট টাইপ অন্য একটি টাইপ থেকে ইনহেরিট করে।
Syntax:
TYPE child_object_type UNDER parent_object_type (
-- Additional fields or methods
);
উদাহরণ:
-- Parent Object Type
CREATE OR REPLACE TYPE person_type IS OBJECT (
first_name VARCHAR2(50),
last_name VARCHAR2(50),
-- Constructor Function
CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
RETURN SELF AS RESULT
);
/
-- Parent Object Type BODY
CREATE OR REPLACE TYPE BODY person_type IS
-- Constructor Function Implementation
CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
RETURN SELF AS RESULT IS
BEGIN
self.first_name := fname;
self.last_name := lname;
RETURN;
END;
END;
/
-- Child Object Type Inheriting from person_type
CREATE OR REPLACE TYPE employee_type UNDER person_type (
employee_id NUMBER,
job_title VARCHAR2(50),
CONSTRUCTOR FUNCTION employee_type (fname VARCHAR2, lname VARCHAR2, emp_id NUMBER, job VARCHAR2)
RETURN SELF AS RESULT
);
/
-- Child Object Type BODY
CREATE OR REPLACE TYPE BODY employee_type IS
-- Constructor Implementation
CONSTRUCTOR FUNCTION employee_type (fname VARCHAR2, lname VARCHAR2, emp_id NUMBER, job VARCHAR2)
RETURN SELF AS RESULT IS
BEGIN
-- Call the parent constructor
person_type.initialize(fname, lname); -- Calling the parent constructor
self.employee_id := emp_id;
self.job_title := job;
RETURN;
END;
END;
/
এখানে, employee_type হল একটি child object type যা person_type (parent object type) থেকে ইনহেরিট করেছে। এই child type এ নতুন দুটি ফিল্ড (employee_id এবং job_title) রয়েছে, এবং একটি কনস্ট্রাক্টর ফাংশন employee_type তৈরি করা হয়েছে যা parent type এর কনস্ট্রাক্টরকে কল করে।
Object Instantiation with Inheritance:
DECLARE
emp1 employee_type;
BEGIN
-- Create an object of the child type using constructor
emp1 := employee_type('John', 'Doe', 101, 'Manager');
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp1.first_name || ' ' || emp1.last_name);
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || emp1.employee_id);
DBMS_OUTPUT.PUT_LINE('Job Title: ' || emp1.job_title);
END;
এখানে, employee_type অবজেক্টের একটি ইনস্ট্যান্স emp1 তৈরি করা হয়েছে এবং এর মাধ্যমে first_name, last_name, employee_id, এবং job_title প্রোপার্টি অ্যাক্সেস করা হয়েছে।
Summary:
- Constructor Functions: PL/SQL-এ কনস্ট্রাক্টর ফাংশনগুলি একটি Object Type এর ইনস্ট্যান্স তৈরি করার জন্য ব্যবহৃত হয় এবং এতে প্রাথমিক মান প্রদান করা হয়।
- Object Inheritance: PL/SQL-এ একটি Object Type অন্য একটি Object Type থেকে বৈশিষ্ট্য (ফিল্ড এবং ফাংশন) ইনহেরিট করতে পারে, যা আপনাকে কোডের পুনরায় ব্যবহারযোগ্যতা এবং নমনীয়তা প্রদান করে।
PL/SQL-এ object types, constructor functions এবং inheritance এর মাধ্যমে আপনি আধুনিক Object-Oriented Principles প্রয়োগ করে আপনার ডেটাবেস অ্যাপ্লিকেশন তৈরি করতে পারবেন।
PL/SQL-এ Object-Oriented Programming (OOP) ধারণা কিছুটা সীমিত আকারে ব্যবহার করা যায়, যেখানে আমরা Object Types, Methods, এবং Constructors তৈরি করতে পারি। PL/SQL-এ Object-Oriented PL/SQL একটি শক্তিশালী উপায় হতে পারে যখন আপনি ডেটাবেসে অবজেক্ট ভিত্তিক পদ্ধতিতে ডেটা পরিচালনা করতে চান।
PL/SQL-এ Object-Oriented Programming এর মাধ্যমে আপনি বিভিন্ন ধরনের Objects (অবজেক্ট টাইপ) তৈরি করতে পারেন, যা ডেটা এবং তার সাথে সম্পর্কিত কার্যক্রম (Methods) সংরক্ষণ করে। এর মাধ্যমে আপনি ডেটাবেসে অবজেক্টের মতো কাজ করতে পারবেন।
PL/SQL Object Types:
PL/SQL Object Types দুটি অংশে বিভক্ত হয়:
- Specification (Specification Section): এখানে Object Type এর বৈশিষ্ট্য এবং মেথডের ঘোষণা করা হয়।
- Body (Body Section): এখানে Object Type এর কার্যকরী মেথড এবং ফাংশনগুলির বাস্তবায়ন থাকে।
Object Type Definition (Specification Section):
-- Object type definition
CREATE OR REPLACE TYPE Employee AS OBJECT (
emp_id NUMBER,
emp_name VARCHAR2(50),
emp_salary NUMBER,
-- Constructor to initialize the object
CONSTRUCTOR FUNCTION Employee(p_emp_id NUMBER, p_emp_name VARCHAR2, p_emp_salary NUMBER)
RETURN SELF AS RESULT,
-- Method to display employee information
MEMBER FUNCTION display_info RETURN VARCHAR2
);
Object Type Body (Body Section):
-- Object type body definition
CREATE OR REPLACE TYPE BODY Employee AS
-- Constructor to initialize Employee object
CONSTRUCTOR FUNCTION Employee(p_emp_id NUMBER, p_emp_name VARCHAR2, p_emp_salary NUMBER)
RETURN SELF AS RESULT IS
BEGIN
SELF.emp_id := p_emp_id;
SELF.emp_name := p_emp_name;
SELF.emp_salary := p_emp_salary;
RETURN;
END Employee;
-- Method to display employee information
MEMBER FUNCTION display_info RETURN VARCHAR2 IS
BEGIN
RETURN 'Employee Name: ' || SELF.emp_name || ', Salary: ' || SELF.emp_salary;
END display_info;
END Employee;
Object-Oriented PL/SQL ব্যবহার:
PL/SQL-এ Object-Oriented ধারণা ব্যবহার করার জন্য প্রথমে আপনাকে একটি Object Type তৈরি করতে হবে। তারপর সেই Object Type এর Constructor এবং Methods ব্যবহার করে আপনাকে ডেটা কাজ করতে হবে।
Object-ইনস্ট্যান্স তৈরি এবং Method ব্যবহার করা:
DECLARE
-- Declare an instance of the Employee object
emp1 Employee;
emp_info VARCHAR2(100);
BEGIN
-- Creating an instance of the Employee object using the constructor
emp1 := Employee(101, 'John Doe', 50000);
-- Calling the display_info method to fetch employee information
emp_info := emp1.display_info;
-- Displaying employee information
DBMS_OUTPUT.PUT_LINE(emp_info);
END;
এখানে:
Employeeএকটি Object Type, যা কর্মচারী (Employee) এর তথ্য সংরক্ষণ করতে ব্যবহৃত হয়।emp1হল সেই Object এর ইনস্ট্যান্স, যাEmployeeকনস্ট্রাক্টর ফাংশনের মাধ্যমে তৈরি করা হয়েছে।emp1.display_infoমেথডটিemp1অবজেক্টের তথ্য প্রদর্শন করতে ব্যবহৃত হচ্ছে।
Output:
Employee Name: John Doe, Salary: 50000
PL/SQL Object Types এর আরও উদাহরণ:
১. Voter Object Type:
-- Create Object Type Voter
CREATE OR REPLACE TYPE Voter AS OBJECT (
voter_id NUMBER,
name VARCHAR2(50),
age NUMBER,
CONSTRUCTOR FUNCTION Voter(p_voter_id NUMBER, p_name VARCHAR2, p_age NUMBER) RETURN SELF AS RESULT,
MEMBER FUNCTION is_eligible RETURN BOOLEAN
);
Voter Object Type Body:
-- Body for the Voter object type
CREATE OR REPLACE TYPE BODY Voter AS
-- Constructor to initialize the Voter object
CONSTRUCTOR FUNCTION Voter(p_voter_id NUMBER, p_name VARCHAR2, p_age NUMBER)
RETURN SELF AS RESULT IS
BEGIN
SELF.voter_id := p_voter_id;
SELF.name := p_name;
SELF.age := p_age;
RETURN;
END Voter;
-- Method to check if the voter is eligible to vote
MEMBER FUNCTION is_eligible RETURN BOOLEAN IS
BEGIN
IF SELF.age >= 18 THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END is_eligible;
END Voter;
Voter Object Use:
DECLARE
v1 Voter;
eligibility BOOLEAN;
BEGIN
-- Creating an instance of Voter object
v1 := Voter(1, 'Alice', 25);
-- Checking eligibility
eligibility := v1.is_eligible;
IF eligibility THEN
DBMS_OUTPUT.PUT_LINE(v1.name || ' is eligible to vote.');
ELSE
DBMS_OUTPUT.PUT_LINE(v1.name || ' is not eligible to vote.');
END IF;
END;
Output:
Alice is eligible to vote.
Object-Oriented PL/SQL এর সুবিধা:
- Encapsulation: Object-Oriented PL/SQL এ Encapsulation ধারণাটি মেনে চলে, যেখানে ডেটা (Attributes) এবং কার্যকলাপ (Methods) একত্রে সংরক্ষণ করা হয়।
- Code Reusability: একবার একটি Object Type তৈরি করার পর সেটি বিভিন্ন জায়গায় পুনরায় ব্যবহার করা যেতে পারে।
- Maintainability: Object-Oriented প্রোগ্রামিং কোড ব্যবস্থাপনাকে সহজ করে তোলে, কারণ অবজেক্ট এবং মেথডের মধ্যে সম্পর্ক পরিষ্কার থাকে।
- Extensibility: নতুন ফিচার বা মেথড যোগ করা সহজ, কারণ OOP-এ এক্সটেনশন করার ক্ষমতা থাকে।
সারাংশ:
PL/SQL Object-Oriented Programming (OOP) আপনাকে Object Types, Methods, এবং Constructors তৈরি করার সুবিধা দেয়। এর মাধ্যমে আপনি ডেটাবেসের ভিতরে অবজেক্ট-ভিত্তিক পদ্ধতিতে কাজ করতে পারেন এবং এর সাহায্যে ডেটা ম্যানিপুলেশন আরও সিস্টেমেটিক এবং কার্যকরী হয়। OOP এর সুবিধাগুলির মধ্যে Encapsulation, Code Reusability, এবং Maintainability রয়েছে, যা কোডের গঠন এবং কার্যক্ষমতা উন্নত করতে সহায়ক।
Read more