Categories
Programming Scratch

หลักการเขียนโปรแกรมใน Scratch ตอนที่ 3

Scratch ไม่ได้ใช้การเขียนโปรแกรมเชิงวัตถุ (Object oriented) อย่างจริงจัง แต่โปรเจก GravityBlocks สะท้อนการใช้หลักการเขียนโปรแกรมเชิงวัตถุอยู่บ้าง มาลองดูกัน

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

ขั้นแรกของการเขียนโปรแกรมเชิงวัตถุคือการสร้างต้นแบบหรือแผ่นพิมพ์เขียวของวัตถุ (class) ซึ่งประกอบด้วยคุณสมบัติหรือข้อมูล (properties, attributes, data แล้วแต่จะเรียก) ของวัตถุ และสิ่งที่มันสามารถทำได้ (function, method)

การเขียนโปรแกรมเชิงวัตถุใน Scratch ตัวละครหนึ่งตัวก็คือหนึ่งวัตถุ ดังนั้นข้อมูลพื้นฐานของวัตถุก็ได้จากตัวละคร เช่นชื่อตัวละคร เครื่องแต่งกาย เสียง ตำแหน่งบนเวที ทิศทางการเคลื่อนที่ ความสามารถในการหมุน การกลับทิศ นอกจากนั้นถ้าเราสร้างตัวแปรส่วนตัวก็เข้าข่ายเป็นข้อมูลของวัตถุ การเขียนสคริปต์ก็คือการเขียน method ให้กับวัตถุนั้นเอง

การสร้างบล็อกสีตัวแรกในโปรเจก GravityBlocks เป็นการสร้างต้นแบบ (class) ขึ้นมา นั้นก็คือ สร้างบล็อกที่มีสองสี สีบานเย็นเป็นแถบบางๆอยู่ด้านบน สีฟ้าอ่อนในส่วนที่เหลือของบล็อก ตำแหน่งของบล็อกบนเวที ส่วนการทำงานของบล็อก คือการเคลื่อนที่ลง การหยุดการเคลื่อนที่

เมื่อมีแผ่นพิมพ์เขียวแล้ว ก็สามารถสร้างวัตถุออกมาได้ (instantiation) อีกหลายๆตัว เช่นในโปรเจก GravityBlocks เราสร้างต้นแบบบล็อก (เป็นวัตถุด้วย) เฉพาะตัวแรกตัวเดียว จากนั้นทำซ้ำเพื่อสร้างบล็อกอื่นๆอีก 14 บล็อก

วัตถุที่ได้จากต้นแบบเดียวกันจะมีเอกลักษณ์ของมันเอง ถึงแม้ว่าตอนสร้างวัตถุ ทุกตัวจะเริ่มต้นด้วยข้อมูลและหน้าที่เหมือนกันหมด แต่หลังจากนั้นวัตถุจะเป็นตัวของตัวเอง ทำอะไรก็ได้ที่มันสามารถทำได้โดยไม่ต้องทำเหมือนตัวอื่น เปลี่ยนคุณสมบัติก็ได้ เช่น บางบล็อกกำลังเคลื่อนที่ บางบล็อกอาจอยู่นิ่งๆบนพื้นหรือบนบล็อกอื่น เมื่อบล็อกถูกลากหรือเคลื่อนที่ลง ตำแหน่งของมันก็จะเปลี่ยนตามไปด้วย


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s