রাজ্য, পরিবর্তনীয় রাজ্য এবং অপরিবর্তনীয় রাষ্ট্র কী?


32

এটি একটি নবাগত প্রশ্ন, তবে আমি গুগলে কোনও নবাবি-প্রুফের যথেষ্ট উত্তর খুঁজে পাইনি।

সাধারণভাবে প্রোগ্রামিংয়ে এবং বিশেষত ওও প্রোগ্রামিংয়ে লোকেরা 'রাষ্ট্র' বলার অর্থ কী?

এছাড়াও, পরিবর্তনীয় এবং অপরিবর্তনীয় অবস্থা কী - আবার, সাধারণত প্রোগ্রামিংয়ে এবং বিশেষত ওওপিতেও?


4
আপনার গবেষণা ভাগ করে নেওয়া প্রত্যেককে সহায়তা করে । আপনি কী চেষ্টা করেছেন এবং কেন এটি আপনার প্রয়োজনীয়তা মেটেনি তা আমাদের বলুন। এটি প্রমাণ করে যে আপনি নিজেকে সাহায্য করার চেষ্টা করার জন্য সময় নিয়েছেন, এটি আমাদের সুস্পষ্ট উত্তরের পুনরাবৃত্তি থেকে বাঁচায় এবং সর্বোপরি এটি আপনাকে আরও নির্দিষ্ট এবং প্রাসঙ্গিক উত্তর পেতে সহায়তা করে get আরো দেখুন কিভাবে জিজ্ঞাসা করতে
মশা

উত্তর:


46

আপনি যখন মান (সংখ্যার, স্ট্রিং, জটিল ডেটা স্ট্রাকচার) একটি পরিচয় এবং সময় পয়েন্টের সাথে যুক্ত করেন তখন আপনার অবস্থা থাকে state

উদাহরণস্বরূপ, 10 নম্বর নিজে থেকে কোনও রাষ্ট্রের প্রতিনিধিত্ব করে না: এটি কেবল একটি সংজ্ঞায়িত সংখ্যা এবং সর্বদা নিজেই থাকবে: প্রাকৃতিক সংখ্যা ১০। অন্য উদাহরণ হিসাবে, স্ট্রিং "হেল্লো" পাঁচটি অক্ষরের অনুক্রম এবং এবং এটি এতে অন্তর্ভুক্ত অক্ষরগুলি এবং সেগুলির ক্রম অনুসারে সম্পূর্ণরূপে বর্ণনা করা হয়। এখন থেকে পাঁচ মিলিয়ন বছরে, "HELLO" স্ট্রিংটি এখনও "HELLO" স্ট্রিংটি হবে: খাঁটি মান।

রাষ্ট্র বলতে গেলে আপনাকে এমন একটি পৃথিবী বিবেচনা করতে হবে যেখানে এই খাঁটি মানগুলি কোনও ধরণের সত্তার সাথে সম্পর্কিত যা একটি পরিচয় । পরিচয় একটি আদিম ধারণা: এর অর্থ অন্য যে কোনও সম্পত্তি থাকুক না কেন আপনি দুটি জিনিস আলাদা করতে পারবেন। উদাহরণস্বরূপ, একই মডেলের দুটি গাড়ি, একই রঙ, ... দুটি আলাদা গাড়ি।

পরিচয়ের সাথে এই জিনিসগুলি দেওয়া, আপনি খাঁটি মান দ্বারা বর্ণিত, তাদের সাথে সম্পত্তি যুক্ত করতে পারেন। উদাহরণস্বরূপ, আমার গাড়িটি নীল হওয়ার সম্পত্তি রয়েছে। আপনি এই ঘটনাটি জুড়ে যুক্ত করে বর্ণনা করতে পারেন

("colour", "blue")

আমার গাড়িতে জুড়ি ("রঙ", "নীল") একটি নির্দিষ্ট গাড়ির অবস্থা বর্ণনা করার জন্য একটি খাঁটি মান ।

রাজ্য কেবল একটি নির্দিষ্ট সত্তার সাথেই নয়, সময়ের সাথে সাথে একটি নির্দিষ্ট পয়েন্টের সাথেও যুক্ত। সুতরাং, আপনি বলতে পারেন যে আজ, আমার গাড়ী স্টেট আছে

("colour", "blue")

কাল আমি এটি কালো রঙে পুনরায় রঙ করব এবং নতুন রাষ্ট্র হবে

("colour", "black")

মনে রাখবেন যে কোনও সত্তার রাষ্ট্র পরিবর্তন করতে পারে তবে সংজ্ঞা অনুসারে এর পরিচয় পরিবর্তন হয় না । ঠিক আছে, যতক্ষণ না সত্তার অস্তিত্ব রয়েছে অবশ্যই: একটি গাড়ি তৈরি এবং ধ্বংস হতে পারে তবে এটি তার জীবনকালে এটির পরিচয় বজায় রাখবে। এমন কোনও কিছুর পরিচয় সম্পর্কে কথা বলার কোনও মানে হয় না যা এখনও অবধি নেই / আরও কিছু নেই।

প্রদত্ত সত্তার সাথে সংযুক্ত বৈশিষ্ট্যের মানগুলি যদি সময়ের সাথে পরিবর্তিত হয়, আপনি বলবেন যে সেই সত্তার অবস্থা পরিবর্তনযোগ্য । অন্যথায়, আপনি বলছেন যে রাজ্য অপরিবর্তনীয়

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

একটি বিকল্প হ'ল স্রোতের (সম্ভবত অসীম অনুক্রম) হিসাবে সত্তার পরবর্তী অবস্থাগুলি (ইতিহাস) দেখার জন্য, যেমন এসআইসপির অধ্যায় 3 দেখুন । এই ক্ষেত্রে, প্রতিটি স্ন্যাপশট একটি পৃথক মেমরির স্থানে সংরক্ষণ করা হয় এবং প্রোগ্রাম একই সাথে বিভিন্ন স্ন্যাপশট পরীক্ষা করতে পারে। অপ্রয়োজনীয় স্ন্যাপশটগুলি আবশ্যক হলে আবর্জনা সংগ্রহ করা যেতে পারে।

দুটি পদ্ধতির সুবিধা / অসুবিধা

  • পদ্ধতির ১ কম মেমরি গ্রহণ করে এবং এতে কোনও অনুলিপি জড়িত না হওয়ায় আরও দক্ষতার সাথে একটি নতুন স্ন্যাপশট তৈরি করতে দেয়।
  • পন্থা 1 স্পষ্টভাবে নতুন প্রোগ্রামকে কোনও প্রোগ্রামের সমস্ত অংশের দিকে রেফারেন্সযুক্তভাবে ঠেলে দেয়, পদ্ধতির 2 এর পর্যবেক্ষকদের কাছে একটি স্ন্যাপশট ধাক্কা দেওয়ার জন্য কিছু ব্যবস্থা প্রয়োজন, যেমন কোনও ইভেন্টের আকারে।
  • পন্থা 2 অসঙ্গতিপূর্ণ রাষ্ট্রীয় ত্রুটিগুলি রোধ করতে সহায়তা করতে পারে (উদাহরণস্বরূপ আংশিক রাষ্ট্রের আপডেট): একটি স্পষ্টকৃত ফাংশন সংজ্ঞায়িত করে যা একটি পুরানো একটি থেকে নতুন রাষ্ট্রের উত্পাদন করে এটি সময়ে বিভিন্ন পয়েন্টে উত্পাদিত স্ন্যাপশটের মধ্যে পার্থক্য করা আরও সহজ।
  • অ্যাপ্রোচ 2 আরও মডিউলার কারণ এটি সহজেই রাজ্য সম্পর্কে স্বতঃস্ফূর্ত দৃষ্টিভঙ্গি তৈরি করতে দেয় যা স্বয়ং রাজ্য থেকে স্বতন্ত্র, যেমন mapএবং উচ্চতর অর্ডার ফাংশন যেমন এবং ব্যবহার করে filter

1
মনে রাখবেন যে অবজেক্টগুলি কেবলমাত্র রাষ্ট্রের জিনিস নয়। যদি কোনও প্রোগ্রাম গ্লোবাল ভেরিয়েবলগুলি (পরিবর্তনযোগ্য) ব্যবহার করে, তবে প্রোগ্রামটি নিজেই রাষ্ট্র হিসাবে রয়েছে বলে মনে হয়। তেমনিভাবে, যদি কোনও ফাংশনে কোনও ভেরিয়েবল থাকে যা ফাংশন কলগুলিতে মানগুলি মনে রাখে, ফাংশনটি রাষ্ট্রীয়।
ডোভাল

2
@ ডোভাল: আপনি বৈশ্বিক রাষ্ট্রকে একটি বিশ্বব্যাপী বিশ্বের রাষ্ট্র হিসাবে ভাবতে পারেন। আমি যতদূর জানি, এই মতামত যেমন রুবিতে ব্যবহৃত হয়। একটি ফাংশন যা রাষ্ট্রকে মনে রাখে তা হ'ল একটি পদ্ধতিতে কোনও বস্তুর কাছে সমকামী ph সাধারণ প্রাথমিক ধারণাটি হ'ল আপনি পরিচয় বা স্থানগুলির সাথে মানগুলি সংযুক্ত করেন, অর্থাত্ কিছু কিছু জিনিস মূল্যবোধকে ধারণ করতে পারে (সম্ভবত পরিবর্তনীয় মান) তবে তাদের পরিচয়টি বজায় রাখে।
জর্জিও

3
অবশ্যই, আমি নীতিগতভাবে একমত। আমি কেবল নিশ্চিত হয়ে উঠছি যে প্রগ বুঝতে পেরেছেন যে রাষ্ট্রীয়তা ওওপির জন্য একচেটিয়া কিছু নয়। আমি মনে করি না "সবকিছুই একটি বস্তু" চিন্তার রেখাটি স্বাভাবিকভাবে আসে comes
ডোভাল

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

11

রাজ্য হ'ল স্মৃতিতে রাখা কিছু সম্পর্কে তথ্য।

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

পরিবর্তনীয় স্থিতি এমন একটি রাষ্ট্র যা আপনি বস্তুটি (কুকি) তৈরি করার পরে পরিবর্তন করা যেতে পারে। অপরিবর্তনীয় রাষ্ট্র এমন একটি রাষ্ট্র যা পরিবর্তন করা যায় না।

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

সাধারণভাবে, কোনও সামগ্রীর অবস্থা "ব্যক্তিগত বা সদস্য ভেরিয়েবলগুলিতে" রাখা হয় এবং "বৈশিষ্ট্য" বা গেটর / সেটার পদ্ধতিগুলির মাধ্যমে অ্যাক্সেস করা হয়।


3
প্রগলের সুবিধার জন্য, কোনও মান কখনই পরিবর্তিত হয় না এ বিষয়টিও গুরুত্বপূর্ণ কারণ এটির পক্ষে যুক্তি করা খুব সহজ। এটি আপনি চান যতগুলি ফাংশন / পদ্ধতিতে ব্যবহার করা যেতে পারে এবং আপনি জানেন যে তারা এটি পরিবর্তন করতে পারবেন না। চপল রাষ্ট্রের সঙ্গে আপনি কেমন যে বস্তুর কি তার মূল্য আছে জিনিসটা ব্যবহৃত হয়েছে ইতিহাস ট্র্যাক আছে এখন । অযৌক্তিক মানসিক ওভারহেড যদি এটি অপরিবর্তনীয় করে তোলা প্রোগ্রামকে জটিল করে না।
ডোভাল

উত্তর করার জন্য ধন্যবাদ. সুতরাং মূলত, ওওপি-তে, যখন কেউ 'রাষ্ট্র' বলে, তখন তাদের সাধারণত "বস্তুর সদস্যের পরিবর্তনশীল" বলতে বোঝায়? যদি তা হয়, তবে 'মিটেবল স্টেট' হ'ল পাবলিক ভেরিয়েবল, বা ওওপিতে আরও সাধারণ, বেসরকারী ভেরিয়েবলগুলি যা সেটার পদ্ধতির মাধ্যমে পরিবর্তন করা যায় - যখন 'অপরিবর্তনীয় রাষ্ট্র' কেবলমাত্র ব্যক্তিগত সদস্যের ভেরিয়েবল?
আভিভ কোহন

1
অপরিবর্তনীয়তা কখনই কোনও বস্তুর ব্যক্তিগত সদস্যদের প্রাথমিক মানগুলির সাথে জনবহুল হয়ে লেখার মাধ্যমে কখনই না লিখে অনুকরণ করা যায়। অপরিবর্তনীয়তা যাবে জারি একটি সেটার পদ্ধতি প্রদানের না, প্রাথমিক মান প্রয়োজন একটি কার্মিক শৈলী, ইত্যাদি লেখার ধ্রুবক ব্যবহার করে, একটি কন্সট্রাকটর প্যারামিটার ব্যবহার করে নির্ধারণ করা হবে,: পদ্ধতি নম্বর ব্যবহার করে
রবার্ট হার্ভে

1
আমি রাষ্ট্রকে কিছু সত্তার কিছু সম্পত্তির মূল্য হিসাবে মনে করি। "শিপড" একটি রাষ্ট্র। তাই "করের হার।" কোনও কিছুর ওজন একটি রাষ্ট্র। আপনি বর্তমানে জেগে আছেন বা ঘুমিয়ে আছেন তা রাষ্ট্র is কোনও কিছুর রঙ একটি রাষ্ট্র। কোনও কিছুর কম্পিউটার মেমোরিতে রাখা সম্পর্কে অর্থপূর্ণ তথ্য।
রবার্ট হার্ভে

1
অনেক ভাষায়, সদস্য পরিবর্তনশীলকে "কনস্ট" বা "চূড়ান্ত" হিসাবে ঘোষণা করে অপরিবর্তনীয়তা প্রয়োগ করা যেতে পারে। এই ধরণের ভেরিয়েবলগুলি কেবলমাত্র নির্মাণকারী দ্বারা শুরু করা যেতে পারে। ব্যক্তিগত ভেরিয়েবলগুলি অপরিবর্তনীয় বলে ধরে নিবেন না - সেগুলি এখনও শ্রেণীর নিজস্ব সদস্য ফাংশন (পদ্ধতি) দ্বারা সংশোধন করা যেতে পারে।
সাইমন বি

7

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

স্টেটফুল বনাম স্টেটলেস

  • একজন রাষ্ট্রীয় এপিআই হ'ল এটি যা " এতক্ষণে " কী ফাংশনগুলি কল করে এবং কোন যুক্তি সহ "মনে করে" তাই আপনি পরের বার যখন কোনও ফাংশন ডাকবেন তখন সে তথ্যটি ব্যবহার করবে। "মনে রাখার" অংশটি প্রায়শই সদস্যের ভেরিয়েবলগুলির সাথে প্রয়োগ করা হয়, তবে এটি একমাত্র উপায় নয়।
  • একটি রাষ্ট্রহীন এপিআই এক যেখানে প্রত্যেক ফাংশন কল একমাত্র আর্গুমেন্ট এটি পাস উপর নির্ভর করে, এবং অন্য কিছুই নয়।

উদাহরণস্বরূপ, ওপেনজিএল সম্ভবত আমি জানি সবচেয়ে রাষ্ট্রীয় API। আমি যদি মুহুর্তের জন্য হাস্যকরভাবে এটির আরও বেশি ব্যাখ্যা করতে পারি তবে আমরা বলতে পারি যে এটি দেখতে এরকম কিছু দেখাচ্ছে:

glSetCurrentVertexBufferArray(vba1);
glSetCurrentVertexBufferObject(vbo1);
glSetCurrentVertexShader(vert1);
glSetCurrentFragmentShader(frag1);
// a dozen other things
glActuallyDrawStuffWithCurrentState(GL_TRIANGLES);

প্রায় প্রতিটি ফাংশন স্রেফ কিছু রাজ্যে পাস করার জন্য ব্যবহৃত হয় ওপেনএলকে মনে রাখা দরকার, তারপরে শেষে আপনি সমস্ত অঙ্কন করার জন্য একটি অ্যান্টিক্লিম্যাকটিক্যালি সহজ ফাংশনটি কল করেন।

ওপেনজিএল এর একটি স্টেটহীন সংস্করণ সম্ভবত আরও দেখতে লাগবে:

glActuallyDrawStuff(vba1, vbo1, vert1, frag1, /* a dozen other things */, GL_TRIANGLES);

আপনি প্রায়শই লোকদের বলতে শুনতে পাবেন যে কম রাজ্যের এপিআইগুলির বিষয়ে যুক্তি করা সহজ। আপনি যদি যুক্তি গণনা নিয়ন্ত্রণে রাখতে পারেন তবে আমি সাধারণত এটির সাথে একমত হই।

পরিবর্তনীয় বনাম অপরিবর্তনীয়

আমি যতদূর জানি, এই পার্থক্যটি কেবলমাত্র তখনই অর্থবোধক যখন আপনি কোনও প্রাথমিক অবস্থা নির্দিষ্ট করতে পারবেন । উদাহরণস্বরূপ, সি ++ কনস্ট্রাক্টর ব্যবহার করে:

// immutable state
ImmutableWindow windowA = new ImmutableWindow(600, 400);
windowA = new ImmutableWindow(800, 600); // to change the size, I need a whole new window

// mutable state
MutableWindow windowB = new MutableWindow(600, 400);
windowB.width = 800; // to change the size, I just alter the existing object
windowB.height = 600;

উইন্ডো শ্রেণি প্রয়োগ করা শক্ত হবে যা এটি কোন আকারের "মনে রাখে" না তবে আপনি এটি নির্ধারণ করতে পারেন যে ব্যবহারকারীটি এটি তৈরির পরে উইন্ডোর আকার পরিবর্তন করতে সক্ষম হবে কিনা।

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


দুর্দান্ত উত্তর। আপনাকে অনেক ধন্যবাদ, আপনি সত্যই আমাকে দ্রুত এটিকে বাছতে সাহায্য করেছেন। খুব কমই আমি জানতাম, আমি দীর্ঘদিন ধরে এটি নিয়ে কাজ করছি এবং এটি কী বলা হয়েছিল তা জানতাম না।
the_endian

2

সাধারণ কথায়

অভিধান পদ বলে:

ক। পরিস্থিতি সম্পর্কিত হিসাবে একটি শর্ত বা সত্তার মোড।

  1. রাষ্ট্র - কিছু তার প্রধান বৈশিষ্ট্য সম্মানের সাথে উপায়;

কোনও কিছুর স্থিতি হল মানগুলির সেট যা তার বৈশিষ্ট্যগুলি যে কোনও মুহুর্তে থাকে।

ওওপি-তে কোনও সামগ্রীর স্থিতি হ'ল কোনও মুহুর্তে এর বৈশিষ্ট্যের মানগুলি কী হয় তার একটি স্ন্যাপশট।

Thing t = new Thing();
t.setColor("blue");
t.setPrice(100)
t.setSize("small");

এটির রাজ্যটি এর রঙ নীল, দাম 100 এবং এর আকার ছোট।

আপনি যদি পরে করেন:

t.setColor("red");

আপনি এর বৈশিষ্ট্যগুলির মধ্যে একটি পরিবর্তন করেন তবে আপনি রাষ্ট্রকে পুরোপুরি পরিবর্তনও করেছিলেন কারণ বস্তুটি আর আগের মতো ছিল না same

কখনও কখনও ক্লাসগুলি ডিজাইন করা হয় যাতে এটি তৈরি করার পরে তাদের বৈশিষ্ট্যগুলির মানগুলি পরিবর্তন করা যায় না। তাদের বৈশিষ্ট্যগুলির সমস্ত মান হয় হয় কনস্ট্রাক্টরকে দেওয়া হয় বা কোনও উত্স থেকে ডাটাবেস বা কোনও ফাইলের মতো পড়ে নেওয়া হয়, তবে সেই মুহুর্তের পরে সেই মানগুলি পরিবর্তন করার কোনও উপায় নেই, যেহেতু কোনও "সেটার" পদ্ধতি নেই, বা অন্য কোনও উপায় নেই অবজেক্টের ভিতরে মানগুলি পরিবর্তন করা।

Thing t = new Thing("red",100,"small");
t.setColor("blue") -->> ERROR, the programmer didn't provide a setter or any other way to change the properties values after initialization.

এটিকে এমন একটি রাষ্ট্র বলা হয় যা পরিবর্তিত হতে পারে না। আপনি যা করতে পারেন তা হ'ল অবজেক্টটি ধ্বংস করা, একটি নতুন তৈরি করা এবং এটি একই রেফারেন্স বা পরিবর্তনশীলকে আশ্বস্ত করা।

Thing t = new Thing("red",100,"small");
t = new Thing("blue",100,"small");
// I had to create a new Thing with another color since this thing is inmutable.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.