Thuta Learning
ရှာဖွေရန်
ProjectsProgrammingbeginner

Task Tracker Project - Part 1

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Task Tracker Project - Part 1 ကို လက်တွေ့ project ထဲမှာ အသုံးချတတ်မယ်
  • ကိုယ်တိုင် code ရေးပြီး run ကြည့်တတ်မယ်
  • Project တစ်ခုလုံးကို အဆင့်လိုက် ဆောက်တတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

ဒီ project ရဲ့ ပထမအဆင့်မှာ Task ဆိုတဲ့ data တစ်ခုချင်းစီကို ကိုယ်စားပြုမယ့် Task class နဲ့ တစ်ခုလုံးကို စီမံခန့်ခွဲပေးမယ့် TaskTracker class ကို ဖန်တီးပါမယ်။ Task class မှာ title နဲ့ done ဆိုတဲ့ state ရှိပြီး, attr_accessor သုံးပြီး getter/setter တွေကို auto generate လုပ်ပါမယ်။ TaskTracker class ကတော့ Task object တွေကို array ထဲမှာ သိမ်းထားပြီး add_task method ကနေ task အသစ်တွေ ထည့်လို့ရအောင် ပြုလုပ်ပေးမှာပါ။ ဒီအဆင့်မှာ intro-level oop-intro, class-object, initialize, getters-setters, arrays concept တွေကို တွဲသုံးထားပါတယ်။ project ရဲ့ Part 2 မှာ ဒီ structure အပေါ်မှာ list/complete/delete feature တွေ ထပ်တိုးဆောက်သွားပါမယ်။

လက်တွေ့ ဆောက်ကြည့်မယ်

အရင်ဆုံး task_tracker.rb ဆိုတဲ့ file တစ်ခု create လုပ်ပါ။ Task class ကို attr_accessor :title, :done နဲ့ ရေးပြီး initialize(title) method ထဲမှာ @title ကို parameter က တန်ဖိုးနဲ့ set လုပ်ပါ၊ @done ကတော့ default အနေနဲ့ false ထားပါ။ ပြီးရင် TaskTracker class ကို ဆောက်ပါ - initialize ထဲမှာ @tasks = [] ဆိုပြီး empty array တစ်ခု ထားပါ။ add_task(title) method ထဲမှာ Task.new(title) ကို @tasks array ထဲ push (<<) လုပ်ပြီး confirmation message တစ်ခု puts နဲ့ ပြပါ။ ဒါ့အပြင် @tasks array ကို ပြင်ပက ဖတ်လို့ရအောင် tasks ဆိုတဲ့ reader method တစ်ခုလည်း ထည့်ပါ။ နောက်ဆုံးမှာ TaskTracker.new ကနေ tracker object တစ်ခု ဆောက်ပြီး task နှစ်ခုလောက် add_task နဲ့ ထည့်ကာ p tracker.tasks နဲ့ စမ်းကြည့်ပါ။

Code နမူနာ

ruby
class Task
  attr_accessor :title, :done

  def initialize(title)
    @title = title
    @done = false
  end
end

class TaskTracker
  def initialize
    @tasks = []
  end

  def add_task(title)
    @tasks << Task.new(title)
    puts "Added: #{title}"
  end

  def tasks
    @tasks
  end
end

tracker = TaskTracker.new
tracker.add_task("Buy milk")
tracker.add_task("Learn Ruby")
p tracker.tasks
You should see
Terminal မှာ "Added: Buy milk" နဲ့ "Added: Learn Ruby" ဆိုတဲ့ message နှစ်ကြောင်း ပြီးရင် Task object နှစ်ခုပါတဲ့ array တစ်ခု print ထွက်လာပါမယ်။

၅ မိနစ် စမ်းကြည့်

task title အပြင် priority (:low, :medium, :high) ဆိုတဲ့ attribute တစ်ခု Task class ထဲ ထပ်ထည့်ပြီး initialize နဲ့ attr_accessor ကို update လုပ်ကြည့်ပါ - 5 minutes အတွင်း စမ်းကြည့်ပါ။

သတိလေးတစ်ချက်

attr_accessor, attr_reader, attr_writer ကို ခွဲခြားသုံးတတ်အောင် သတိထားပါ - done attribute ကို ပြင်ပက update လုပ်ချင်ရင် attr_accessor (ဒါမှမဟုတ် attr_writer) မဖြစ်မနေ လိုအပ်ပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • attr_accessor ကို မသုံးဘဲ @title ကို instance variable အနေနဲ့ ပြင်ပက တိုက်ရိုက် ဖတ်ဖို့ ကြိုးစားတတ်ကြပါတယ် - Ruby မှာ instance variable ကို class ပြင်ပက တိုက်ရိုက် access လုပ်လို့ မရပါ
  • @tasks << Task.new(title) အစား @tasks = Task.new(title) လို့ ရေးမိပြီး array ကို task အသစ်နဲ့ overwrite လုပ်မိတတ်ပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

task title အပြင် priority (:low, :medium, :high) ဆိုတဲ့ attribute တစ်ခု Task class ထဲ ထပ်ထည့်ပြီး initialize နဲ့ attr_accessor ကို update လုပ်ကြည့်ပါ - 5 minutes အတွင်း စမ်းကြည့်ပါ။

You'll know it worked when: Terminal မှာ "Added: Buy milk" နဲ့ "Added: Learn Ruby" ဆိုတဲ့ message နှစ်ကြောင်း ပြီးရင် Task object နှစ်ခုပါတဲ့ array တစ်ခု print ထွက်လာပါမယ်။

Task Tracker Project - Part 1 | Thuta Learning