วันพุธที่ ๒๘ พฤศจิกายน พ.ศ. ๒๕๕๐

OO Concept ข้างตำรา

คลาสเมื่อวาน 27 พ.ย. 50 บรรยายเป็นครั้งที่ 4 เรื่อง Interaction Diagram (Sequence & Comunication Digaram) ทำให้นึกย้อนกลับไปถึงบรรยายครั้งที่ผ่าน ๆ มา เริ่มจากครั้งที่ 1 เป็นการแนะนำนำให้รู้จักคุณสมบัติของแนวคิด (กระบวนการคิด) ของ Object-Oriented อะไรคือ Class อะไรคือ Instance มันนิยามต่างกันอย่างไร แต่ที่แน่ ๆ คือ Object จะมีคุณสมบัติอยู่ 3 ข้อใหญ่ ๆ

1.Encapsulation คือ ทำงานได้เบ็ดเสร็จ คือ พูดง่ายลองนึกถึงตัวเรา มีข้อมูล (Attribute) และ เราก็รู้จักจัดการกับข้อมูลของเราด้วยวิธีการ (Method) ของเรา คนอื่นแค่บอกมาว่า อยากได้อะไร หรือ ต้องรู้ว่าเราทำอะไรให้ได้บ้าง สรุปคือ แค่บอกมา (ส่ง message มาตาม public channel) เดี๋ยวจัดให้ (เรื่องของ I You ไม่เกี่ยว จัดการอย่างไร ขอเป็น Private นะ) เห็นม๊ะ แสดงว่ามันต้องมีคนอื่น (Class อื่นๆ) ต้องรู้จักเราด้วย เพราะจะมาใช้ หรือมารู้จักนี่หละ มันก็เกิดเป็นความสัมพันธ์ (Relationship) ไง พอมันสัมพันธ์กันเยอะ เริ่มกิ๊กกันเยอะ ก็ต้องไปเขียน Class Diagram จะได้รู้ว่ากิ๊กไหน รู้จักกันบ้าง ทางไหน อย่างไร จะได้ไม่งง อ้าวก่อนจะออกนอกเรื่อง (นอกแคปซูล) ...ไปไกล ขอหยุดก่อนนะ

Generalization Abstraction
(Superclass-Class-Subclass)

2. Inheritance คือ กรรมพันธุ์ ทั้งที่เป็น Physical เช่น อะไรที่ common มันก็จะสืบทอดมาด้วย (ก็พวก Attibute ที่มันมีเหมือนกันไง) รวมถึง Logical อันนี้ดูที่นิสัย (Method) หรือเรียกง่ายๆ ว่า สืบทั้งคุณลักษณะ และสันดานแล้วกันครับ คือ เหมือนเรานี่หละครับ เอกเทศ เป็นตัวเราเอง ที่เรียกว่า Encapsulation แล้วยังไม่พอ เขาพยายามจะบอกว่า บางทีเราก็มี ลักษณะรูปร่าง และสันดาน ที่เป็นกรรมพันธุ์ ที่ยัดเยียดมาให้ ติดมาจาก พ่อ และแม่ของเรา งงหละซิ ... เช่น พ่อ แม่ เป็น นก นกมีลักษณะนิยาม คือ มีปีก 2 ข้าง มีขา 2 ขา มีหางด้วยนะ ส่งเสียงร้องได้ และบินได้ ลูกนก ออกมาอาจจะ สีดำ สีขาว หางยาว หางสั้น หางกุด ร้องเพราะ ร้องไม่เพราะ ไอ้ ดำ ๆ ขาว ๆ ยาวๆ สั้น ๆ เพราะ ไม่เพราะ ที่บอกมามันคือ Value นะ แต่มันก็คือ ลักษณะ (Attributes) เดียวกันเหมือน พ่อ และแม่ของมัน ใช่ไหม จะนกเอี้ยง นกอีเห็น นกกระจอก (Instance) จะแบ่งไปสักกี่ร้อยสายพันธุ์ มันก็ มีปีก 2 ข้าง มีขา 2 ขา มีหางด้วยนะ ส่งเสียงร้องได้ และบินได้ เราเรียกรวมไม่รู้หละไอ้แบบนี้ นก หมด (Class นก) จะเป็นหมาได้อย่างไร
เหมารวม เรียกลักษณะเหมารวมที่นิยาม ๆ ว่า Class ไง

อันนี้มันแล้วแต่นิยามของ คลาส ถ้าบอกว่า สิ่งที่บินได้ (มีปีกสองข้าง ลอยตัวในอากาศได้) ก็อาจจะแยกเป็น สิ่งมีชีวิตที่บินได้ กับ สิ่งไม่มีชีวิตที่บินได้ เห็นม๊ะ เห็นม๊ะ แค่นึกยังนึกว่า บินได้ บินได้ แสดงว่า มันก็สืบสันดานของที่บินได้มา นก ก็จะกลายเป็นคลาสลูก (Sub Class) ของสิ่งที่บินได้ที่มีชีวิต ทันที เครื่องบิน ก็จะกลายเป็น Sub Class ของสิ่งไม่มีชีวิตที่บินได้ แต่มันบินได้เห็นปะ ... การคิดแบบนี้มันทำให้เกิดการ Reuse หรือ ทำให้ไม่ต้องคิดอะไรซ้ำ ๆ ก็ใช้สิ่งที่มีอยู่แล้วให้เกิดประโยชน์

3. Polymorphism เขายังมองลึกซึ้งต่อไปว่า คนเราอะนะ หรือลูก ๆ ที่พ่อแม่เดียวกันนี่หละ สืบสันดานมาจากพ่อแม่ก็จริงอยู่ แสดงพฤติกรรม (Behavior หรือ Method) ได้เหมือนกันก็จริงอยู่ แต่ลองไปดูกระบวนการ (Process) ดิ มันต่างกัน เช่น สิ่งที่บินได้แบบมีชีวิต เวลาบิน (Method บิน) มัน กางปีกสองข้างขยับขึ้น ขยับลง = บิน แต่ ถ้าแบบไม่มีชีวิต เวลาบิน มันกางปีกก่อน แล้ววิ่งไปข้างหน้า เชิดหัวขึ้น = บิน เห็นม๊ะ เห็นม๊ะ บินได้ แต่ว่าขอแอบต่างนิดส์นึง ถ้าเครื่องบินปีกขยับขึ้น ขยับลง เอออันนี้ไม่ต้องคิดอะไร ท่องนะโม 3 จบ ลุ้นกันอีกทีตอนถึงพื้น

จากข้อ 1 สรุปว่า มองตัวเรา ข้อ 2 และ 3 สรุปว่ามองที่ครอบครัวของเรา

พอเรามองแบบนี้ปุ๊ป เอาข้อ 1 ก่อน อยู่คนเดียวได้เหรอ? ถ้าเป็นสิ่งเดียวที่ไม่ต้องยุ่งกะใคร คำตอบคือ แล้วจะไปสนใจมันทำไมให้ปวดหัวคร๊าบบพี่น้อง .. ไอ้เพราะว่าอยู่โดด ๆ ไม่ได้นี่หละครับ มันเลยทำให้เรามีวิชาชีพทำมาหากินทุกวันนี่หละ เอ้ามาดูกัน อยู่คนเดียวไม่ได้ ก็ต้องไปมีความสัมพันธ์ กับ คนอื่น จริงม๊ะ (Relationship ระหว่าง Class เรียกหรู ๆ ว่า Association) ตามธรรมเนียมลากเส้นไปเชื่อมกันซะ แล้วก็บอกว่า สัมพันธภาพระหว่างเรา นะแบบไหน จะมาหลายทีไม่จำกัด (*) หรือว่ามาทีเดียว (1) หรือว่ามาได้จำกัดจำนวนครั้งไม่เกิน 30 ครั้งตามใจ (0..30) หรือไม่รับปากว่าจะมา แต่ถ้ามาขออนุญาตมาหลาย ๆ ที (0..*) ยังไงก็มาแน่ ๆ ที่รัก แล้วจะมาอีกหลาย ๆ ที (1..*) ก็ว่ากันไป เราเรียกการเขียนพวกนี้ว่า Carinality หรือ Multiplicity อ่อ จะใช้ n แทน * ก็ได้ไม่ผิด


มาข้อ 2 ข้อ 3 ความสัมพันธ์กันแบบ ครอบครัวของเรา ของกันและกัน ยกทีมมา อุตส่าห์ทำตัวเทา ๆ ไว้ก่อน ที่เป็น Generalization ก็จะเป็นความสัมพันธ์จากนิยามคุณสมบัติของ Object ในข้อ Inheritance และ Polymorphism ไง ความเป็นเครือญาติ เหล่า ก๊ก กอ แก๊งค์ พวกเดียวกันนี่หละ มันก็จะมีความสัมพันธ์กันแบบใกล้ชิดสนิทแนบ เราเรียกมันว่า Composite หรือ Aggregation ซึ่งจะเกิดจากความสัมพ้นธ์ที่เป็นส่วนหนึ่งของกันและกัน ฉันขาดเธอมิได้ ประมาณนี้ ภาษาอังกฤษเรียกว่า "is-part-of" "is-kind-of" ต้องมาประกอบเข้าด้วยกัน เวลาเขียนเส้นความสัมพันธ์ ก็บอกให้รู้ด้วยสัญลักษณ์ สี่เหลี่ยมข้าวหลามตัดไว้ตรงหัว ถ้าแบบเหนียวแน่นมาก ๆ ก็ทำทึบ ๆ (Composite) ถ้าแบบธรรมดาก็ไม่ต้องไประบายทึบ (Aggregation) ส่วนใหญ่หัวเหลี่ยมจะไปแปะไว้กับคลาสหลัก นึกถึงดอกกุหลาบ มีก้าน มีดอก ดอกคือเหลี่ยม ๆ นั่นหละครับ เวลาที่ยื่นดอกกุหลาบให้แฟน แล้วบอกว่า ขอเป็นส่วนหนึ่งของชีวิตคุณ คงไม่เอาก้านดอกกุหลาบ ชี้ไปที่แฟนหรอกนะครับ เหอๆๆ


จำไว้อย่างว่า "เมื่อ instance ไหน เป็น Subclass ของ Class ใดแล้ว ก็ต้องจงรักภักดี กับหัวหน้า Super Class นั้นตลอดไป ห้ามกระโดดไปมา" ... เช่น นก ถึงจะบินได้ ก็ห้ามไปสังกัด สิ่งไม่มีชีวิตที่บินได้ มันเย้ยหยัน เสียมารยาท เสียการปกครอง

* ข้อความที่เขียนอาจจะไม่ถูกต้องตามหลักเนื้อหาวิชาการ เป็นเพียงความเข้าใจส่วนบุคคล มีวัตถุประสงค์เพื่อสรุปรวบยอดความคิด ซึ่งอาจจะมีข้อบกพร่อง ขอน้อมรับฟังด้วยความยินดี

Object
ฉันก็มีชีวิตเลือดเนื้อ (Attribute) จิตใจ (Method) และความสัมพันธ์ (Association)

๑๑ ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...

ตัวอย่างนี้ชอบมาเรยเฮีย
"ถ้าแบบเหนียวแน่นมาก ๆ ก็ทำทึบ ๆ(Composite)
ถ้าแบบธรรมดาก็ไม่ต้องไประบายทึบ(Aggregation)

เวลาที่ยื่นดอกกุหลาบให้แฟน แล้วบอกว่า
ขอเป็นส่วนหนึ่งของชีวิตคุณ คงไม่เอาก้านดอกกุหลาบ ชี้ไปที่แฟนหรอกนะครับ เหอๆๆ "

หลังจากที่สับสนๆๆ มาเหมือนกัน ตอนนี้จำได้แม่นเรย อิอิ

บางเรื่องอาจงง นิดหน่อย แต่ก็ทำให้ภาพในหัวชัดขึ้น ยังงัยก้อขอบคุงนะค้า

ไม่ระบุชื่อ กล่าวว่า...

แจ๋วจิง ^^

ไม่ระบุชื่อ กล่าวว่า...

Definitely believe that which you stated. Your favorite justification seemed to be on the net the
easiest thing to be aware of. I say to you, I definitely get annoyed while people think about worries that they plainly do not know about.
You managed to hit the nail upon the top as well as defined out the whole thing without having side effect ,
people could take a signal. Will probably
be back to get more. Thanks
Stop by my web blog ... Hot Babe Gets Hammered Between 2 Horny Shemales

ไม่ระบุชื่อ กล่าวว่า...

I love what you guys tend to be up too. This kind of clever work and coverage!
Keep up the excellent works guys I've added you guys to my own blogroll.
Feel free to surf my blog ; bhgalleries.com

ไม่ระบุชื่อ กล่าวว่า...

[url=http://www.thomassaboss.co.uk]thomas sabo outlet[/url] Expect to see: mute swan, Canada goose, red-tailed hawk, swamp rose, hemlock-clad hillsides.. [url=http://www.zoeroad.com]tiffany prom dresses[/url]
[url=http://www.xmpllc.com]http://www.xmpllc.com[/url] nuehcscu You would use a JOIN in mySQL for example to get the right user_info with the messages data, you can then manipulate the data as you like with say PHP or JS. esqqerqd [url=http://www.mulberrylondonshop.co.uk]discount mulberry outlet[/url]

ไม่ระบุชื่อ กล่าวว่า...

[url=http://www.bestdresseller.co.uk]modest formal dresses[/url] The emphasis for the trip was birding by ear. [url=http://www.zoeroad.com]black prom dresses[/url]
[url=http://www.christianlouboutinosale.co.uk]louboutin uk[/url] jghrfpuk This article will attempt to clarify the confusing aspects of running a design agency Birmingham based firm in the West Midlands. elluejmc [url=http://www.mulberrylondonshop.co.uk]mulberry handbags outle[/url]

ไม่ระบุชื่อ กล่าวว่า...

[url=http://www.dressaleuk.co.uk]prom dresses on sale online[/url] For some reason, the goose down comforters are great for this, and will keep you warmer than a regular comforter. http://www.mitwhite.com
[url=http://www.christianlouboutinosale.co.uk]louboutin uk[/url] dlxaxryb I have seen the Light of God and am saved as I rest in Jesus lifeboat. kstgqspo [url=http://www.mulberrylondonshop.co.uk]mulberry uk[/url]

ไม่ระบุชื่อ กล่าวว่า...

Yοur current article offеrѕ veгіfied necessary to
myself. It’s veгy hеlpful and you aгe
nаtuгаlly quite knοwlеdgeable in this
aгeа. You have got oрened my fаce tο variouѕ opіnіon оf this paгticular subјeсt using intriguing, notable anԁ reliаblе
articlеѕ.

Rеview my ωebраge Buy meridia
Here is my web site :: meridia

ไม่ระบุชื่อ กล่าวว่า...

Тhe repοrt has vеrified helpful
to me. It’s eхtremеly useful and yοu're certainly quite experienced in this area. You possess opened my personal eyes for you to numerous views on this particular subject along with intriquing, notable and strong articles.

My homepage :: viagra
Feel free to surf my website : buy viagra

ไม่ระบุชื่อ กล่าวว่า...

Your аrticle featuгeѕ estаblishеd usеful tο me pеrsonаllу.
It’ѕ very іnformative and you're certainly quite well-informed in this field. You possess opened up my own face to various thoughts about this subject together with intriguing, notable and strong content.

Here is my webpage: Buy Xenical
My web-site ; buy Xenical

ไม่ระบุชื่อ กล่าวว่า...

Hello there! This is my first comment here so I just wanted to give a quick shout out and tell you I really enjoy
reading through your posts. Can you suggest any other blogs/websites/forums that deal with the same
topics? Thanks a lot!

My homepage ... www.nudeasianwomen.org