ট্র্যাক
/
Ruby
Ruby
/
অনুশীলনী
/
বিনোদন পার্ক
বিনোদন পার্ক

বিনোদন পার্ক

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

ভূমিকা

ইনস্ট্যান্স ভ্যারিয়েবল

অবজেক্টগুলো ইনস্ট্যান্স ভ্যারিয়েবল সেট করে নিজেদের স্টেট ধরে রাখতে পারে। এই ভ্যারিয়েবলগুলো একটি অবজেক্টের ভেতরে থাকে এবং সাধারণত কিছু অভ্যন্তরীণ স্টেট সংরক্ষণ করতে ব্যবহৃত হয়।

ইনস্ট্যান্স ভ্যারিয়েবল সবসময় একটি @ দিয়ে শুরু হয়। আপনি একটি @ দিয়ে শুরু হওয়া ভ্যারিয়েবল সেট করে নতুন ইনস্ট্যান্স ভ্যারিয়েবল তৈরি করতে পারেন। যেমন:

class Repeater
  def hear(something)
    # Save what's been heard into a new instance variable called @heard
    @heard = something
  end

  def repeat
    # Return the value of the instance variable
    @heard
  end
end

repeater = Repeater.new
repeater.hear("Hello, friend!")
print repeater.repeat # Prints "Hello, friend!"

অবজেক্টগুলো সাধারণত তাদের প্রাথমিক স্টেট একটি initialize মেথডে সেট করে, যা একটি ক্লাসে new কল করলে স্বয়ংক্রিয়ভাবে কল হয়।

class Airplane
  def initialize
    @wings = 2
  end

  def wings
    @wings
  end
end

plane = Airplane.new
plane.wings # returns 2

initialize মেথড আর্গুমেন্টও নিতে পারে, যাতে প্রতিটি ইনস্ট্যান্স একটি কাস্টম স্টেট নিয়ে শুরু করতে পারে:

class Suitcase
  def initialize(locked)
    @locked = locked
  end
end

ইনস্ট্যান্স ভ্যারিয়েবলগুলোকে বাইরের পড়া ও লেখা থেকে প্রাইভেট ধরে নেওয়া ভালো অভ্যাস। তার বদলে আমরা তাদের মান পড়া ও সেট করার জন্য মেথড ডিফাইন করি। যেমন:

class Suitcase
  def initialize
    @locked = false
  end

  def locked? # Query methods should be named with a trailing `?`
    @locked
  end

  def lock! # Methods which mutate state should have trailing `!`
    @locked = true
  end
end

suitcase = Suitcase.new
suitcase.locked? # false
suitcase.lock!
suitcase.locked? # true

নিল

নিল একটি ইংরেজি শব্দ, যার অর্থ "কিছুই না" বা "শূন্য"। রুবিতে, একটি অবজেক্টের অনুপস্থিতি বোঝাতে nil ব্যবহৃত হয়। অন্য প্রোগ্রামিং ভাষায় null বা none মান একই ধরনের ভূমিকা পালন করতে পারে।

# I do not have a favorite color
favorite_color = nil

রুবি যেকোনো ইনস্ট্যান্স ভ্যারিয়েবলকে প্রথমবার পেলেই ডিফল্ট মান হিসেবে nil দেয়, যতক্ষণ না অন্য কোনো মান দেওয়া হয়।

print @favourite_color # prints nil
@favourite_color = "blue"
print @favourite_color # prints "blue"

নির্দেশনা

একটি অ্যামিউসমেন্ট পার্কের সাথে কাজ করতে গিয়ে উপস্থিতি ও রাইড পরিচালনার একটি সিস্টেম ডিজাইন করার জন্য আপনার হাতে একটি স্পেসিফিকেশন দেওয়া হয়েছে। আপনাকে Attendee (পার্কে ঘুরতে আসা ব্যক্তি) মডেল করার দায়িত্ব দেওয়া হয়েছে।

1. নতুন অ্যাটেনডি তৈরি করুন

Attendee ক্লাসের Attendee#initialize মেথডটি ইমপ্লিমেন্ট করুন; এটি একটি উচ্চতা (সেন্টিমিটারে) নেবে এবং সেটি একটি ইনস্ট্যান্স ভ্যারিয়েবলে সংরক্ষণ করবে।

Attendee.new(106)
# => #<Attendee:0x000055c33e6c7e18 @height=106>

2. অ্যাটেনডির উচ্চতা কত

Attendee ক্লাসের Attendee#height গেটারটি ইমপ্লিমেন্ট করুন; এটি ইনস্ট্যান্সের উচ্চতা রিটার্ন করবে।

Attendee.new(106).height
# => 106

3. রাইড পাস আইডি কী

সব অ্যাটেনডি রাইড পাস কেনেননি, তবে তাদের পাস আছে কি নেই সেটি আমাদের জানা দরকার। Attendee ক্লাসের জন্য Attendee#pass_id গেটারটি ইমপ্লিমেন্ট করুন; এটি ইনস্ট্যান্সের pass_id রিটার্ন করবে, আর Attendee-র পাস না থাকলে nil রিটার্ন করবে।

Attendee.new(106).pass_id
# => nil

4. লোকজনকে পাস কেনার সুযোগ দিন

ইনস্ট্যান্সের স্টেট পরিবর্তন করতে Attendee#issue_pass! ইমপ্লিমেন্ট করুন এবং পাস আইডি ইনস্ট্যান্স ভ্যারিয়েবলে আর্গুমেন্টটি সেট করুন। এটি পাস আইডি রিটার্ন করবে।

attendee = Attendee.new(106)
attendee.issue_pass!(42)
attendee.pass_id
# => 42

5. পাস বাতিল করুন

কিছু অতিথি অনিরাপদ আচরণ করে নিয়ম ভাঙেন, তাই পার্ক চায় প্রয়োজনে পাস বাতিল করতে পারতে। ইনস্ট্যান্সের স্টেট পরিবর্তন করতে Attendee#revoke_pass! ইমপ্লিমেন্ট করুন এবং পাস আইডি nil সেট করুন।

attendee = Attendee.new(106)
attendee.issue_pass!(42)
attendee.revoke_pass!
attendee.pass_id
# => nil
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Ruby Exercism

বিনোদন পার্ক শুরু করতে প্রস্তুত?

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