Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

เชี่ยวชาญการออกแบบคลาส Ruby: คู่มือขั้นตอนสู่การสร้างคลาสกำหนดเอง

คลาส (Class) ใน Ruby คืออะไร?

คลาสเป็นบล็อกก่อสร้างพื้นฐานในการเขียนโปรแกรมเชิงวัตถุ (OOP) และช่วยให้คุณกำหนดแผนผัง (blueprint) สำหรับการสร้างออบเจ็กต์

ออบเจ็กต์คือผลิตภัณฑ์ของคลาส

แล้วออบเจ็กต์คืออะไร?

ออบเจ็กต์คือ "สิ่ง" เฉพาะตัว (individual "thing") ที่มีเอกลักษณ์ของตัวเอง และข้อมูลของตัวเอง

ตัวอย่าง:

คลาส Book อาจเป็นแผนผังสำหรับสร้างหนังสือ

คลาสนี้กำหนดว่า หนังสือ ทุกเล่ม มีแอตทริบิวต์ (attributes) ร่วมกัน คือ:

  • ชื่อเรื่อง (title)
  • ผู้แต่ง (author)
  • จำนวนหน้า (pages)
  • และอื่นๆ

หนังสือแต่ละเล่มคือออบเจ็กต์ และคุณสามารถสร้างออบเจ็กต์ได้มากมาย בזכות คลาส Book นั่นคือจุดประสงค์ของการสร้างคลาส พวกมันคือแผนผังที่นำกลับมาใช้ซ้ำได้สำหรับแอปพลิเคชัน Ruby ของคุณ

ตอนนี้:

คุณจะได้เรียนรู้วิธีเขียนคลาสของตัวเอง เพื่อเริ่มเขียนโค้ด OOP วันนี้เลย

วิธีสร้างคลาส Ruby

ไวยากรณ์การสร้างคลาสเป็นดังนี้:

class Orange
end

สังเกตว่า:

  • ชื่อคลาสขึ้นต้นด้วยตัวพิมพ์ใหญ่
  • เราใช้คีย์เวิร์ด class แล้วตามด้วย end
  • คลาสว่างไม่ค่อยมีประโยชน์ แตคุณยังสร้างออบเจ็กต์จากมันได้

มีวิธีสร้างคลาสอื่นๆ (เช่น Class.new) แต่วิธีเหล่านั้นมีประโยชน์เฉพาะในสถานการณ์พิเศษเท่านั้น

หนึ่งคลาส หลายออบเจ็กต์

การใช้งานหลักของคลาสคือเป็นคอนเทนเนอร์ของเมธอด ตัวแปรอินสแตนซ์ และค่าคงที่ (constants) สร้างเป็นแผนผังที่คุณสามารถสร้างออบเจ็กต์ได้

คุณสามารถสร้างออบเจ็กต์โดยใช้เมธอด new

เช่นนี้:

Orange.new

เรารู้จักกระบวนการสร้างออบเจ็กต์ว่า "instantiation" (การสร้างอินสแตนซ์) และเราบอกว่าออบเจ็กต์คือ "instance" (อินสแตนซ์) ของคลาส

ทำไมต้องสร้างออบเจ็กต์?

เพราะทุกออบเจ็กต์ที่คุณสร้าง ต่างกันและเป็นเอกลักษณ์

ทุกออบเจ็กต์มีเอกลักษณ์ของตัวเอง

ตัวอย่าง:

กับคลาส Orange ทุกออบเจ็กต์ orange ที่คุณสร้าง มี น้ำหนัก ที่มาประเทศ คุณภาพ เป็นต้น ของตัวเอง

ทำให้คลาส Ruby มีประโยชน์มากขึ้น

คลาสจะมีประโยชน์มากขึ้นเมื่อคุณเริ่มเพิ่มเมธอดอินสแตนซ์ และตัวแปรอินสแตนซ์ เข้าไป

เมธอดคือสิ่งที่คลาสของคุณทำได้

ตัวอย่าง:

คุณสามารถบีบส้มเพื่อน้ำผลไม้

ตัวอย่างโค้ด:

class Orange
  def squeeze
    puts "Here's your juice!"
  end
end

orange = Orange.new
orange.squeeze

เมธอดเหล่านี้กลายเป็นคำสั่งสำหรับออบเจ็กต์ของคุณ!

ทุกออบเจ็กต์ Orange ที่คุณสร้างจะเข้าถึงเมธอด squeeze นี้ได้ และนั่นคือหนึ่งในประโยชน์ของการใช้คลาส

ตัวแปรอินสแตนซ์ (Instance variable) คือ สิ่งที่คลาสของคุณรู้

ตัวอย่าง:

class Orange
  def initialize
    @juice_available = 100
  end

  def squeeze
    @juice_available -= 50
  end
end

ตัวแปรอินสแตนซ์ต่างจากตัวแปรกลาง เพราะมันขึ้นต้นด้วยสัญลักษณ์ @ คุณไม่สามารถเข้าถึงมันจากนอกคลาสได้ เว้นแต่คุณกำหนด attr_accessor

มันคือคลาสอะไร?

เมื่อทำงานกับออบเจ็กต์ใน Ruby มันช่วยได้มากถ้ารู้ว่าออบเจ็กต์นั้นมาจากคลาสอะไร

คุณสามารถทำได้แบบนี้:

"".class # String
[].class # Array
orange.class # Orange (สมมติ orange = Orange.new)

ทำไมจึงมีประโยชน์?

เมธอดคือเครื่องยนต์เล็กๆ ที่ทำให้สิ่งต่างๆ เกิดขึ้นใน Ruby

ถ้าคุณรู้คลาส คุณสามารถหาได้ว่ามีเมธอดไหนบ้าง (ใช้ Google, ri, หรือ pry) กล่าวคือ คุณสามารถค้นพบได้ว่าออบเจ็กต์นั้นทำอะไรให้คุณได้บ้าง!

เรียนรู้เพิ่มเติมเกี่ยวกับคลาส

นี่แค่ "ปลายของน้ำแข็ง" (tip of the iceberg) เมื่อพูดถึงคลาส

ถ้าคุณอยากเรียนรู้เพิ่ม...

อ่าน这些:

  • Ruby initialize method
  • Attr_accessor, attr_reader, attr_writer
  • Inheritance in OOP
  • Object-Oriented Programming

ก็อีกอย่าง คลาสเองก็เป็นออบเจ็กต์ด้วย ใน Ruby นะครับ 🙂

สรุป

คุณได้เรียนรู้เกี่ยวกับคลาสใน Ruby วิธีสร้าง และทำไมมันถึงมีประโยชน์!

อย่าลืมแชร์บทความนี้เพื่อให้คนอื่นเพลิดเพลินไปกับมัน

ขอบคุณที่อ่านครับ