Author Archive admin

Byadmin

Struct vs Class

ประเภทข้อมูล

ประเภทข้อมูลใน dot net จะมี 2 แบบ คือ

  • Reference type
  • Value type

Struct เป็นข้อมูลแบบ Value type

Class  เป็นข้อมูลแบบ Reference Type

Reference type เก็บข้อมูลไว้ในหน่วยความจำที่เรียกว่า Heap ส่วน value type จะมาอยู่ในหน่วยความจำเมื่อเรียกใช้ (โปรแกรม run ไปถึง method ที่มีการใช้ตัวแปร ถึงจะทำการจองหน่วยความจำ)

Reference type เป็นข้อมูลแบบ Pointer คือจะชี้ไปหาข้อมูลอื่น

Value type เก็บข้อมูลไว้ที่ตัวมันเอง

การ Copy ตัวแปร

การ Copy ตัวแปร Reference type จะเป็นการ copy ข้อมูล Pointer ที่จะชี้ไปหาข้อมูลจริงในหน่วยความจำอีกที ถ้ามีการเปลี่ยนแปลงข้อมูลของตัวแปรปลายทางต้นทางก็จะเปลี่ยนไปด้วย

การ Copy ตัวแปร Value type จะ copy ข้อมูลจริงทั้งชุด การเปลี่ยนข้อมูลตัวแปรปลายทาง ข้อมูลของตัวแปรต้นทางจะไม่เปลี่ยน

การนำไปใช้

Microsoft แนะนำว่า Struct จะใช้ในการ encapsulate ตัวแปรที่เกี่ยวข้องกันไว้ด้วยกัน เช่น ตัวแปรเกี่ยวกับการวาดรูปสี่เหลี่ยม struct สามารถสร้าง construct, constant, field, method, properties, indexers, operator, event และ nest types

struct นำมาใช้ เมื่อข้อมูลมีขนาดเล็ก และมีอายุสั้น และมักจะเอาไปใช้ใน object อีื่น

อย่างไรก็ตาม ถ้าหากข้อมูลมันมีความซับซ้อน และใช้ construct, constant, field etc หลายอัน แนะนำให้ใช้ class แทน

 

 

ref:

https://stackoverflow.com/questions/13049/whats-the-difference-between-struct-and-class-in-net

Byadmin

.net framework

Dot net frame work

Xamarin

Dot net core

เทคโนโลยีในการเขียนโปรแกรมของ Microsoft

 

 

.NET Core, .NET Framework, Xamarin – The “WHAT and WHEN to use it”

Byadmin

ASP.NET Core

Microsoft ประกาศ ASP.NET CORE จะเป็นแนวทางในการพัฒนาเว็บ platform ต่อไปในอนาคต

 

คุณสมบัติ ของ ASP.NET CORE

  1. Open source
  2. Cross Platform
  3. Extremely performant
  4. scalable
  5. Testable
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 ของคลาสนายพรานว่า ไม่ต้องเดิน นั่งเฉยๆ ก็ได้กินซุปเสือดำแล้ว