Monthly Archive มีนาคม 2018

Byadmin

การรักษาคืออะไร

การรักษา ภาษาอังกฤษ = treatment

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

การเบิกเงินของราชการ

อะไรที่ไม่เกี่ยวกับการรักษา เบิกไม่ได้

ฉีดวัคซีนเพื่อป้องกัน เบิกไม่ได้ ยกเว้นว่า โดนสุนัขกัดแล้วฉีดเพื่อรักษา อันนี้เบิกได้

คู่มือการเบิกจ่ายของทางราชการสามารถดูได้ตามลิงค์นี้

https://home.kku.ac.th/praudit/law/07_medical_fee/22_Medical_guide_government%20officer_CGD_2553.pdf

Byadmin

หัตถการคืออะไร

หัตถการ ภาษาอังกฤษ คือ Medical procedure

หมายถึง การรักษาผู้ป่วยโดยใช้เครื่องมือหรืออุปกรณ์ เข้าสู่ร่างกายผู้ป่วย

 

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

หัตถการทางการพยาบาล อาจหมายถึงหัตถการขนาดเล็ก เช่น การเจาะเลือด การทำแผล การให้น้ำเกลือ

Byadmin

SAP ISH-MM : MMCO1- RNMCO000

In sap, when OU staff make the material requistion for patient. The cost will transfer to OU. But actually it should charge to patient

So this transaction is used for transfer the cost from OU to Patient

Debit patient

credit OU

Reference document

https://help.sap.com/erp2005_ehp_05/helpdata/en/4d/3ed9d3c467122be10000000a42189b/content.htm?no_cache=true

Byadmin

Interface – OOP

Interface คืออะไร

เรามาดูนิยามคำศัพท์คำนี้กันดูก่อน จาก Wikipedia

In object-oriented programming, a protocol or interface is a common means for unrelated objects to communicate with each other. These are definitions of methods and values which the objects agree upon in order to co-operate.

แปลได้ว่า Protocol หรือ Interface ก็คือ วัตถุที่ไม่เกี่ยวข้องกัน มาติดต่อประสานกัน โดยการทำพันธะสัญญากันว่าจะใช้ method/ค่า อะไรในการทำงานร่วมกัน

พูดง่ายๆก็คือ การทำงานร่วมกัน โดยกำหนดเป็น Method กลางขึ้นมาซํกอันหนึ่ง

ขั้นตอนการออกแบบและใช้งาน interface

สมมติเรามีทีมโปรแกรมเมอร์ นาย ก, นาย ข, นาย ค ทำงานเขียนโปรแกรมด้วยกันอยู่ โดยสามคนกำลังเขียนคลาส นายทหาร นายตำรวจ และคลาสประชาชน แยกกันคนละคลาส

ทีนี้เราต้องการให้ทุกคลาส ที่เพื่อนๆ เขียนอยู่มีความสามารถบอกเวลาได้ โดยไม่สนใจว่าแต่ละคลาสจะมีวิธิีการบอกเวลาอย่างไร หรือเค้าจะไปดูเวลามาจากไหน

คลาสนายทหารอาจจะไปยืมนาฬิกาเพื่อนมาบอกเวลา หรือคลาสตำรวจอาจจะไปถามจากนักธุรกิจ หรือคลาสประชาชนอาจจะไม่บอกอะไรเพราะพูดอะไรไม่ได้ อย่างนี้เป็นต้น คือเรียกว่า ขอให้ทุกคลาสมี Method บอกเวลา แต่จะไปทำอย่างไรมาเราไม่สนใจ

เราก็ออกแบบเป็น Interface ชื่อ TellTimeAble โดยมี method TellTime() อยู่ โดยที่ไม่ต้องเขียน code ทำงานอะไรทั้งสิ้น ประกาศไว้เฉยๆ หลังจากนั้น เราก็ไปบอกเพื่อนๆ โปรแกรมเมอร์ในทีม ว่า ให้เอา interface TellTimeAble ของเราไป implement ไว้ใน class ของแต่ละคนด้วย

เพราะเวลาเราเรียกใช้ เราจะส่งค่าคลาสของแต่ละคนเข้าไปใน Method AllManPleaseTellTime ของเราดังนี้

Method AllManPleaseTellTime (TellTimeAble man){

Print(man.TellTime()) // ตรงนี้จะทำลูปวนไป

}

ถ้าเพื่อนของเราไม่เอา Interface TellTimeAble ไปประกาศและ implement ไว้ในคลาสของแต่ละคน มันจะส่ง object ที่เป็นคลาสของเขาเข้ามาที่ฟังชั่นเราไม่ได้

หลังจากนั้น เพื่อนของเราก็ไปปรับปรุงคลาสของแต่ละคน หลังจากที่เพื่อนๆทำเสร็จ ก็สามารถใช้ method tellTime() ของเพื่อนๆ ได้

เพราะงั้นจะเห็นว่า Method TellTime() ก็คือ method กลางที่ทุกคนจะต้องไปเขียน code การทำงานไว้นั่นเอง

ส่วนเราก็เรียกใช้อย่างสบายใจ

นี่ก็คือประโยชน์ของ Interface ครับ

เมื่อไรจะใช้ Interface

เมื่อเราต้องการให้ชื่อ method ของเรา  ไปปรากฎใน class ต่างๆ โดยที่เราไม่สนใจว่า ในแต่ละ class จะให้ method ทำงานอย่างไร แต่เราจะเรียกใช้ method จากชื่อที่เราระบุ

จากตัวอย่าง เราแค่ต้องการจะถามเวลา จาก method TellTime() แต่เราไม่สนใจว่าจะไปดูเวลามาจากไหน หรือนาฬิกายืมใครมา… เพราะคลาสประชาชนมักพูดอะไรไม่ค่อยได้อยู่แล้ว

 

 

อ้างอิง

https://en.wikipedia.org/wiki/Protocol_(object-oriented_programming)

https://docs.oracle.com/javase/tutorial/collections/index.html

Byadmin

รู้จักภาษา Swift กันก่อน

ในปี 2014 บริษัท apple ได้พัฒนาภาษา Swift ขึ้นมาเพื่อใช้พัฒนา application สำหรับ Mac, Iphone, Apple watch, apple tv ซึ่งภาษา swift ถูกออกแบบมาให้เขียนโปรแกรมได้ง่ายขึ้นกว่าแต่ก่อนซึ่งใช้ภาษา Object-C

สำหรับการเขียนภาษา Swift เราจะใช้ tool ที่ชื่อว่า Xcode ซึ่งสามารถดาว์นโหลดมาใช้ได้ฟรีจาก App store

แหล่งเรียนรู้ภาษา Swift

เว็บ computerscienezone.org ได้รวบรวมแหล่งความรู้เกี่ยวกับ swift ไว้มากมาย สามารถคลิกเข้าไปดูตามลิงค์ข้างล่างนี้

https://www.computersciencezone.org/swift-programming-language-tools/

Byadmin

Overloading vs Overriding

ในเรื่องการทำ Polymorphism เรามักจะเจอ 2 คำคือ Overriding กับ Overloading ซึ่งบางครั้งสร้างความสับสนให้เราได้เหมือนกันว่า มันต่างกันอย่างไร แถมชื่อยังคล้ายๆกันเสียอีก ยิ่งบางครั้งเอาไปใช้สลับกันมั่วไปหมด

ความแตกต่างของ Overriding กับ Overloading

สิ่งที่เหมือนกันก็คือ สองอย่างนี้มันเป็นศัพท์ที่ใช้ตอนเขียน Method นะครับ

ส่วนสิ่งที่ต่างกันก็คือ

Method overriding – เป็นเรื่องของ Polymorphism มันต้องมีการสืบทอดเข้ามาเกี่ยวข้อง มีคลาสแม่ มีคลาสลูก การทำก็คือ ทำให้ method ของ class ลูก ทำงานต่างจาก ของ class แม่ ทั้งๆที่ ชื่อ กับพวกค่าที่ส่งเข้า Method เหมือนกันเด๊ะ

Method overloading –  เป็นเรื่องของการที่ Method ชื่อเดียวกัน แต่มีพวกค่าที่ส่งเข้า Method ต่างกัน จะเป็นเรื่องของ Class Class เดียวครับ บางคนบอกว่ามันไม่เกี่ยวกับเรื่อง Polymorphism แต่บางครั้งก็อาจจะถูกเรียกว่า Static polymorphism นะครับ

 

สวัสดี

 

อ้างอิง

http://www.c-sharpcorner.com/UploadFile/d0a1c8/object-oriented-programming-in-C-Sharp-net/

 

Byadmin

Polymorphism – ผ่าเหล่าผ่ากอ

ทบทวนกันก่อนเรื่อง Inherited ของ OOP โดย inherited มีประโยชน์ในการ reuse code คือมี code ต้นทางชุดเดียว แล้วสืบทอดมาที่คลาสของเรา ทำให้เราสามารถใช้ Data และ Method ของคลาสต้นทางได้

ทีนี้ถ้าเกิดว่า ถ้าเกิดเราไม่อยากให้ Method ที่สืบทอดมาทำงานเหมือนกับต้นแบบ การ inherited เพียงอย่างเดียวก็ไม่ตอบโจทย์เสียแล้ว

ดังนั้นจึงต้องใช้อีกความสามารถนึงของแนวคิดแบบ OOP คือ การทำ Polymorphism แปลๆกันมาว่าการมีหลายรูปแบบ แต่ผมขอเรียกแบบบ้านๆว่า การผ่าเหล่าผ่ากอ คือทำได้ไม่เหมือนวงศ์สาคณาญาติ (อาจจะดีกว่าหรือแย่กว่าก็ได้นะ)

ยกตัวอย่างให้เห็นภาพ สมมติ เราจะสร้างเกมล่าสัตว์ในอุทยานแห่งชาติ

อันดับแรก สมมติเราออกแบบให้มีคลาสหลักคือ Class GameObject โดย Gameobject  จะมีความสามารถในการเคลื่อนที่ ดังนั้น เราจะออกแบบคลาสนี้ให้มี Method ชื่อ Move

ต่อมาเราจะสร้าง Class ตัวละครในเกม 3 คลาส ได้แก่ เสือดำ(Panther), นายพราน(Hunter), ลูกปืน(Bullet) โดยทั้งสามคลาส สืบทอดมาจาก Class GameObject

ทั้งสามคลาสก็จะมี Method Move ที่สามารถใช้งานได้

ตัวอย่างการเรียกใช้

Panther.move()

Hunter.move()

Bullet.move()

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

ดังนั้นแต่ละตัวละคร มันมีการเคลื่อนที่ทำงานไม่เหมือนกัน การ inherited มาเพียงอย่างเดียว เลยยังไม่ตอบโจทย์ เพราะถ้าไม่ทำอะไรเพิ่ม การเคลื่อนที่ของทั้งสามก็จะเหมือนกัน คือใช้วิธีการเคลื่อนที่ตาม class ต้นทาง คือ GameObject.move()

ถ้าจะตอบโจทย์เราก็ต้องเอาความสามารถ Polymorphism เข้ามาช่วย

โดย Polymorphism พูดง่ายๆก็คือเราสามารถที่จะทำให้ Method ชื่อ Move ของแต่ละตัวละคร ทำงานต่างกันได้ โดยเขียน code ในแต่ละ class ตัวละคร ให้มันต่างกัน เราเรียกการทำแบบนี้ว่า Method overriding

ยกตัวอย่างเช่น

ในคลาส GameObject เราเขียน code ไว้ใน Method move ว่า เคลื่อนที่ได้ 10 km/hr

ทีนี้ในแต่ละคลาสตัวละคร ที่สืบทอดมา เราไม่ได้ต้องการให้เคลื่อนที่ได้ 10 km/hr ทุกตัว ดังนั้นเราต้องทำ Method overriding คือไม่ใช้ code จาก method move ของต้นแบบ แต่จะเขียนเอาเอง

ถ้าเป็นคลาสเสือดำ เราก็อาจจะเขียน Code ใน method move ของคลาสเสือดำ ว่า วิ่งได้ 50 km/hr แต่ถ้าเป็นนายพราน เราก็อาจจะเขียน code ใน method move ของคลาสนายพรานว่า ไม่ต้องเดิน นั่งเฉยๆ ก็ได้กินซุปเสือดำแล้ว

 

 

Byadmin

Inheritance – การสืบต่อเผ่าพันธ์

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

แนวคิดแบบ OOP ช่วยให้เราเอาโค้ดเดิมๆที่มีอยู่ ที่มีการทดสอบแล้วว่า work มาใช้ โดยที่ไม่ใช่การ copy เอามาวางในโปรแกรมเรานะครับ แต่เป็นการประกาศว่า คลาสของเรา มีการสืบต่อมาจาก คลาสที่มีอยู่แล้ว ทำให้คลาสของเราสามารถทำงานได้เหมือนกับคลาสที่มันสืบต่อมา แถมยังต่อยอดความสามารถเพิ่มเติมได้อีกด้วย

เพราะฉะนั้น การสืบทอดใน OOP พูดง่ายๆก็คือ การ reuse code โดยที่มี code ตั้งต้นชุดเดียว แล้วเอามาใช้ได้เรื่อยๆ นั่นเอง เช่น สมมติมี Class  A เชียนไว้โดยโปรแกรมเมอร์ชื่อนาย ก ทีนี้ เราเห็นว่า Class A ทำงานได้ดีชมัด เราอยากเอา Class A มาใช้ แทนที่เราจะ copy code มาวางในโปรแกรมเรา เราก็ทำงานสืบทอด Class A มาซะเลย ทีนี้ Class ของเราก็จะมีความสามารถจาก Class A  แถมเรายัง Modify ให้เก่งขึ้นได้อีกด้วย

 

 

Byadmin

Encapsulation – การห่อหุ้มข้อมูล

โดยปกติการเขียนโปรแกรมแบบ OOP ที่มองทุกอย่างเป็นวัตถุนั้น ภายในแต่ละวัตถุจะมี 2 ส่วน คือ Data กับ Method

ส่วนของข้อมูล(Data) บางครั้งมักจะถูกห่อหุ้มไว้ให้ใช้ได้ภายในวัตถุนั้นๆ เท่านั้น

ถ้าอยากจะเปลียนแปลงข้อมูล ก็ควรจะเรียกใช้ผ่าน Method

การป้องกันไม่ให้มาแก้ Data โดยตรงก็คือ การ encapsulation นั่นเอง คือหุ้ม Data ไว้ ให้เรียกใช้ผ่าน Method (รายละเอียดปลีกย่อยยังมีอีกเยอะ ผมจะเล่าแค่ conceptให้เข้าใจนะครับ ส่วนอื่นไปศึกษาต่อได้ไม่ยาก)

ยกตัวอย่าง

เราออกแบบและเขียนโปรแกรม วัตถุบัญชีธนาคาร

ในบัญชีธนาคารก็จะมี Data ก็คือ ยอดเงิน  กับ Method คือฝากถอน โดย Method ฝากถอน จะทำงานโดยบันทึกข้อมูลรายการเดินบัญชีลงใน statement + ปรับข้อมูลยอดเงิน

สมมติว่าเราทำงานกันเป็นทีมโปรแกรมเมอร์ เราก็ควรออกแบบวัตถุบัญชีธนาคารนี้ว่า

ห้ามมาปรับยอดเงินโดยไม่ผ่าน Method นะ ไม่งั้นมันจะไม่มีการบันทึก transaction ฝากถอนไง อยู่ดีๆ ยอดเงินก็เพิ่มขึ้นหรือลดลง โดยพอไปดู statement กลับไม่เจอรายการ

พอโปรแกรมเมอร์คนอื่นมาใช้วัตถุบัญชีธนาคารก็ต้องทำตามกฎที่เราออกแบบไว้

คือ ถ้าอยากจะเพิ่มหรือลดยอด ก็ควรทำผ่าน Method ฝากถอน แต่ถ้ามีโปรแกรมเมอร์บางคนดื้อดึง จะไปแก้ยอดเงินตรงๆ คือหัวชนฝาว่าจะทำ สมัยนี้ตัว Compiler มันเก่ง มันจะฟ้องเลยว่า เฮ้ยไม่ได้นะ คนเขียนส่วนวัตถุบัญชีธนาคารเค้าออกแบบมาแล้ว ไม่ให้ทำแบบนี้เฟ้ย

อย่างนี้เป็นต้น

ทีนี้ประโยชน์อีกอย่างหนึ่งสำหรับโปรแกรมเมอร์คนอื่นๆก็คือ

เค้าก็ไม่จำเป็นต้องรู้ว่าไอ้เจ้า Method ฝากถอน มันทำงานยังไง

จะต้องไปปรับยอด ไปลงบัญชี บลาๆๆๆ อย่างไร

เพราะเค้าเชื่อใจว่าเราออกแบบและเขียน Method ให้เค้ามาดีแล้ว

เค้าก็เรียกใช้ Method ที่เราออกแบบไว้ ก็จบเลย อย่างอื่นไม่ต้องไปแคร์

ถ้ามันผิด ก็งานเข้าเราที่ต้องแก้บั๊กเท่านั้นเอง