ݺߣ

ݺߣShare a Scribd company logo
ความหมายของโอโอพี                          โอโอพี หรื OOP เปนคํายอของ Object-Oriented Programming
หมายถึงการเขียนโปรแกรมเชิงวัตถุ หรือเขียนโปรแกรมแบบออบเจ็กต การเขียนโปแกรมในลักษณะนี้จะแตกตางจากกา เขียน        ร
โปรแกรมที่ประมวลผลเชิงคําสั่งที่มีการทํางานทีละตําสั่งดังที่เคยศึกษามา แตจะเปนการสรางขอมูลเปนวัตถุหรือออบเจ็กต แลว
เขียนโปแกรมประมวลกับออบเจ็กตนั้นๆ ใหทํางานตามตองการ นอกจากนั้นยังเขียนโปรแกรมประมวลผลกับออบเจ็กตได ซึ่ง
ออบเจ็กตจะมีลักษณะ 3 ประการดังตอไปนี้
               state เปนคุณลักษณะของออบเจ็กตนั้นๆ ที่บอกวาออบเจ็กตนั้นเปนอะไรบาง หรือเรียกอีกอยางหนึ่งวาเปน
คุณลักษณะประจํา โดยคุณสมบัติขึ้นกับมุมมองของแตละคน ในการเขียนโปรแกรมเชิงวัตถุ คุณลักษณะประจํานี้มักจะเปน
ขอมูล หรือตัวแปรตางๆ ของออบเจ็กตนั้น
               Behavior หมายถึง พฤติกรรมของออบเจ็กต
I              dentity เปนคุณลักษณะที่ทําใหออบเจ็กตแตละออบเจ็กตตางกัน


      ในการเขียนโปรแกรมนั้นออบเจ็กตมีไดหลายตัว โดยออบเจ็กตแตละตัวจะเปนอิสระ ไมขึ้นตอกันแตละออบเจ็กต
สามารถที่จะสื่อสารหรือโตตอบกันไดโดยวิธีสงเมสเสจ ถึงกัน
คลาสและออบ๶จ็กตȎ                  การมองทุกอยางของปญหาเปนวัตถุหรืออบเจ็กตนั้น ถาหากวัตถุใดมีลักษณะคลายกันก็จะรวมทั้งหมดให
เปนคลาส ถาหากมีตัวแปรหรือสรางขอมูลขึ้นมา ขอมูลนั้นก็จะถูกใชในออบเจ็กตนั้นๆ การกระทํากับออบเจ็กตจะกระทําผานเมธอดของคลาส
นั้นๆ

               สวนสําคัญสองสวนของออบเจ็กตคือ คุณลักษณะซึ่งเปนขอมูลประจําตัวของออบเจ็กตและพฤติกรรมหรือเมธอด ซึ่งบอกวา
ออบเจ็กตกําลังทําสิ่งใดอยูถาหากมีการสรางออบเจ็กตขึ้นมาและโปรแกรมตองการจัดการกับขอมูลทีเ่ ปนคุณลักษณะของออบเจ็กตก็จะกระทํา
ผานเมธอด

              สําหรับคลาสจะเปนที่รวบรวมของออบเจ็กตหลายๆ ออบเจ็กตที่มีลักษณะเดียวกัน แตอาจมีขอมูลประจําตัวหรือคุณลักษณะ
ตางๆ

                ดังนั้นในการเขียนโปรแกรมเชิงวัตถุนั้นจะตองรูจักการนิยาม คลาส จากทีกลาวมาแลวจะพบวาคลาสเปนการจัดกลุมของ
                                                                                    ่
ออบเจ็กตที่มีคุณลักษณะและพฤติกรรมอยางเหมือนกัน เปรียบเสมือนเปนพิมพเขียวของออบเจ็กต หรือเปนแมแบบสําหรับออบเจ็กต

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

               สําหรับการเขียนโปรแกรมเชิงวัตถุดวยภาษตางๆนั้น จะมีคลาสมาตรฐานใหผูเขียนโปรแกรมใชงาน และผูเขียนโปรแกรมก็ตอง
เขาใจวิธีการสรางคลาสขึ้นมาเองดวย ดังนั้นในการเขียนโปรแกรมเชิงวัตถุจะตองพยายามจําแนกวาวัตถุที่เราสนใจนั้นตองมีตัวแปรใดที
สามารถแยกแยะวัตถุแตละตัวได และวัตถุดังกลาวมีพฤติกรรมอยางไร จากนั้นนํามารวมเปนคลาส และสรางคลาสนั้นขึ้นมา
การนิยามคลาส

    ในภาษาจาวาสามารถนิยามคลาสหรือประกาศคลาสขึ้นมาโดยมีรูปแบบดังนี้

    [AccessSpecifier] Class Name

            {
                     Members
             }

AccessSpecifier                เปนความสามารถในการเขาถึงคลาสนั้นๆ
class                      เปนคียเวิรดในภาษาจาวาเพทอใชในการประกาศคลาส
Name                        เปนชื่อคลาสมี่ประกาศขึ้น
Members                       เปนคุณลักษณะหรือเมธอดตางๆ ของคลาสที่นิยามขึ้น
   การสรางออบเจ็กต
     หลังจากนิยามคลาสขึ้นมาแลว ถาหากโปรแกรมตองการใชงานจะตองสรางออบเจ็กตขึ้นมา เพื่อบอกวาออบเจ็กตเปนของคลาสใด โดยจะตองประกาศออบเจ็กตขึ้นมากอนซึ่งมี
รูปแบบดังนี้

 ClassName ObjectName;

                 การประกาศออบเจ็กตนี้จะทําใหคอมไพเลอรรับทราบวามีตัวแปร ObjectName แตจะยังไมมีหนวยความจําสําหรับขอมูลของออบเจ็กตที่ประกาศขึ้น ซึ่ง
จะตองสรางออบเจ็กตขึ้นมากอนโดยใชคําวา new ซึ่งมีรูปแบบดังนี้


objecyName = new ClassName([arguments])

                                    เมือมีการสรางออบเจ็กตขึ้นมาแลว สมาชิกของออบเจ็กตคือสมาชิกของคลาสนั้น ซึ่งไดแกคุณลักษณะหรือตัวแปรและเมธอดตางๆ ออบเจ็กตจะ
สามารถเขาถึงขอมูลที่เปนคุณลักษณะหรือเรียกใชเมธอดไดไมขึ้นกับaccessSpecifier ที่ถูกประกาศไวตอนนิยามคลาส โดยการเรียกใชสมาชิกจะทําโดยใชเครื่องหมายจุด แลว
ตามดวยสมาชิกที่ตองการเรียกใช
สแตติก(ٲپ)                 ในจาวามีคลาสตางๆใหใชงานมากมาย การสรางคลาสขึ้นมาใหมนี้ทําใหเราสามารถสรางเมธอดใหมๆ
ขึ้นมาใชงานแลวรวมกันเปนคลาสได และที่ผานมาในบทนี้จะเห็นวาถาหากมีการประกาศออบเจ็กตตองการใชงานสรางออบเจ็กตดวยคําสั่ง
new เชน                                                    import java.util.Scanner;
                                                                 public class Cal_Max {
                                                         public static void main(String args[])
                                                                             {
                                                                     int num1,num2;
                                                      Scanner stdin = new Scanner(System.in);
                                                        System.out.print("Input Number 1 : ");
                                                                num1 = stdin.nextInt();
                                                        System.out.print("Input Number 2 : ");
                                                                num2 = stdin.nextInt();
                                                       int larger = TestMax.max(num1,num2);
                                                     System.out.println("Max Data is "+larger);
                                                                             }
                                                                             }
                                                                      class TestMax
                                                                             {
                                                          static int max(int num1, int num2)
                                                                             {
                                                                    if(num1 > num2)
                                                                       return num1;
                                                                           else
                                                                       return num2;
                                                                             }
                                                                             }

           จากโปรแกรมนี้จะเปนวาเมธอดในคลาส Scanner ที่ใชรับขอมูลจะไมเปนแบบสแตติก ซึ่งจะตองสรางออบเจ็กตขึ้นมา แต
เมธอดชื่อmax ในคลาส TestMax ที่สรางขึ้นปนแบบสแตติก จึงเรียกชื่อคลาสและตามดวยเมธอดมาใชงานไดทันทีโดยไมตองสราง
ออบเจ็กต
Constructors เปนฟงกชันในคลาสที่จะถูกเรียกอัตโนมัติเมื่อเราสรางอ็อบเจ็คใหกับคลาสนั้น ๆ ดวยคําสั่ง new
ซึ่งมันจะเปนฟงกชัน Constructors ไดก็ตอเมื่อชื่อของมันเหมือนชื่อคลาส ถาภายในคลาสไมมี constructor ดังนั้นมันจะทํา
การเรียก constructure ของ base class (ถามันมี) เชน

                                                  <?php
                                      class Auto_Cart extends Cart
                                                      {
                                          function Auto_Cart() {
                                        $this->add_item("10", 1);
                                                      }
                                                      }
                                                     ?>
                           Constructors function นั้นสามารถรับคาพารามิเตอรไดเชนกัน ดังนี้
                                                  <?php
                                  class Constructor_Cart extends Cart
                                                      {
                                       function Constructor_Cart(
                        $item = "10", $num = 1) { $this->add_item($item, $num);
                                                      }
                                                      }


 // ในกรณีที่ไมสงคาพารามิเตอรใหกับ Constructor function $default_cart = new Constructor_Cart;
// ในกรณีนี้ฟงกชัน Constructor ของ Constructor_Cart นั้นไดกําหนดคา default ใหกับพารามิเตอรอยูแลว // ดังนั้น
เราก็ไมจําเปนตองสงคาพารามิเตอรก็ได ไมเกิด error
 // กรณีที่สงคา parameter ไปดวย $different_cart = new Constructor_Cart("20", 17); ?>
การสȊงออบเจ็กตȎไปยัง๶มธอด                           ในการเขียนโปรแกรมที่มีการสรางคลาสขึ้นมาหลายๆคลาสนั้น
ออบเจ็กตของคลาสหนึ่งสามารถใชเปนอารกิวเมนตเพื่อสงผานไปยังเมธอดของคลาสอีกคลาสหนึ่งได

เชนโปรแกรมStudent.Java เปนโปรแกรมคลาสสําหรับเก็บขอมูลนักเรียน ไดแก ชื่อและอีเมลโดยมีเมธอดสําหรับ
กําหนดและเรียกดูชื่อและอีเมลสําหรับใชงาน
                 public class Student3 {
                 private String name;
                 private String email;
                               public Student3()
                 {
                               name = "Unassigned";
                               email = "Unassigned";
                               }
                                public String getEmail(){
                               return email;
                                }
                                public String getName(){
                                return name;
                                }
                               public void setEmail(String address){
                                             email = address;
                               }
                               public void setName(String studentName){
                               name = studentName;
                               }
                 }
ตัวอยางการประยุกตȎการ๶ขียนโปรแกรมเชิงวัตถุ
    จะเปนแบบการออกแบบคลาสแลวนํามาเขียนโปรแกรมประยุกตสําหรับใชงานจริง โดยอธิบายขั้นตอนสําคัญในการทํางานแตละขั้นตอน
โดยมีโปรแกรมตัวอยางการเขียนโปรแกรมสําหรับเขารหัสขอมูลโดยสงขอมูลผานเขาไปในเครือขายคอมพิวเตอรเพื่อความปลอดภัยไดนํา
เทคโนโลยีการเขารหัสมาใช ทําโดยการเลื่อนขอมูล แตถาเปนตัวอักขระตัวสุดทายของภาษาอังกฤษการเลื่อนขอมูลจะกลับมาเริ่มตนที่ตวแรกใหม
                                                                                                                             ั
-     ถาหากเปน 2-shift ขอมูลจะแทนไดดังนี้
A แทนดวย C
B แทนดวย D
………………..
Y แทนดวย A
Z แทนดวย B
   ถาขอมูลตนฉบับเปน “DIZZY” แลวเขารหัสแบบ 2- shift ขอมูลที่เขารหัสแลวจะเปน “FKBBA”

อธิบายการทํางานของโปรแกรม
1.ถาหากพิมพคําวา Teerawut ลงไป จะทําใหตัวแปร message ชี้ไปยังออบเจ็กตสตริง “Teerawut”
2.ตอมาถาหากกดคียตัวเลข 5 ลงไป จะทําใหตัวแปร shift มีคาเปน 5
3.เมื่อโปรแกรมเรียกใชเมธอด encrypt จะทําให msg ซึ่งเปนพารามิเตอรของเมธอดชี้ไปยังออบเจ็กตเดียวกับ message และ
พารามิเตอร shift มีคาเปน 5 เชนกัน
4.เมื่อเมธอด encrypt ทํางาน ทําใหตัวแปร encryptedMessage ชี้ไปยังหนอยความจําออบเจ็กตสตริงที่สรางขึ้นมาใหม
5.จากนั้นจะทําใหตัวแปร msg ชี้ไปยังสตริงชุดใหมที่ผานการเขารหัสแลว
6.หลังจากนั้นจะให encryptedMessage มีคาสตริงที่เขารหัสแลว
ตัวอยางโปรแกรม จะแสดงการสรางคลาสของการนําตัวอักขระ[]มาสรางเปนรูปสามเหลี่ยม โดยการสรางคลาสสามารถทําได
ดังตอไปนี้
1.สรางโปรเจ็กตใหม
2.สรางคลาสใหม โดยเลือกเมนู New>Class
3.กําหนดชื่อคลาส แลวกด Next
4.โปรแกรมจะแสดงคลาสใหมขึ้นมา
5.จากนั้นใหเติมโคด แลวรันโปรแกรม

สรุป คลาสเปรียบเสมือนพิมพเขียวสําหรับสรางออบเจ็กตตางๆออกมาที่มีลักษณะคลายกันมาอยูรวมกัน ในการสรางค ลาส
นั้น ภายในประกอบดวยสวนที่เปนคุณลักษณะหรือตัวแปรตางๆและสวนที่เปนเมธอดโดยที่ตัวแปรและเมธอดนี้ผที่นิยามคลาส
                                                                                                      ู
สามารถกําหนดไดวาจะใหผูใชภายนอกสามารถเขาถึงไดในระดับใด เมื่อมีการออบเจ็กตของคลาสขึ้นมาแลวตองการใหทําเมธ
อดใดทันที ในการนิยามคลาสนั้นจะตองสรางเมธอดที่มีชื่อเดียวกับคลาสที่เรียกวา คอนสตรัคเตอร ขึ้นมา
คลาสและการ๶ขียนโปรแกรมวัตถุ๶บื้องตȋน
                         จัดทําโดย
            นายปตพงษ ปลีบุตร เลขที่10
                   ิ
         นางสาว รุงทิวา ผดุงพัฒนดิษฐ เลขที20
                                           ่
           นางสาวจณิสตา ลิ้มทอง เลขที่30
        นางสาวจันทรา แสงสุริยาอุทัย เลขที31  ่
          นางสาวนิศาชล ไทยพุทรา เลขที่33
            นางสาวอาริษา งามขํา เลขที่37
                     นักเรียนชั้น ม.6/1
โรงเรียนเฉลิมพระเกียรติสมเด็จพระศรีนครินทร กาญจนบุรี
        วิชาการเขียนโปรแกรมประยุกต (ง30213)
                            เสนอ
                 ครูทรงศักดิ์ โพธิ์เอี่ยม

More Related Content

What's hot (20)

PDF
Java-Chapter 11 Recursions
Wongyos Keardsri
PPTX
บทที่ 8 Methods
Kanchana Theugcharoon
PDF
4.Oop
UsableLabs
PDF
5.Methods cs
UsableLabs
PDF
6.Flow control
UsableLabs
PDF
3.Expression
UsableLabs
PPTX
METHODS
kessara61977
PPT
Java Programming [12/12] : Thread
IMC Institute
PDF
Java Programming: อะเรย์และคอลเล็กชั่น
Thanachart Numnonda
PPTX
Reference :: Java :: เต็ม
Jitti Nut
PDF
บทที่ 6 อาร์เรย์
Theeravaj Tum
PDF
Java-Chapter 06 File Operations
Wongyos Keardsri
PDF
Java Programming: โครงสร้างควบคุม
Thanachart Numnonda
PDF
Java Programming: คลาสอินพุตและเอาต์พุต
Thanachart Numnonda
PDF
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Thanachart Numnonda
PDF
8.Inheritance
UsableLabs
PDF
Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)
Thanachart Numnonda
PDF
บทที่ 5 คลาส
Theeravaj Tum
PDF
Java-Chapter 07 One Dimensional Arrays
Wongyos Keardsri
PPT
Java Programming [8/12] : Arrays and Collection
IMC Institute
Java-Chapter 11 Recursions
Wongyos Keardsri
บทที่ 8 Methods
Kanchana Theugcharoon
5.Methods cs
UsableLabs
6.Flow control
UsableLabs
3.Expression
UsableLabs
Java Programming [12/12] : Thread
IMC Institute
Java Programming: อะเรย์และคอลเล็กชั่น
Thanachart Numnonda
Reference :: Java :: เต็ม
Jitti Nut
บทที่ 6 อาร์เรย์
Theeravaj Tum
Java-Chapter 06 File Operations
Wongyos Keardsri
Java Programming: โครงสร้างควบคุม
Thanachart Numnonda
Java Programming: คลาสอินพุตและเอาต์พุต
Thanachart Numnonda
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Thanachart Numnonda
8.Inheritance
UsableLabs
Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)
Thanachart Numnonda
บทที่ 5 คลาส
Theeravaj Tum
Java-Chapter 07 One Dimensional Arrays
Wongyos Keardsri
Java Programming [8/12] : Arrays and Collection
IMC Institute

Similar to คลาสและการ๶ขียนโปรแกรมเชิงวัตถุ๶บื้องต้น (20)

PDF
Java-Chapter 08 Methods
Wongyos Keardsri
PDF
Power point
Pookie Pook
PPT
08 arrays
a-num Sara
PDF
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
Nattapon
PDF
Java-Chapter 13 Advanced Classes and Objects
Wongyos Keardsri
PPT
พื้นฐาȨาษาจาวา
Aeew Autaporn
PDF
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
Little Tukta Lita
PDF
งาȨำเสนอ1
prapassonmook
PPT
Control structure
Nitigan Nakjuatong
PDF
7 2โครงสร้าง
Supaksorn Tatongjai
PPTX
การเขียนคำสั่งควบคุมแบบมีทาง๶ลือก.
Mink Kamolwan
DOCX
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
หน่อย หน่อย
DOC
Chapter3
Parkae' Kusuma
PDF
งาȨำเสนอ1
Mook Prapasson
Java-Chapter 08 Methods
Wongyos Keardsri
Power point
Pookie Pook
08 arrays
a-num Sara
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
Nattapon
Java-Chapter 13 Advanced Classes and Objects
Wongyos Keardsri
พื้นฐาȨาษาจาวา
Aeew Autaporn
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
Little Tukta Lita
งาȨำเสนอ1
prapassonmook
Control structure
Nitigan Nakjuatong
7 2โครงสร้าง
Supaksorn Tatongjai
การเขียนคำสั่งควบคุมแบบมีทาง๶ลือก.
Mink Kamolwan
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
หน่อย หน่อย
งาȨำเสนอ1
Mook Prapasson
Ad

More from Finian Nian (9)

PDF
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Finian Nian
PDF
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Finian Nian
PDF
แปลก
Finian Nian
PDF
คลาสและการ๶ขียนโปรแกรมเชิงวัตถุ๶บื้องต้น
Finian Nian
PPTX
คลาสและการ๶ขียนโปรแกรมเชิงวัตถุ๶บื้องต้น
Finian Nian
DOCX
รายงานการประ๶มิȨลุ่ม4
Finian Nian
DOCX
รายงานการประ๶มิȨลุ่ม4
Finian Nian
DOCX
ยอึϸ่งออก
Finian Nian
DOCX
It news
Finian Nian
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Finian Nian
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Finian Nian
แปลก
Finian Nian
คลาสและการ๶ขียนโปรแกรมเชิงวัตถุ๶บื้องต้น
Finian Nian
คลาสและการ๶ขียนโปรแกรมเชิงวัตถุ๶บื้องต้น
Finian Nian
รายงานการประ๶มิȨลุ่ม4
Finian Nian
รายงานการประ๶มิȨลุ่ม4
Finian Nian
ยอึϸ่งออก
Finian Nian
Ad

คลาสและการ๶ขียนโปรแกรมเชิงวัตถุ๶บื้องต้น

  • 1. ความหมายของโอโอพี โอโอพี หรื OOP เปนคํายอของ Object-Oriented Programming หมายถึงการเขียนโปรแกรมเชิงวัตถุ หรือเขียนโปรแกรมแบบออบเจ็กต การเขียนโปแกรมในลักษณะนี้จะแตกตางจากกา เขียน ร โปรแกรมที่ประมวลผลเชิงคําสั่งที่มีการทํางานทีละตําสั่งดังที่เคยศึกษามา แตจะเปนการสรางขอมูลเปนวัตถุหรือออบเจ็กต แลว เขียนโปแกรมประมวลกับออบเจ็กตนั้นๆ ใหทํางานตามตองการ นอกจากนั้นยังเขียนโปรแกรมประมวลผลกับออบเจ็กตได ซึ่ง ออบเจ็กตจะมีลักษณะ 3 ประการดังตอไปนี้ state เปนคุณลักษณะของออบเจ็กตนั้นๆ ที่บอกวาออบเจ็กตนั้นเปนอะไรบาง หรือเรียกอีกอยางหนึ่งวาเปน คุณลักษณะประจํา โดยคุณสมบัติขึ้นกับมุมมองของแตละคน ในการเขียนโปรแกรมเชิงวัตถุ คุณลักษณะประจํานี้มักจะเปน ขอมูล หรือตัวแปรตางๆ ของออบเจ็กตนั้น Behavior หมายถึง พฤติกรรมของออบเจ็กต I dentity เปนคุณลักษณะที่ทําใหออบเจ็กตแตละออบเจ็กตตางกัน ในการเขียนโปรแกรมนั้นออบเจ็กตมีไดหลายตัว โดยออบเจ็กตแตละตัวจะเปนอิสระ ไมขึ้นตอกันแตละออบเจ็กต สามารถที่จะสื่อสารหรือโตตอบกันไดโดยวิธีสงเมสเสจ ถึงกัน
  • 2. คลาสและออบ๶จ็กตȎ การมองทุกอยางของปญหาเปนวัตถุหรืออบเจ็กตนั้น ถาหากวัตถุใดมีลักษณะคลายกันก็จะรวมทั้งหมดให เปนคลาส ถาหากมีตัวแปรหรือสรางขอมูลขึ้นมา ขอมูลนั้นก็จะถูกใชในออบเจ็กตนั้นๆ การกระทํากับออบเจ็กตจะกระทําผานเมธอดของคลาส นั้นๆ สวนสําคัญสองสวนของออบเจ็กตคือ คุณลักษณะซึ่งเปนขอมูลประจําตัวของออบเจ็กตและพฤติกรรมหรือเมธอด ซึ่งบอกวา ออบเจ็กตกําลังทําสิ่งใดอยูถาหากมีการสรางออบเจ็กตขึ้นมาและโปรแกรมตองการจัดการกับขอมูลทีเ่ ปนคุณลักษณะของออบเจ็กตก็จะกระทํา ผานเมธอด สําหรับคลาสจะเปนที่รวบรวมของออบเจ็กตหลายๆ ออบเจ็กตที่มีลักษณะเดียวกัน แตอาจมีขอมูลประจําตัวหรือคุณลักษณะ ตางๆ ดังนั้นในการเขียนโปรแกรมเชิงวัตถุนั้นจะตองรูจักการนิยาม คลาส จากทีกลาวมาแลวจะพบวาคลาสเปนการจัดกลุมของ ่ ออบเจ็กตที่มีคุณลักษณะและพฤติกรรมอยางเหมือนกัน เปรียบเสมือนเปนพิมพเขียวของออบเจ็กต หรือเปนแมแบบสําหรับออบเจ็กต ในการเขียนโปรแกรมเชิงวัตถุนั้นจะไมมีการใชงานคลาสตรงๆ แตจะใชคลาสเปนพิมพเขียวเพื่อสรางออบเจ็กตตางๆขึ้นมา ออบเจ็กตทถูกสรางจากคลาสจะเรียนกวา อินสแตนซ ของคลาสนั้นโดยที่คลาสใดคลาสหนึ่งสามารถสรางออบเจ็กตออกมาไดหลายตัวแตละ ี่ ตัวจะมีชื่อแตกตางกันไป สําหรับการเขียนโปรแกรมเชิงวัตถุดวยภาษตางๆนั้น จะมีคลาสมาตรฐานใหผูเขียนโปรแกรมใชงาน และผูเขียนโปรแกรมก็ตอง เขาใจวิธีการสรางคลาสขึ้นมาเองดวย ดังนั้นในการเขียนโปรแกรมเชิงวัตถุจะตองพยายามจําแนกวาวัตถุที่เราสนใจนั้นตองมีตัวแปรใดที สามารถแยกแยะวัตถุแตละตัวได และวัตถุดังกลาวมีพฤติกรรมอยางไร จากนั้นนํามารวมเปนคลาส และสรางคลาสนั้นขึ้นมา
  • 3. การนิยามคลาส ในภาษาจาวาสามารถนิยามคลาสหรือประกาศคลาสขึ้นมาโดยมีรูปแบบดังนี้ [AccessSpecifier] Class Name { Members } AccessSpecifier เปนความสามารถในการเขาถึงคลาสนั้นๆ class เปนคียเวิรดในภาษาจาวาเพทอใชในการประกาศคลาส Name เปนชื่อคลาสมี่ประกาศขึ้น Members เปนคุณลักษณะหรือเมธอดตางๆ ของคลาสที่นิยามขึ้น การสรางออบเจ็กต หลังจากนิยามคลาสขึ้นมาแลว ถาหากโปรแกรมตองการใชงานจะตองสรางออบเจ็กตขึ้นมา เพื่อบอกวาออบเจ็กตเปนของคลาสใด โดยจะตองประกาศออบเจ็กตขึ้นมากอนซึ่งมี รูปแบบดังนี้ ClassName ObjectName; การประกาศออบเจ็กตนี้จะทําใหคอมไพเลอรรับทราบวามีตัวแปร ObjectName แตจะยังไมมีหนวยความจําสําหรับขอมูลของออบเจ็กตที่ประกาศขึ้น ซึ่ง จะตองสรางออบเจ็กตขึ้นมากอนโดยใชคําวา new ซึ่งมีรูปแบบดังนี้ objecyName = new ClassName([arguments]) เมือมีการสรางออบเจ็กตขึ้นมาแลว สมาชิกของออบเจ็กตคือสมาชิกของคลาสนั้น ซึ่งไดแกคุณลักษณะหรือตัวแปรและเมธอดตางๆ ออบเจ็กตจะ สามารถเขาถึงขอมูลที่เปนคุณลักษณะหรือเรียกใชเมธอดไดไมขึ้นกับaccessSpecifier ที่ถูกประกาศไวตอนนิยามคลาส โดยการเรียกใชสมาชิกจะทําโดยใชเครื่องหมายจุด แลว ตามดวยสมาชิกที่ตองการเรียกใช
  • 4. สแตติก(ٲپ) ในจาวามีคลาสตางๆใหใชงานมากมาย การสรางคลาสขึ้นมาใหมนี้ทําใหเราสามารถสรางเมธอดใหมๆ ขึ้นมาใชงานแลวรวมกันเปนคลาสได และที่ผานมาในบทนี้จะเห็นวาถาหากมีการประกาศออบเจ็กตตองการใชงานสรางออบเจ็กตดวยคําสั่ง new เชน import java.util.Scanner; public class Cal_Max { public static void main(String args[]) { int num1,num2; Scanner stdin = new Scanner(System.in); System.out.print("Input Number 1 : "); num1 = stdin.nextInt(); System.out.print("Input Number 2 : "); num2 = stdin.nextInt(); int larger = TestMax.max(num1,num2); System.out.println("Max Data is "+larger); } } class TestMax { static int max(int num1, int num2) { if(num1 > num2) return num1; else return num2; } } จากโปรแกรมนี้จะเปนวาเมธอดในคลาส Scanner ที่ใชรับขอมูลจะไมเปนแบบสแตติก ซึ่งจะตองสรางออบเจ็กตขึ้นมา แต เมธอดชื่อmax ในคลาส TestMax ที่สรางขึ้นปนแบบสแตติก จึงเรียกชื่อคลาสและตามดวยเมธอดมาใชงานไดทันทีโดยไมตองสราง ออบเจ็กต
  • 5. Constructors เปนฟงกชันในคลาสที่จะถูกเรียกอัตโนมัติเมื่อเราสรางอ็อบเจ็คใหกับคลาสนั้น ๆ ดวยคําสั่ง new ซึ่งมันจะเปนฟงกชัน Constructors ไดก็ตอเมื่อชื่อของมันเหมือนชื่อคลาส ถาภายในคลาสไมมี constructor ดังนั้นมันจะทํา การเรียก constructure ของ base class (ถามันมี) เชน <?php class Auto_Cart extends Cart { function Auto_Cart() { $this->add_item("10", 1); } } ?> Constructors function นั้นสามารถรับคาพารามิเตอรไดเชนกัน ดังนี้ <?php class Constructor_Cart extends Cart { function Constructor_Cart( $item = "10", $num = 1) { $this->add_item($item, $num); } } // ในกรณีที่ไมสงคาพารามิเตอรใหกับ Constructor function $default_cart = new Constructor_Cart; // ในกรณีนี้ฟงกชัน Constructor ของ Constructor_Cart นั้นไดกําหนดคา default ใหกับพารามิเตอรอยูแลว // ดังนั้น เราก็ไมจําเปนตองสงคาพารามิเตอรก็ได ไมเกิด error // กรณีที่สงคา parameter ไปดวย $different_cart = new Constructor_Cart("20", 17); ?>
  • 6. การสȊงออบเจ็กตȎไปยัง๶มธอด ในการเขียนโปรแกรมที่มีการสรางคลาสขึ้นมาหลายๆคลาสนั้น ออบเจ็กตของคลาสหนึ่งสามารถใชเปนอารกิวเมนตเพื่อสงผานไปยังเมธอดของคลาสอีกคลาสหนึ่งได เชนโปรแกรมStudent.Java เปนโปรแกรมคลาสสําหรับเก็บขอมูลนักเรียน ไดแก ชื่อและอีเมลโดยมีเมธอดสําหรับ กําหนดและเรียกดูชื่อและอีเมลสําหรับใชงาน public class Student3 { private String name; private String email; public Student3() { name = "Unassigned"; email = "Unassigned"; } public String getEmail(){ return email; } public String getName(){ return name; } public void setEmail(String address){ email = address; } public void setName(String studentName){ name = studentName; } }
  • 7. ตัวอยางการประยุกตȎการ๶ขียนโปรแกรมเชิงวัตถุ จะเปนแบบการออกแบบคลาสแลวนํามาเขียนโปรแกรมประยุกตสําหรับใชงานจริง โดยอธิบายขั้นตอนสําคัญในการทํางานแตละขั้นตอน โดยมีโปรแกรมตัวอยางการเขียนโปรแกรมสําหรับเขารหัสขอมูลโดยสงขอมูลผานเขาไปในเครือขายคอมพิวเตอรเพื่อความปลอดภัยไดนํา เทคโนโลยีการเขารหัสมาใช ทําโดยการเลื่อนขอมูล แตถาเปนตัวอักขระตัวสุดทายของภาษาอังกฤษการเลื่อนขอมูลจะกลับมาเริ่มตนที่ตวแรกใหม ั - ถาหากเปน 2-shift ขอมูลจะแทนไดดังนี้ A แทนดวย C B แทนดวย D ……………….. Y แทนดวย A Z แทนดวย B ถาขอมูลตนฉบับเปน “DIZZY” แลวเขารหัสแบบ 2- shift ขอมูลที่เขารหัสแลวจะเปน “FKBBA” อธิบายการทํางานของโปรแกรม 1.ถาหากพิมพคําวา Teerawut ลงไป จะทําใหตัวแปร message ชี้ไปยังออบเจ็กตสตริง “Teerawut” 2.ตอมาถาหากกดคียตัวเลข 5 ลงไป จะทําใหตัวแปร shift มีคาเปน 5 3.เมื่อโปรแกรมเรียกใชเมธอด encrypt จะทําให msg ซึ่งเปนพารามิเตอรของเมธอดชี้ไปยังออบเจ็กตเดียวกับ message และ พารามิเตอร shift มีคาเปน 5 เชนกัน 4.เมื่อเมธอด encrypt ทํางาน ทําใหตัวแปร encryptedMessage ชี้ไปยังหนอยความจําออบเจ็กตสตริงที่สรางขึ้นมาใหม 5.จากนั้นจะทําใหตัวแปร msg ชี้ไปยังสตริงชุดใหมที่ผานการเขารหัสแลว 6.หลังจากนั้นจะให encryptedMessage มีคาสตริงที่เขารหัสแลว
  • 8. ตัวอยางโปรแกรม จะแสดงการสรางคลาสของการนําตัวอักขระ[]มาสรางเปนรูปสามเหลี่ยม โดยการสรางคลาสสามารถทําได ดังตอไปนี้ 1.สรางโปรเจ็กตใหม 2.สรางคลาสใหม โดยเลือกเมนู New>Class 3.กําหนดชื่อคลาส แลวกด Next 4.โปรแกรมจะแสดงคลาสใหมขึ้นมา 5.จากนั้นใหเติมโคด แลวรันโปรแกรม สรุป คลาสเปรียบเสมือนพิมพเขียวสําหรับสรางออบเจ็กตตางๆออกมาที่มีลักษณะคลายกันมาอยูรวมกัน ในการสรางค ลาส นั้น ภายในประกอบดวยสวนที่เปนคุณลักษณะหรือตัวแปรตางๆและสวนที่เปนเมธอดโดยที่ตัวแปรและเมธอดนี้ผที่นิยามคลาส ู สามารถกําหนดไดวาจะใหผูใชภายนอกสามารถเขาถึงไดในระดับใด เมื่อมีการออบเจ็กตของคลาสขึ้นมาแลวตองการใหทําเมธ อดใดทันที ในการนิยามคลาสนั้นจะตองสรางเมธอดที่มีชื่อเดียวกับคลาสที่เรียกวา คอนสตรัคเตอร ขึ้นมา
  • 9. คลาสและการ๶ขียนโปรแกรมวัตถุ๶บื้องตȋน จัดทําโดย นายปตพงษ ปลีบุตร เลขที่10 ิ นางสาว รุงทิวา ผดุงพัฒนดิษฐ เลขที20 ่ นางสาวจณิสตา ลิ้มทอง เลขที่30 นางสาวจันทรา แสงสุริยาอุทัย เลขที31 ่ นางสาวนิศาชล ไทยพุทรา เลขที่33 นางสาวอาริษา งามขํา เลขที่37 นักเรียนชั้น ม.6/1 โรงเรียนเฉลิมพระเกียรติสมเด็จพระศรีนครินทร กาญจนบุรี วิชาการเขียนโปรแกรมประยุกต (ง30213) เสนอ ครูทรงศักดิ์ โพธิ์เอี่ยม