GUI
ย่อมาจาก Graphical User Interface
เป็นการออกแบบส่วนของโปรแกรมคอมพิวเตอร์ให้มีการโต้ตอบกับผู้ใช้ โดยการใช้สัญรูป (Icons) หน้าต่างรายการเลือก รูปภาพ และสัญลักษณ์อื่นๆ เพื่อแทนลักษณะต่างๆ ของโปรแกรม แทนที่ผู้ใช้จะพิมพ์คําสั่งต่างๆในการทํางาน ช่วยทําให้ผู้ใช้งานสามารถทํางานได้ง่ายและรวดเร็วขึ้น ไม่จําเป็นต้องจดจําคําสั่งต่างๆ ของโปรแกรมมากนัก
จียูไอพัฒนาพัฒนาขึ้นโดยนักวิจัยที่สถาบันวิจัยสแตนฟอร์ดนำโดย ดัก เอนเกลบาร์ต (Doug Engelbart) โดยการใช้งานร่วมกับไฮเปอร์ลิงก์และเมาส์ ซึ่งภายหลังได้นำมาวิจัยต่อที่ศูนย์วิจัยซีร็อกซ์พาร์ค (Xerox PARC) โดยใช้งานระบบกราฟิกแทนที่ระบบตัวอักษร โดยบางคนจะเรียกระบบนี้ว่า PARC User Interface หรือ PUI ปลายคริสต์ทศวรรษที่ 1970 แอปเปิลคอมพิวเตอร์ได้นำมาใช้ครั้งกับเครื่องแมคอินทอช ซึ่งภายหลังทางไมโครซอฟท์ได้เลียนแบบความคิดมาใช้กับระบบปฏิบัติการวินโดวส์ ในปัจจุบันจียูไอเป็นที่นิยมโดยสามารถเห็นได้จากระบบปฏิบัติการ แมคอินทอช และ วินโดวส์ และล่าสุดในลินุกซ์
แบบกราฟิกเปรียบเทียบกับแบบข้อความการใช้งานแบบกราฟิกและแบบชุดคำสั่ง ในวินโดวส์ ไอคอนและโปรแกรมต่างๆ ทำงานระบบกราฟิก ขณะที่หน้าต่างการใช้งาน(ตรงกลางสีดำ) เป็นการใช้งานผ่านชุดคำสั่งส่วนต่อประสานกราฟิกกับผู้ใช้ ช่วยให้การเรียนรู้การใช้งานคอมพิวเตอรทำได้ง่ายและเร็วขึ้นเปรียบเทียบกับระบบเก่าที่ต้องพิมพ์ชุดคำสั่งที่ใช้ในระบบดอสหรือยูนิกซ์ ซึ่งเป็นส่วนต่อประสานผู้ใช้แบบข้อความ (Text user interface) ในบางครั้งจะเรียกว่า ส่วนต่อประสานแบบชุดคำสั่ง (Command Line Interfaces, CLI) ในการใช้งานผู้ใช้ต้องพิมพ์คำสั่งผ่านทางคีย์บอร์ด โดยคำสั่งเฉพาะต่างๆที่พิมพ์จำเป็นต้องใช้เวลาระยะหนึ่งในการเรียนรู้ อย่างไรก็ดีในบางระบบเช่น Linux ก็ยังใข้ GUI เป็น frontend เพื่อที่ทำงาน กับส่วนต่อประสานแบบชุดคำสั่ง รวมถึงการพัฒนารูปแบบของ GUI ได้มีการพัฒนาไปอย่างรวดเร็วโดยมีทั้งในส่วนของ Commercial และ แบบ โอเพ่นซอร์ส ซึ่งในส่วนของ Commercial ได้มีบริษัทยักษ์ใหญ่บางบริษัทเริ่มเข้าจับตลาดทางด้านนี้แล้วเช่น Sun ก็มีในส่วนของ Java Desktop เป็นต้น โดยกล่าวถึงรูปแบบการติดต่อกับผู้ใช้แบบนี้ว่า Desktop ระบบของ GUI เช่นในส่วนของระบบปฏิบัติการวินโดว์จะเป็นในลักษณะถูกสร้างขึ้นมาให้เป็นส่วนหนึ่งกับตัวระบบปฏิบัติการเลย โดยมีการเรียก ใช้ส่วนการติดต่อกับผู้ใช้ผ่านทางระบบ API โดยไปเรียกส่วนประมวณผลที่ชื่อว่า GDI และมีโหมดที่เป็นส่วนติดต่อกับผู้ใช้แบบชุดคำสั่ง แยกเป็นส่วนหนึ่งอีกต่างหากแต่ยังคงอยู่ภายใต้ระบบปฏิบัติการ (shell) ระบบ GUI ในส่วนของ Opensource ได้มีการจัดตั้งองค์การขึ้นมาเพื่อทำการกำหนดมาตรฐานกลางที่ใช้ในทำงานในส่วนการพัฒนาของ Desktop ร่วมกันเช่น การกำหนดมาตรฐานของเมนู, ลักษณะส่วนติดต่อย่อยอื่นๆ เป็นต้นโดยองค์นี้มีชื่อว่า freedesktop Desktop ที่ร่วมใช้มาตรฐานเดียวกันกับ freedesktop เช่น Gnome, KDE, XFCE เป็นต้น รวมถึงมีการพัฒนาลูกเล่นต่างๆ ออกไปมากมาย รวมถึงการใช้งานที่หลากหลายมากขึ้นโดยลดการติดต่อระหว่าง ผู้ใช้และส่วนที่เป็นการประสานชุดคำสั่งลงให้มากที่สุด ในระบบปฏิบัติการใหม่ๆ ในปัจจุบันมีการรองรับการใช้งานทั้งแบบกราฟิกและแบบข้อความ โดยแสดงผลผ่านทางกราฟิกเป็นหลักสำหรับผู้ใช้ทั่วไป และต้องใช้คำสั่งพิเศษเพื่อเรียกใช้คำสั่งของการใช้ส่วนต่อประสานแบบข้อความ โดยแบ่งแยกออกเป็น โหมดการทำงานได้ด้วย
Monlada
My BlOg เอาไว้ใส่การบ้าน 555 +
วันพฤหัสบดีที่ 30 สิงหาคม พ.ศ. 2550
CLASS
Object
เป็นความสามารถที่สำคัญอย่างหนึ่งของ JavaScript
คการเขียนโปรแกรม จะพยายามสมมุติให้ทุกๆอย่างในโปรแกรม เป็นวัตถุ (Objects)
ตัวอย่างเช่น ภาพ,browser,แบบฟอร์มต่างๆ ทั้งนี้ก็เพื่อความง่ายในการทำความเข้าใจ และการเขียนโปรแกรม
วัตถุแต่ละชนิดก็จะมีคุณสมบัติที่สำคัญอย่างน้อย 2 อย่างคือ
1. Properties ซึ่งก็คือคุณสมบัติของ Object นั้น
วิธีเขียนเขียนก็จะใช้ชื่อของ Object นำหน้า แล้วก็ จุด ตบท้ายด้วย Properties ที่จะอ้างถึง เช่น
รถยนต์.ประตูรถ.สี=แดง
2.Methods ก็คือฟังก์ชั่นที่ใช้กับ Object โดยจะมีผลกับ Object นั้นๆเช่น
วิทยุ.play() สั่งให้วิทยุเล่นเทป
Class คือ แม่แบบของ Object ในการใช้งาน Object เราจะต้องประกาศก่อนว่า Object นั้นอยู่ใน Class ใด
Object ที่อยู่ใน Class เดียวกันจะมี Properties และ Method เหมือนๆกัน แต่จะมีค่าใน Properties เหมือนกันหรือไม่ก็ได้ เช่น
รถยนต์A และ รถยนต์B ต่างก็อยู่ในคลาส รถยนต์
รถยนต์A อาจจะมีสีแดง แต่ รถยนต์B อาจจะมีสีดำก็ได้
ชนิดของคลาส แบ่งตามการใช้งานได้ดังนี้
- คลาสที่ทำหน้าที่เป็นชนิดข้อมูล
- คลาสที่ทำหน้าที่เป็นผู้เรียกใช้ชนิดข้อมูล หรือเป็น Application
โครงสร้าง Class
[ class Modifiers ] class ชื่อ class
{
field Member Variables → ( properties )
methods Member Function → behaviors
nested Classes/Interface
}
[ class Modifiers ]
public ( publicly accessible )
abstract ( only blue print no instances of the class may be created )
final ( cannot be subclassed )
strictftp ( exact floating point operation )
การสร้าง Class
คือการสร้างโครงร่างของข้อมูลและฟังก์ชันที่เกี่ยวข้องเท่านั้นเมื่อต้องการใช้งาน ผู้ใช้จะต้องสร้างตัวแปรและกำหนดให้เป็นข้อมูลประเภท Class ที่กำหนด โครงสร้างของ Class จะประกอบด้วย ข้อมูล Method ต่างๆ และจะมี Method พิเศษอันหนึ่งซึ่งจะเป็น Construction ที่จะถูกเรียกเมื่อมีการสร้าง Class ทั้งนี้ฟังก์ชันที่เป็น Construction จะต้องมีชื่อเดียวกันกับ Class เสมอ
Constructor Method
คือเมธอดที่ใช้สำหรับสร้าง instance object ของคลาสนั้นๆ โดยที่ชื่อเมธอดนี้ต้องเหมือนกับชื่อคลาส และใช้สำหรับ initialize ข้อมูลให้กับ instance variable โดยจะไม่มีการถ่ายทอดให้กับ subclass และไม่มีการ return ค่า
Inheritance
คือการถ่อยทอดข้อมูล (ซึ่งก็คือ state และ behavior) จาก class ลำดับที่สูงกว่า (super class หรือ parent class) ไปยังลำดับที่ต่ำกว่า (subclass) โดยที่ subclass นั้นสามารถเปลี่ยนแปลง หรือแทนที่ข้อมูล (override) ที่ได้รับการถ่ายทอดมานั้นได้
ตัวแปรระดับคลาส
หมายถึง ตัวแปรที่นิยามไว้ภายในคลาส (นอกเมธอด) เพื่อให้ทุกส่วนภายในคลาสสามารถเรียกใช้งานได้ตัวแปรระดับคลาสมีอยู่ 2 ชนิด คือ
- ตัวแปรแบบ Instance
เป็นตัวแปรที่ใช้ได้เฉพาะภายในออบเจ็กต์ใดออบเจ็กต์หนึ่งเท่านั้น ไม่สามารถนำมาใช้ร่วมกันระหว่างออบเจ็กต์ได้ โดยปกติก็คือ ตัวแปรทั่วไปที่ใช้เก็บค่าแอททริบิวต์ของออบเจ็กต์
- ตัวแปรที่ใช้งานร่วมกัน
เป็นตัวแปรที่สามารถนำมาใช้งานร่วมกัน ระหว่างออบเจ็กต์ได้ ไม่ว่าการอ้างถึงนั้นจะอยู่ที่ส่วนใดของคลาส หรือโปรแกรมก็ตามตัวแปรชนิดนี้ก็จะให้ค่าเดียวกันเสมอ (ค่าที่เปลี่ยนแปลงล่าสุด) เนื่องจากตัวแปรนี้จะเก็บอยู่ใน Memory ที่ Addressหนึ่ง เพียง Address เดียว ตัวแปรแบบนี้ในภาษาจาวา จะสร้างขึ้นด้วยการระบุ keyword "static" ลงไปตอนประกาศตัวแปรด้วย ซึ่งอาจเรียกตัวแปรประเภทนี้ว่า "Static Variavle" ก็ได้ และถ้าไม่ต้องการให้เมธอดใดที่เรียกใช้งานตัวแปรนี้ มาเปลี่ยนแปลงค่าภายในตัวแปร ให้ใส่ Keyword "final" ไว้ด้วย เช่น static final double PI = 3.14 เป็นต้น
หมายเหตุ
ตัวแปรที่เป็น static ถูกเรียกขึ้นมาในคลาส โดยไม่ต้องใช้ new และในคลาสหนึ่งๆ จะมีสมาชิกที่เป็น static เพียง ตัวเดียวเท่านั้น มีค่าคงที่ไม่ว่าจะเข้าถึงสักกี่ครั้ง (คือจะเห็นค่าสุดท้าย) และจะใช้ตัวแปร static ได้ก็ต่อเมื่อตัวมันเป็น static ด้วยเท่านั้น
ตัวอย่างโปรแกรม
Message
คือคำสั่งหรือข้อความที่จะให้ข้อมูลหรือตัวแปรใดทำงาน ก็คือ patameter ในภาษาอื่นที่ไม่ใช่ OOP คือใช้เพื่อนำส่งค่าข้อมูลระหว่าง object โดยใน message นั้นต้องประกอบด้วย
- Destination ก็คือชื่อของ object
- Method
- Parameters
Method
คือ function ที่บ่งบอกพฤติกรรมของ object ว่าทำอะไรได้บ้าง กำหนดไว้ใน class โดยต้องประกอบด้วย ชื่อของ method เรียกว่า Identifier ตามด้วยเครื่องหมายวงเล็บ () โดยในวงเล็บอาจมี parameter list อยู่หรือไม่ก็ได้ เช่น
getBalance()
raiseSalary( float Salary, float Percent )
ชื่อของ method นั้นมีกฏเกณฑ์ในการตั้งเหมือนกับชื่อของตัวแปรนั่นเอง หลักการตั้งชื่อ method ไม่ใช่กฏบังคับ แต่ผู้เขียนโปรแกรมจาวาโดยส่วนมากใช้กันเพื่อทำให้โปรแกรมอ่านง่าย ชื่อมักจะตั้งให้เป็นคำกิริยาหลาย ๆ คำซึ่งแสดงถึงหน้าที่ของ method นั้น ๆ คำแรกจะถูกเขียนด้วยตัว lowercase ทั้งหมดและตัวอักษรตัวแรกของคำถัดไปแต่ละคำจะเป็นตัว uppercase และที่เหลือจะเป็นตัว lowercase ตัว method getClassSched()
method arguments
argument นี้อาจจะเป็นตัวแปรพื้นฐานของจาวา หรืออาจจะเป็น object ก็ได้ เราสามารถกำหนด method ให้รับ argument ได้เท่าที่เราต้องการ
method body
ตัว body นี้เองที่เป็นตัวกำหนดอย่างแท้จริงว่า method นี้ทำหน้าที่อะไร ภายใน method body เราสามารถ declare ตัวแปรขึ้นมาเพื่อใช้งานชั่วคราวซึ่ง scope ของตัวแปรเหล่านี้จะอยู่ภายใน method นี้เท่านั้น ภายใน method body เราสามารถ เรียกใช้ method อื่นของ object นั้นหรือของ object อื่นที่อยู่ภายใน scope ของ body นั้นได้ด้วย ขอบเขตของ method body นั้นจะถูกกำหนดด้วยเครื่องหมายปีกกาเปิดและปิดหนึ่งคู่
return value
ภายหลังจาก method ทำงานจนถึงบรรทัดสุดท้ายแล้วก็จะ return กลับไปหาส่วนของโปรแกรมที่ call มัน ถ้าเราอยากให้ method ส่งค่า คืนไปยังผู้ call ก็สามารถใส่ return statement เข้าไปได้ หลังจากที่ return statement ได้ถูก execute แล้ว control จะหลุดออกจาก method นั้นทันที โปรแกรมส่วนที่กระทำการ call ก็สามารถรับค่า return นั้นได้โดยการใส่ ตัวแปรตามด้วยเครื่องหมายเท่ากับไว้ด้านซ้ายของ method call ถ้าไม่มีค่า return ก็ต้องใส่ คำว่า void ไว้ตรงตำแหน่งของชนิดรีเทอร์น
เช่นเดียวกันกับ variable ตัว method ก็ถูกจัดตาม scope ได้เป็นสามชนิดคือ private, public และ protected private method สามารถถูกเรียกได้เฉพาะจาก method อื่น ๆ ภายใน class เดียวกันเท่านั้น subclass ไม่สามารถเรียกหรือมอง เห็น private method ของ superclass ส่วน public method ตรงข้ามกับ private method อย่างสิ้นเชิง ทุกคลาสสามารถเรียก public method ของอีกคลาสหนึ่งได้ ส่วน protected method ก็สามารถถูกเรียกได้เฉพาะจากตัวคลาสนั้นเองหรือ subclasses เท่านั้น
วิธีการเรียกใช้ method ของ object ตัวไหนก็ให้เอา object นั้นมาเขียนต่อด้วยจุดแล้วก็ตามด้วยชื่อ method พร้อมด้วยชุดของ arguments ที่อยู่ในวงเล็บ เราไม่ต้องใส่ชนิดของ arguments ลงไป แต่ถ้าเราอยากจะนำค่า return ที่ได้จาก method กลับมาใช้ก็สามารถเอาตัวแปรมารับโดยใช้ assignment operator ได้
โครงสร้างของ method
[modifiers] [return type] name(parameter list)
{
[return data ;]
}
การใช้ "this" อ้างถึงตัวแปรของคลาส (This Reference)
ในบางครั้งการเขียนโปรแกรมมักมีการสร้างตัวแปรของคลาส และตัวแปรของเมธอดที่มีชื่อเหมือนกัน ทั้งนี้ก็เพื่อ ใช้ในการสื่อความหมายนั่นเอง แต่ปัญหาที่เกิดขึ้นคือ เมื่อต้องการอ้างถึงตัวแปรของคลาสภายในเมธอด จะไม่สามารถทำได้ เพราะตัวแปรภาษาจะมองตัวแปรในขณะนั้นเป็นตัวแปรของเมธอด ดังนั้นเพื่อแก้ปัญหาดังกล่าวจึงได้มีการนำ Keyword "this" มาใช้ โดย หากต้องการอ้างถึงตัวแปรของคลาสต้องระบุ Keyword "this" ลงไปด้วย เพื่อให้เกิดความแตกต่างกับตัวแปรภายในเมธอด
รูปแบบ
this.attribute
เช่น this.x หมายถึง อ้างถึงตัวแปร "x" ของคลาส
ประโยชน์ของการใช้ "this" อย่างหนึ่งก็คือ เป็นการป้องกันการสับสนในการอ้างถึง และรับค่าตัวแปร (Parameter) ที่เป็นชื่อเดียวกันภายในเมธอด
ตัวอย่างโปรแกรม
เป็นความสามารถที่สำคัญอย่างหนึ่งของ JavaScript
คการเขียนโปรแกรม จะพยายามสมมุติให้ทุกๆอย่างในโปรแกรม เป็นวัตถุ (Objects)
ตัวอย่างเช่น ภาพ,browser,แบบฟอร์มต่างๆ ทั้งนี้ก็เพื่อความง่ายในการทำความเข้าใจ และการเขียนโปรแกรม
วัตถุแต่ละชนิดก็จะมีคุณสมบัติที่สำคัญอย่างน้อย 2 อย่างคือ
1. Properties ซึ่งก็คือคุณสมบัติของ Object นั้น
วิธีเขียนเขียนก็จะใช้ชื่อของ Object นำหน้า แล้วก็ จุด ตบท้ายด้วย Properties ที่จะอ้างถึง เช่น
รถยนต์.ประตูรถ.สี=แดง
2.Methods ก็คือฟังก์ชั่นที่ใช้กับ Object โดยจะมีผลกับ Object นั้นๆเช่น
วิทยุ.play() สั่งให้วิทยุเล่นเทป
Class คือ แม่แบบของ Object ในการใช้งาน Object เราจะต้องประกาศก่อนว่า Object นั้นอยู่ใน Class ใด
Object ที่อยู่ใน Class เดียวกันจะมี Properties และ Method เหมือนๆกัน แต่จะมีค่าใน Properties เหมือนกันหรือไม่ก็ได้ เช่น
รถยนต์A และ รถยนต์B ต่างก็อยู่ในคลาส รถยนต์
รถยนต์A อาจจะมีสีแดง แต่ รถยนต์B อาจจะมีสีดำก็ได้
ชนิดของคลาส แบ่งตามการใช้งานได้ดังนี้
- คลาสที่ทำหน้าที่เป็นชนิดข้อมูล
- คลาสที่ทำหน้าที่เป็นผู้เรียกใช้ชนิดข้อมูล หรือเป็น Application
โครงสร้าง Class
[ class Modifiers ] class ชื่อ class
{
field Member Variables → ( properties )
methods Member Function → behaviors
nested Classes/Interface
}
[ class Modifiers ]
public ( publicly accessible )
abstract ( only blue print no instances of the class may be created )
final ( cannot be subclassed )
strictftp ( exact floating point operation )
การสร้าง Class
คือการสร้างโครงร่างของข้อมูลและฟังก์ชันที่เกี่ยวข้องเท่านั้นเมื่อต้องการใช้งาน ผู้ใช้จะต้องสร้างตัวแปรและกำหนดให้เป็นข้อมูลประเภท Class ที่กำหนด โครงสร้างของ Class จะประกอบด้วย ข้อมูล Method ต่างๆ และจะมี Method พิเศษอันหนึ่งซึ่งจะเป็น Construction ที่จะถูกเรียกเมื่อมีการสร้าง Class ทั้งนี้ฟังก์ชันที่เป็น Construction จะต้องมีชื่อเดียวกันกับ Class เสมอ
Constructor Method
คือเมธอดที่ใช้สำหรับสร้าง instance object ของคลาสนั้นๆ โดยที่ชื่อเมธอดนี้ต้องเหมือนกับชื่อคลาส และใช้สำหรับ initialize ข้อมูลให้กับ instance variable โดยจะไม่มีการถ่ายทอดให้กับ subclass และไม่มีการ return ค่า
Inheritance
คือการถ่อยทอดข้อมูล (ซึ่งก็คือ state และ behavior) จาก class ลำดับที่สูงกว่า (super class หรือ parent class) ไปยังลำดับที่ต่ำกว่า (subclass) โดยที่ subclass นั้นสามารถเปลี่ยนแปลง หรือแทนที่ข้อมูล (override) ที่ได้รับการถ่ายทอดมานั้นได้
ตัวแปรระดับคลาส
หมายถึง ตัวแปรที่นิยามไว้ภายในคลาส (นอกเมธอด) เพื่อให้ทุกส่วนภายในคลาสสามารถเรียกใช้งานได้ตัวแปรระดับคลาสมีอยู่ 2 ชนิด คือ
- ตัวแปรแบบ Instance
เป็นตัวแปรที่ใช้ได้เฉพาะภายในออบเจ็กต์ใดออบเจ็กต์หนึ่งเท่านั้น ไม่สามารถนำมาใช้ร่วมกันระหว่างออบเจ็กต์ได้ โดยปกติก็คือ ตัวแปรทั่วไปที่ใช้เก็บค่าแอททริบิวต์ของออบเจ็กต์
- ตัวแปรที่ใช้งานร่วมกัน
เป็นตัวแปรที่สามารถนำมาใช้งานร่วมกัน ระหว่างออบเจ็กต์ได้ ไม่ว่าการอ้างถึงนั้นจะอยู่ที่ส่วนใดของคลาส หรือโปรแกรมก็ตามตัวแปรชนิดนี้ก็จะให้ค่าเดียวกันเสมอ (ค่าที่เปลี่ยนแปลงล่าสุด) เนื่องจากตัวแปรนี้จะเก็บอยู่ใน Memory ที่ Addressหนึ่ง เพียง Address เดียว ตัวแปรแบบนี้ในภาษาจาวา จะสร้างขึ้นด้วยการระบุ keyword "static" ลงไปตอนประกาศตัวแปรด้วย ซึ่งอาจเรียกตัวแปรประเภทนี้ว่า "Static Variavle" ก็ได้ และถ้าไม่ต้องการให้เมธอดใดที่เรียกใช้งานตัวแปรนี้ มาเปลี่ยนแปลงค่าภายในตัวแปร ให้ใส่ Keyword "final" ไว้ด้วย เช่น static final double PI = 3.14 เป็นต้น
หมายเหตุ
ตัวแปรที่เป็น static ถูกเรียกขึ้นมาในคลาส โดยไม่ต้องใช้ new และในคลาสหนึ่งๆ จะมีสมาชิกที่เป็น static เพียง ตัวเดียวเท่านั้น มีค่าคงที่ไม่ว่าจะเข้าถึงสักกี่ครั้ง (คือจะเห็นค่าสุดท้าย) และจะใช้ตัวแปร static ได้ก็ต่อเมื่อตัวมันเป็น static ด้วยเท่านั้น
ตัวอย่างโปรแกรม
จากโปรแกรม class3_static1 สรุปได้ดังนี้
1. classมี 4 classประกอบด้วย class3_static1 , sub1 , sub2 , sub3
2. มี 2 object ดังนี้
- hello1 เป็น object ของ sub1
- hello2 เป็น object ของ sub1
3. แต่ละ class มี method ดังนี้
- class3_static1 มี method main( )
- class sub1 มี method sub1_1( ), sub1_2( ), sub1_3( )
- class sub3 มี method sub3_1( )
4. สมาชิกของคลาสที่เป็น static คือ var1
Output
Message
คือคำสั่งหรือข้อความที่จะให้ข้อมูลหรือตัวแปรใดทำงาน ก็คือ patameter ในภาษาอื่นที่ไม่ใช่ OOP คือใช้เพื่อนำส่งค่าข้อมูลระหว่าง object โดยใน message นั้นต้องประกอบด้วย
- Destination ก็คือชื่อของ object
- Method
- Parameters
Method
คือ function ที่บ่งบอกพฤติกรรมของ object ว่าทำอะไรได้บ้าง กำหนดไว้ใน class โดยต้องประกอบด้วย ชื่อของ method เรียกว่า Identifier ตามด้วยเครื่องหมายวงเล็บ () โดยในวงเล็บอาจมี parameter list อยู่หรือไม่ก็ได้ เช่น
getBalance()
raiseSalary( float Salary, float Percent )
ชื่อของ method นั้นมีกฏเกณฑ์ในการตั้งเหมือนกับชื่อของตัวแปรนั่นเอง หลักการตั้งชื่อ method ไม่ใช่กฏบังคับ แต่ผู้เขียนโปรแกรมจาวาโดยส่วนมากใช้กันเพื่อทำให้โปรแกรมอ่านง่าย ชื่อมักจะตั้งให้เป็นคำกิริยาหลาย ๆ คำซึ่งแสดงถึงหน้าที่ของ method นั้น ๆ คำแรกจะถูกเขียนด้วยตัว lowercase ทั้งหมดและตัวอักษรตัวแรกของคำถัดไปแต่ละคำจะเป็นตัว uppercase และที่เหลือจะเป็นตัว lowercase ตัว method getClassSched()
method arguments
argument นี้อาจจะเป็นตัวแปรพื้นฐานของจาวา หรืออาจจะเป็น object ก็ได้ เราสามารถกำหนด method ให้รับ argument ได้เท่าที่เราต้องการ
method body
ตัว body นี้เองที่เป็นตัวกำหนดอย่างแท้จริงว่า method นี้ทำหน้าที่อะไร ภายใน method body เราสามารถ declare ตัวแปรขึ้นมาเพื่อใช้งานชั่วคราวซึ่ง scope ของตัวแปรเหล่านี้จะอยู่ภายใน method นี้เท่านั้น ภายใน method body เราสามารถ เรียกใช้ method อื่นของ object นั้นหรือของ object อื่นที่อยู่ภายใน scope ของ body นั้นได้ด้วย ขอบเขตของ method body นั้นจะถูกกำหนดด้วยเครื่องหมายปีกกาเปิดและปิดหนึ่งคู่
return value
ภายหลังจาก method ทำงานจนถึงบรรทัดสุดท้ายแล้วก็จะ return กลับไปหาส่วนของโปรแกรมที่ call มัน ถ้าเราอยากให้ method ส่งค่า คืนไปยังผู้ call ก็สามารถใส่ return statement เข้าไปได้ หลังจากที่ return statement ได้ถูก execute แล้ว control จะหลุดออกจาก method นั้นทันที โปรแกรมส่วนที่กระทำการ call ก็สามารถรับค่า return นั้นได้โดยการใส่ ตัวแปรตามด้วยเครื่องหมายเท่ากับไว้ด้านซ้ายของ method call ถ้าไม่มีค่า return ก็ต้องใส่ คำว่า void ไว้ตรงตำแหน่งของชนิดรีเทอร์น
เช่นเดียวกันกับ variable ตัว method ก็ถูกจัดตาม scope ได้เป็นสามชนิดคือ private, public และ protected private method สามารถถูกเรียกได้เฉพาะจาก method อื่น ๆ ภายใน class เดียวกันเท่านั้น subclass ไม่สามารถเรียกหรือมอง เห็น private method ของ superclass ส่วน public method ตรงข้ามกับ private method อย่างสิ้นเชิง ทุกคลาสสามารถเรียก public method ของอีกคลาสหนึ่งได้ ส่วน protected method ก็สามารถถูกเรียกได้เฉพาะจากตัวคลาสนั้นเองหรือ subclasses เท่านั้น
วิธีการเรียกใช้ method ของ object ตัวไหนก็ให้เอา object นั้นมาเขียนต่อด้วยจุดแล้วก็ตามด้วยชื่อ method พร้อมด้วยชุดของ arguments ที่อยู่ในวงเล็บ เราไม่ต้องใส่ชนิดของ arguments ลงไป แต่ถ้าเราอยากจะนำค่า return ที่ได้จาก method กลับมาใช้ก็สามารถเอาตัวแปรมารับโดยใช้ assignment operator ได้
โครงสร้างของ method
[modifiers] [return type] name(parameter list)
{
[return data ;]
}
การใช้ "this" อ้างถึงตัวแปรของคลาส (This Reference)
ในบางครั้งการเขียนโปรแกรมมักมีการสร้างตัวแปรของคลาส และตัวแปรของเมธอดที่มีชื่อเหมือนกัน ทั้งนี้ก็เพื่อ ใช้ในการสื่อความหมายนั่นเอง แต่ปัญหาที่เกิดขึ้นคือ เมื่อต้องการอ้างถึงตัวแปรของคลาสภายในเมธอด จะไม่สามารถทำได้ เพราะตัวแปรภาษาจะมองตัวแปรในขณะนั้นเป็นตัวแปรของเมธอด ดังนั้นเพื่อแก้ปัญหาดังกล่าวจึงได้มีการนำ Keyword "this" มาใช้ โดย หากต้องการอ้างถึงตัวแปรของคลาสต้องระบุ Keyword "this" ลงไปด้วย เพื่อให้เกิดความแตกต่างกับตัวแปรภายในเมธอด
รูปแบบ
this.attribute
เช่น this.x หมายถึง อ้างถึงตัวแปร "x" ของคลาส
ประโยชน์ของการใช้ "this" อย่างหนึ่งก็คือ เป็นการป้องกันการสับสนในการอ้างถึง และรับค่าตัวแปร (Parameter) ที่เป็นชื่อเดียวกันภายในเมธอด
ตัวอย่างโปรแกรม
Output
จากโปรแกรม แสดงให้เห็นถึงการใช้ this โดยถ้าเราเอาthis ออกจะแสดงผลเป็น
เพราะthisเป็นตัวอ๊อบเจ็คที่อ้างถึงตัว class นั้น จะมองใกล้ตัวก่อน จึงแสดงผลที่ได้จาก private
วันอังคารที่ 28 สิงหาคม พ.ศ. 2550
Array1
import java.util.*;
public class hwarr{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int num;
int i,j,k;
double max1 ,max2,max3,min1,min2,min3;
double sum1 = 0, sum2 = 0, sum3 = 0;
System.out.print("Input number of student no more than 100 : ");
//ให้ผู้รับใส่จำนวนนักเรียนตามที่ต้องการ แต่ไม่เกิน 100
num = in.nextInt();
//คำสั่งรับค่าข้อมูลผ่านทางคีย์บอร์ด
if(num>100num<=0){
//เงื่อนไขที่กำหนดให้ใส่ค่าได้เพียง 1-100 หากไม่เป็นตามนี้โปรแกรมจะไม่ทำงานต่อ
System.out.println("You input wrong number"); } else{
//ถ้าผู้ใช้กำหนดจำนวนนักเรียนถูกต้อง จะทำงานในส่วนนี้
int x[][] = new int[num][3];
//สร้างตัวแปร array 2 มิติ เก็บข้อมูลจำนวนนักเรียนและคะแนน
String name[] = new String[num];
//สร้างตัวแปรarray ชนิดสายอักขระเก็บข้อมูลชื่อ
String sur[] = new String[num];
//สร้างตัวแปร array ชนิดสายอักขระเก็บข้อมูลนามสกุล
for(i = 0; i < num; i++){
//วนเพื่อรับข้อมูลของนักเรียนตามจำนวนที่ระบุไว้
System.out.println("Data of Student"+(i+1));
System.out.print("Input name : "); name[i] = new Scanner(System.in).next();
System.out.print("Input surname : "); sur[i] = new Scanner(System.in).next();
for(j = 0; j < 3; j++){
//วนเพื่อรับข้อมูลคะแนน 3 ส่วนของนักเรียน
System.out.print(" score"+(j+1)+" : ");
x[i][j] = new Scanner(System.in).nextInt();
//เก็บข้อมูลคะแนนไว้ในarray
}
sum1 = sum1 + x[i][0];
//เก็บผลรวมคะแนนในส่วนที่ 1
sum2 = sum2 + x[i][1];
//เก็บผลรวมคะแนนในส่วนที่2
sum3 = sum3 + x[i][2];
//เก็บผลรวมคะแนนในส่วนที่3 } max1 = x[0][0];
max2 = x[0][1]; max3 = x[0][2];
//กำหนดค่าเริ่มต้นของการหาค่า max ทั้ง 3 ให้เท่ากับ array ลำดับแรก
min1 = x[0][0];
min2 = x[0][1];
min3 = x[0][2];
//กำหนดค่าเริ่มต้นของการหาค่าmin ทั้ง3 ให้เท่ากับarray ลำดับแรก
for(i = 0; i < num; i++){
//วนเปรียบเทียบค่าmax และmin ตามจำนวนนักเรียน
for(j = 0; j < 3; j++){ //วนเพื่อเปรียบเทียบค่าmax และmin ของคะแนนทั้ง 3
if(x[i][0] > max1){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นมากกว่าmax1 ให้max1เป็นค่านั้น
max1 = x[i][0];
}
if(x[i][1] > max2){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นมากกว่าmax2 ให้max2เป็นค่านั้น
max2 = x[i][1];
}
if(x[i][2] > max3){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นมากกว่าmax3 ให้max3เป็นค่านั้น
max3 = x[i][2];
}
if(x[i][0] < min1){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นน้อยกว่าค่า min1 ให้min1เป็นค่านั้น
min1 = x[i][0]; } if(x[i][1] < min2){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นน้อยกว่าค่า min2 ให้min2เป็นค่านั้น
min2 = x[i][1]; } if(x[i][2] < min3){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นน้อยกว่าค่า min3 ให้min3เป็นค่านั้น
min3 = x[i][2];
}
}
}
System.out.println("");
System.out.println("- Student information -");
for(i = 0; i < num; i++){
//วนloop เพื่อแสดงผลข้อมูลนักเรียนหลังจากที่กรอกข้อมูลไป
System.out.println((i+1)+"."+name[i]+ " " +sur[i]+ "\t"+ " score:" +x[i][0]+" "+ x[i][1]+" "+ x[i][2]); } System.out.println("-----------------------");
System.out.println("Sum score : "+sum1+ " " +sum2+ " " +sum3);
//แสดงผลรวมของคะแนนแต่ละส่วน
System.out.println("Max score : "+max1+ " " +max2+ " " +max3);
//แสดงผลการหาค่าmaxของคะแนนทั้ง 3 ส่วน
System.out.println("Min score : "+min1+ " " +min2+ " " +min3);}
//แสดงผลการหาค่า minของคะแนนทั้ง 3 ส่วน System.out.println("");
System.out.println("Bye Bye!");
}
}
p
>
public class hwarr{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int num;
int i,j,k;
double max1 ,max2,max3,min1,min2,min3;
double sum1 = 0, sum2 = 0, sum3 = 0;
System.out.print("Input number of student no more than 100 : ");
//ให้ผู้รับใส่จำนวนนักเรียนตามที่ต้องการ แต่ไม่เกิน 100
num = in.nextInt();
//คำสั่งรับค่าข้อมูลผ่านทางคีย์บอร์ด
if(num>100num<=0){
//เงื่อนไขที่กำหนดให้ใส่ค่าได้เพียง 1-100 หากไม่เป็นตามนี้โปรแกรมจะไม่ทำงานต่อ
System.out.println("You input wrong number"); } else{
//ถ้าผู้ใช้กำหนดจำนวนนักเรียนถูกต้อง จะทำงานในส่วนนี้
int x[][] = new int[num][3];
//สร้างตัวแปร array 2 มิติ เก็บข้อมูลจำนวนนักเรียนและคะแนน
String name[] = new String[num];
//สร้างตัวแปรarray ชนิดสายอักขระเก็บข้อมูลชื่อ
String sur[] = new String[num];
//สร้างตัวแปร array ชนิดสายอักขระเก็บข้อมูลนามสกุล
for(i = 0; i < num; i++){
//วนเพื่อรับข้อมูลของนักเรียนตามจำนวนที่ระบุไว้
System.out.println("Data of Student"+(i+1));
System.out.print("Input name : "); name[i] = new Scanner(System.in).next();
System.out.print("Input surname : "); sur[i] = new Scanner(System.in).next();
for(j = 0; j < 3; j++){
//วนเพื่อรับข้อมูลคะแนน 3 ส่วนของนักเรียน
System.out.print(" score"+(j+1)+" : ");
x[i][j] = new Scanner(System.in).nextInt();
//เก็บข้อมูลคะแนนไว้ในarray
}
sum1 = sum1 + x[i][0];
//เก็บผลรวมคะแนนในส่วนที่ 1
sum2 = sum2 + x[i][1];
//เก็บผลรวมคะแนนในส่วนที่2
sum3 = sum3 + x[i][2];
//เก็บผลรวมคะแนนในส่วนที่3 } max1 = x[0][0];
max2 = x[0][1]; max3 = x[0][2];
//กำหนดค่าเริ่มต้นของการหาค่า max ทั้ง 3 ให้เท่ากับ array ลำดับแรก
min1 = x[0][0];
min2 = x[0][1];
min3 = x[0][2];
//กำหนดค่าเริ่มต้นของการหาค่าmin ทั้ง3 ให้เท่ากับarray ลำดับแรก
for(i = 0; i < num; i++){
//วนเปรียบเทียบค่าmax และmin ตามจำนวนนักเรียน
for(j = 0; j < 3; j++){ //วนเพื่อเปรียบเทียบค่าmax และmin ของคะแนนทั้ง 3
if(x[i][0] > max1){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นมากกว่าmax1 ให้max1เป็นค่านั้น
max1 = x[i][0];
}
if(x[i][1] > max2){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นมากกว่าmax2 ให้max2เป็นค่านั้น
max2 = x[i][1];
}
if(x[i][2] > max3){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นมากกว่าmax3 ให้max3เป็นค่านั้น
max3 = x[i][2];
}
if(x[i][0] < min1){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นน้อยกว่าค่า min1 ให้min1เป็นค่านั้น
min1 = x[i][0]; } if(x[i][1] < min2){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นน้อยกว่าค่า min2 ให้min2เป็นค่านั้น
min2 = x[i][1]; } if(x[i][2] < min3){
//เปรียบเทียบค่าถ้าค่าเริ่มต้นน้อยกว่าค่า min3 ให้min3เป็นค่านั้น
min3 = x[i][2];
}
}
}
System.out.println("");
System.out.println("- Student information -");
for(i = 0; i < num; i++){
//วนloop เพื่อแสดงผลข้อมูลนักเรียนหลังจากที่กรอกข้อมูลไป
System.out.println((i+1)+"."+name[i]+ " " +sur[i]+ "\t"+ " score:" +x[i][0]+" "+ x[i][1]+" "+ x[i][2]); } System.out.println("-----------------------");
System.out.println("Sum score : "+sum1+ " " +sum2+ " " +sum3);
//แสดงผลรวมของคะแนนแต่ละส่วน
System.out.println("Max score : "+max1+ " " +max2+ " " +max3);
//แสดงผลการหาค่าmaxของคะแนนทั้ง 3 ส่วน
System.out.println("Min score : "+min1+ " " +min2+ " " +min3);}
//แสดงผลการหาค่า minของคะแนนทั้ง 3 ส่วน System.out.println("");
System.out.println("Bye Bye!");
}
}
p
>

วันพุธที่ 8 สิงหาคม พ.ศ. 2550
ข้อสอบ ข้อ3
Code
import java.util.*;
public class tst3 {
public static void main(String[]args){
System.out.print("Input Number: ");
Scanner in = new Scanner(System.in);
int max = in.nextInt();
int [] input = new int[max];
int num;
for(int i=0; i
import java.util.*;
public class tst3 {
public static void main(String[]args){
System.out.print("Input Number: ");
Scanner in = new Scanner(System.in);
int max = in.nextInt();
int [] input = new int[max];
int num;
for(int i=0; i
System.out.print("input int: ");
in = new Scanner(System.in);
num = in.nextInt();
input[i]=num;
}
for(int i=1; i
for(int i=1; i
for(int j=0; j
if(input[i]
System.out.print("min to max: ");
int temp = input[j];
input[j] = input[i];
input[i] = temp;
}
}
System.out.print("max to min: ");
System.out.print("max to min: ");
for(int i=max-1; i>=0; i--){
System.out.print(input[i]+" ");
}
System.out.println();
System.out.print("min to max: ");
for(int i=0; i
System.out.print("Odd(min to max): ");
System.out.print(input[i]+" ");
}
System.out.println();
System.out.print("Odd(min to max): ");
for(int i=0; i
System.out.print("Even(max to min): ");

if (input[i]%2==1) System.out.print(input[i]+" ");
}
System.out.println();
System.out.print("Even(max to min): ");
for(int i=max-1; i>=0; i--){
if (input[i]%2==0) System.out.print(input[i]+" ");
}
System.out.println();
}
}
OutPut

ข้อสอบ ข้อ2
Output

CODE
import java.util.*;
public class exam22{
public static void main(String[] args){
int count =1;
d0uble max,min,num;
double sum = 0, avg =0;
System.out.println("Input integer number and -999 to stop process");
System.out.print(count+". number"+count+ ":" );
Scanner in = new Scanner(System.in);
num = in.nextDouble(); max = num;
min = num; sum = sum + num;
count = count+1;
if(num!=-999){
for(;count>=1;count++) {
System.out.print(count+". number"+count+ ":");
num = in.nextDouble();
if(num==-999)
break;
else {
sum = sum + num;
if(num > max){
max = num;
}
else if(num <>
min = num;
}
}
}
avg = sum/(count-1);
System.out.println();
System.out.println("Sum = "+sum);
System.out.println("Average = "+avg);
System.out.println("Max = "+max);
System.out.println("Min = "+min);
}
}
}
วันพฤหัสบดีที่ 2 สิงหาคม พ.ศ. 2550
สมัครสมาชิก:
บทความ (Atom)