ระบบเชิงวัตถุ กระบวนทัศน์ และปรัชญา
(black7375.tistory.com)-
ความแตกต่างที่ใหญ่ที่สุดระหว่างคลาสกับโปรโตไทป์คือวิธีการสร้างอ็อบเจ็กต์ [คลาส -> อินสแตนซ์ vs อ็อบเจ็กต์ -> อ็อบเจ็กต์ที่ถูกคัดลอก].
-
จุดร่วมที่ใหญ่ที่สุดคือแนวคิดเชิงวัตถุ โดยแบ่งโปรแกรมออกเป็นหน่วยที่เรียกว่าอ็อบเจ็กต์และทำให้มีปฏิสัมพันธ์กัน.
-
วิธีที่ง่ายที่สุดในการทำ encapsulation ซึ่งเป็นหัวใจของ object-oriented ให้ดี คือการทำ abstraction ให้ดี.
-
abstraction สามารถแบ่งมุมมองได้เป็น คุณลักษณะที่เน้นข้อมูล (OOP แบบดั้งเดิม), รูปแบบ (type), สถานะ (data-driven design) และมิติที่เน้นความสัมพันธ์อย่าง เวลา (procedural), พฤติกรรม (functional), นิยาม (logical), สถานการณ์ (domain-driven design, AOP) เป็นต้น.
-
เพื่อให้จัดหมวดหมู่และออกแบบได้ดี หากมีความเข้าใจในหมวดหมู่ที่หลากหลายซึ่งช่วยให้ตระหนักถึงรูปแบบของการคิดก็จะเป็นประโยชน์ [เช่น 4 หมวด 12 หัวข้อของคานท์].
-
-
ปรัชญาและกระบวนทัศน์
-
เชิงกระบวนการ: เวลาเป็นปัจจัยที่ส่งผลต่อ abstraction ส่วนใหญ่ และไวยากรณ์ที่ทำให้ context ปะปนกันอย่าง Goto นั้นไม่ดี.
-
เชิงฟังก์ชัน: เพราะพยายามแสดงออกในรูปของพฤติกรรม จึงมีความสัมพันธ์ลึกซึ้งกับ type (รูปแบบ).
-
เชิงตรรกะ: สร้างตรรกะจากข้อเท็จจริงและกฎ และสามารถได้ผลลัพธ์ของ predicate logic ผ่านการทำ query.
-
OOP แบบดั้งเดิม: เข้าใจได้ง่ายตามสัญชาตญาณ แต่เป็นไปไม่ได้ที่จะค้นหาคุณสมบัติที่สมบูรณ์แบบทั้งหมด.
-
การออกแบบที่ขับเคลื่อนด้วยข้อมูล: ต่างจากเชิงฟังก์ชันที่พยายามจัดการสถานะของลอจิก แนวทางนี้พยายามลดสถานะภายในตัวคอมพิวเตอร์เอง ช่วยเพิ่ม cache hit และนำไปสู่ประสิทธิภาพที่ดีขึ้น.
-
การออกแบบที่ขับเคลื่อนด้วยโดเมน: ต่างจาก OOP แบบดั้งเดิมตรงที่ออกแบบแตกต่างกันไปตามโดเมนและบริบท (คล้ายกับ picture theory-use semantics) และหากใช้ AOP สำหรับทำ dependency injection ของ subdomain ก็จะทำให้การนำไปใช้สะดวกขึ้น.
-
-
MVP
-
การทำโปรโตไทป์: ต้องมีฟังก์ชันสำคัญรวมอยู่ด้วย และอาจแตกต่างกันไปตามมุมมองของดีไซเนอร์ นักพัฒนา การเงิน ฯลฯ เป็นข้อกำหนดทั่วไปตามระดับความคล้ายคลึงกับผลิตภัณฑ์ที่หลายคนมองว่าสำคัญ.
-
MVP: ต้องสามารถใช้งานได้จริงโดยมีระดับความสมบูรณ์ขั้นต่ำที่รับประกัน และควรออกแบบให้คล้ายกับผลิตภัณฑ์ที่มองว่าเป็นขั้นสุดท้าย.
-
-
เชิงวัตถุและภาวะการมีอยู่
-
เพลโต: เสนอว่าคุณลักษณะสากลนั้นไม่เปลี่ยนแปลงและมีอยู่จริง ส่วนสิ่งมีอยู่เฉพาะแต่ละอย่างดำรงอยู่โดยขาดคุณลักษณะสากลเหล่านั้น.
-
อริสโตเติล: เสนอว่ามีเพียงปัจเจกแต่ละหน่วยเท่านั้นที่เป็นสสารพื้นฐาน ส่วนสิ่งสากลเป็นเพียงภาพแทนที่ปรากฏในความสัมพันธ์แบบลำดับชั้น/การรวมอยู่ภายใน.
-
คลาส-อินสแตนซ์คล้ายกับทฤษฎีอีเดียของเพลโต ส่วนโปรโตไทป์-อ็อบเจ็กต์ที่ถูกคัดลอกคล้ายกับสสารนิยมของอริสโตเติล.
-
เป้าหมายที่ตั้งใจจะเขียนในตอนแรกคือ
-
OOP แบบดั้งเดิมคล้ายกับ picture theory ส่วนการออกแบบที่ขับเคลื่อนด้วยโดเมนคล้ายกับ use semantics.
-
คลาส-อินสแตนซ์คล้ายกับทฤษฎีอีเดียของเพลโต ส่วนโปรโตไทป์-อ็อบเจ็กต์ที่ถูกคัดลอกคล้ายกับสสารนิยมของอริสโตเติล.
มีอยู่สองข้อ แต่กลายเป็นว่ายาวกว่าที่คิดมากครับ.
ถ้าไม่มีพื้นความรู้มาก่อนเลย อาจรู้สึกว่าอ่านค่อนข้างยากนิดหน่อย.
6 ความคิดเห็น
ทำไม JavaScript ถึงเลือกใช้ prototype
https://th.news.hada.io/topic?id=5532
เป็นบทความที่เขียนขึ้นเพราะนึกอะไรบางอย่างได้ระหว่างอ่านลิงก์นี้
ลองอ่านไปพร้อมกับการเปรียบเทียบแบบในบทความนี้กันครับ!
ขอบคุณมากครับ!!
เอ๊ะ? ดูเหมือนว่าจะใส่สเปซหลายตัวไม่ได้สินะ ฮือฮือ
อ๋อ มีบางกรณีที่ตั้งใจเว้นพื้นที่ไว้ด้วย..
เลยตั้งค่าให้ลดบรรทัดว่างและช่องว่างหลาย ๆ ช่องลงแล้ว เศร้า
เข้าใจแล้วครับ
คราวหน้าตอนโพสต์คงต้องคำนึงถึงเรื่องนี้ด้วยนะครับ