สมัครเรียนโทร. 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 ดีๆ

                                                             

การเขียนโปรแกรมเชิงวัตถุ

Object Oriented Programming(OOP)

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

Encapsulation การห่อหุ้มข้อมูล

 คือการปกปิดข้อมูลหรือเมท็อดบางอย่างไม่ให้ภายนอกมองเห็นและเปลี่ยนแปลงได้(อ่านเพิ่มเติมจากเรื่อง อ็อปเจ็ค)

Inheritance การสืบทอดคุณสมบัติ

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

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

คลาสแม่และคลาสลูก(superclass and subclass)

คลาสลูกคือคลาสที่ไปสืบทอดคุณสมบัติมาจากคลาสอื่น ส่วนคลาสที่ถูกเขาสืบทอดคุณสมบัติไปเรียกว่าคลาสแม่ เช่น คลาส B สืบทอดคุณสมบัติจากคลาส A คลาสจะเป็นคลาสแม่ ส่วนคลาส B จะเป็นคลาสลูก วิธีการสืบทอดคุณสมบัติจะใช้คีย์เวิร์ด extends

Modifier cass ชื่อคลาสลูก extends ชื่อคลาสแม่{ }

           

            เมื่อมีการสืบทอดคุณสมบัติแล้วมีการเปลี่ยนแปลงเกิดขึ้นกับคลาสแม่ ผลของการเปลี่ยนแปลงจะส่งมาที่คลาสลูกอัตโนมัติ สิ่งที่คลาสแม่สามารถสืบทอดคุณสมบัติไปให้คลาสลูกได้ ได้แก่ ตัวแปรคลาสแม่และเมท็อดภายใน คือเมื่อคลาสลูกสืบทอดคุณสมบัติไปแล้วจะสามารถเรียกใช้ตัวแปรและเมท็อดจากคลาสแม่ได้เหมือนกับคลาสลูกสร้างมันขึ้นมาเอง แต่อย่างไรก็ตามถ้าคลาสแม่มีสิ่งที่ถูกประกาศเป็น private ในคลาสแม่ สิ่งนั้นจะไม่สามารถถ่ายทอดมายังลูกได้ และอีกประการคือคอนสตรัคเตอร์ก็จะไม่ถ่ายทอดมายังลูก เปรียบเหมือนแม่มีคุณสมบัติสูง 170 แต่คุณสมบัติไม่จำเป็นต้องเป็นของลูก ลูกอาจสูง 180 ก็ได้

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

 


รูป10-1

            กลับมีที่คลาส Box อีกครั้ง ในคลาสนี้ปรกาศตัวแปร width, height, depth และสร้างคอนสตรัคเตอร์ 2 คอนสตรัคเตอร์ คือ default constructor กับคอนสตรัคเตอร์แบบรับพารามิเตอร์ จากนั้นก็สร้างเมท็อดสำหรับคำนวณ

 


รูป10-2

            สร้างคลาส BoxWeight โดยให้คลาส BoxWeight สืบทอดคุณสมบัติมาจากคลาส Box ด้วยคีย์เวิร์ด extends ในบรรทัดที่ 2

บรรทัดที่ 4 : ประกาศตัวแปร weight เพื่อเก็บค่าน้ำหนักของกล่อง

บรรทัดที่ 6 : สร้างคอนสตรัคเตอร์ของคลาส BoxWeight จะเห็นว่าในคอนสตรัคเตอร์ของ BoxWeight( ) มีตัว

แปร width, height, depth แบบเดียวกับคลาส Box โดยที่ไม่ต้องประกาศตัวแปร เพราะ BoxWeight( ) ได้ทำการสืบทอดคุณสมบัติมาจาก Box ดังนั้น ตัวแปรคลาสและเมท็อด volume ของ Box นั้น BoxWeight( )ก็จะสามารถใช้งานได้

บรรทัดที่ 8 : ถ้าไม่สร้าง default constructor ในบรรทัดที่ 7 ของคลาส Box จะต้องใส่พารามิเตอร์ในคีย์เวิร์ด

super ตรงนี้แทน ไม่อย่างนั้นจะ error

 


รูป10-3

บรรทัดที่ 6-7 : new อ็อปเจ็คจากคลาส BoxWeight

บรรทัดที่ 10 : เรียกเมท็อด volume ที่เรียกได้ก็เพราะ BoxWeight สืบทอดเมท็อดนี้มาแล้ว

บรรทัดที่ 12 : เรียกตัวแปร weight ของ BoxWeight มาแสดงผล

ผลลัพธ์

 


รูป10-4

Overriding

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

 


รูป10-5

สร้างคลาสชื่อ Overriding ประกาศตัวแปร a กับ b จากนั้นสร้างคอนสตรัคเตอร์รับพารามิเตอร์ 2 ตัวจากนั้นเก็บค่าไว้ในตัวแปร a b

สร้างเมท็อดชื่อ print สำหรับแสดงค่าออกทางหน้าจอ

 


รูป10-6

สร้างคลาสชื่อ Overriding2 ให้สืบคุณสมบัติมาจาก คลาส Overriding ด้วยคีย์เวิร์ด extends จากนั้นสร้างตัวแปรของคลาส Overriding2 ให้ชื่อ c

ในคอนสตรัคเตอร์ของ Overriding2 เพิ่ม c ลงไป

บรรทัดที่ 10 : นี่คือการ Override คือให้เมท็อดชื่อเหมือนเดิมแต่เปลี่ยนคำสั่งข้างใน จากคลาส Overriding ให้

แสดงค่า a และ b ออกทางหน้าจอ แต่เมท็อดที่สืบทอดคุณสมบัติมาในคลาส Overriding2 ให้แสดงค่า c

 


รูป10-7

บรรทัดที่ 8 : เรียกเมท็อด print( ) จากคลาส Overriding2 โปรแกรมจะแสดง ผลลัพธ์ว่า c : 15 เพราะในคลาส

Overriding2เป็นเมท็อดที่ได้รับการ override แล้ว

Polymorphism การพ้องรูป

สำหรับการพ้องรูปเป้นเรื่องที่มีความเกี่ยวเนื่องกันกับการสืบทอดคุณสมบัติอย่างแยกไม่ออก แปลตามตัวอักษร poly หลาย morph รูปร่าง คือการที่หนึ่งอ็อปเจ็คสามารถมีหน้าที่ได้หลายบทบาท เวลาที่สร้างคลาสแม่ลูกขึ้นมา คลาสแม่จะถือว่าเป็นอะไรที่ใหญ่กว่าคลาสลูก คลาสแม่จะเป็นกรณีทั่วไปแต่คลาสลูกจะเป็นกรณีพิเศษ เช่น คลาสแม่เป็นดอกไม้ มีคุณสมสมบัติคือมีกลีบดอก มีสี คลาสลูกเป็นคลาสดอกมะลิก็จะมีกลีบ มีสีที่เฉพาะเจาะจงกว่าพูดว่าดอกไม้ ดังนั้นสามารถใช้ตัวแปรอ้างอิงของแม่ไปอ้างอิงลูกได้ เช่น Flower f = new Jasmine(); เหมือนบอกว่า ให้คลาส Flower เก็บดอกไม้ สามารถเก็บดอกมะลิได้ แต่ Jasmine j = new Flower(); ไม่ได้ เพราะบอกให้เก็บดอกมะลิ ไม่ใช่ว่าจะไปเก็บดอกไม้อะไรมาให้ก็ได้

 


รูป 10-8

 


รูป10-9

            จากตัวอย่างรูป 10-9 นี้จะเห็นว่าคลาส Rect สืบทอดคุณสมบัติมาจาก Ball แต่ในรูป 10-8 ประกาศอ็อปเจ็ค balls ของ Ball ขึ้นมาเพียงอันเดียว พอจะ new อ็อปเจ็คของคลาส Rect ขึ้นมา ก็สามารถใช้ตัวอ้างอิง ball ไป new ได้เลยเพราะ Rect  เป็นลูกของ Ball

 



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