ทำโปรเจคเป็นทีม
ทำโปรเจคเป็นทีม สอนไม่ได้… ลองฝึกทำดีกว่า แต่….
เทคนิคเขียนโปรแกรมด้วยกัน(หลายๆคน)
เป้าหมาย: เขียนโปรแกรมแต่ละส่วนไปพร้อมๆ กันได้
Def: ซุย = มั่วไปเรื่อยๆ (นิยามโดย argen) 1. ซุยโลด เขียนทุกอย่างไว้ในไฟล์เดียว โปรแกรมเวิร์ค แต่..... เพื่อนนั่งทำตาปริบๆ
ก ข 2. ออกแบบดีๆ A เอาความรู้ OOP มาใช้ แบ่งโปรแกรมออกเป็นหลายส่วน YellowPages . Search(name : string) : string[] แห แหวน – 0812222 แห้ว – 08112341 แหงะ - 0000012 ก ข A
ข class YellowPages { // อาจต้องประกาศค่าเพิ่มเติม public YellowPages() // โหลดข้อมูล..... } public string[] Search(string name) // หลับหูหลับตาค้นมาให้จงได้ return ……; ข
ก SearchButton_Click() { YellowPages yp = new YellowPages(); string[] result = yp.Search(textBox1.Text); for(int i = 0; i < result.Length; i++) listBox1.Items.Add(result[i]); } ก
ก SearchButton_Click() { // YellowPages yp = new YellowPages(); // string[] result = yp.Search(textBox1.Text); string[] result = {“nancy - 081xx”, “lula – 089xx”}; for(int i = 0; i < result.Length; i++) listBox1.Items.Add(result[i]); } ก
2. ออกแบบดีๆ ตัวอย่างการออกแบบโปรแกรมดีๆ ซักอัน (ไม่ต้องเป็น UML ก็ได้)
2. ออกแบบดีๆ ดูตัวอย่างโปรแกรมชาวบ้าน ที่ Open source สอนไม่ไหว.... ออกแบบโปรแกรมไม่เก่งเหมือนกัน งั้น?
ข ก 3. ซุยหลายฟอร์ม ทำคนละฟอร์ม (หรือมากกว่า) แหวน – 0812222 แห้ว – 08112341 แหงะ - 0000012 0812222 ใต้สะพานข้ามแยก เกษตร ข ก
3. ซุยหลายฟอร์ม Form1 SearchButton_Click() { Form2 info = new Form2(); info.Show(); info.DisplayInfo(“แหวน”); } Form2 public void DisplayInfo(string name) { // do something }
ทบทวน: Object is pass-by-reference void StormSeeker(Hero x) { x.HP = x.HP - 200; } class Hero { public int HP; ... } Hero skelKing = new Hero(); skelKing.HP = 100; StormSeeker(skelKing); skelKing.HP = ??
4. ซุยลงแขก
4. ซุยลงแขก 2 คน 1 ฟอร์ม Chat Client Demonstration!
ChatAPI.PostMessage() Chat Server Chat Client ChatAPI.GetMessage() ChatAPI.PostMessage()
ChatAPI.GetMessage(); คืนค่าเป็น array ของ 20 ข้อความล่าสุด 1 string = 1 ข้อความ string[] msgs = ChatAPI.GetMessage(); msgs[0] == "118>nattster>สวัสดีครับน้องๆ ทุกคน" msgs[1] == "119>nattster>นี่คือโจทย์ Chatroom Client" msgs[2] == "120>b4lmung>ข้าคือ maid guy" msgs[3] == "121>nattster>@b4lmung มา maidguy อะไรกันแถวนี้ :P“ …
ChatAPI.PostMessage(name, message); คืนค่าเป็น enum ชื่อ Response Response.OK ส่งข้อความเรียบร้อย
ก ข textBox1 UserList ChatBox ทุกๆ 2 วินาที Update(ListBox ulist) . Update(TextBox mtext) .
class ChatBox { public void Update(TextBox mtext) mtext.Text = “นี่คือข้อความจ๊ะ”; } }
ไปลองทำกันได้แล้ว... ใช้ SVN ด้วยนะ ซุยโลด, ออกแบบดีๆ, ซุยหลายฟอร์ม, ซุยลงแขก
หนทางสู่สุดยอด Chat Client
UserList แสดงว่าส่งแล้วกี่ข้อความ แสดงว่าส่งครั้งล่าสุดเมื่อไหร่ (วัน+เวลา) ถ้าไม่ได้ส่งข้อความเลย ในช่วง 5 นาทีที่ผ่านมา ให้ลบออกจาก List แปลว่าไม่ได้ chat แล้ว
MessageList แสดงข้อความจากห้อง…..เท่านั้น เปลี่ยนไปใช้ RichTextBox “#dota นี่คือห้อง dota ข้อความทุกอันที่ปะหน้าว่า #dota แปลว่าคุยในห้องนี้” เปลี่ยนไปใช้ RichTextBox ใส่สีสันให้ข้อความ /yellow นี่คือข้อความสีเหลือง /red นี่คือข้อความสีแดง
Chat ได้หลายหน้าต่าง(พร้อมกัน) เราอาจเปิดหลายๆ หน้าต่างสำหรับห้องแต่ละห้อง
สร้างฟอร์ม Chat กันสองต่อสอง สมมติว่า nattster จะคุยกับ b4lmung อาจส่งข้อความหากันแบบนี้ nattster: @b4lmung หวัดดี b4lmung: @nattster บูชาเมดเถอะลูก nattster: @b4lmung สาธุ! ทำหน้าต่างแสดงเฉพาะข้อความระหว่างเราสองคน (เว่อร์) เข้ารหัสข้อความ