สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

ฟรี TUTORIAL JAVA

ฟรีtutorial JAVA 01 install Eclipse ฟรีtutorial JAVA 02 intro to programming Eclipse ฟรีtutorial JAVA 03 condiotion ฟรีtutorial JAVA 04.loop ฟรีtutorial JAVA 05.array ฟรีtutorial JAVA 05 2 array cont ฟรีtutorial JAVA 06 01 function ฟรีtutorial JAVA 06 02 function cont ฟรีtutorial JAVA 07 object ฟรีtutorial JAVA 08 string ฟรีtutorial JAVA 09 constructor ฟรีtutorial JAVA 10 01 oop ฟรีtutorial JAVA 10 02 oop2 ฟรีtutorial JAVA 11 exception ฟรีtutorial JAVA 12 reading file ฟรีtutorial JAVA 13 thread ฟรีtutorial JAVA 14 generic ฟรีtutorial JAVA 15 01 GUI ฟรีtutorial JAVA 15 02 GUI2 ฟรีtutorial JAVA 15 03.GUI3 ฟรีtutorial JAVA 16 using WindowBuilder ฟรีtutorial JAVA 17 event ฟรีtutorial JAVA 18 database management system ฟรีtutorial JAVA 19 ER diagram ฟรีtutorial JAVA 20 Relational ฟรีtutorial JAVA 21 Xampp ฟรีtutorial JAVA 22 JDBC ฟรีtutorial JAVA 23 MVC ฟรีtutorial JAVA 24 SQL ฟรีtutorial JAVA
ขอย้ำอีกครั้งว่าเนื้อหาที่เห็นอยู่นี้ไม่ใช่เนื้อหาตามปกติที่เราสอนในห้องเรียนเป็นแค่ tutorial ไว้อ่านประกอบเฉยๆ แทบไม่เกี่ยวกันเลย และไม่เกี่ยวกับการบ้านที่ทำครับ ในห้องเรียนเนื้อหาจะเยอะกว่านี้ค่อนข้างมากครับ
ขอบคุณน้องตี้ อย่างสูงสำหรับ Tutorial ดีๆ

ฟรี TUTORIAL DATA STRUCTURE

DATA STRUCTURE

ฟรีtutorial : DATA STRUCTURE : 01 1การเรียงลำดับ(Sorting) ฟรีtutorial : DATA STRUCTURE : 01 2 การเรียงลำดับ2 ฟรีtutorial : DATA STRUCTURE : 02 อาร์เรย์ลิสต์ (Array List) ฟรีtutorial : DATA STRUCTURE : 03 ลิงค์ลิสต์ (Linked List) ฟรีtutorial : DATA STRUCTURE : 04 สแต๊ค ฟรีtutorial : DATA STRUCTURE : 05 1 คิวและไพออริตี้คิว ฟรีtutorial : DATA STRUCTURE : 05 2 คิวและไพออริตี้คิว ฟรีtutorial : DATA STRUCTURE : 06 1 ไบนารีทรี ฟรีtutorial : DATA STRUCTURE : 06 2 ไบนารีเสิร์ชทรี ฟรีtutorial : DATA STRUCTURE : 06 3 ไบนารีเสิร์ชทรี ฟรีtutorial : DATA STRUCTURE : 08 แฮช ฟรีtutorial : DATA STRUCTURE : 09 กราฟ ฟรีtutorial : DATA STRUCTURE :
ขอย้ำอีกครั้งว่าเนื้อหาที่เห็นอยู่นี้ไม่ใช่เนื้อหาตามปกติที่เราสอนในห้องเรียนเป็นแค่ tutorial ไว้อ่านประกอบเฉยๆ แทบไม่เกี่ยวกันเลย และไม่เกี่ยวกับการบ้านที่ทำครับ ในห้องเรียนเนื้อหาจะเยอะกว่านี้ค่อนข้างมากครับ
ขอบคุณน้องตี้ อย่างสูงสำหรับ Tutorial ดีๆ

                                                                 

อ็อปเจ็ค(Objects)

            เรื่องอ็อปเจ็คเป็นเรื่องต่อเนื่องกับเรื่องฟังก์ชัน ต่อไปนี้จะพูดถึงเรื่องคลาสกับอ็อปเจ็คซึ่งเป็นเรื่องสำคัญสำหรับภาษาจาวา

คลาส(Class)

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

รูปแบบของคลาส

(modifier) class ชื่อคลาส[1] {

ประกาศตัวแปรคลาส

เมท็อดต่างๆของคลาส

}

ตัวแปรคลาส

            ตัวแปรจะเป็นตัวกำหนดลักษณะ ต้องประกาศภายในวงเล็บของคลาส

modifier ชนิดข้อมูล ชื่อตัวแปรคลาส;

เช่น

                public class Student  {

                        public int Stu_Id

public String name

private String phone

}

อ็อปเจ็ค(Object)

เป็นสิ่งที่สร้างขึ้นมาจากแบบแปลที่วางไว้ก็คือการทำให้แบบแปลนสามารถใช้งานได้จริงๆ ซึ่งอ็อปเจ็คจะมีสมบัติอยู่ 2 อย่าง อย่างแรกก็คือ ลักษณะ(attribute หรือ data) ก็คือรูปร่าง ลักษณะของวัตถุ และ สิ่งที่ทำได้(behavior หรือ method) ก็คือความสามารถของวัตถุ

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

หรืออีกตัวอย่างก็เช่นเวลาต้องการสร้างอ็อปเจ็คของพนักงานบริษัท พนักงานบริษัทก็ต้องประกอบไปด้วยคุณลักษณะคือมีรหัสพนักงาน ชื่อ นามสกุล ตำแหน่ง เงินเดือน และเมท็อดหรือสิ่งที่ทำก็เช่นการรับเงินเดือน เป็นต้น

การประกาศตัวแปรอ็อปเจ็ค

ชื่อคลาส ตัวแปรอ็อปเจ็ค ;

Student student;

การสร้างอ็อปเจ็ค

new ชื่อคลาส(พารามิเตอร์);

new Student();

หรือจะประกาศไว้ในบรรทัดเดียวกันก็ได้

Student student = new Student();

            เมื่อทำการประกาศตัวแปรอ็อปเจ็คถึงตรงนี้ก็จะทำให้มีอ็อปเจ็คที่สร้างขึ้นมามีคุณลักษณะและการทำงานแบบเดียวกับที่ตัวแปรคลาสและเมท็อดได้กำหนดเอาไว้ โดยที่มี student เป็นตัวอ้างอิงอ็อปเจ็คประเภท Student (เวลาเราสร้างคลาสก็จะถือว่าคลาสนั้นเป้นตัวแปรแบบพิเศษเหมือนพวก Array ก็เลยสร้างด้วยการ new ขึ้นมาได้)

การใช้ตัวแปรและเมท็อดประจำอ็อปเจ็ค

            เวลาที่สร้างตัวแปรแปรอ้างอิงอ็อปเจ็คขึ้นมาแล้ว ก็ต้องมีการเรียกใช้ตัวแปรและเมท็อด กล่าวคือ ตัวแปรอ็อปที่สร้างอ็อปเจ็คขึ้นมาจะทำให้อ็อปเจ็คมีรูปร่างหน้าตาและทำงานได้แบบในคลาส เช่น คลาส Student นักเรียน กำหนดว่านักเรียนมีรูปร่างเป็นน้ำหนักกับความสูง มีเมท็อดคือการรับเวลาเข้า-ออกโรงเรียน  พอสร้างตัวชี้อ็อปเจ็ค student ขึ้นมา student ก็จะมีน้ำหนักและส่วนสูงได้ แต่ยังไม่ได้บอกว่าเท่าไหร่ ทีนี้ถ้าจะกำหนดค่าน้ำหนักและส่วนสูงให้ student ก็ต้องกำหนดว่าให้น้ำหนักของ student เป็นเท่าๆไหร่  โดยการใช้เครื่องหมาย . (dot operator)ต่อด้วยตัวแปรประจำอ็อปเจ็ค

ตัวแปรอ้างอิงอ็อปเจ็ค. ชื่อตัวแปรประจำอ็อปเจ็ค

เช่น สมมติจะให้ h เก็บความสูง ก็เขียน student. h (อ่าน . ว่าของ ในที่นี้อ่านว่า h ของ student) student. h = 165 เป็นต้น

ในทำนองเดียวกนหากจะให้ตัวแปรอ็อปเจ็คเรียกเมท็อดก็ให้ใช้ เครื่องหมาย .

ตัวแปรอ้างอิงอ็อปเจ็ค. ชื่อเมท็อด();

 


รูป7-1

สร้างคลาสใหม่ขึ้นมาหนึ่งคลาสประกอบด้วยตัวแปรคลาส 3 ตัวคือ width, height, depth ให้เป็น double พร้อมด้วยเมท็อด volume ที่ทำหน้าที่คำนวณและคืนค่าออกไป สังเกตว่าตัวแปรเป็น double เมื่อเอาคำนวณก็ต้องคืนค่า double ออกไป

 


รูป 7-2

            หลังจากนั้นสร้างขึ้นมาอีก 1 คลาส

บรรทัดที่ 6 : สร้างตัวแปรอ้างอิงอ็อปเจ็ค box1 อ้างอิงตัวแปรประเภท Box

บรรทัดที่ 7 : สร้างตัวแปรอ้างอิงอ็อปเจ็ค box2 อ้างอิงตัวแปรประเภท Box

บรรทัดที่ 9-11 : กำหนดค่าตัวแปรคลาสของอ็อปเจ็ค box1 ด้วย . (dot operator)กลายเป็น width ของ box1

คือ 9

บรรทัดที่ 13-15 : กำหนดค่าตัวแปรคลาสของอ็อปเจ็ค box2 ด้วย . (dot operator) กลายเป็น depth ของ

box2 คือ 12

บรรทัดที่ 17 : ให้แสดงผลออกทางหน้าจอ โดยให้เอาค่าจากการคำนวณของเมท็อด volume มาแสดง ก็ใช้วิธี

เดียวกับตัวแปรคือใช้เครื่องหมาย . เรียกเมท็อด เมื่อทำการ .volume ขึ้นมา width, height, depth ของ box1 จะถูกนำไปคำนวณ

บรรทัดที่ 19 : ให้แสดงผลออกทางหน้าจอ โดยให้เอาค่าจากการคำนวณของเมท็อด volume ของ box 2 มา

แสดง

จะเห็นได้ว่าตอนที่เรียกเมท็อด volume เรียกจากอ็อปเจ็คคนละตัวคือ box1 และ box2 ดังนั้นแม้ในเมท็อด volme จะเขียนว่า width * height * depth แต่ก็จะเป็นค่า width, height, depthที่มาจากคนละค่ากัน ผลลัพธ์ก็จะไม่เหมือนกัน

ผลลัพธ์ที่ได้

 


รูป7-3

            นี่ก็คือตัวอย่างของคลาสและอ็อปเจ็ค คลาส Box ประกอบไปด้วยตัวแปรและมีเมท็อดที่ทำหน้าที่คำนวณ เมื่อสร้างคลาส BoxTest ขึ้นมา ก็สร้างอ็อปเจ็คขึ้นมาโดยที่อ็อปเจ็คนั้นจะใช้ตัวแปรและมีการทำงานแบบที่คลาสกำหนดไว้เลย

Modifier

            มี 2 แบบคือ access modifier กับ non- access modifier แต่จะพูดแค่ access modifier ก็คือสิ่งที่ประกาศไว้เพื่อระบุถึงการถูกเข้าถึง จะประกาศหน้าคลาส เมท็อดหรือตัวแปรคลาส ซึ่งได้แก่ public, protected, private และ package (แต่ protected และ private ใช้หน้าคลาสไม่ได้) ที่ได้เห็นกันมาตั้งแต่ในเมท็อด main ตรงด้านหน้า public static void main(String [] args)

            เป็นส่วนหนึ่งของเรื่อง OOP เรื่อง encapsulation ทำหน้าที่ในห่อหุ้มข้อมูลไม่ให้ถูกเห็นหรือเรียกใช้งานได้จากภายนอก ดังนั้นข้อมูลก็จะไม่ถูกแก้ไข

 


รูป 7-4

อธิบายรูป

public – ถ้าประกาศ public หน้าคลาส เมท็อด ตัวแปรคลาสใด คือคลาสอื่นๆจะสามารถนำไปใช้ได้อย่าง

อิสระ

protected – สามารถใช้ได้กับคลาสเดียวกัน package เดียวกัน และ คลาสที่เป็นแม่ลูกกัน แต่กับ package

อื่นๆจะไม่สามารถเรียกใช้ได้

private – จะปิดการเข้าถึงจากภายนอกทั้งหมด (ใช้กับ recursive ฟังก์ชัน)

 

เกี่ยวกับเมท็อดเพิ่มเติม

            เวลาที่กำหนด modifier เป็น private ให้กับตัวแปรคลาส คลาสอื่นเวลาเรียกตัวแปรนี้เอาไปใช้ก็เปลี่ยนแปลงอะไรไม่ได้ แต่ผู้เขียนโปรแกรมก็ต้องใช้วิธีอื่นสำหรับให้ผู้อื่นเปลี่ยนแปลงค่าของตัวแปรเหล่านั้น โดยใช้วิธี Accessor Method กับ Mutator Method

            Accessor Method ใช้ดึงค่าจากตัวแปรคลาสแล้วส่งออกไปนอกเมท็อด ใช้คำว่า getตามด้วยตัวแปรที่ถูกตั้งเป็น private

Mutator Method เมท็อดสำหรับการเปลี่ยนแปลงแก้ไข ใช้คำว่า set ตามด้วยตัวแปรที่ถูกตั้งเป็น private

 


รูป 7-5

สร้างคลาสหนึ่งขึ้นมา สร้างตัวแปรที่เป็น private คือไม่สามารถเปลี่ยนแปลงค่าที่ให้ได้ แต่ก็ให้เมท็อดสำหรับการเปลี่ยนค่าด้วย

บรรทัดที่ 6 : เมท็อด setNumber สำหรับรับเลขที่เป็น int เข้ามาแล้วไปเก็บไว้ในตัวแปร number

บรรทัดที่ 7 : เมท็อด getNumber สำหรับการส่งค่าของเมท็อดที่แก้ไขแล้วออกไป

 


รูป7-6

บรรทัดที่ 6 : สร้างอ็อปเจ็คเพื่อเรียกใช้สิ่งต่างๆจากคลาส Number

บรรทัดที่ 11 : ให้แสดงค่าของ x ซึ่งเป็นค่าเดียวกับ number ที่ getNumber มา ต้องเป็น 5

บรรทัดที่ 13 : ใช้ เมท็อด setNumber เพื่อเปลี่ยนแปลงค่าให้ให้เป็น 26

บรรทัดที่ 14 : ใช้เมท็อด getNumber อีกครั้งเพื่อแสดงค่าที่เปลี่ยนแปลงแล้วออกมา

ผลลัพธ์


 

 

 



[1] ตั้งตามกฎกาตั้งชื่อของจาวาและควรเป็นคำนามที่มีความหมาย

 



แผนผังการเรียนเขียนโปรแกรม