วันพฤหัสบดีที่ 10 กุมภาพันธ์ พ.ศ. 2554

java เบื้องต้น ครับ


class คือ เสมือนแม่พิมพ์หรือแม่แบบในการสร้าง Objectต่างๆ ที่มีความหลากหลายทั้งนี้เราสามารถหยิบเอา Object ที่สร้างจาก Class หรือ Subclass นี้ไปทำอะไรได้อีกหลายอย่างโดยสั่งงานผ่าน Method ของมัน
Object คือ เหมือนวัตถุชิ้นหนึ่งที่ถูกสร้างขึ้นโดย Classและดึงข้อมูลจาก Class นั้นๆมาใช้ทำให้ Objectมีลักษณะตาม Class ที่สร้างมันขึ้นมา
Method คือ ฟังชันก์ที่อยู่ภายใน Class มีหน้าที่ทำตามคำสั่งที่อยู่ภายใน Method เมื่อถูกเรียกใช้งานแบ่งออกเป็น 3 ประเภทได้แก่
1) Public methodเป็น method ที่ไม่ว่า Class ใดก็เรียกใช้งานได้
2) Private methodเป็น method ที่จะถูกเรียกใช้งานได้จาก method ที่อยู่ในClass เดียวกันเท่านั้น
3) Protected methodเป็น method จะถูกเรียกใช้งานได้จาก method ที่อยู่ในClass และ Subclass เดียวกันเท่านั้น
Service คือ Method ประเภทหนึ่งที่ถูกประกาศมาเป็น public เพื่อให้ Class อื่นเรียกใช้งานได้
Super Class คือ Class หลักที่เรานำมาเพิ่มส่วนต่อขยาย
SubClass คือ Class ที่เรานำมาต่อขยาย Super Class
Static คือ การประกาศล่วงหน้า โดยไม่จำเป็นต้องกระทำใน Method โดยเมื่อเราประกาศตัวแปรแบบ Static แล้ว เราก็สามารถนำตัวแปรนี้ไปใช้ได้ในทุก Method ใน Classนั้นๆ
Finalคือ จบแล้ว เช่น ถ้าเป็นตัวแปรที่ประกาศมาเป็น Final ค่าของตัวแปรนั้นๆจะไม่สามารถเปลี่ยนแปลงได้อีก และ ถ้าเป็น Class ก็จะไม่สามารถสืบทอดClassนั้นๆได้ คือ ไม่สามารถมีSubClass ได้นั่นเอง
Algorithm คือ วิธีการทำงานของตัวโปรแกรมนั้นๆสั้นๆง่ายๆได้ใจความแต่เข้าใจยาก
Attributes คือ คุณสมบัติต่างๆของ Objects เช่นพิกัดของหุ่น สีของหุ่น
Parametersคือ ค่าที่เราส่งไปเวลาที่เราเรียกใช้ Method, Service, Classฯลฯ โดยค่า Parameters อาจมีหลายค่า โดยปกติแล้วจะคั่นด้วยเครื่องหมาย คอมม่า(Comar)
GUI ย่อมาจากคำว่า Graphic User Interface คือส่วนที่เครื่องใช้ติดต่อกับผู้ใช้โดยมีรูปแบบเป็นGraphic
IDE ย่อมาจากคำว่า Integrated Development Enviroment คือเครื่องมือที่ช่วยในการพัฒนาโปรแกรมโดยมีสิ่งอำนวยความสะดวกต่างๆ เช่นคำสั่ง Compile, Runตัวอย่างของ IDE เช่น EditPlus, JCreator, Eclipse แต่ Notepad ไม่นับว่าเป็น IDE เนื่องจากตัว Notepad เอง ไม่มีเครื่องมืออำนวยความสะดวกสำหรับการเขียนโปรแกรมใดๆเลย
ประเภทของ Error มีอะไรบ้าง ?
-Compile Error เป็นประเภทที่ทำให้คนปวดหัวได้มากที่สุด เพราะส่วนมากเจอ Errorประเภทนี้แล้วจะแก้กันไม่ค่อยถูก Compile Error หมายถึง Error ที่เกิดขึ้นจากการCompile เนื่องจากตัว Source Code มีปัญหา
-Run-time Error อันนี้ส่วนมากจะไม่ค่อยเจอ Run-time Error คือ Error ที่เกิดขึ้นระหว่างการ Run ตัว Program แต่ Error ประเภทนี้สามารถดักจับเพื่อใช้คำสั่งอื่นแก้ไขได้ด้วยคำสั่ง Try Catch ตามประเภทของ Exception ดังจะเห็นว่าในPacket ของ BeckerเวลาเกิดRun-time Error กับหุ่นยนต์ตัว Program จะไม่เอ๋อ แต่ตัวหุ่นยนต์จะแตกเป็นชิ้นๆแทน ตามที่มีคำสั่งแก้ไข
-Intent Error เป็นประเภทที่แก้ไขได้ง่ายที่สุด เพราะเกิดจากการที่โปรแกรมออกมาแล้วไม่ได้ดั่งใจ
ประเภทของ Comment มีอะไรบ้าง ?
-One-line Comment ใช้สัญลักษณ์ // ในการเริ่ม โดย Comment ประเภทนี้จะมีผลตั้งแต่สัญลักษณ์ไปจนกว่าจะหมดบรรทัด
-Multi-line Comment ใช้สัญลักษณ์ /* ในการหยุด มีผลตั้งแต่สัญลักษณ์เริ่มจนถึงสัญลักษณ์หยุด
-Document Comment ใช้สัญลักษณ์ /** ในการเริ่ม และ*/ ในการหยุด ขอบเขตเช่นเดียวกับ Multi-line Comment แต่ว่าเวลา Compile แล้วรู้สึกว่าจะถูกใส่เข้าไปในDocumentด้วย
ประเภทของตัวแปร มีอะไรบ้าง ?
int ย่อมากจาก Integer เก็บตัวเลขจำนวนเต็ม,long มีผลเหมือนกันแต่ว่าเก็บค่าสูงสุดต่ำสุดได้มากกว่า Integer
floatเก็บตัวเลขแบบมีทศนิยมได้,double มีทศนิยมได้เหมือนกันแต่ว่าเก็บค่าสูงสุดต่ำสุดได้มากกว่า float
char เก็บตัวอักษรได้ 1 ตัวอักษร
Boolean มีเพียง 2 ค่า คือ true กับ false
String อันนี้ไม่ได้เป็นประเภทของตัวแปร แต่จัดเป็น Class ของตัวแปรเอาไว้เก็บชุดตัวอักษร อักขระต่างๆ
คำสั่งตัดสินใจต่างๆ
ประโยค if
การใช้ if เป็นการเสนอทางเลือกให้กับการประมวลผล แบ่งเป็นสองทางจะเป็นทางไหนก็ขึ้นอยู่กับประโยคเงื่อนไขสำหรับทดสอบว่ามีค่าเป็นจริง หรือเป็นเท็จ
ถ้าประโยคเงื่อนไขสำหรับทดสอบทางเลือกมีค่าเป็นจริง (True) ก็จะทำการประมวลผลในกลุ่มคำสั่งที่ 1 เพื่อให้ได้ผลลัพธ์ออกมา แต่ถ้าเป็นเท็จ (False) ก็จะเลือกทำในกลุ่มคำสั่งที่ 2 ซึ่งทำให้ได้ผลลัพธ์ที่แตกต่างกันออกมา
ตัวอย่าง :if(karel.frontIsClear())
{ karel.move();
}
karel.turnLeft();
นอกจากรูปแบบที่กล่าวมาข้างต้นแล้วก็ยังมีอีกหลายๆรูปแบบของ ifที่ให้ความหมายใกล้เคียงกัน เช่นถ้าต้องการให้ประมวลผล ถ้าประโยคเงื่อนไขเป็นจริง แต่เมื่อประโยคเงื่อนไขเป็นเท็จก็ไม่ต้องทำอะไรเลย
ตัวอย่างif(ประโยคเงื่อนไข)
คำสั่ง ;
นอกจากรูปแบบต่างๆ ข้างต้นแล้วถ้าต้องการให้ประมวลผลในกรณีต่างๆ มากกว่าหนึ่งคำสั่ง ดังนี้
ตัวอย่าง:if(cat.canPickThing())
{ cat.turnLeft();
}
else { cat.turnRight();
}
cat.move();
คือถ้าโรบอทสามารถเก็บของได้แล้วให้เลี้ยวซ้ายถ้าเก็บไม่ได้ให้เลี้ยวขวาเมื่อทำตามคำสั่งนั้นๆแล้วให้เดินไปข้างหน้า...
ประโยค while
การใช้งานประโยค while จะเป็นประเภทของการทำงานในลักษณะวนซ้ำหรือที่เรามักจะได้ยินกันบ่อยๆว่าการวนลูป ซึ่งการทำงานซ้ำในแต่ละรอบนั้นจะประมวลผลกลุ่มคำสั่งเดิมที่อยู่ภายใต้ประโยคwhile ซึ่งรอบของการวนซ้ำจะนานเท่าไรนั้นก็ขึ้นอยู่กับว่าผ่านเงื่อนไขการทดสอบว่าเป็นเท็จหรือไม่ ถ้าเป็นเท็จจริงจึงจะหลุดจากการทำงาน
ตัวอย่าง : while(this.frontIsClear())
{ this.pickThing();
this.move();
}
this.pickThing();
ในบางกรณีอาจจะพบเหตุการณ์ที่เรียกว่า การวนลูปแบบไม่มีที่สิ้นสุดหรือเรียกเป็นภาษาอังกฤษว่าinfinite loop ซึ่งเป็นสิ่งที่ผู้เขียนต้องระมัดระวัง เพราะอาจทำให้เกิดการทำงานที่ผิดพลาดได้
สรุปก็คือ while นี้จะหยุดการประมวลผลโปรแกรมก็ต่อเมื่อประโยคเชิงเปรียบเทียบที่กำหนดไว้มีค่าเป็นเท็จ (ในทางตรงกันข้ามก็คือ ลูป while จะทำการประมวลผลไปเรื่อยๆ ตราบใดที่ประโยคเปรียบเทียบที่ว่านั้นยังคงมีความจริงเป็นจริงอยู่)
การทำงานของ while คือเริ่มต้นจากการประมวลผลประโยคเงื่อนไขว่ามีค่าเป็นจริงหรือเป็นเท็จถ้าเป็นเท็จ กลุ่มคำสั่งต่างๆ ภายในจะไม่ถูกทำการประมวลผลเลยและจบการประมวลผล whileทันที แต่ถ้ามีค่าเป็นจริงกลุ่มคำสั่งภายใน whileนั้นก็จะถูกประมวลผลตามลำดับ จากนั้นประโยคเงื่อนไขก็จะประมวลผลเพื่อตรวจสอบค่าความจริงอีกครั้งและจบการประมวลผลเมื่อค่าความจริงเป็นเท็จ
ประโยค do/while
ในบางครั้งเราก็อาจมีความจำเป็นที่จะนำเอาประโยคเงื่อนไขไปไว้ข้างหลังจากการประมวลผลกลุ่มคำสั่ง แทนที่จะเอามาไว้ด้านบนสุดเหมือนกับที่ใช้ในลูป while ภาษา Java จึงกำหนดรูปแบบการวนซ้ำชนิดนี้ขึ้นมาให้ใช้โดยไม่ได้มีความแตกต่างจากลูป while มากนัก นอกเสียจากการย้ายwhile และเงื่อนไขทดสอบไปอยู่ด้านท้าย
ตัวอย่าง : do
{this.pickThing
}while(this.frontIsClear())
{this.pickThing();
this.move();
}
this.pickThing();
โดยสรุปก็คือ ลำดับของการประมวลผลที่มีการเปลี่ยนแปลงไปจากลูป while นั่นคือ กลุ่มคำสั่งภายใต้ จะถูกประมวลผลก่อนเป็นอันดับแรก ไม่ว่าค่าที่ได้เมื่อนำไปทดสอบกับประโยคเงื่อนไข จะให้ค่าเป็นเท็จตั้งแต่ครั้งแรกเลยก็ตาม หมายความว่ากลุ่มคำสั่งเหล่านั้นจะถูกประมวลอย่างน้อย 1 ครั้ง ผิดกับลูปwhileที่จะไม่ทำอะไรเลยหากว่าค่าที่ได้จากประโยคเงื่อนไขนั้นเป็นเท็จ
ประโยค for
ประโยคควบคุมแบบลูปอีกชนิดที่จะกล่าวถึงก็คือ ลูป for ที่มีเทียบเท่ากับลูป while นั่นคือโปรแกรมไม่ได้มีประสิทธิภาพเพิ่มขึ้นจากการใช้ for มากกว่าการใช้ while แต่อย่างใด เพียงแต่ว่าในการแก้ปัญหาบางปัญหานั้น เมื่อเขียนด้วยลูป forจะทำได้ง่ายกว่าการใช้ลูป while อีกทั้งยังง่ายต่อการทำความเข้าใจของผู้อ่านโปรแกรมด้วย
ตัวอย่าง : public void turnRight
{ for (int turns = 0; turns < 3; turns = turns + 1)
{ this.turnLeft();
}
{