การเปลี่ยนพฤติกรรมของ Class ขณะ Runtime

ก่อนอื่นในคราวนี้ ผู้เขียนจะขอลองเปลี่ยนไปเขียนเป็น C# แทน เนื่องจากตัว IDE ของ Visual Studio นั้น สามารถออกแบบ GUI(Graphics User Interface) ได้ง่ายกว่า IDE หลายๆตัวของ java มาก โดยผู้เขียน จะพยายามไม่ใช้ความสามารถบางชนิด ที่ภาษาอื่นๆบางภาษาไม่มี เพื่อความสะดวกในการทำความเข้าใจร่วมกัน (คนอ่าน: ไอคนเขียน จะสลับไปๆมาๆทำไมว๊ะ!!! คนเขียน: สลับไปเถอะ โค้ดเหมือนกันจะตาย = =)

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

Continue Reading…

Abstract, Interface Programming

ก่อนหน้านี้ เราก็ได้มีการพูดถึงเรื่องของ OOP กันมาบ้างเล็กน้อย ซึ่งก็ทำให้เราได้รู้ว่า คุณลักษณะสำคัญต่างๆของ OOP ที่จำเป็นต้องมีนั้น ก็ประกอบด้วย Encapsulation, Inheritance และ Polymorphism ซึ่งแต่ละองค์ประกอบนั้น ก็ถูกแบ่งออกเป็นคุณลักษณะของแต่ละภาษาออกไปตามแต่ละไวยากรณ์ของภาษานั้นๆ แต่ก็ยังมีวิธีการทำงานที่คล้ายๆกันอยู่

บทความนี้ ซึ่งจะกล่าวถึง Abstract Class และ Interface Programming นั้น จะถือว่าถูกจัดอยู่ใน Polymorphism หรือก็คือความหลากหลายนั่นเอง ซึ่งจะอธิบายออกมาด้วยไวยากรณ์ของภาษา Java เพราะเป็นภาษาที่ทำความเข้าใจได้ง่ายกว่า C++ ในหลายๆลักษณะ และเป็นภาษาที่มีผู้เริ่มต้นในการศึกษาการโปรแกรมมิ่ง ศึกษาอยู่มากพอสมควร Continue Reading…

ประสบการณ์ การใช้ openGL on C# (sharpGL)

ก่อนอื่นอยากเกริ่นก่อนว่า ก่อนหน้านี้ ผู้เขียนไม่เคยมีประสบการณ์เกี่ยวกะพวก Graphics Programming มาก่อนเลย ไม่ว่าจะ DirectX หรือ openGL จะใช้นิดๆ หน่อยๆ ก็แค่ GDI+ บน C# เพราะว่าใช้แค่วาดรูป อะไรนิดๆ หน่อยๆ ซึ่งถ้าเปรียบเทียบ GDI+ กับพวก openGL แล้ว ก็คงเหมือนใช้พวกโปรแกรม Paint กับ โปรแกรม 3 มิติ แบบพวก 3D Studio Max

ทีนี้ปัญหาคือ GDI+ ไม่สามารถตอบสนองการวาดแบบ Realtime ได้ คือถ้าพูดกันให้เข้าใจแบบง่ายๆ GDI+ นั้น จะทำงานได้ช้ากว่าพวก openGL ซึ่งทำให้พอเราต้องการจะมี Canvas สำหรับ Graphic Animation อะไรซักอย่าง หากใช้ GDI+ แล้ว ก็จะพบว่า Animation ของเราจะกระตุกมากๆ จนแสดงผลไม่รู้เรื่อง สุดท้าย เราเลยต้องเดินทางเข้าสู่อะไรใหม่ๆกันแล้วละ 🙂 Continue Reading…

การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming)

การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
สำหรับคนที่เคยเรียนโปรแกรมมิ่งมาบ้างแล้ว โดยเฉพาะคนที่เคยศึกษาภาษา Cมา มักจะคุ้นเคยกับการเขียนโปรแกรมไปเรื่อยๆ แล้วแบ่งฟังชั่นการทำงานไปเรื่อยๆ เพื่อให้โปรแกรมเป็นไปตามต้องการ ซึ่งวิธีนี้ก็ไม่ได้ผิดอะไร แต่จะมีความยุ่งยากมาก เมื่อต้องเขียนโปรแกรมที่มีความซับซ้อนขึ้นไป เพราะเราไม่สามารถมองโค้ดขึ้นมาอย่างเป็นรูปธรรมได้
 
มองอย่างง่ายๆ ปกติแล้ว เวลาเราเขียนแบบเดิม(ต่อไปนี้จะเรียกว่า Structural Programming) เราจะมองถึงขั้นตอนการทำงานเป็นหลัก ให้ทำงานตามลำดับชั้น ไปเรื่อยๆให้งานเสร็จสมบูรณ์ 

Continue Reading…

แนะนำภาษาต่างๆในการเขียนโปรแกรม

 
ก่อนที่เราจะเริ่มศึกษาการเขียนโปรแกรมนั้นเราควรจะรู้จักภาษาโปรแกรมมิ่งต่างๆก่อนอย่างคร่าวๆเพื่อที่จะได้เลือกแนวทางศึกษาที่ถูกต้อง และเหมาะกับตัวเอง
 
ภาษา C
ถูกพัฒนามานานมาก เป็นภาษาแรกที่หลายๆคนศึกษา เพราะมีโครงสร้างที่ง่ายแต่ไม่เหมาะในการเขียนโปรแกรมที่ซับซ้อนมากๆ รวมทั้งเขียน GUI (GraphicUser Interface) ยากมาก เพราะไม่มีเครื่องมือพัฒนาที่ใช้ง่าย ข้อดีคือ ทำงานได้เร็วและสามารถเขียนลงบน Microcontroller ได้
 
ดาวน์โหลด IDE ได้ที่ http://www.bloodshed.net/devcpp.html

Continue Reading…

เหตุผลที่เราควรจะมีความรู้โปรแกรมมิ่งติดตัว

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

Continue Reading…