আমি পিএইচপি ওয়ার্ল্ড থেকে এসেছি। আপনি কীভাবে গেটার এবং সেটটারগুলি ব্যাখ্যা করতে পারেন এবং আপনাকে কিছু উদাহরণ দিতে পারেন?
আমি পিএইচপি ওয়ার্ল্ড থেকে এসেছি। আপনি কীভাবে গেটার এবং সেটটারগুলি ব্যাখ্যা করতে পারেন এবং আপনাকে কিছু উদাহরণ দিতে পারেন?
উত্তর:
টিউটোরিয়াল এর জন্য সত্যিই প্রয়োজন হয় না। Encapsulation উপর পড়ুন
private String myField; //"private" means access to this is restricted
public String getMyField()
{
//include validation, logic, logging or whatever you like here
return this.myField;
}
public void setMyField(String value)
{
//include more logic
this.myField = value;
}
someObj.getTime().setHour(5)
এটির someObj
অভ্যন্তরীণ অবস্থাকে প্রভাবিত করবে না । এছাড়াও সেটেটর এবং গেটার্স (তাদের ফ্যানসিয়ার নাম অনুসারে অ্যাক্সেসর এবং মিউটর) এর খুব কঠোর পদ্ধতির স্বাক্ষর রয়েছে যার অর্থ গেটারের কোনও প্যারামিটার নেই। সাধারণ পদ্ধতিগুলি যেভাবেই কেবল একটি কাজ করা উচিত।
this
কীওয়ার্ডটি alচ্ছিক, যদি না নির্দিষ্ট কিছু সুযোগের সাথে কোনও বিরোধ না হয়। আপনি যে উদাহরণটি দিয়েছেন তাতে যে সেটারটি তৈরি করা হয়েছে তার একটি একক প্যারামিটার থাকবে যার নাম ফিল্ডের নামের সাথে মেলে, সুতরাং this.fieldName = fieldName
এটি পার্থক্য করতে ব্যবহৃত হয় যে প্যারামিটারটি তার নিজের হিসাবে নির্ধারিত হওয়ার পরিবর্তে ক্ষেত্রটি বরাদ্দ করা হচ্ছে fieldName = fieldname
। প্রাপ্তির মধ্যে এ জাতীয় কোনও বিরোধ নেই।
জাভাতে গিটার এবং সেটটারগুলি সম্পূর্ণ সাধারণ ফাংশন। একমাত্র জিনিস যা তাদের গ্রাহক বা স্থিরকারী করে তোলে তা হ'ল কনভেনশন। ফু জন্য একটি গেটরকে getFoo বলা হয় এবং সেটারকে সেটফু বলে। বুলিয়ানের ক্ষেত্রে, প্রাপ্তিকে ইসফু বলা হয়। 'নাম' এর জন্য গেটর এবং সেটারের এই উদাহরণে প্রদর্শিত হিসাবে তাদের অবশ্যই একটি নির্দিষ্ট ঘোষণা থাকতে হবে:
class Dummy
{
private String name;
public Dummy() {}
public Dummy(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
আপনার সদস্যদের সর্বজনীন করার পরিবর্তে গেটার এবং সেটটার ব্যবহার করার কারণ হ'ল ইন্টারফেসটি পরিবর্তন না করে বাস্তবায়ন পরিবর্তন করা সম্ভব করে। এছাড়াও, অনেক সরঞ্জাম এবং টুলকিটগুলি যা বস্তুগুলি পরীক্ষা করতে প্রতিবিম্ব ব্যবহার করে কেবলমাত্র গেটর এবং সেটটারযুক্ত বস্তুগুলিকে গ্রহণ করে। উদাহরণস্বরূপ জাভাবীনের গিটার এবং সেটারগুলির পাশাপাশি কিছু অন্যান্য প্রয়োজনীয়তাও থাকতে হবে।
error: invalid method declaration; return type required
class Clock {
String time;
void setTime (String t) {
time = t;
}
String getTime() {
return time;
}
}
class ClockTestDrive {
public static void main (String [] args) {
Clock c = new Clock;
c.setTime("12345")
String tod = c.getTime();
System.out.println(time: " + tod);
}
}
আপনি যখন প্রোগ্রামটি চালান, তখন প্রোগ্রামটি শুরু হয় প্রধান,
setTime()
অবজেক্ট সি বলেtime
মান দ্বারা নির্ধারিত হয়getTime()
বলা হয় অবজেক্ট সি দ্বারাtod
এবং tod
মুদ্রণ আউট হবেআপনি " গিটার এবং সেটার পদ্ধতিগুলি কেন খারাপ " তাও পড়তে চাইতে পারেন :
যদিও জাটার মধ্যে গেটর / সেটার পদ্ধতিগুলি সাধারণ, তবুও তারা বিশেষত অবজেক্ট ওরিয়েন্টেড (ওও) নয়। আসলে তারা আপনার কোডের রক্ষণাবেক্ষণের ক্ষতি করতে পারে। তদুপরি, অসংখ্য গেটর এবং সেটার পদ্ধতির উপস্থিতি একটি লাল পতাকা যা প্রোগ্রামটি ওও দৃষ্টিকোণ থেকে অগত্যা ভালভাবে ডিজাইন করা হয়নি।
এই নিবন্ধটি ব্যাখ্যা করে যে আপনি কেন গিটার এবং সেটটার ব্যবহার করবেন না (এবং যখন আপনি সেগুলি ব্যবহার করতে পারেন) এবং এমন একটি নকশার পদ্ধতি প্রস্তাব করে যা আপনাকে গিটার / সেটার মানসিকতা ছিন্ন করতে সহায়তা করবে।
মজিলার একটি জাভাস্ক্রিপ্ট উদাহরণ এখানে:
var o = { a:0 } // `o` is now a basic object
Object.defineProperty(o, "b", {
get: function () {
return this.a + 1;
}
});
console.log(o.b) // Runs the getter, which yields a + 1 (which is 1)
আমি এগুলি প্রচুর ব্যবহার করেছি কারণ তারা দুর্দান্ত । আমার কোডিং + অ্যানিমেশনের সাথে অভিনব হওয়ার সময় আমি এটি ব্যবহার করব। উদাহরণস্বরূপ, এমন একটি সেটার তৈরি করুন Number
যা আপনার ওয়েবপৃষ্ঠায় সেই সংখ্যাটি প্রদর্শন করে with যখন সেটার ব্যবহার করা হয় তখন টিউনার ব্যবহার করে এটি পুরানো নম্বরটিকে নতুন সংখ্যায় অ্যানিমেট করে । প্রাথমিক সংখ্যাটি যদি 0 হয় এবং আপনি এটি 10 এ সেট করেন তবে আপনি 0 থেকে 10 ওভার পর্যন্ত নম্বরগুলি দ্রুত ফ্লপ করতে দেখবেন, আসুন বলি, অর্ধেক সেকেন্ড। ব্যবহারকারীরা এই জিনিস পছন্দ করেন এবং এটি তৈরি করা মজাদার।
সোফ থেকে উদাহরণ
<?php
class MyClass {
private $firstField;
private $secondField;
public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
}
}
public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
return $this;
}
}
?>
সাইটিং:
জাভাতে গেটর এবং সেটার ব্যবহারের সর্বাধিক সহজ উপায়টি ব্যাখ্যা করার জন্য এখানে একটি উদাহরণ দেওয়া আছে। কেউ এটি আরও সোজা পদ্ধতিতে করতে পারেন তবে গেটর এবং সেটারের কাছে বিশেষ কিছু থাকে যা উত্তরাধিকারসূত্রে শিশু শ্রেণিতে পিতাম শ্রেণীর ব্যক্তিগত সদস্য ব্যবহার করার সময় হয়। আপনি গেটর এবং সেটার ব্যবহারের মাধ্যমে এটি সম্ভব করে তুলতে পারেন।
package stackoverflow;
public class StackoverFlow
{
private int x;
public int getX()
{
return x;
}
public int setX(int x)
{
return this.x = x;
}
public void showX()
{
System.out.println("value of x "+x);
}
public static void main(String[] args) {
StackoverFlow sto = new StackoverFlow();
sto.setX(10);
sto.getX();
sto.showX();
}
}