SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
ความหมายของโอโอพี                          โอโอพี หรื 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 ที่ถูกประกาศไวตอนนิยามคลาส โดยการเรียกใชสมาชิกจะทําโดยใชเครื่องหมายจุด แลว
ตามดวยสมาชิกที่ตองการเรียกใช
สแตติก(static)                 ในจาวามีคลาสตางๆใหใชงานมากมาย การสรางคลาสขึ้นมาใหมนี้ทําใหเราสามารถสรางเมธอดใหมๆ
ขึ้นมาใชงานแลวรวมกันเปนคลาสได และที่ผานมาในบทนี้จะเห็นวาถาหากมีการประกาศออบเจ็กตตองการใชงานสรางออบเจ็กตดวยคําสั่ง
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)
                            เสนอ
                 ครูทรงศักดิ์ โพธิ์เอี่ยม

Weitere ähnliche Inhalte

Was ist angesagt?

Java-Chapter 11 Recursions
Java-Chapter 11 RecursionsJava-Chapter 11 Recursions
Java-Chapter 11 RecursionsWongyos Keardsri
 
6.Flow control
6.Flow control6.Flow control
6.Flow controlUsableLabs
 
Java Programming [12/12] : Thread
Java Programming [12/12] : ThreadJava Programming [12/12] : Thread
Java Programming [12/12] : ThreadIMC Institute
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นThanachart Numnonda
 
Reference :: Java :: เต็ม
 Reference :: Java :: เต็ม Reference :: Java :: เต็ม
Reference :: Java :: เต็มJitti Nut
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์Theeravaj Tum
 
Java-Chapter 06 File Operations
Java-Chapter 06 File OperationsJava-Chapter 06 File Operations
Java-Chapter 06 File OperationsWongyos Keardsri
 
Java Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุมJava Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุมThanachart Numnonda
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตThanachart Numnonda
 
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Thanachart Numnonda
 
Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)
Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)
Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)Thanachart Numnonda
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาสTheeravaj Tum
 
Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysWongyos Keardsri
 
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionIMC Institute
 

Was ist angesagt? (20)

Java-Chapter 11 Recursions
Java-Chapter 11 RecursionsJava-Chapter 11 Recursions
Java-Chapter 11 Recursions
 
บทที่ 8 Methods
บทที่ 8 Methodsบทที่ 8 Methods
บทที่ 8 Methods
 
4.Oop
4.Oop4.Oop
4.Oop
 
5.Methods cs
5.Methods cs5.Methods cs
5.Methods cs
 
6.Flow control
6.Flow control6.Flow control
6.Flow control
 
3.Expression
3.Expression3.Expression
3.Expression
 
METHODS
METHODSMETHODS
METHODS
 
Java Programming [12/12] : Thread
Java Programming [12/12] : ThreadJava Programming [12/12] : Thread
Java Programming [12/12] : Thread
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่น
 
Reference :: Java :: เต็ม
 Reference :: Java :: เต็ม Reference :: Java :: เต็ม
Reference :: Java :: เต็ม
 
บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์บทที่ 6 อาร์เรย์
บทที่ 6 อาร์เรย์
 
Java-Chapter 06 File Operations
Java-Chapter 06 File OperationsJava-Chapter 06 File Operations
Java-Chapter 06 File Operations
 
Java Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุมJava Programming: โครงสร้างควบคุม
Java Programming: โครงสร้างควบคุม
 
Java Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุตJava Programming: คลาสอินพุตและเอาต์พุต
Java Programming: คลาสอินพุตและเอาต์พุต
 
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
 
8.Inheritance
8.Inheritance8.Inheritance
8.Inheritance
 
Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)
Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)
Java Programming: การสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ (Java GUI)
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาส
 
Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional Arrays
 
Java Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and CollectionJava Programming [8/12] : Arrays and Collection
Java Programming [8/12] : Arrays and Collection
 

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

ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซีใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซีNattapon
 
Java-Chapter 13 Advanced Classes and Objects
Java-Chapter 13 Advanced Classes and ObjectsJava-Chapter 13 Advanced Classes and Objects
Java-Chapter 13 Advanced Classes and ObjectsWongyos Keardsri
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาAeew Autaporn
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1Little Tukta Lita
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1prapassonmook
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก.
การเขียนคำสั่งควบคุมแบบมีทางเลือก.การเขียนคำสั่งควบคุมแบบมีทางเลือก.
การเขียนคำสั่งควบคุมแบบมีทางเลือก.Mink Kamolwan
 
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1หน่อย หน่อย
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Mook Prapasson
 

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

Java-Chapter 08 Methods
Java-Chapter 08 MethodsJava-Chapter 08 Methods
Java-Chapter 08 Methods
 
Power point
Power pointPower point
Power point
 
08 arrays
08 arrays08 arrays
08 arrays
 
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซีใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
 
Java-Chapter 13 Advanced Classes and Objects
Java-Chapter 13 Advanced Classes and ObjectsJava-Chapter 13 Advanced Classes and Objects
Java-Chapter 13 Advanced Classes and Objects
 
Know1 3
Know1 3Know1 3
Know1 3
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1บทที่  5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
บทที่ 5 ข้อมูลชนิดอาร์เรย์และสตริง 6.1
 
02 basic
02 basic02 basic
02 basic
 
Know4 3
Know4 3Know4 3
Know4 3
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
Control structure
Control structureControl structure
Control structure
 
Ass1 1
Ass1 1Ass1 1
Ass1 1
 
03 input math
03 input math03 input math
03 input math
 
7 2โครงสร้าง
7 2โครงสร้าง7 2โครงสร้าง
7 2โครงสร้าง
 
การเขียนคำสั่งควบคุมแบบมีทางเลือก.
การเขียนคำสั่งควบคุมแบบมีทางเลือก.การเขียนคำสั่งควบคุมแบบมีทางเลือก.
การเขียนคำสั่งควบคุมแบบมีทางเลือก.
 
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
นางสาว จรัญญา-กฤตย์ณัชช์-59170236-กลุ่ม-1
 
Chapter3
Chapter3Chapter3
Chapter3
 
66
6666
66
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 

Mehr von Finian Nian

Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptxMicrosoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptxFinian Nian
 
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptxMicrosoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptxFinian Nian
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
รายงานการประเมินกลุ่ม4
รายงานการประเมินกลุ่ม4รายงานการประเมินกลุ่ม4
รายงานการประเมินกลุ่ม4Finian Nian
 
รายงานการประเมินกลุ่ม4
รายงานการประเมินกลุ่ม4รายงานการประเมินกลุ่ม4
รายงานการประเมินกลุ่ม4Finian Nian
 
ยอดส่งออก
ยอดส่งออก ยอดส่งออก
ยอดส่งออก Finian Nian
 

Mehr von Finian Nian (9)

Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptxMicrosoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
 
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptxMicrosoft power point   วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
Microsoft power point วิธีการเชิงวัตถุและการออกแบบคลาส.pptx
 
แปลก
แปลกแปลก
แปลก
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
รายงานการประเมินกลุ่ม4
รายงานการประเมินกลุ่ม4รายงานการประเมินกลุ่ม4
รายงานการประเมินกลุ่ม4
 
รายงานการประเมินกลุ่ม4
รายงานการประเมินกลุ่ม4รายงานการประเมินกลุ่ม4
รายงานการประเมินกลุ่ม4
 
ยอดส่งออก
ยอดส่งออก ยอดส่งออก
ยอดส่งออก
 
It news
It newsIt news
It news
 

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

  • 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. สแตติก(static) ในจาวามีคลาสตางๆใหใชงานมากมาย การสรางคลาสขึ้นมาใหมนี้ทําใหเราสามารถสรางเมธอดใหมๆ ขึ้นมาใชงานแลวรวมกันเปนคลาสได และที่ผานมาในบทนี้จะเห็นวาถาหากมีการประกาศออบเจ็กตตองการใชงานสรางออบเจ็กตดวยคําสั่ง 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) เสนอ ครูทรงศักดิ์ โพธิ์เอี่ยม