OOP Topics

|| Preventing from Extending & Overriding by final keyword
	আপনি অনেকগুলো ক্লাস অথবা মেথড নিয়ে কাজ করছেন। আপনি চাচ্ছেন
    স্পেসিফিক কিছু ক্লাসের সাবক্লাস তৈরী করবেন না অথবা মেথডকে আরেকটা 
    ক্লাসে ওভারাইট করতে দিবেন না। 
    তখন আপনি final keyword ব্যবহার করতে পারেন।

|| Polymorphism
	একটা ক্লাস থেকে আরেকট ক্লাস অথবা মালটিপাল ক্লাস তৈরী করা এবং
    সুপার ক্লাসের মেথডকে সাবক্লাসে ওভারাইট করা।

|| Constructor and  destructor
	constructor magic method auto loaded and execute at first
	destructor magic method auto loaded and execute at the end

|| Interface
	Interface actually empty class যার ভিতরে মেথড ডিকলারেশন থাকে এর 
    কোন বডি পার্ট থাকে না। Interface কে আরেকটা ক্লাসে implements করে 
    কাজ করতে হয়।

|| Abstract
	Abstract ও  Interface ক্লাস এর ক্ষেত্রে সরাসরি object তৈরী করা যায় না
    Interface এর ক্ষেত্রে আমরা  multiple Interface কে একটা ক্লাস এ 
    implements করে কাজ করতে পারি। যেখানে Abstract কে একটি ক্লাসে 
    extentd করে কাজ করতে হয়। 

|| magic methods
	__get($property) when access undefined property then get mathod 
    automatically work
	
	__set($property, $value)  when a value asign inside the undefined 
    property then set mathod work

	__call($method, $arg_array) when access undefined method then call 
    mathod work

|| Method Chaining    
	একটা অবজেক্টের মালটিপাল মেথডে access করা
	$ned->framework()->cms()->calculate(4,5);

|| type hinting 
	একটা ক্লাস এর মেথডে আপনি বলে দিতে পারবেন আপনি কি টাইপের ডাটা 
    নিয়ে কাজ করছেন। সেটা হতে পারে আ্যারে টাইপের ডাটা বা অবজেক্ট টাইপের ডাটা	

||	__CLASS__ magic constant class যেই ক্লাস এর মধ্যে থাকবে সে ওই 
    ক্লাসটাকেই রির্টান করবে। get_class() magic constant method যেই ক্লাস 
    এর অবজেক্ট তৈরি করা হবে ঠিক ওই ক্লাসটাকেই রির্টান করবে।

|| Object Cloning
	আপনি যখন অবজেক্টকে কপি করবেন তখন প্রকৃতভাবে তার রেফারেন্সটা 
    কপি হয়। তো আপনি চাচ্ছেন মেমোরির নতুন একটি জায়গায় নতুন কোন 
    ভ্যালু সেট করতে যেটি আগের ভ্যালুটিকে রিপলেস করবে না তখন এই 
    কোলনিং ব্যবহার করতে হয় 
	
|| Namespaces
	Namespaces হল virtual directory মত যেখানে একই নামের মালটিপাল 
    ক্লাস,মেথড,কন্সটেন্ট naming conflict এড়িয়ে কাজ করতে পারেন 

|| Strategy Design Pattern
	school management software যেমন স্কুল থেকে গার্ডিয়ানদের কাছে  
    বিভিন্ন সিস্টেমে notification পাঠানো যাবে তো এই ক্ষেত্রে Strategy 
    ছিল email,fax,sms. 

|| Factory Design Pattern
	ক্লাইন্ট বলল একটা সিস্টেম তৈরি করতে যেটা যখন ইচ্ছা তখন আপনি 
    বিভিন্ন ডাটাবেজ ড্রাইবার সাপোর্ট দিতে পারবেন।  

|| Iterator Design Pattern
	একটা ব্লগে অনেকগুলো পোস্ট থাকে এবং পোস্টের অধীনে অনেকগুলো 
    কমেন্ট থাকে। তো এ ক্ষেত্রে পোস্টের জন্য একবার আইটেরেটর আবার ওই 
    পোস্টের কমেন্টের জন্য আইটেরেটর চালাতে হয়। 
	
|| Observer Design Pattern:
	একটা সিস্টেমের কথা চিন্তা করুন যেখানে যখনি কোন ইভেন্ট সংঘটিত 
    হবে ঠিক তখনি আপনাকে একটা নটিফিকেসন দিবে। এই ধরনের প্রোব্লেম 
    যদি সলভ করতে চান তখন আপনাকে Observer Design Pattern follow 
    করতে হবে।
	
|| Decorator Design Pattern
	ধরুন ২টা class আছে post class and comment class নামে।
    এই দুইটা class এর মধ্যে same method আছে get_content নামে । 
    আপনি চাচ্ছেন এই মেথডে কোন প্রকার touch ছাড়াই additional কিছু ফাংশন 
    add করবেন। 
	
|| Facade Design Pattern
	অনেকগুলা object এর একটা common interface দেয়। 
    ধরুন তিনটা অবজেক্ট আছে এবং তিনটা অবজেক্ট তিন রকমের কাজ 
    করছে যা একটা interface থেকে control হচ্ছে ।

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s