ট্র্যাক
/
C#
C#
/
অনুশীলনী
/
ওজন মাপার মেশিন
ওজন মাপার মেশিন

ওজন মাপার মেশিন

লার্নিং অনুশীলনী

ভূমিকা

প্রপার্টি

C#-এ একটি প্রপার্টি হলো একটি ক্লাসের এমন একটি মেম্বার, যা ওই ক্লাসের ভেতরের ডেটায় অ্যাক্সেস দেয়। কলাররা ডেটাটি সেট করতে বা রিট্রিভ (get) করতে পারে। প্রপার্টি হয় অটো-ইমপ্লিমেন্টেড হতে পারে, নয়তো এতে একটি ব্যাকিং ফিল্ড থাকে। এতে একটি set অ্যাক্সেসর এবং/অথবা একটি get অ্যাক্সেসর থাকে। কিছু অন্যান্য ভাষায় একটি "mutator" মোটামুটি একটি set অ্যাক্সেসরের সমান এবং একটি "accessor" মোটামুটি একটি get অ্যাক্সেসরের সমান, যদিও সিনট্যাক্সের গঠন সম্পূর্ণ আলাদা।

কোনো প্রপার্টি সেট করার সময় ইনপুট মানটি ভ্যালিডেট করা, ফরম্যাট করা বা অন্যভাবে ম্যানিপুলেট করা যায়, এবং আসলে ক্লাসের কোড থেকে অ্যাক্সেসযোগ্য যেকোনো প্রোগ্রাম্যাটিক অপারেশন চালানো যায়।

একইভাবে, কোনো প্রপার্টি রিট্রিভ করার সময় ডেটা গণনা করা বা ফরম্যাট করা যায়, এবং আবারও ক্লাসের কাছে থাকা যেকোনো প্রোগ্রাম্যাটিক অপারেশন চালানো যায়।

অন্য ক্লাস মেম্বারদের মতোই প্রপার্টিরও অ্যাক্সেস মডিফায়ার (public, private ইত্যাদি) থাকে, তবে set অ্যাক্সেসরের অ্যাক্সেস লেভেল রিট্রিভ (get) অ্যাক্সেসর থেকে স্বাধীন হতে পারে, আবার উল্টোটাও। একটি প্রপার্টির দুটি অ্যাক্সেসর থাকতেই হবে না, এতে একটি থাকলেও চলে (get অথবা set)।

প্রপার্টি প্রকাশ করার মূল সিনট্যাক্স দুটি রূপ নিতে পারে:

ফিল্ড/এক্সপ্রেশন ব্যাকড প্রপার্টি:

private int myField;
public int MyProperty
{
    get { return myField; }
    set { myField = value; }
}

অটো-ইমপ্লিমেন্টেড প্রপার্টি

public int MyProperty { get; private set; } = 42;

ইনিশিয়ালাইজেশন ঐচ্ছিক।

নির্দেশনা

এই অনুশীলনীতে আপনি একটি ওজন মাপার যন্ত্র মডেল করবেন, যেখানে একক হিসেবে থাকবে কিলোগ্রাম।

আপনার জন্য ৬টি কাজ আছে, যার প্রতিটিতে এক বা একাধিক প্রপার্টি ইমপ্লিমেন্ট করতে হবে:

1. ওজন মাপার যন্ত্রে একটি প্রিসিশন থাকতে দিন

ভিন্ন ভিন্ন চাহিদা মেটাতে আমরা প্রতিটি ওজন মাপার যন্ত্রকে একটি প্রিসিশন দিয়ে কাস্টমাইজ করার সুযোগ দিই (দশমিক বিভাজকের পরে কতটি অঙ্ক থাকবে তার সংখ্যা)। কনস্ট্রাক্টরের precision আর্গুমেন্ট দিয়ে সেট করা একটি গেট-অনলি Precision প্রপার্টি রাখতে WeighingMachine ক্লাসটি ইমপ্লিমেন্ট করুন:

var wm = new WeighingMachine(precision: 3);

//  => wm.Precision == 3

2. ওজন মাপার যন্ত্রে ওজন সেট করার সুযোগ দিন

ওজন get এবং set করার সুযোগ দিতে WeighingMachine.Weight প্রপার্টিটি ইমপ্লিমেন্ট করুন:

var wm = new WeighingMachine(precision: 3);
wm.Weight = 60.5;

//  => wm.Weight == 60.5

3. ঋণাত্মক ইনপুট ওজন যেন বাতিল হয় তা নিশ্চিত করুন

স্পষ্টতই, কারও ওজন ঋণাত্মক হতে পারে না। ঋণাত্মক ওজন সেট করার চেষ্টা করলে একটি ArgumentOutOfRangeException থ্রো করতে WeighingMachine.Weight প্রপার্টিতে ভ্যালিডেশন যোগ করুন:

var wm = new WeighingMachine(precision: 3);
wm.Weight = -10; // Throws an ArgumentOutOfRangeException

4. ওজন মাপার যন্ত্রে টেয়ার অ্যাডজাস্টমেন্ট প্রয়োগ করার সুযোগ দিন

টেয়ার অ্যাডজাস্টমেন্ট যেকোনো মান হতে পারে (এমনকি ঋণাত্মক, বা এমন মান যা ডিসপ্লের ওজনকে ঋণাত্মক করে দেয়) টেয়ার অ্যাডজাস্টমেন্ট সেট করার সুযোগ দিতে WeighingMachine.TareAdjustment প্রপার্টিটি ইমপ্লিমেন্ট করুন:

var wm = new WeighingMachine(precision: 3);
wm.TareAdjustment = -10.6;

// => wm.TareAdjustment == -10.6

5. ওজন মাপার যন্ত্রের একটি ডিফল্ট টেয়ার অ্যাডজাস্টমেন্ট যেন থাকে তা নিশ্চিত করুন

বেশ কিছু পুঙ্খানুপুঙ্খ পরীক্ষার পর দেখা গেল, একটি উৎপাদন ত্রুটির কারণে সব ওজন মাপার যন্ত্রেরই ওজন 5 বেশি দেখানোর দিকে একটা ঝোঁক রয়েছে। WeighingMachine.TareAdjustment প্রপার্টিটির ডিফল্ট মান হিসেবে 5 নির্ধারণ করুন।

var wm = new WeighingMachine(precision: 3);

// => wm.TareAdjustment == 5.0

6. ওজন পড়ার সুযোগ দিন

WeighingMachine.DisplayWeight প্রপার্টিটি ইমপ্লিমেন্ট করুন, যা টেয়ার অ্যাডজাস্টমেন্ট প্রয়োগের পরের ওজন, সঠিক প্রিসিশনসহ এবং একক যোগ করা অবস্থায়, একটি স্ট্রিং হিসেবে রিটার্ন করবে। লক্ষ্য করুন: display-weight = input-weight - tare-adjustment

var wm = new WeighingMachine(precision: 3);
wm.Weight = 60.567;
wm.TareAdjustment = 10;

// => wm.DisplayWeight == "50.567 kg"
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
C# Exercism

ওজন মাপার মেশিন শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, C# ট্র্যাকের 62টি কনসেপ্ট178টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।