পিএইচপি এসকিউএল ওয়ার্ডপ্রেস জাভাস্ক্রিপ্ট জেকুয়েরি এইচটিএমএল
ফোরাম
×

পিএইচপি টিউটোরিয়াল

হোম-HOME পরিচিতি-Introduction ইনস্টল-Install গঠনপ্রনালী-Syntax চলক-Variable পিএইচপি Echo / Print তথ্যের ধরণ-Data Types কনস্ট্যান্ট-Constant অপারেটর-Operator ফাংশন-Function সুপারগ্লোভাল-Superglobal

কন্ট্রোল স্টেটমেন্ট

if স্টেটমেন্ট if...Else স্টেটমেন্ট Switch স্টেটমেন্ট While লুপ DO...While লুপ For লুপ

পিএইচপি এ্যারে এবং স্ট্রিং

এ্যারে-Array এ্যারে সর্টিং -Array Sorting মাল্টি এ্যারে-Multi Array স্ট্রিং-String

পিএইচপি এডভান্স

তারিখ এবং সময় পিএইচপি include ফাইল হ্যান্ডলিং-File Handling ফাইল খোলা/পড়া ফাইল তৈরি/লিখা ফাইল আপলোড ফাইল ডাউনলোড কুকি-Cookie সেশন-Session ফিল্টার-Filter এডভান্স ফিল্টার-Advance Filter এঁরর হ্যান্ডলিং-Error Handling এক্সেপশন হ্যান্ডেলিং-Exception Handling

পিএইচপি ফরম

ফরম হ্যান্ডলিং ফরম ভ্যালিডেশন আবশ্যক ফরম ফিল্ড ফরম URL/E-mail সম্পূর্ণ ফরম

MySQL ডেটাবেজ

MySQL ডেটাবেজ MySQL ডেটাবেজ সংযোগ MySQL ডেটাবেজ তৈরী MySQL টেবিল তৈরী MySQL তথ্য ইনসার্ট MySQL শেষ আইডি পান MySQL একাধিক তথ্য ইনসার্ট MySQL প্রিপেয়ার্ড স্টেটমেন্ট MySQL তথ্য সিলেক্ট MySQL তথ্য ডিলিট MySQL তথ্য আপডেট MySQL সীমিত তথ্য সিলেক্ট

পিএইচপি- এক্সএমএল

PHP XML Parser PHP SimpleXML Parser PHP XML Parser PHP SimpleXML - Get PHP XML Expat PHP XML Dom

পিএইচপি - এজাক্স

পিএইচপি AJAX পরিচিতি AJAX পিএইচপি AJAX ডেটাবেজ AJAX এক্সএমএল AJAX সারাসরি সার্চ AJAX RSS রির্ডার AJAX Poll

পিএইচপি অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং(OOP)

OOP পরিচিতি OOP class তৈরী OOP objects তৈরী OOP $this কিওয়ার্ড OOP মেথড এবং প্রোপার্টি চেইনিং OOP অ্যাক্সেস মোডিফায়ার OOP ম্যাজিক মেথড এবং কন্সটেন্ট OOP ইনহেরিটেন্স OOP Abstract class এবং method OOP ইন্টারফেস OOP পলিমরফিজম OOP টাইপ হিন্টিং() OOP টাইপ হিন্টিনং ইন্টারফেস OOP স্ট্যাটিক মেথোড এবং প্রোপার্টি

 

অ্যাবস্ট্রাক্ট ক্লাস এবং মেথড

এটি একটি অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং কৌশল। এই পদ্ধতিতে একজন প্রোগ্রামার প্রাসঙ্গিক তথ্য ছাড়া সব কিছুই লুকিয়ে রাখতে পারে। যেমন- প্যারেন্ট ক্লাসের কিছু নির্দিষ্ট মেথডে চাইল্ড ক্লাস এক্সেস নিতে পারবে এমন অঙ্গীকার করার জন্য আমরা abstract class ব্যবহার করি। কিন্তু আমরা এই অঙ্গীকার করি না যে, মেথডের মধ্যে কি ধরণের কোড থাকবে।

আরও স্পষ্ট করে বললেঃ আমরা অ্যাবস্ট্রাক্ট(abstract) ক্লাস এবং মেথড তখনই ব্যবহার করি যখন আমরা প্যারেন্ট ক্লাস এর কিছু মেথডকে চাইল্ড ক্লাস থেকে ইনহেরিট করতে বাধ্য করি।


অ্যাবস্ট্রাক্ট(abstract) ক্লাস এবং মেথড

  • অ্যাবস্ট্রাক্ট(abstract) ক্লাস - অ্যাবস্ট্রাক্ট ক্লাসে কমপক্ষে একটি অ্যাবস্ট্রাক্ট মেথড থাকে। অ্যাবস্ট্রাক্ট ক্লাস থেকে আমরা কোনো অবজেক্ট তৈরি করতে পারি না, বরং এর পরিবর্তে অ্যাবস্ট্রাক্ট ক্লাসের চাইল্ড ক্লাস এর মধ্যে আমরা অ্যাবস্ট্রাক্ট মেথডসমুহকে ডিফাইন করবো এবং প্রয়োজন অনুযায়ী চাইল্ড ক্লাস এর অবজেক্ট তৈরি করবো।
  • অ্যাবস্ট্রাক্ট(abstract) মেথড - অ্যাবস্ট্রাক্ট মেথড শুধুমাত্র অ্যাবস্ট্রাক্ট ক্লাসের মধ্যেই ব্যবহার করা যায়। অ্যাবস্ট্রাক্ট মেথডের মধ্যে কোনো কোড ডিফাইন করা থাকে না। শুধুমাত্র মেথডের নাম এবং আর্গুমেন্টসমূহ ডিক্লেয়ার করা থাকে। এই জন্য আমরা অ্যাবস্ট্রাক্ট ক্লাস থেকে কোনো অবজেক্ট তৈরি করতে পারি না।

অ্যাবস্ট্রাক্ট ক্লাস এবং মেথড ডিক্লেয়ার

অ্যাবস্ট্রাক্ট ক্লাস ডিক্লেয়ার করার জন্য আপনাকে নিম্নের মত abstract কীওয়ার্ড ব্যবহার করতে হবেঃ

abstract class ClassName {}

এখন আমরা অ্যাবস্ট্রাক্ট ক্লাসের মধ্যে একটি অ্যাবস্ট্রাক্ট মেথড তৈরি করবো। অ্যাবস্ট্রাক্ট মেথড তৈরি করার জন্য মেথডের নামের পূর্বে নিম্নের মত abstract কীওয়ার্ড ব্যবহার করতে হবেঃ

abstract class ClassName {
	// অ্যাবস্ট্রাক্ট মেথড ঘোষণা
	abstract public function methodName();
}
সতর্কতাঃ অ্যাবস্ট্রাক্ট মেথড শুধুমাত্র অ্যাবস্ট্রাক্ট ক্লাসের মধ্যেই ডিক্লেয়ার করা যায়। অর্থাৎ কোনো ক্লাসের মধ্যে অ্যাবস্ট্রাক্ট মেথড ডিক্লেয়ার করার পূর্বে ঐ ক্লাসটিকে অবশ্যই অ্যাবস্ট্রাক্ট করে নিতে হবে।

এখন আমরা একটি অ্যাবস্ট্রাক্ট ক্লাস এবং মেথডের উদাহরণ দেখবোঃ

উদাহরণ
<?php
	abstract class Truck {
		// অ্যাবস্ট্রাক্ট মেথড ডিক্লেয়ার
		abstract public function calcMiles();
	}

?>

একটি অ্যাবস্ট্রাক্ট ক্লাসে সাধারন মেথড থাকতে পারে কি?

হ্যাঁ, অবশ্যই। একটি অ্যাবস্ট্রাক্ট ক্লাসের মধ্যে সাধারন মেথড থাকতে পারে এবং সাধারন প্রোপার্টিও থাকতে পারে।

চলুন আমাদের উদাহরণে একটি protected প্রোপার্টি $tankValue এবং একটি public মেথড setTankValue() যুক্ত করিঃ

<?php
abstract class Truck {
  // অ্যাবস্ট্রাক্ট ক্লাসের মধ্যে সাধারন প্রোপার্টি
  protected $tankValue;

  // অ্যাবস্ট্রাক্ট ক্লাসের মধ্যে সাধারন মেথড
  public function setTankValue($value) {
    $this->tankValue = $value;
  }

  // অ্যাবস্ট্রাক্ট মেথড
  abstract public function calcMiles();
}
?>

কিভাবে অ্যাবস্ট্রাক্ট ক্লাসের চাইল্ড ক্লাস তৈরি করবেন?

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

চলুন Truck ক্লাস এর একটি চাইল্ড ক্লাস Toyota তৈরি করি যা উত্তরাধিকার সূত্রে অ্যাবস্ট্রাক্ট মেথড calcMiles() কে পায় এবং এতে প্রয়োজনীয় কোড ডিফাইন করিঃ

class Toyota extends Truck {
  public function calcMiles() {
    return $this->tankValue * 20;
  }
}

এখন আমরা অ্যাবস্ট্রাক্ট ক্লাস Truck এর ভিন্ন একটি চাইল্ড ক্লাস তৈরি করবো এবং এখানেও অ্যাবস্ট্রাক্ট মেথড calcMiles() এ কোড ডিফাইন করবো। তবে এক্ষেত্রে গণনা একটু ভিন্ন হবে, কারণ এটি ভিন্ন একটি ট্রাক ক্লাসঃ

class Mahindra extends Truck {
  public function calcMiles() {
    return $this->tankValue * 18;
  }
}

এখন আমরা চাইল্ড ক্লাস গুলো থেকে অবজেক্ট তৈরি করবো এবং ফলাফল আউটপুট নিবঃ

// চাইল্ড ক্লাসের অবজেক্ট তৈরি
$toyota = new Toyota();
$mahindra = new Mahindra();
// ট্যাঙ্কের ভ্যালু নির্ধারন
$toyota->setTankValue(10);
$mahindra->setTankValue(10);
// ফলাফল
echo $toyota->calcMiles();
echo "<br>";
echo $mahindra->calcMiles();

ফলাফল
200
180