SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Classes and Objects - 12                                                   Computer Programming using Java                157
   CHAPTER                                              คลาสและอ๊อบเจ็ค
      12                                               (Classes and Objects)
1. ความร้ ูเบืองต้ นของคลาสและอ๊ อบเจ็ค (Introduction to Classes and Objects)
              ้
1. องค์ ประกอบและลักษณะทั่วไปของคลาสและอ๊ อบเจ็ค
                                                                                          ในแพ็คเก็จ (Package) มี
                                                                         Package          คลาส (Classes)
            Class A               Class B                Class C

           Attributes            Attributes            Attributes              ในคลาสมีแอตทริบิว (Attributes) ตัวสร้ าง
          Constructor           Constructor            Constructor             (Constructors) และเมท็อด (Methods)

           Methods               Methods                Methods
                                                                             ในเมท็อดมีตวแปรและคําสัง
                                                                                        ั           ่

                 new                   new                     new
                                                                             คลาสแต่ละคลาสสามารถสร้ างตัวแทนของ
                                                                             คลาสนัน (Instance of Class) ขึ ้นได้ ซึง
                                                                                      ้                             ่
           Object a              Object b               Object c
                                                                             เรี ยกว่าอ๊ อบเจ็ค (Objects)
          Attributes            Attributes             Attributes

          Method-1              Method-1                Method-1             อ๊ อบเจ็คเป็ นตัวสําเนาของคลาสต้ นแบบ ซึง
                                                                                                                     ่
             .
             .
             .
                                   .
                                   .
                                   .
                                                           .
                                                           .
                                                           .                 จะมีทงแอตทริบิวและเมท็อดทุกๆ ตัวเหมือน
                                                                                    ั้
          Method-N              Method-N               Method-N              กับที่คลาสต้ นแบบมี (แต่ไม่มีตวสร้ าง)
                                                                                                           ั


2. นิยามและคําศัพท์ ท่ เกี่ยวข้ องกับคลาสและอ๊ อบเจ็ค
                       ี
      แพ็คเก็จ (Package)        คือ สิงที่เก็บรวบรวมคลาสและห่อหุ้มคลาสเอาไว้ เป็ นกลุมๆ (จะยังไม่กล่าวถึงมากนัก)
                                      ่                                             ่

      คลาส (Class)              คือ ต้ นแบบของโปรแกรมหนึงๆ ซึงภายในประกอบไปด้ วย แอตทริบิว ตัวสร้ าง และเมท็อด
                                                        ่ ่

      แอตทริบว (Attribute)
             ิ                  คือ ตัวแปรของคลาส หรื อตัวแปรที่ประกาศอยูภายในคลาสแต่อยู่นอกเมท็อดใดๆ
                                                                        ่

      ตัวสร้ าง (Constructor)   คือ ส่วนที่กําหนดค่าเริ่มต้ นของคลาส ซึงจะกําหนดค่าเริ่มต้ นให้ กบแอตทริบิวทุกตัวในคลาส
                                                                       ่                         ั

      เมท็อด (Method)           คือ ส่วนการทํางานย่อยของคลาส หรื อโปรแกรมย่อยที่บงบอกการกระทําของคลาส
                                                                                 ่

      ตัวแปร (Variable)         คือ ตัวแปรของเมท็อด หรื อตัวแปรใดๆ ที่ประกาศภายในเมท็อดใดเมท็อดหนึง
                                                                                                  ่

      คําสั่ง (Statement)       คือ คําสังภายในเมท็อด หรื อคําสังใดๆ (if, for, …) ที่ปรากฎภายในเมท็อดใดเมท็อดหนึง
                                         ่                      ่                                               ่

      อ๊ อบเจ็ค (Object)        คือ ตัวแทนของคลาส ซึงจะมีทกอย่างเหมือนที่คลาสต้ นแบบมี (ยกเว้ นตัวสร้ างที่ไม่มี)
                                                    ่     ุ

     นําเสนอมุมมองในการเขียนโปรแกรมแบบใหม่ที่เรี ยกว่า การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming)

© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
158   Computer Programming using Java                                                12 - Classes and Objects


  โจทย์ ข้อที่ 1 [ระดับง่ าย] จงระบุส่วนประกอบต่ างๆ ของคลาสจากโปรแกรมต่ อไปนี ้ (10 คะแนน)
      1    public class Num {
      2      private int x;
      3      private double y;
      4      public Num() {
      5        x = 0; y = 0.0;
      6      }
      7      public Num(int m, double n) {
      8        x = m; y = n;
      9      }
      10     public int addNX(int n) {
      11       return n + x;
      12     }
      13     public double addNY(double n) {
      14       return n + y;                                                                  ผลลัพธ์ ท่ ีได้
      15     }
      16     public void showXY() {
      17       System.out.println(x);
      18       System.out.println(y);
      19     }
      20   }


      1    public class RunNum {
      2      public static void main(String[] args){
      3        Num obj = new Num(5, 7.0);
      4        obj.showXY();
      5        int a = obj.addNX(4);
      6        double b = obj.addNY(13.0);
      7        System.out.println(a);
      8        System.out.println(b);
      9      }
      10   }


  จากโจทย์ ข้อที่ 1 สามารถวาดเป็ น Class Diagram เพื่อใช้ ประกอบความเข้ าใจได้ ดงนี ้
                                                                                ั
                  Num
                                              obj: Num                            RunNum
       int x
       double y
                                            x = 5                      public static void main(…) {
                                            y = 7.0                       Num obj = new Num(5, 7.0);
       Num()                      new
       Num(int m, double n)                                                obj.showXY();
                                            addNX(int n)                   int a = obj.addNX(4);
                                            addNY(double n)                ...
                                            showXY()                   }
       int addNX(int n)
       double addNY(double n)
       void showXY()




  โจทย์ ข้อที่ 2 [ระดับง่ าย] จงพิจารณาข้ อความต่ อไปนีถก ( ) หรือผิด ( ) (15 คะแนน)
                                                            ู้
  1)           คลาสทุกคลาสต้ องมีเมท็อดอย่างน้ อย 1 เมท็อดเสมอ (ไม่มีเมท็อดไม่ได้ )
  2)           คลาสทุกคลาสต้ องมีเมท็อด main(…) เสมอ เพื่อเป็ นตัวประสานเมท็อดอื่นๆ
  3)           แอตทริ บวของคลาสจะมีหรื อไม่มีก็ได้ ซึงขึ ้นอยูกบการออกแบบและการใช้ งานคลาสนัน
                       ิ                             ่         ่ ั                          ้
  4)           คลาสสามารถมีแอตทริบวเพียงส่วนเดียวได้ โดยไม่ต้องมีเมท็อด (ประกาศเพียงแอตทริบว)
                                      ิ                                                       ิ
  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                                                Computer Programming using Java             159
5)             คลาสสามารถมีเมท็อดเพียงส่วนเดียวได้ โดยไม่ต้องมีแอตทริบว       ิ
6)             อ๊ อบเจ็คเป็ นตัวแทนของคลาส และมีแอตทริ บวและเมท็อดทุกตัวเหมือนที่คลาสนันมี
                                                                  ิ                                  ้
7)             ตัวแปรที่ประกาศภายในเมท็อดใดๆ สามารถเรี ยกใช้ ได้ เฉพาะเมท็อดนัน             ้
8)             ตัวแปรที่ประกาศภายนอกเมท็อดใดๆ สามารถเรี ยกใช้ ได้ จากทุกๆ เมท็อด
9)             ตัวแปรที่ประกาศภายนอกเมท็อดใดๆ คือแอตทริบว หรื อตัวแปรของคลาส
                                                                      ิ
10)            ตัวแปรที่ประกาศภายในเมท็อดใดๆ คือตัวแปรทัวไป หรือตัวแปรของเมท็อด
                                                                    ่
11)            แอตทริ บวสามารถประกาศชื่อซํ ้ากันได้ แต่จะต้ องกําหนดค่าเริ่มต้ นที่ตางกัน
                           ิ                                                            ่
12)            เมท็อดสามารถประกาศชื่อซํ ้ากันได้ แต่จะต้ องมีรายการพารามิเตอร์ ท่ีตางกัน  ่
13)            ตัวสร้ างจะปรากฎอยูในทุกอ๊ อบเจ็คที่สร้ างจากคลาสต้ นแบบ
                                      ่
14)            ตัวสร้ างทําหน้ าที่ในการกําหนดค่าเริ่ มต้ นให้ กบแอตทริบวทุกตัวเมื่อเริ่มสร้ างอ๊ อบเจ็คใหม่
                                                                ั       ิ
15)            แอตทริ บวในคลาสต้ นแบบจะต้ องกําหนดค่าเริ่มต้ นเสมอเมื่อเริ่มสร้ างคลาสต้ นแบบ
                         ิ

2. คลาส (Classes)
1. การประกาศและสร้ างองค์ ประกอบของคลาส
   คลาสหนึงๆ มีองค์ประกอบ 3 ส่วนได้ แก่ แอตทริบว ตัวสร้ าง และเมท็อด ซึงมีวิธีการประกาศและสร้ างดังต่อไปนี ้
          ่                                    ิ                       ่
   1) การประกาศและสร้ างคลาส
                                                                                  หัวคลาส
          [ตัวบ่ งคุณลักษณะ] class <ชื่อคลาส> {

                 [แอตทริบว (มีก่ ีตวก็ได้ )]
                         ิ         ั                                                ชื่อคลาสควรขึ ้นต้ นด้ วยอักษรตัวพิมพ์ ใหญ่
                 [ตัวสร้ าง (มีก่ ีตวก็ได้ )]
                                    ั                          ตัวคลาส              ถ้ าชื่อมีหลายคําสามารถเขียนแบบหลังอูฐได้

                 [เมท็อด (มีก่ ีตวก็ได้ )]
                                 ั                                                 ตัวบ่งคุณลักษณะ (Modifier) จะมีหรื อไม่มีก็ได้
          }.                                                                       ถ้ ามีจะมีได้ ดงนี ้คือ public และ final
                                                                                                  ั

         ตัวอย่าง
           1        public class Num {
           2          int x;
                                                                         ถ้ าสร้ างคลาสหลายคลาสอยูภายในแฟ้ ม *.java เดียว
                                                                                                     ่
           3          public double y;                                   กัน จะต้ องมีเพียง 1 คลาสเท่านันที่เป็ นแบบ public แต่
                                                                                                         ้
           4          Num() {
           5            x = 0; y = 0.0;                                  ถ้ าสร้ างคลาสแบบแยกแฟ้ มกัน (หนึงแฟมหนึงคลาส) จะ
                                                                                                             ่ ้     ่
           6          }                                                  สามารถใช้ public ได้ ในทุกคลาส (ในบทนี้กาหนดให้
                                                                                                                       ํ
           7          ...
           8        }                                                    แต่ ละคลาสสร้ างแบบแยกแฟมกัน) ้

      2) การประกาศและสร้ างแอตทริบว ซึงจะคล้ ายกับการประกาศและสร้ างตัวแปรในบทที่ 2
                                  ิ ่
          [ตัวบ่ งคุณลักษณะ] <ประเภทข้ อมล> <ชื่อแอตทริ บว>;
                                         ู               ิ                                           + public
                                                                                                     - private
                                                                                                     # protected
               ตัวบ่งคุณลักษณะ (Modifier) จะมีหรื อไม่มีก็ได้ ถ้ ามีจะมีได้ ดงนี ้คือ
                                                                             ั                         static
                                                                                                       final


© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
160   Computer Programming using Java                                                            12 - Classes and Objects


           ตัวอย่าง                                                    โดยทัวไปแอตทริบิวที่มี static กํากับอยู่ จะกํา-
                                                                             ่
             1         public class Data {                             หนดค่าเริ่มต้ นให้ แอตทริบิวทันทีเมื่อเริ่มสร้ างคลาส
             2           public static int n = 1;
             3           private double data;                          ต้ นแบบ แต่แอตทริบิวอื่นๆ ที่ไม่มี static กํากับ
             4           ...                                           จะไม่มีการกําหนดค่าเริ่มต้ นใดๆ ทังสิ ้น
                                                                                                            ้
             5         }
                                                            เมท็อดทุกเมท็อดภายในคลาสสามารถเรี ยกใช้ งานแอตทริบิวได้
       3) การประกาศและสร้ างตัวสร้ าง
          ตัวสร้ าง (Constructor) คือ เมท็อดที่มีชื่อเดียวกับชื่อคลาส (เมท็อดทีชือขึ้นต้นด้วยตัวอักษรพิมพ์ใหญ่)
                                                                               ่่
            [ตัวบ่ งคุณลักษณะ] <ชื่อตัวสร้ าง> ([พารามิเตอร์ ]) {                           ตัวสร้ างไม่มี Return Type
                     [กําหนดค่ าเริ่ มต้ นให้ กับแอตทริ บวทุกตัว]
                                                         ิ
                                                                                    ตัวบ่งคุณลักษณะจะมีหรื อไม่มีก็ได้ ถ้ า
            }    .                                                                  มีจะมีได้ แบบเดียวคือ public
           ตัวอย่าง
                                                                      วิธีการเขียนตัวสร้ าง คือ ให้ ดชื่อคลาสว่าชื่ออะไร ก็
                                                                                                     ู
             1         public class Number {
             2           public long x;               จะให้ ชื่อตัวสร้ างเป็ นชื่อเดียวกับชื่อคลาสนัน   ้
             3           private int y;
             4           public Number() {            ตัวสร้ างมีได้ หลายแบบซึง Overload กัน
                                                                                   ่
             5             x = 0L;
             6             y = 0;                     ตัวสร้ างถูกเรี ยกใช้ ทกครังเมื่อมีการสร้ างอ๊ อบเจ็คใหม่
                                                                              ุ ้
             7           }
             8           public Number(long a, int b) {
             9             x = a;
             10            y = b;
             11          }
                                                      คลาสใดที่ไม่มีตวสร้ าง คอมไพเลอร์ จะใส่ตวสร้ างให้
                                                                         ั                            ั
             12          public Number(double k) {    อัตโนมัติซงเป็ นตัวสร้ างเริ่ มต้ น (Default Constructor)
                                                                  ึ่
             13            x = y = (int) k;
             14          }                            แต่ถ้ามีตวสร้ างอยูแล้ ว คอมไพเลอร์ จะใช้ ตวสร้ างนัน
                                                                ั           ่                             ั  ้
             15          ...                          ในการทํางาน โดยไม่มีการใส่ตวสร้ างเริ่ มต้ นให้ อีก
                                                                                          ั
             16        }


       4) การประกาศและสร้ างเมท็อด จะเหมือนกับการประกาศและสร้ างเมท็อดในบทที่ 8
            [ตัวบ่ งคุณลักษณะ] <ประเภทข้ อมลที่ส่งกลับ> <ชื่อเมท็อด> ([พารามิเตอร์ ]) {
                                           ู
                     [ตัวแปรและคําสั่ง]         ตัวเมท็อด                              หัวเมท็อด
            }    .
           ตัวอย่าง
            1         public class Operation {
            2           ...                                             ม็อดดิฟายเออร์ ของเมท็อดมีได้ ดงนี ้คือ
                                                                                                       ั
            3           public int incrX(int x) {
            4             x = x + 1;                                    public, private, protected,
            5             return x;                                     static และ final
            6           }
            7           ...
            8         }                                                 ดูรายละเอียดเพิ่มเติมในบทที่ 8 (ที เ่ รี ยนผ่านมา)

  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                           Computer Programming using Java          161
โจทย์ ข้อที่ 3 [ระดับง่ าย] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อสร้ างคลาสชื่อ Course ซึ่งเป็ น
                                                         ู
ต้ นแบบของวิชาใดๆ ในจุฬาฯ โดยประกอบไปด้ วยรายละเอียดดังต่ อไปนี ้ (30 คะแนน)
public class Course {
    //แอตทริบว 3 ตัว (โดยไม่ ต้องกําหนดค่ าใดๆ ให้ กับแอตทริบว) มีดงต่ อไปนี ้ (3 คะแนน)
                   ิ                                         ิ     ั
    //แอตทริบวชื่อ id แบบ private เพื่อเก็บรหัสวิชา (Course ID)
             ิ                                                                    ให้ จนตนาการว่ าแอตทริ
                                                                                       ิ
    //แอตทริบวชื่อ title แบบ public เพื่อเก็บชื่อวิชา (Course Title)
                 ิ                                                                บิวเหล่ านีมีค่าพร้ อมแล้ ว
                                                                                             ้
    //แอตทริบวชื่อ credit แบบ protected เพื่อเก็บจํานวนหน่ วยกิต (Credit) สามารถเรียกใช้ ได้ เลย
               ิ




    //ตัวสร้ างแบบไม่ มีพารามิเตอร์ ใดๆ เพื่อกําหนดค่ าเริ่ มต้ นให้ กับแอตทริ บิวทัง 3 ตัวตามค่ าเริ่ มต้ น
                                                                                    ้
    ของประเภทแอตทริบวนันๆ (เช่ น int เป็ น 0, String เป็ น "" เป็ นต้ น) (3 คะแนน)
                          ิ ้




    //ตัวสร้ างแบบมีพารามิเตอร์ 3 ตัว เพื่อกําหนดค่ าเริ่มต้ นให้ กับแอตทริบวทัง 3 ตัวตามลําดับ (3 คะแนน)
                                                                            ิ ้




    //เมท็อด setID(…)แบบ public ที่รับตัวเลขจํานวนเต็มผ่ านทางพารามิเตอร์ หนึ่งค่ า เพื่อใช้ สําหรั บ
    กําหนดค่ าให้ กับแอตทริบว id โดยไม่ ต้องคืนค่ ากลับ (3 คะแนน)
                            ิ




© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
162   Computer Programming using Java                                                12 - Classes and Objects


       //เมท็อด setTitle(…)แบบ public ที่รับข้ อความผ่ านทางพารามิเตอร์ หนึ่งค่ า เพื่อใช้ สําหรั บกํา-
       หนดค่ าให้ กับแอตทริบว title โดยไม่ ต้องคืนค่ ากลับ (3 คะแนน)
                            ิ




       //เมท็อด setCredit(…)แบบ public ที่รับตัวเลขจํานวนจริงผ่ านทางพารามิเตอร์ หนึ่งค่ า เพื่อใช้ สํา-
       หรับกําหนดค่ าให้ กับแอตทริบว credit โดยไม่ ต้องคืนค่ ากลับ (3 คะแนน)
                                   ิ




       //เมท็อด getLevel(…)แบบ public เพื่อคืนค่ าระดับการศึกษาที่ระบุในรหัสวิชา โดยให้ ตัวเลขหลัก
       ที่ 3 จากทางขวามือของรหัสวิชาแทนระดับการศึกษา เช่ น 2110191 ตัวเลข 1 แทนระดับการศึกษา
       เป็ นต้ น ซึ่งระดับการศึกษาประกอบไปด้ วย 2 ระดับได้ แก่ Undergraduate (ตัวเลข 1-4) และ
       Graduated (ตัวเลข 5 เป็ นต้ นไป) โดยกําหนดให้ คืนค่ าเป็ นชื่อของระดับการศึกษานันๆ (3 คะแนน)
                                                                                       ้




       //เมท็อด getFaculty(…)แบบ public เพื่อคืนค่ ารหัสคณะที่เปิ ดสอนวิชาดังกล่ าว โดยรหัสคณะคือ
       ตัวเลขสองหลักแรกของรหัสวิชาเริ่มจากทางซ้ ายมือ เช่ น 2110191 ตัวเลข 21 แทนรหัสคณะ เป็ นต้ น
                                                                                       (3 คะแนน)




  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                           Computer Programming using Java          163
    //เมท็อด getDepartment(…)แบบ public เพื่อคืนค่ ารหัสภาควิชาที่เปิ ดสอนวิชาดังกล่ าว โดยรหัส
    ภาควิชาคือตัวเลขสองหลักที่ 3-4 ของรหัสวิชาเริ่มจากทางซ้ ายมือ เช่ น 2110191 ตัวเลข 10 แทนรหัส
    ของภาควิชา เป็ นต้ น (3 คะแนน)




    //เมท็อด toString(…)แบบ public เพื่อคืนค่ ารายละเอียดของวิชาที่เก็บอย่ ูในแอตทริบิวทุกตัวใน
    รปแบบของข้ อความดังตัวอย่ างเช่ น 2110191 Innovative Thinking (3) เป็ นต้ น (3 คะแนน)
      ู




} //End of class

2. ขอบเขตของตัวแปร พารามิเตอร์ และแอตทริบว           ิ
   1) ตัวแปร คือ ตัวแปรที่ประกาศอยู่ภายในเมท็อด โดยจะปรากฏอยู่ที่ตวเมท็อด (Body) ซึงถ้ าตัวแปรใดประ
                                                                        ั                ่
       กาศในเมท็อดไหนแล้ วจะเรี ยกใช้ งานได้ แต่เพียงในเมท็อดนันเท่านัน (Local Variable)
                                                               ้      ้
   2) พารามิเตอร์ คือ ตัวแปรที่ประกาศอยู่ภายในเมท็อด แต่จะปรากฏอยู่ที่หวเมท็อด (Head) จึงเรี ยกชื่อเสีย
                                                                            ั
       ใหม่วาพารามิเตอร์ ซึงพารามิเตอร์ ใดๆ นันจะมีคณสมบัตเิ ช่นเดียวกับตัวแปร
            ่              ่                  ้        ุ
   3) แอตทริ บิว คือ ตัวแปรที่ประกาศอยู่ภายในคลาสแต่อยู่นอกเมท็อดใดๆ ซึ่งถ้ าแอตทริ บิวประกาศขึ ้นแล้ ว
       จะสามารถเรี ยกใช้ งานได้ จากทุกเมท็อดภายในคลาสนัน (Global Variable)
                                                           ้
   ตัวอย่าง
                                                x และ y คือ แอตทริ บิว
     1     public class Test {                                           getX() คืนค่าแอตทริ วบิว x
     2       private static int x = 10;
                                                                         getX(int x) คืนค่าพารามิเตอร์
     3       private static int y = 1;
     4       public static int getX() { return x; }
     5       public static int getX(int x) { return x; }
     6       public static int incX(int y) { return x + y; } ค่า x มาจากแอตทริ บิว x
     7
     8
             public static void main(String[] args) {
               int x = 5;
                                                                             ค่า y มาจากพารามิเตอร์ y
     9         System.out.println(x);                    5
     10        System.out.println(y);                    1
     11        System.out.println(getX());               10              แสดงค่า x จากตัวแปร x
     12
     13
               System.out.println(getX(2));
               System.out.println(incX(x));
                                                         2
                                                         15
                                                                         แสดงค่า y จากแอตทริบิว y
     14      }
     15    }            ตัวแปร x ในเมท็อด main(…) เป็ นคนละตัวกับพารามิเตอร์ x ในเมท็อด getX(int x)

© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
164   Computer Programming using Java                                                      12 - Classes and Objects


       4) ภาพรวมของตัวแปร พารามิเตอร์ และแอตทริบว
                                                ิ
            public class TestClass {

                   1       Attribute                                       ตัวแปรกับพารามิเตอร์ ประ
                                                                           กาศชื่อซํากันได้ หรื อไม่ ?
                                                                                    ้
                public int add(         2      Parameter        ) {

                       3      Variable
                                                                           ตัวแปรกับแอตทริบวประ  ิ
                  return … ;
               } //End of method
                                                                           กาศชื่อซํากันได้ หรื อไม่ ?
                                                                                    ้
            } //End of class



  โจทย์ ข้อที่ 4 [ระดับง่ าย] จงแสดงผลลัพธ์ จากโปรแกรมและตอบคําถามต่ อไปนี ้ (10 คะแนน)
      1    public class Test {
      2      private static int x = 5;
      3      private static int y = 2;
      4      public static void main(String[] args) {
      5        int x = 9;
      6        System.out.println(x);
      7        System.out.println(getX());
      8        System.out.println(showX());
      9        y = 1;
      10       System.out.println(y);
      11       System.out.println(getY());
      12       System.out.println(showY());
      13       int y = 11;
      14       System.out.println(y);
      15       System.out.println(getY());
      16       System.out.println(showY());
      17     }
      18     public static int getX() {
      19
      20     }
               return x;                                                  1) ค่ า y ในบรรทัดที่ 10 คือแอตทริบว
                                                                                                             ิ
      21     public static int getY() {                                      y หรื อตัวแปร y
      22       return y;
      23     }
      24     public static int showX() {
      25       int x = 7;
      26       return x;
      27
      28
             }
             public static int showY() {
                                                                          2) ค่ า y ในบรรทัดที่ 14 คือแอตทริบว
                                                                                                             ิ
      29       int y = 12;                                                   y หรื อตัวแปร y
      30       return y;
      31     }
      32   }



  3. อ๊ อบเจ็ค (Objects)
  1. นิยามของอ๊ อบเจ็ค
     1) อ๊ อบเจ็คเป็ นตัวแทนของคลาส ซึงใช้ สําหรับอ้ างอิงแอตทริบวและเมท็อดภายในคลาสนัน โดยทัวไปคลาสที่
                                           ่                           ิ                             ้     ่
         สร้ างขึ ้นเป็ นเพียงคลาสต้ นแบบที่ไม่สามารถใช้ งานได้ จริ ง ดังนันการสร้ างอ๊ อบเจ็คก็เป็ นเสมือนการคัดลอก
                                                                           ้
         คลาสต้ นแบบเพื่อนําไปใช้ งานนันเอง (การคัดลองทําให้ คลาสต้ นแบบไม่เสียหาย)
                                         ่
  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                                    Computer Programming using Java                165
    2) กระบวนการเรี ยกและการทํางานของอ๊ อบเจ็คมีดงนี ้
                                                 ั                                        อ๊ อบเจ็คมีทกอย่างเหมือน
                                                                                                      ุ
                Class A                                             Object a              คลาสทุกประการ
                                  คลาสต้ นแบบ
               Attributes                                          Attributes                             a.attr1 = 0

               Constructor
                                        New Object                 Method-1
                                                                                     เรี ยกใช้            a.method1()
                                                                                                          a.method2()
                                                                      .
                                                                      .
                                                                      .
                Methods           การคัดลอก                        Method-N                เรี ยกใช้ แอตทริบิวและเมท็อด
                                                                                           ผ่านทางอ๊ อบเจ็ค
2. การประกาศและสร้ างอ๊ อบเจ็ค
   1) การประกาศตัวแปรอ๊ อบเจ็ค
                                                                                 เหมือนการประกาศตัวแปรทัวไปเพียงแต่
                                                                                                           ่
          <ชื่อคลาส> <ชื่ออ๊ อบเจ็ค>;
                                                                                 มีชนิดตัวแปรเป็ นชื่อคลาส
        เช่น    Student std;       /   Car car;   /   Account obj;


    2) การสร้ างอ๊ อบเจ็ค (ใช้ การ new)
          <ชื่ออ๊ อบเจ็ค> = new <ชื่อคลาส>(…);

        เช่น    std = new Student(52300121); / car = new Car(); / obj = new Account(101);


    3) รวมขันตอน 2 ขันตอนในข้ อ 1 และ 2 เข้ าด้ วยกัน (นิยมประกาศและสร้ างอ๊ อบเจ็คแบบวิธีนี ้)
            ้        ้
          <ชื่อคลาส> <ชื่ออ๊ อบเจ็ค> = new <ชื่อคลาส>(…);
                                                                                    ส่วนของ <ชื่อคลาส>(…) ก็คือตัว
                                                                                    สร้ าง (Constructor) ของคลาสนันเอง
                                                                                                                  ่
          <ชื่อคลาส> <ชื่ออ๊ อบเจ็ค> = new <ตัวสร้ าง>;

        เช่น Student std = new Student(52300121); / Account obj = new Account(101);
        หมายเหตุ ค่าพารามิเตอร์ ที่จะใส่เข้ าไปภายในวงเล็บหลังชื่อคลาสหรื อหลังชื่อตัวสร้ างนัน ให้ พจารณาจาก
                                                                                              ้      ิ
        คลาสต้ นแบบว่ามีตวสร้ างแบบใดบ้ างที่ประกาศขึ ้นใช้ งาน
                         ั
    4) ตัวอย่างการสร้ างและใช้ งานอ๊ อบเจ็ค                                                          คลาสประมวลผล
     1     public class Digit {                   1     public class TestDigit {
     2       public int x;                        2       public static void main(String[] args){
     3       Digit() {                            3         Digit d = new Digit();
     4         x = 0;    ตัวสร้ าง                4         Digit e = new Digit(1);              แอตทริบิวทุกตัวของ
     5       }                                    5         Digit f = new Digit(2);
     6       Digit(int n) {                       6         int digit1 = d.getX();               อ๊ อบเจ็คจะถูกกําหนด
     7         x = n;                             7         int digit2 = e.getX();
     8       }                                    8         int digit3 = f.getX();               ค่าเริ่มต้ นโดยตัวสร้ าง
     9       public int getX(){                   9       }
     10        return x;                          10    }
     11      }                                               ภายในเมท็อด main มีการเรี ยกใช้ งานคลาสต้ นแบบผ่านทาง
     12    }
                            คลาสต้ นแบบ                        อ๊ อบเจ็ค โดยการเอา ชื่ออ๊ อบเจ็ค + จุด + สิ่งที่จะเรี ยก

© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
166   Computer Programming using Java                                                12 - Classes and Objects


  โจทย์ ข้อที่ 5 [ระดับง่ าย] จงหาผลลัพธ์ จากการทํางานของโปรแกรมต่ อไปนี ้ (8 คะแนน)
      1     public class Student {                    คลาสต้ นแบบ
      2       public int id;
      3       public String name;
      4       Student() { id = 0; name = ""; }
      5       Student(int i, String n) { id = i; name = n; }
      6       public String getName() { return name; }
      7       public int getID() { return id; }
      8       public char calGrad(int score) {
      9          if(score > 60) { return 'S'; }
      10         else { return 'U'; }
      11      }
      12    }


      1     public class TestStudent {                                                      คลาสประมวลผล
      2       public static void main(String args[]){
      3         Student y = new Student(101,"Taksin");
      4         Student z = new Student(102,"Apisit");
      5         Student x = new Student();
      6         System.out.println(x.getID() + "," + x.getName());
      7         System.out.println(y.getID() + "," + y.getName());
      8         System.out.println((z.getID() + 1) + "," + z.getName());
      9         System.out.println(y.getName()+ ":" + y.calGrad(49));
      10        System.out.println(z.getName()+ ":" + z.calGrad(79));
      11      }
      12    }



  โจทย์ ข้อที่ 6 [ระดับง่ าย] จงเขียนคลาส TestNumber ให้ สมบรณ์ เพื่อเรี ยกใช้ งานคลาส Number โดยการ
                                                              ู
  สร้ างอ๊ อบเจ็คที่มีชนิดเป็ น Number และเรี ยกใช้ งานเมท็อดตามเงื่อนไขต่ อไปนี ้ (10 คะแนน)
      1     public class Number {                                                              คลาสต้ นแบบ
      2       private double x;
      3       private double y;
      4       Number() { x = y = 0; }
      5       Number(double a, double b) {         x   =   a;   y = b; }
      6       public double add() { return         x   +   y;   }
      7       public double sub() { return         x   -   y;   }
      8       public double mul() { return         x   *   y;   }
      9       public double div() { return         x   /   y;   }
      10      public double mod() { return         x   %   y;   }
      11    }


  //ประกาศหัวคลาส TestNumber
  import java.util.Scanner;




      public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
           //สร้ างอ๊ อบเจ็คชื่อ no1 ที่มีชนิดเป็ นคลาส Number (เป็ นตัวแทนของคลาส Number)



  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                                    Computer Programming using Java         167
      //รั บค่ าจํานวนจริงจากแปนพิมพ์ 2 ค่ าเพื่อใช้ ในการสร้ างอ๊ อบเจ็คชื่อ no2 ที่มีชนิดเป็ นคลาส Number
                               ้




      //แสดงผลการบวก การลบ การคณ การหาร และการม็อด โดยเรี ยกเมท็อดผ่ านทางอ๊ อบเจ็ค no2
                               ู




  } //End of main
} //End of class


4. การกําหนดคุณสมบัตและการใช้ งานคลาสและอ๊ อบเจ็ค
                    ิ
1. การกําหนดตัวบ่ งคุณลักษณะให้ กับแอตทริบวและเมท็อด
                                               ิ
   1) ตัวบ่งคุณลักษณะที่ใช้ กําหนดขอบเขตการเรี ยกใช้ แอตทริบวและเมท็อดได้ แก่ public, private และ
                                                            ิ
      protected ซึงจะเป็ นตัวบอกว่าแอตทริ บวและเมท็อดจะถูกเรี ยกใช้ งานจากที่ ไหนได้ บ้าง (Where)
                   ่                       ิ
                                     Package java.test1                                 Package java.test2
              1    Methods in A call modifier me(…)
                                                                                             Class D
                                          4     Methods in D call modifier me(…)
                     Class A
                                                                       Class B
                  modifier me(…)               Methods in B call
                                          2
                                               modifier me(…)                           Class C Extends A

                                      3       Methods in C call modifier me(…)


          1       หมายถึง เรี ยกใช้ เมท็อด modifier       me(…) จากภายในคลาสเดียวกัน (คลาส A)

          2       หมายถึง เรี ยกใช้ เมท็อด modifier       me(…) จากต่างคลาสกันแต่อยูภายในแพ็คเก็จเดียวกัน
                                                                                   ่
          3       หมายถึง เรี ยกใช้ เมท็อด modifier       me(…) จากต่างแพ็คเก็จกันแต่คลาสที่เรี ยกใช้ เป็ นสับคลาสกัน

          4       หมายถึง เรี ยกใช้ เมท็อด modifier       me(…) จากต่างแพ็คเก็จกันหรื อจากที่ใดๆ


© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
168   Computer Programming using Java                                                12 - Classes and Objects


          สรุ ปเป็ นตารางขอบเขตการเรียกใช้ งานได้ ดงนี ้
                                                   ั
               รายละเอียดของ     คลาสเดียวกัน ต่ างคลาสกัน เป็ นสับคลาสกัน ต่ างคลาสกัน
              ตัวบ่ งคุณลักษณะ แพ็คเก็จเดียวกัน แพ็คเก็จเดียวกัน (คลาสแม่ ลูก) ต่ างแพ็คเก็จกัน
           public me(…)

           private me(…)

           protected me(…)

           me(…)

          หมายเหตุ โดยทัวไปแอตทริ บิวนิยมประกาศเป็ น private และเมท็อดนิยมประกาศเป็ น public แต่ถ้า
                             ่
          ไม่เช่นนันก็ให้ ประกาศไปตามความต้ องการหรื อตามที่โจทย์กําหนด
                   ้
       2) ตัวบ่งคุณลักษณะที่ใช้ กําหนดค่าประจําคลาสหรื อประจําอ๊ อบเจ็คของแอตทริ บิวและเมท็อดได้ แก่ static
          ซึงจะเป็ นตัวบอกว่าแอตทริบวและเมท็อดจะถูกเรี ยกใช้ งานอย่ างไรได้ บ้าง (How)
            ่                         ิ
                     รายละเอียดของ
                                                  เรี ยกใช้ ผ่านทางคลาส           เรี ยกใช้ ผ่านทางอ๊ อบเจ็ค
                    ตัวบ่ งคุณลักษณะ
           ค่าประจําคลาส (มี static)
           ค่าประอ๊ อบเจ็ค (ไม่มี static)

  โจทย์ ข้อที่ 7 [ระดับง่ าย] จงประกาศและสร้ างแอตทริบวหรือหัวเมท็อดตามข้ อกําหนดต่ อไปนี ้ (18 คะแนน)
                                                      ิ
  1) แอตทริบวประจําอ๊ อบเจ็คชื่อ data ชนิดจํานวนจริง โดยสามารถเรียกใช้ งานได้ จากคลาสใดๆ
                 ิ



  2) แอตทริบิวประจําคลาสชื่อ var ชนิดจํานวนเต็ม โดยมีค่าเริ่มต้ นเท่ ากับ 10 และสามารถเรี ยกใช้ งาน
     ได้ จากภายในคลาสเดียวกันเท่ านัน
                                    ้



  3) แอตทริบวประจําคลาสชื่อ check ชนิดค่ าความจริง โดยสามารถเรี ยกใช้ งานได้ จากสับคลาส
            ิ



  4) แอตทริบิวประจําอ๊ อบเจ็คชื่อ stdName เก็บรายชื่อนิสิตจํานวน 351 คน โดยสามารถเรี ยกใช้ งานได้
     จากภายในคลาสเดียวกันเท่ านัน  ้




  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                            Computer Programming using Java          169
5) แอตทริบวประจําคลาสชื่อ m เก็บเมตริกซ์ ชนิดจํานวนเต็มขนาด 8 x 5 โดยสามารถเรี ยกใช้ จากที่ใดก็ได้
          ิ



6) เมท็อดประจําอ๊ อบเจ็คชื่อ show เพื่อแสดงชื่อนิสิตและผลการเรี ยนเฉลี่ยที่รับจากพารามิเตอร์ ขึนบน
                                                                                               ้
   จอภาพ โดยสามารถเรียกใช้ งานได้ เฉพาะคลาสที่ประกาศเมท็อด show นีเ้ ท่ านัน   ้



7) เมท็อดประจําคลาสชื่อ search เพื่อใช้ ค้นหาตัวเลขจํานวนเต็ม x ที่รับเข้ ามาว่ ามีปรากฎอย่ ู ณ
   ตําแหน่ งใดในอาเรย์ num ที่รับเข้ ามาเช่ นกัน โดยสามารถเรียกใช้ งานได้ จากคลาสลกหลาน
                                                                                  ู



8) เมท็อดประจําอ๊ อบเจ็คชื่อ mulMatrix เพื่อคํานวณค่ าหาผลคณของเมตริกซ์ สองมิตชนิดจํานวนจริง
                                                           ู                  ิ
   2 ตัวใดๆ โดยสามารถเรียกใช้ จากที่ใดก็ได้



9) เมท็อดประจําคลาสชื่อ union เพื่อใช้ ยเนียนเซตของจํานวนเต็ม 2 เซ็ตใดๆ โดยเป็ นแบบสาธารณะ
                                        ู




2. วิธีการเรียกใช้ งานแอตทริบวและเมท็อด
                                ิ
   1) เรี ยกโดยตรง เป็ นการเรี ยกแอตทริ บิวหรื อเมท็อดที่อยู่ภายในคลาสเดียวกัน (ตามหลักการเรี ยกเมท็อดใน
        บทที่ 8-11 ที่ผานมา) โดยจะพิจารณาเมท็อดที่มี static และไม่มี static ดังเงื่อนไขต่อไปนี ้
                       ่
                                   เมท็อดผ้ ูถกเรี ยก
                                              ู                   มี static เรี ยก มี static ได้
        เมท็อดผ้ ูเรียก




                                    มี            ไม่ มี          มี static เรี ยก ไม่มี static ไม่ได้
                       มี                                         ไม่มี static เรี ยก มี static ได้
                                                                  ไม่มี static เรี ยก ไม่มี static ได้
                    ไม่ มี

    2) เรียกผ่ านคลาส เป็ นการเรียกแอตทริ บวหรื อเมท็อดประจําคลาส (มี static) ที่อยูตางคลาสกัน
                                             ิ                                      ่ ่
       (1) เรี ยกแอตทริ บวผ่านคลาส ซึงเรี ยกแอตทริบวประเภทนี ้ว่า ตัวแปรประจําคลาส (Class Variable)
                         ิ           ่             ิ
                          <ชื่อคลาส>.<ชื่อแอตทริ บว>;
                                                  ิ          ขึ ้นต้ นด้ วยตัวพิมพ์ใหญ่ ลงท้ ายไม่มีวงเล็บ

                    เช่น    Math.PI;    Color.RED;

© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
170   Computer Programming using Java                                                              12 - Classes and Objects


               (2) เรี ยกเมท็อดผ่านคลาส ซึงเรี ยกเมท็อดประเภทนี ้ว่า เมท็อดประจําคลาส (Class Method)
                                          ่
                     <ชื่อคลาส>.<ชื่อเมท็อด>(…);                      ขึ ้นต้ นด้ วยตัวพิมพ์ใหญ่ ลงท้ ายมีวงเล็บ

                    เช่น   Math.pow(2,3);     Time.start();


           3) เรียกผ่ านอ๊ อบเจ็ค เป็ นการเรี ยกแอตทริ บวหรื อเมท็อดประจําอ๊ อบเจ็ค (ไม่มี static) ที่อยูตางคลาสกัน
                                                         ิ                                              ่ ่
              (1) เรี ยกแอตทริ บวผ่านอ๊ อบเจ็ค ซึงเรี ยกแอตทริบวประเภทนี ้ว่า ตัวแปรประจําอ๊ อบเจ็ค (Object Variable)
                                ิ                ่             ิ
                  หรื อ ตัวแปรตัวแทน (Instance Variable)
                     <ชื่ออ๊ อบเจ็ค>.<ชื่อแอตทริ บว>;
                                                  ิ                   ขึ ้นต้ นด้ วยตัวพิมพ์เล็ก ลงท้ ายไม่มีวงเล็บ

                   เช่น objStd.id; no.x; g.y;
               (2) เรี ยกเมท็อดผ่านอ๊ อบเจ็ค ซึงเรี ยกเมท็อดประเภทนี ้ว่า เมท็อดประจําอ๊ อบเจ็ค (Object Method) หรื อ
                                               ่
                   เมท็อดตัวแทน (Instance Method)
                     <ชื่ออ๊ อบเจ็ค>.<ชื่อเมท็อด>(…);                 ขึ ้นต้ นด้ วยตัวพิมพ์เล็ก ลงท้ ายมีวงเล็บ

                    เช่น   std.get(5230121);      c.stop();

           จงตอบคําถาม
             แอตทริบวหรือเมท็อดที่เป็ นแบบ static จะสามารถเรียกใช้ งานผ่ านทางอ๊ อบเจ็คได้ หรือไม่
                    ิ
              ได้ เราสามารถเรี ยกใช้ ทกอย่างผ่านทางอ๊ อบเจ็คได้ ไม่วาจะเป็ น static หรื อไม่ก็ตาม
                                      ุ
             ………………………………………………………………………………………………………………..           ่

  โจทย์ ข้อที่ 8 [ระดับง่ าย] จงใช้ ตวเลือกต่ อไปนีเ้ พื่อระบุประเภทของแอตทริบวหรือเมท็อด (20 คะแนน)
                                     ั                                           ิ
  (A) Class Variable (B) Class Method                 (C) Object Variable (D) Object Method
   ข้ อ แอตทริบวหรือเมท็อด
                    ิ                          คําตอบ         ข้ อ แอตทริบวหรื อเมท็อด
                                                                          ิ                    คําตอบ
    1. Math.sqrt(x)                                           11. std.grad
      2.      p.colorCode(s)                                    12.   Sqt.borders(a,b)

      3.      Array.equals(a, b)                                13.   in.readLine()

      4.      v.x                                               14.   System.in

      5.      System.getProperties()                            15.   Math.random()

      6.      Integer.MAX_VALUE                                 16.   in.hasNext()

      7.      kb.nextInt()                                      17.   i.id_code

      8.      rectangle.setSize(w, h)                           18.   out.close()

      9.      Math.PI                                           19.   String.format("%4d", x)

      10.     a.appendArrays(x,y)                               20.   o.name


  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                           Computer Programming using Java                     171
โจทย์ ข้อที่ 9 [ระดับปานกลาง] จงหาผลลัพธ์ จากการทํางานของโปรแกรมต่ อไปนี ้ (15 คะแนน)
 1     public class Val {
 2       public static int x;
 3       public static int y;
 4       public static String s;
 5       public Val() { x = 0; y = 0; s = ""; }
 6       public Val(int x, int y) { this.x = x; this.y = y; }
 7       public static int getX() { return x; }
 8       public static int getY() { return y; }
 9       public static int getY(int y) { return y; }
 10      public static String getS() { return s; }
 11      public static String getS(String s) { return s; }
 12    }

 1     public class Test {
 2       public static void main(String[] args) {
 3         System.out.println(Val.x + "," + Val.y);
 4         Val.x = 6; Val.y = 10;
 5         System.out.println(Val.getX()+ "," + Val.getY());
 6         Val.s = "Good By A";
 7         System.out.println(Val.getS());
 8         System.out.println(Val.getS("See You F"));
 9         Val v = new Val();
 10        System.out.println(v.x + "," + v.y);
 11        v.x = 5; v.y = 7;
 12
 13
           System.out.println(v.getX() + "," + v.getY());
           System.out.println(Val.getX() + "," + Val.getY());
                                                                                    ข้ อนี ้แสดงให้ เห็นถึงผลกระ
 14        Val w = new Val(9, 7);                                                   ทบในการประ กาศแอตทริ -
 15        System.out.println(w.getX() + "," + w.getY());
 16        System.out.println(v.getX() + "," + v.getY());                           บิวให้ เป็ นแบบ static ซึง   ่
 17        v.s = "I love Java";
 18        System.out.println(w.getS());                                            จะทําให้ คาของแอตทริบิวนัน
                                                                                                ่                  ้
 19
       }
         }                                                                          เปลี่ยนแปลงแบบ Global
 20


โจทย์ ข้อที่ 10 [ระดับปานกลาง] จงเขียนคลาส Dice ซึ่งเป็ นตัวแทนของลกเต๋ า n หน้ าใดๆ เช่ น ลกเต๋ า 6
                                                                         ู                   ู
หน้ า ลกเต๋ า 12 หน้ าเป็ นต้ น และเขียนคลาส TestDice เพื่อเรี ยกใช้ เมท็อดจากคลาส Dice (20 คะแนน)
       ู
public class Dice {
   //แอตทริบวประจําอ๊ อบเจ็คแบบ public ชื่อ face เพื่อเก็บจํานวนหน้ าของลกเต๋ า
            ิ                                                            ู
   //แอตทริบวประจําอ๊ อบเจ็คแบบ public ชื่อ value เพื่อเก็บหมายเลขหน้ าหงายของลกเต๋ า
              ิ                                                                 ู




   //ตัวสร้ างแบบไม่ มีพารามิเตอร์ เพื่อกําหนดจํานวนหน้ าของลกเต๋ าเป็ น 2 และกําหนดหน้ าหงายของ
                                                             ู
   ลกเต๋ าโดยการสุ่มค่ า
     ู




© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
172   Computer Programming using Java                                                12 - Classes and Objects


      //ตัวสร้ างแบบมีพารามิเตอร์ หนึ่งตัว เพื่อกําหนดจํานวนหน้ าของลกเต๋ าตามตัวเลขที่ระบุทางพารามิเตอร์
                                                                     ู
      และกําหนดหน้ าหงายของลกเต๋ าโดยการสุ่มค่ า
                                ู




      //ตัวสร้ างแบบมีพารามิเตอร์ สองตัว เพื่อกําหนดจํานวนหน้ าของลกเต๋ าและกําหนดหน้ าหงายของลกเต๋ า
                                                                   ู                           ู
      ตามตัวเลขที่ระบุทางพารามิเตอร์ ตามลําดับ




      //เมท็อดประจําอ๊ อบเจ็คชื่อ roll เพื่อใช้ โยนลกเต๋ า ซึ่งจะสุ่มหมายเลขหน้ าหงายของลกเต๋ าที่มีค่าตังแต่
                                                    ู                                        ู             ้
      1 จนถึงจํานวนหน้ าที่เป็ นไปได้ ของลกเต๋ านัน และเมื่อสุ่มหน้ าหงายได้ แล้ ว ก็จะนําไปกําหนดค่ าให้ กับ
                                           ู      ้
      แอตทริบว value ที่เก็บหมายเลขหน้ าหงายของลกเต๋ า โดยที่เมท็อดนีไม่ ต้องมีการคืนค่ ากลับ
              ิ                                        ู                     ้




      //เมท็อดประจําอ๊ อบเจ็คชื่อ setValue เพื่อใช้ ในการพลิกหน้ าหงายของลกเต๋ าตามที่ต้องการ ซึ่งจะรับ
                                                                            ู
      ค่ าหมายเลขหน้ าหงายของลกเต๋ าผ่ านทางพารามิเตอร์ และจะนําไปกําหนดค่ าให้ กับแอตทริบว value
                                  ู                                                           ิ
      ที่เก็บหมายเลขหน้ าหงายของลกเต๋ า โดยที่เมท็อดนีไม่ ต้องมีการคืนค่ ากลับ
                                     ู                   ้




      //เมท็อดประจําอ๊ อบเจ็คชื่อ getFace เพื่อคืนค่ าจํานวนหน้ าของลกเต๋ า
                                                                     ู




  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                           Computer Programming using Java          173
   //เมท็อดประจําอ๊ อบเจ็คชื่อ getValue เพื่อคืนค่ าหมายเลขหน้ าหงายของลกเต๋ า
                                                                        ู




   //เมท็อดประจําอ๊ อบเจ็คชื่อ show เพื่อแสดงจํานวนหน้ าและหมายเลขหน้ าหงายของลกเต๋ าทีละบรรทัด
                                                                               ู




} //End of class

public class TestDice {
   /* สร้ างลกเต๋ าขึนมา 3 ลก ในรปของอ๊ อบเจ็คที่มีช่ ือเป็ น d1, d2 และ d3 ตามลําดับมีรายละเอียดดังนี ้
              ู      ้           ู     ู
   อ๊ อบเจ็ค d1 เป็ นลกเต๋ าที่ไม่ ได้ ระบุจานวนหน้ าและหมายเลขหน้ าหงาย
                       ู                    ํ
   อ๊ อบเจ็ค d2 เป็ นลกเต๋ า 13 หน้ า ที่ไม่ ได้ ระบุหมายเลขหน้ าหงาย
                         ู
   อ๊ อบเจ็ค d3 เป็ นลกเต๋ า 30 หน้ า ที่มีหมายเลขหน้ าหงายเป็ น 9
                           ู
   พร้ อมทังแสดงข้ อมลของลกเต๋ าทัง 3 ลกขึนบนจอภาพ แล้ วทําการโยนลกเต๋ าทัง 3 ลกพร้ อมๆ กัน 20
            ้                ู     ู     ้    ู ้                           ู     ้    ู
   ครัง โดยในแต่ ละครั งให้ แสดงหมายเลขหน้ าหงายของลกเต๋ าทัง 3 ลกขึนบนจอภาพ */
       ้                       ้                             ู      ้   ู ้




} //End of class

© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
174   Computer Programming using Java                                                12 - Classes and Objects


  โจทย์ ข้อที่ 11 [ระดับปานกลาง] จงเขียนคลาส RealNumber ซึ่งเป็ นตัวแทนของจํานวนจริงใดๆ หนึ่งจํา-
  นวน และเขียนคลาส TestRealNumber เพื่อเรียกใช้ เมท็อดจากคลาส RealNumber (15 คะแนน)
  public class RealNumber {
      //แอตทริบวประจําอ๊ อบเจ็คแบบ public ชื่อ num เพื่อเก็บค่ าจํานวนจริง
               ิ



      //ตัวสร้ างแบบไม่ มีพารามิเตอร์ เพื่อกําหนดค่ าให้ กับแอตทริบว num ตามค่ า Default
                                                                   ิ




      //ตัวสร้ างแบบมีพารามิเตอร์ เพื่อกําหนดค่ าให้ กับแอตทริบว num ตามค่ าที่ระบุ
                                                               ิ




      //เมท็อดประจําอ๊ อบเจ็คชื่อ plus เพื่อรั บค่ าจํานวนจริงหนึ่งจํานวนเข้ ามาทางพารามิเตอร์ แล้ วนํามาหา
      ผลบวกระหว่ างแอตทริบว num กับค่ าตัวเลขนันพร้ อมทังคืนค่ ากลับ
                             ิ                         ้      ้




      //เมท็อดประจําอ๊ อบเจ็คชื่อ diff เพื่อรั บค่ าจํานวนจริงหนึ่งจํานวนเข้ ามาทางพารามิเตอร์ แล้ วนํามาหา
      ผลต่ างระหว่ างแอตทริบว num กับค่ าตัวเลขนันพร้ อมทังคืนค่ ากลับ
                             ิ                        ้       ้




  } //End of class

  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                           Computer Programming using Java          175
public class TestRealNumber {
   /* สร้ างจํานวนจริง 1 จํานวนในรปของอ๊ อบเจ็ค r ที่มีค่าเป็ น 70 ประเภท RealNumber พร้ อม
                                  ู
   คํานวณหาค่ าผลบวกของตัวเลขนันกับ 15 และผลต่ างของตัวเลขนันกับ 50 พร้ อมทังแสดงผลลัพธ์
                                    ้                                ้            ้
   ขึนบนจอภาพ*/
     ้




} //End of class


โจทย์ ข้อที่ 12 [ระดับปานกลาง] จงสร้ างคลาส Account ให้ สมบรณ์ ซึ่งเป็ นคลาสที่ใช้ ในการดําเนินการ
                                                                         ู
เกี่ยวกับระบบบัญชีธนาคาร โดยมีรายละเอียดดังต่ อไปนี ้ (10 คะแนน)
1) แอตทริบวชื่อ balance ซึ่งเป็ น Object Variable เพื่อเก็บยอดเงินในบัญชี
                 ิ
2) คอนสตรักเตอร์ 2 แบบเพื่อใช้ ในการกําหนดค่ าเริ่มต้ นให้ กับยอดเงินเมื่อเริ่มเปิ ดบัญชี
         ถ้ าไม่ ได้ ระบุจานวนเงินเมื่อเริ่มต้ นเปิ ดบัญชีให้ ยอดเงินเป็ น 0 บาท
                          ํ
         ถ้ ามีการระบุจานวนเงินเมื่อเริ่มต้ นเปิ ดบัญชีให้ ยอดเงินเป็ นไปตามค่ าที่ระบุ
                            ํ
3) เมท็อด deposit(…) ซึ่งเป็ น Object Method เพื่อใช้ ในการฝากเงินตามจํานวนเงินที่ระบุโดยไม่ มีการ
     คืนค่ ากลับ
4) เมท็อด withdraw(…) ซึ่งเป็ น Object Method เพื่อใช้ ในการถอนเงินตามจํานวนเงินที่ระบุและต้ อง
     ตรวจสอบยอดเงินก่ อนเสมอว่ ามีเพียงพอในการถอนเงินหรือไม่ พร้ อมทังคืนเงินที่ถอนด้ วย
                                                                                 ้
5) เมท็อด getbalance(…) ซึ่งเป็ น Object Method เพื่อคืนค่ ายอดเงินคงเหลือในบัญชี




© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
176   Computer Programming using Java                                                12 - Classes and Objects




  ให้ สร้ างคลาส TestAccount เพื่อเรี ยกใช้ งานคลาส Account โดยให้ เปิ ดบัญชีขึนมา 1 บัญชีพร้ อมฝาก
                                                                               ้
  เงินเริ่ มต้ นเปิ ดบัญชีจานวน 2000 บาท หลังจากนันจึงทําการถอนเงิน 1500 บาท และฝากเพิ่มอีก 800
                           ํ                      ้
  บาท ตามลําดับ (ในแต่ ละกระบวนการให้ แสดงยอดเงินในบัญชีหลังทํารายการทุกครัง) (10 คะแนน)
                                                                                 ้




  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                           Computer Programming using Java          177
โจทย์ ข้อที่ 13 [ระดับปานกลาง] จงสร้ างคลาส PiggyBank ให้ สมบรณ์ เพื่อสร้ างกระปุกออมสินลกหมซึ่ง
                                                             ู                           ู ู
เก็บเฉพาะเหรียญ 1 บาท 2 บาท 5 บาท และ 10 บาท โดยมีรายละเอียดดังต่ อไปนี ้ (20 คะแนน)
public class PiggyBank {
    (1) แอตทริบวประจําอ๊ อบเจ็คแบบ public ชื่อ one, two, five และ ten ตามลําดับ เพื่อเก็บจํานวน
                  ิ
        ของเหรียญแต่ ละเหรี ยญ
    (2) แอตทริ บิวประจําอ๊ อบเจ็คแบบ public ชื่อ size เพื่อเก็บความจุของค่ าเงินรวมสงสุดที่สามารถ
                                                                                    ู
        เก็บได้ ในกระปุก




    (3) ตัวสร้ าง 2 แบบเพื่อกําหนดค่ าเริ่มต้ นของกระปุก
        1) ถ้ าไม่ มีการกําหนดค่ าใดๆ ให้ แอตทริบว size เป็ น 100 แอตทริบวอื่นเป็ น 0
                                                   ิ                          ิ
        2) ถ้ ามีการกําหนดค่ าให้ กับแอตทริบว size ก็ให้ size เท่ ากับค่ าที่กาหนดมาส่ วนแอตทริบวอื่น
                                               ิ                                ํ               ิ
            เป็ น 0




    (4) เมท็อดประจําอ๊ อบเจ็คชื่อ clear(…) เพื่อทําการนําเหรี ยญออกจากกระปุกโดยไม่ มีการคืนค่ า
        กลับ (การนําเหรี ยญออกจากกระปุกคือให้ จานวนเหรี ยญทุกเหรียญเท่ ากับ 0)
                                                ํ




© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
178   Computer Programming using Java                                                12 - Classes and Objects


       (5) เมท็อดประจําอ๊ อบเจ็คชื่อ getTotal(…) เพื่อคืนค่ าเงินรวมทังหมดที่เก็บสะสมในกระปุก
                                                                      ้




       (6) เมท็อดประจําอ๊ อบเจ็คชื่อ full(…) เพื่อตรวจสอบว่ ากระปุกเต็มหรื อไม่ ถ้ าเต็มจะคืนค่ า true
           ถ้ าไม่ เต็มจะคืนค่ า false




       (7) เมท็อดประจําอ๊ อบเจ็คชื่อ addOne(…) เพื่อใช้ หยอดเหรี ยญ 1 บาท ตามจํานวนเหรี ยญที่ระบุลง
           ในกระปุก โดยก่ อนหยอดเหรียญจะต้ องตรวจสอบก่ อนว่ ากระปุกออมสินเต็มหรือไม่




       (8) เมท็อดประจําอ๊ อบเจ็คชื่อ addTwo(…) เพื่อใช้ หยอดเหรี ยญ 2 บาท ตามจํานวนเหรี ยญที่ระบุลง
           ในกระปุก โดยก่ อนหยอดเหรียญจะต้ องตรวจสอบก่ อนว่ ากระปุกออมสินเต็มหรือไม่


  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้
Classes and Objects - 12                                           Computer Programming using Java          179




    (9) เมท็อดประจําอ๊ อบเจ็คชื่อ addFive(…) เพื่อใช้ หยอดเหรียญ 5 บาท ตามจํานวนเหรี ยญที่ระบุลง
        ในกระปุก โดยก่ อนหยอดเหรียญจะต้ องตรวจสอบก่ อนว่ ากระปุกออมสินเต็มหรือไม่




    (10) เมท็อดประจําอ๊ อบเจ็คชื่อ addTen(…) เพื่อใช้ หยอดเหรี ยญ 10 บาท ตามจํานวนเหรี ยญที่ระบุ
        ลงในกระปุก โดยก่ อนหยอดเหรียญจะต้ องตรวจสอบก่ อนว่ ากระปุกออมสินเต็มหรือไม่




}//End of class

© สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                            ้
180   Computer Programming using Java                                                12 - Classes and Objects


  จงสร้ างคลาส TestPiggyBank เพื่อเรี ยกใช้ งานคลาส PiggyBank โดยสร้ างกระปุกออมสินขนาดความจุ
  500 บาท พร้ อมทังมีการเก็บเหรี ยญสองบาท 34 เหรี ยญ และเหรี ยญสิบบาท 13 เหรี ยญ โดยในการเพิ่ม
                     ้
  เหรี ยญแต่ ละครั งให้ แสดงค่ าเงินรวมทังหมดในกระปุกให้ เห็นทุกครัง
                   ้                     ้                         ้
  public class TestPiggyBank {
    public static void main(String[] args) {




    }//End of main
  }//End of class




  © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์)
                                              ้

Mais conteúdo relacionado

Mais procurados

ανάλυση προβλήματος
ανάλυση προβλήματοςανάλυση προβλήματος
ανάλυση προβλήματοςsziovas
 
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...Jordi Cabot
 
التخطيط الديداكتيكي والبيداغوجي للعملية التعليمية التعلمية
التخطيط الديداكتيكي والبيداغوجي للعملية التعليمية التعلميةالتخطيط الديداكتيكي والبيداغوجي للعملية التعليمية التعلمية
التخطيط الديداكتيكي والبيداغوجي للعملية التعليمية التعلميةkhalid mechkouri
 
تشخيص وعلاج صعوبات الفهم القرائي
تشخيص وعلاج صعوبات الفهم القرائيتشخيص وعلاج صعوبات الفهم القرائي
تشخيص وعلاج صعوبات الفهم القرائيمحمد الجمل
 
نظريه التعلم الشبكى
نظريه التعلم الشبكىنظريه التعلم الشبكى
نظريه التعلم الشبكىDoaa Abdo
 
استراتيجية القبعات الست
استراتيجية القبعات الستاستراتيجية القبعات الست
استراتيجية القبعات الستRehab Al-Sadany
 
ΑΕΠΠ ΚΕΦ 1
ΑΕΠΠ ΚΕΦ 1ΑΕΠΠ ΚΕΦ 1
ΑΕΠΠ ΚΕΦ 1educast
 
หลักการใช้ Tense ทั้ง 12
หลักการใช้ Tense ทั้ง 12หลักการใช้ Tense ทั้ง 12
หลักการใช้ Tense ทั้ง 12Arnupab Srisen
 
正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めてRyoma Sin'ya
 
Java-Chapter 05 String Operations
Java-Chapter 05 String OperationsJava-Chapter 05 String Operations
Java-Chapter 05 String OperationsWongyos Keardsri
 
Er:icuにおける薬剤師の目線
Er:icuにおける薬剤師の目線Er:icuにおける薬剤師の目線
Er:icuにおける薬剤師の目線Kuniaki Sano
 
แบบทดสอบก่อนเรียนเลขยกกำลัง
แบบทดสอบก่อนเรียนเลขยกกำลังแบบทดสอบก่อนเรียนเลขยกกำลัง
แบบทดสอบก่อนเรียนเลขยกกำลังทับทิม เจริญตา
 

Mais procurados (20)

ΠΛΗ30 ΜΑΘΗΜΑ 4.4
ΠΛΗ30 ΜΑΘΗΜΑ 4.4ΠΛΗ30 ΜΑΘΗΜΑ 4.4
ΠΛΗ30 ΜΑΘΗΜΑ 4.4
 
ΠΛΗ20 ΜΑΘΗΜΑ 1.2
ΠΛΗ20 ΜΑΘΗΜΑ 1.2ΠΛΗ20 ΜΑΘΗΜΑ 1.2
ΠΛΗ20 ΜΑΘΗΜΑ 1.2
 
ανάλυση προβλήματος
ανάλυση προβλήματοςανάλυση προβλήματος
ανάλυση προβλήματος
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.3
ΠΛΗ10 ΜΑΘΗΜΑ 1.3ΠΛΗ10 ΜΑΘΗΜΑ 1.3
ΠΛΗ10 ΜΑΘΗΜΑ 1.3
 
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
Model-Driven Software Engineering in Practice - Chapter 8 - Model-to-model tr...
 
التخطيط الديداكتيكي والبيداغوجي للعملية التعليمية التعلمية
التخطيط الديداكتيكي والبيداغوجي للعملية التعليمية التعلميةالتخطيط الديداكتيكي والبيداغوجي للعملية التعليمية التعلمية
التخطيط الديداكتيكي والبيداغوجي للعملية التعليمية التعلمية
 
ΠΛΗ20 ΜΑΘΗΜΑ 3.1
ΠΛΗ20 ΜΑΘΗΜΑ 3.1ΠΛΗ20 ΜΑΘΗΜΑ 3.1
ΠΛΗ20 ΜΑΘΗΜΑ 3.1
 
تشخيص وعلاج صعوبات الفهم القرائي
تشخيص وعلاج صعوبات الفهم القرائيتشخيص وعلاج صعوبات الفهم القرائي
تشخيص وعلاج صعوبات الفهم القرائي
 
نظريه التعلم الشبكى
نظريه التعلم الشبكىنظريه التعلم الشبكى
نظريه التعلم الشبكى
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4ΠΛΗ10 ΜΑΘΗΜΑ 2.4
ΠΛΗ10 ΜΑΘΗΜΑ 2.4
 
ΠΛΗ20 ΜΑΘΗΜΑ 3.5
ΠΛΗ20 ΜΑΘΗΜΑ 3.5ΠΛΗ20 ΜΑΘΗΜΑ 3.5
ΠΛΗ20 ΜΑΘΗΜΑ 3.5
 
استراتيجية القبعات الست
استراتيجية القبعات الستاستراتيجية القبعات الست
استراتيجية القبعات الست
 
ΑΕΠΠ ΚΕΦ 1
ΑΕΠΠ ΚΕΦ 1ΑΕΠΠ ΚΕΦ 1
ΑΕΠΠ ΚΕΦ 1
 
หลักการใช้ Tense ทั้ง 12
หลักการใช้ Tense ทั้ง 12หลักการใช้ Tense ทั้ง 12
หลักการใช้ Tense ทั้ง 12
 
正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて
 
Java-Chapter 05 String Operations
Java-Chapter 05 String OperationsJava-Chapter 05 String Operations
Java-Chapter 05 String Operations
 
Er:icuにおける薬剤師の目線
Er:icuにおける薬剤師の目線Er:icuにおける薬剤師の目線
Er:icuにおける薬剤師の目線
 
التقويم المتمركز حول المتعلم
التقويم المتمركز حول المتعلمالتقويم المتمركز حول المتعلم
التقويم المتمركز حول المتعلم
 
Unit2
Unit2Unit2
Unit2
 
แบบทดสอบก่อนเรียนเลขยกกำลัง
แบบทดสอบก่อนเรียนเลขยกกำลังแบบทดสอบก่อนเรียนเลขยกกำลัง
แบบทดสอบก่อนเรียนเลขยกกำลัง
 

Destaque

Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Wongyos Keardsri
 
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
 
How to Study and Research in Computer-related Master Program
How to Study and Research in Computer-related Master ProgramHow to Study and Research in Computer-related Master Program
How to Study and Research in Computer-related Master ProgramWongyos Keardsri
 
Java-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysJava-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysWongyos Keardsri
 
Java-Chapter 04 Iteration Statements
Java-Chapter 04 Iteration StatementsJava-Chapter 04 Iteration Statements
Java-Chapter 04 Iteration StatementsWongyos Keardsri
 
Java-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and ApplicationsJava-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and ApplicationsWongyos Keardsri
 
Java-Chapter 06 File Operations
Java-Chapter 06 File OperationsJava-Chapter 06 File Operations
Java-Chapter 06 File OperationsWongyos Keardsri
 
Java-Chapter 11 Recursions
Java-Chapter 11 RecursionsJava-Chapter 11 Recursions
Java-Chapter 11 RecursionsWongyos Keardsri
 
Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Wongyos Keardsri
 
Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Wongyos Keardsri
 
The next generation intelligent transport systems: standards and applications
The next generation intelligent transport systems: standards and applicationsThe next generation intelligent transport systems: standards and applications
The next generation intelligent transport systems: standards and applicationsWongyos Keardsri
 
การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมการควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมkorn27122540
 
SysProg-Tutor 03 Unix Shell Script Programming
SysProg-Tutor 03 Unix Shell Script ProgrammingSysProg-Tutor 03 Unix Shell Script Programming
SysProg-Tutor 03 Unix Shell Script ProgrammingWongyos Keardsri
 
SysProg-Tutor 02 Introduction to Unix Operating System
SysProg-Tutor 02 Introduction to Unix Operating SystemSysProg-Tutor 02 Introduction to Unix Operating System
SysProg-Tutor 02 Introduction to Unix Operating SystemWongyos Keardsri
 
SysProg-Tutor 01 Introduction to C Programming Language
SysProg-Tutor 01 Introduction to C Programming LanguageSysProg-Tutor 01 Introduction to C Programming Language
SysProg-Tutor 01 Introduction to C Programming LanguageWongyos Keardsri
 

Destaque (18)

Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)Java-Answer Chapter 12-13 (For Print)
Java-Answer Chapter 12-13 (For Print)
 
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
 
IP address anonymization
IP address anonymizationIP address anonymization
IP address anonymization
 
How to Study and Research in Computer-related Master Program
How to Study and Research in Computer-related Master ProgramHow to Study and Research in Computer-related Master Program
How to Study and Research in Computer-related Master Program
 
Java-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional ArraysJava-Chapter 10 Two Dimensional Arrays
Java-Chapter 10 Two Dimensional Arrays
 
Java-Chapter 04 Iteration Statements
Java-Chapter 04 Iteration StatementsJava-Chapter 04 Iteration Statements
Java-Chapter 04 Iteration Statements
 
Java-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and ApplicationsJava-Chapter 09 Advanced Statements and Applications
Java-Chapter 09 Advanced Statements and Applications
 
Java-Chapter 06 File Operations
Java-Chapter 06 File OperationsJava-Chapter 06 File Operations
Java-Chapter 06 File Operations
 
Java-Chapter 08 Methods
Java-Chapter 08 MethodsJava-Chapter 08 Methods
Java-Chapter 08 Methods
 
Java-Chapter 11 Recursions
Java-Chapter 11 RecursionsJava-Chapter 11 Recursions
Java-Chapter 11 Recursions
 
Java-Answer Chapter 01-04
Java-Answer Chapter 01-04Java-Answer Chapter 01-04
Java-Answer Chapter 01-04
 
Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)Java-Answer Chapter 07 (For Print)
Java-Answer Chapter 07 (For Print)
 
Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)Java-Answer Chapter 05-06 (For Print)
Java-Answer Chapter 05-06 (For Print)
 
The next generation intelligent transport systems: standards and applications
The next generation intelligent transport systems: standards and applicationsThe next generation intelligent transport systems: standards and applications
The next generation intelligent transport systems: standards and applications
 
การควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรมการควบคุมทิศทางการทำงานของโปรแกรม
การควบคุมทิศทางการทำงานของโปรแกรม
 
SysProg-Tutor 03 Unix Shell Script Programming
SysProg-Tutor 03 Unix Shell Script ProgrammingSysProg-Tutor 03 Unix Shell Script Programming
SysProg-Tutor 03 Unix Shell Script Programming
 
SysProg-Tutor 02 Introduction to Unix Operating System
SysProg-Tutor 02 Introduction to Unix Operating SystemSysProg-Tutor 02 Introduction to Unix Operating System
SysProg-Tutor 02 Introduction to Unix Operating System
 
SysProg-Tutor 01 Introduction to C Programming Language
SysProg-Tutor 01 Introduction to C Programming LanguageSysProg-Tutor 01 Introduction to C Programming Language
SysProg-Tutor 01 Introduction to C Programming Language
 

Semelhante a Java-Chapter 12 Classes and Objects

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptIMC Institute
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นPornsitaintharak
 
โปรแกรมย่อยและฟังก์ชันมาตรฐาน
โปรแกรมย่อยและฟังก์ชันมาตรฐานโปรแกรมย่อยและฟังก์ชันมาตรฐาน
โปรแกรมย่อยและฟังก์ชันมาตรฐานPrapatsorn Keawnoun
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาT'tle Tanwarat
 
Java Programming [5/12] : Build Graphical User Interface
Java Programming [5/12] : Build Graphical User InterfaceJava Programming [5/12] : Build Graphical User Interface
Java Programming [5/12] : Build Graphical User InterfaceIMC Institute
 

Semelhante a Java-Chapter 12 Classes and Objects (20)

8.Inheritance
8.Inheritance8.Inheritance
8.Inheritance
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
Know1 3
Know1 3Know1 3
Know1 3
 
Java intro
Java introJava intro
Java intro
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
Know 1 1
Know 1 1Know 1 1
Know 1 1
 
Java 7&12 6 2
Java 7&12 6 2Java 7&12 6 2
Java 7&12 6 2
 
c# part1.pptx
c# part1.pptxc# part1.pptx
c# part1.pptx
 
5.Methods cs
5.Methods cs5.Methods cs
5.Methods cs
 
โปรแกรมย่อยและฟังก์ชันมาตรฐาน
โปรแกรมย่อยและฟังก์ชันมาตรฐานโปรแกรมย่อยและฟังก์ชันมาตรฐาน
โปรแกรมย่อยและฟังก์ชันมาตรฐาน
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
Java Programming [5/12] : Build Graphical User Interface
Java Programming [5/12] : Build Graphical User InterfaceJava Programming [5/12] : Build Graphical User Interface
Java Programming [5/12] : Build Graphical User Interface
 
Computer Programming 4
Computer Programming 4Computer Programming 4
Computer Programming 4
 
เมธอด
เมธอดเมธอด
เมธอด
 
เมธอด
เมธอดเมธอด
เมธอด
 
เมธอด
เมธอดเมธอด
เมธอด
 

Mais de Wongyos Keardsri

Discrete-Chapter 11 Graphs Part III
Discrete-Chapter 11 Graphs Part IIIDiscrete-Chapter 11 Graphs Part III
Discrete-Chapter 11 Graphs Part IIIWongyos Keardsri
 
Discrete-Chapter 11 Graphs Part II
Discrete-Chapter 11 Graphs Part IIDiscrete-Chapter 11 Graphs Part II
Discrete-Chapter 11 Graphs Part IIWongyos Keardsri
 
Discrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part IDiscrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part IWongyos Keardsri
 
Discrete-Chapter 09 Algorithms
Discrete-Chapter 09 AlgorithmsDiscrete-Chapter 09 Algorithms
Discrete-Chapter 09 AlgorithmsWongyos Keardsri
 
Discrete-Chapter 08 Relations
Discrete-Chapter 08 RelationsDiscrete-Chapter 08 Relations
Discrete-Chapter 08 RelationsWongyos Keardsri
 
Discrete-Chapter 07 Probability
Discrete-Chapter 07 ProbabilityDiscrete-Chapter 07 Probability
Discrete-Chapter 07 ProbabilityWongyos Keardsri
 
Discrete-Chapter 06 Counting
Discrete-Chapter 06 CountingDiscrete-Chapter 06 Counting
Discrete-Chapter 06 CountingWongyos Keardsri
 
Discrete-Chapter 05 Inference and Proofs
Discrete-Chapter 05 Inference and ProofsDiscrete-Chapter 05 Inference and Proofs
Discrete-Chapter 05 Inference and ProofsWongyos Keardsri
 
Discrete-Chapter 04 Logic Part II
Discrete-Chapter 04 Logic Part IIDiscrete-Chapter 04 Logic Part II
Discrete-Chapter 04 Logic Part IIWongyos Keardsri
 
Discrete-Chapter 04 Logic Part I
Discrete-Chapter 04 Logic Part IDiscrete-Chapter 04 Logic Part I
Discrete-Chapter 04 Logic Part IWongyos Keardsri
 
Discrete-Chapter 03 Matrices
Discrete-Chapter 03 MatricesDiscrete-Chapter 03 Matrices
Discrete-Chapter 03 MatricesWongyos Keardsri
 
Discrete-Chapter 02 Functions and Sequences
Discrete-Chapter 02 Functions and SequencesDiscrete-Chapter 02 Functions and Sequences
Discrete-Chapter 02 Functions and SequencesWongyos Keardsri
 
Discrete-Chapter 12 Modeling Computation
Discrete-Chapter 12 Modeling ComputationDiscrete-Chapter 12 Modeling Computation
Discrete-Chapter 12 Modeling ComputationWongyos Keardsri
 
Java-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindowJava-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindowWongyos Keardsri
 

Mais de Wongyos Keardsri (16)

Discrete-Chapter 11 Graphs Part III
Discrete-Chapter 11 Graphs Part IIIDiscrete-Chapter 11 Graphs Part III
Discrete-Chapter 11 Graphs Part III
 
Discrete-Chapter 11 Graphs Part II
Discrete-Chapter 11 Graphs Part IIDiscrete-Chapter 11 Graphs Part II
Discrete-Chapter 11 Graphs Part II
 
Discrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part IDiscrete-Chapter 11 Graphs Part I
Discrete-Chapter 11 Graphs Part I
 
Discrete-Chapter 10 Trees
Discrete-Chapter 10 TreesDiscrete-Chapter 10 Trees
Discrete-Chapter 10 Trees
 
Discrete-Chapter 09 Algorithms
Discrete-Chapter 09 AlgorithmsDiscrete-Chapter 09 Algorithms
Discrete-Chapter 09 Algorithms
 
Discrete-Chapter 08 Relations
Discrete-Chapter 08 RelationsDiscrete-Chapter 08 Relations
Discrete-Chapter 08 Relations
 
Discrete-Chapter 07 Probability
Discrete-Chapter 07 ProbabilityDiscrete-Chapter 07 Probability
Discrete-Chapter 07 Probability
 
Discrete-Chapter 06 Counting
Discrete-Chapter 06 CountingDiscrete-Chapter 06 Counting
Discrete-Chapter 06 Counting
 
Discrete-Chapter 05 Inference and Proofs
Discrete-Chapter 05 Inference and ProofsDiscrete-Chapter 05 Inference and Proofs
Discrete-Chapter 05 Inference and Proofs
 
Discrete-Chapter 04 Logic Part II
Discrete-Chapter 04 Logic Part IIDiscrete-Chapter 04 Logic Part II
Discrete-Chapter 04 Logic Part II
 
Discrete-Chapter 04 Logic Part I
Discrete-Chapter 04 Logic Part IDiscrete-Chapter 04 Logic Part I
Discrete-Chapter 04 Logic Part I
 
Discrete-Chapter 03 Matrices
Discrete-Chapter 03 MatricesDiscrete-Chapter 03 Matrices
Discrete-Chapter 03 Matrices
 
Discrete-Chapter 02 Functions and Sequences
Discrete-Chapter 02 Functions and SequencesDiscrete-Chapter 02 Functions and Sequences
Discrete-Chapter 02 Functions and Sequences
 
Discrete-Chapter 01 Sets
Discrete-Chapter 01 SetsDiscrete-Chapter 01 Sets
Discrete-Chapter 01 Sets
 
Discrete-Chapter 12 Modeling Computation
Discrete-Chapter 12 Modeling ComputationDiscrete-Chapter 12 Modeling Computation
Discrete-Chapter 12 Modeling Computation
 
Java-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindowJava-Chapter 14 Creating Graphics with DWindow
Java-Chapter 14 Creating Graphics with DWindow
 

Java-Chapter 12 Classes and Objects

  • 1. Classes and Objects - 12 Computer Programming using Java 157 CHAPTER คลาสและอ๊อบเจ็ค 12 (Classes and Objects) 1. ความร้ ูเบืองต้ นของคลาสและอ๊ อบเจ็ค (Introduction to Classes and Objects) ้ 1. องค์ ประกอบและลักษณะทั่วไปของคลาสและอ๊ อบเจ็ค ในแพ็คเก็จ (Package) มี Package คลาส (Classes) Class A Class B Class C Attributes Attributes Attributes ในคลาสมีแอตทริบิว (Attributes) ตัวสร้ าง Constructor Constructor Constructor (Constructors) และเมท็อด (Methods) Methods Methods Methods ในเมท็อดมีตวแปรและคําสัง ั ่ new new new คลาสแต่ละคลาสสามารถสร้ างตัวแทนของ คลาสนัน (Instance of Class) ขึ ้นได้ ซึง ้ ่ Object a Object b Object c เรี ยกว่าอ๊ อบเจ็ค (Objects) Attributes Attributes Attributes Method-1 Method-1 Method-1 อ๊ อบเจ็คเป็ นตัวสําเนาของคลาสต้ นแบบ ซึง ่ . . . . . . . . . จะมีทงแอตทริบิวและเมท็อดทุกๆ ตัวเหมือน ั้ Method-N Method-N Method-N กับที่คลาสต้ นแบบมี (แต่ไม่มีตวสร้ าง) ั 2. นิยามและคําศัพท์ ท่ เกี่ยวข้ องกับคลาสและอ๊ อบเจ็ค ี แพ็คเก็จ (Package) คือ สิงที่เก็บรวบรวมคลาสและห่อหุ้มคลาสเอาไว้ เป็ นกลุมๆ (จะยังไม่กล่าวถึงมากนัก) ่ ่ คลาส (Class) คือ ต้ นแบบของโปรแกรมหนึงๆ ซึงภายในประกอบไปด้ วย แอตทริบิว ตัวสร้ าง และเมท็อด ่ ่ แอตทริบว (Attribute) ิ คือ ตัวแปรของคลาส หรื อตัวแปรที่ประกาศอยูภายในคลาสแต่อยู่นอกเมท็อดใดๆ ่ ตัวสร้ าง (Constructor) คือ ส่วนที่กําหนดค่าเริ่มต้ นของคลาส ซึงจะกําหนดค่าเริ่มต้ นให้ กบแอตทริบิวทุกตัวในคลาส ่ ั เมท็อด (Method) คือ ส่วนการทํางานย่อยของคลาส หรื อโปรแกรมย่อยที่บงบอกการกระทําของคลาส ่ ตัวแปร (Variable) คือ ตัวแปรของเมท็อด หรื อตัวแปรใดๆ ที่ประกาศภายในเมท็อดใดเมท็อดหนึง ่ คําสั่ง (Statement) คือ คําสังภายในเมท็อด หรื อคําสังใดๆ (if, for, …) ที่ปรากฎภายในเมท็อดใดเมท็อดหนึง ่ ่ ่ อ๊ อบเจ็ค (Object) คือ ตัวแทนของคลาส ซึงจะมีทกอย่างเหมือนที่คลาสต้ นแบบมี (ยกเว้ นตัวสร้ างที่ไม่มี) ่ ุ นําเสนอมุมมองในการเขียนโปรแกรมแบบใหม่ที่เรี ยกว่า การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming) © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 2. 158 Computer Programming using Java 12 - Classes and Objects โจทย์ ข้อที่ 1 [ระดับง่ าย] จงระบุส่วนประกอบต่ างๆ ของคลาสจากโปรแกรมต่ อไปนี ้ (10 คะแนน) 1 public class Num { 2 private int x; 3 private double y; 4 public Num() { 5 x = 0; y = 0.0; 6 } 7 public Num(int m, double n) { 8 x = m; y = n; 9 } 10 public int addNX(int n) { 11 return n + x; 12 } 13 public double addNY(double n) { 14 return n + y; ผลลัพธ์ ท่ ีได้ 15 } 16 public void showXY() { 17 System.out.println(x); 18 System.out.println(y); 19 } 20 } 1 public class RunNum { 2 public static void main(String[] args){ 3 Num obj = new Num(5, 7.0); 4 obj.showXY(); 5 int a = obj.addNX(4); 6 double b = obj.addNY(13.0); 7 System.out.println(a); 8 System.out.println(b); 9 } 10 } จากโจทย์ ข้อที่ 1 สามารถวาดเป็ น Class Diagram เพื่อใช้ ประกอบความเข้ าใจได้ ดงนี ้ ั Num obj: Num RunNum int x double y x = 5 public static void main(…) { y = 7.0 Num obj = new Num(5, 7.0); Num() new Num(int m, double n) obj.showXY(); addNX(int n) int a = obj.addNX(4); addNY(double n) ... showXY() } int addNX(int n) double addNY(double n) void showXY() โจทย์ ข้อที่ 2 [ระดับง่ าย] จงพิจารณาข้ อความต่ อไปนีถก ( ) หรือผิด ( ) (15 คะแนน) ู้ 1) คลาสทุกคลาสต้ องมีเมท็อดอย่างน้ อย 1 เมท็อดเสมอ (ไม่มีเมท็อดไม่ได้ ) 2) คลาสทุกคลาสต้ องมีเมท็อด main(…) เสมอ เพื่อเป็ นตัวประสานเมท็อดอื่นๆ 3) แอตทริ บวของคลาสจะมีหรื อไม่มีก็ได้ ซึงขึ ้นอยูกบการออกแบบและการใช้ งานคลาสนัน ิ ่ ่ ั ้ 4) คลาสสามารถมีแอตทริบวเพียงส่วนเดียวได้ โดยไม่ต้องมีเมท็อด (ประกาศเพียงแอตทริบว) ิ ิ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 3. Classes and Objects - 12 Computer Programming using Java 159 5) คลาสสามารถมีเมท็อดเพียงส่วนเดียวได้ โดยไม่ต้องมีแอตทริบว ิ 6) อ๊ อบเจ็คเป็ นตัวแทนของคลาส และมีแอตทริ บวและเมท็อดทุกตัวเหมือนที่คลาสนันมี ิ ้ 7) ตัวแปรที่ประกาศภายในเมท็อดใดๆ สามารถเรี ยกใช้ ได้ เฉพาะเมท็อดนัน ้ 8) ตัวแปรที่ประกาศภายนอกเมท็อดใดๆ สามารถเรี ยกใช้ ได้ จากทุกๆ เมท็อด 9) ตัวแปรที่ประกาศภายนอกเมท็อดใดๆ คือแอตทริบว หรื อตัวแปรของคลาส ิ 10) ตัวแปรที่ประกาศภายในเมท็อดใดๆ คือตัวแปรทัวไป หรือตัวแปรของเมท็อด ่ 11) แอตทริ บวสามารถประกาศชื่อซํ ้ากันได้ แต่จะต้ องกําหนดค่าเริ่มต้ นที่ตางกัน ิ ่ 12) เมท็อดสามารถประกาศชื่อซํ ้ากันได้ แต่จะต้ องมีรายการพารามิเตอร์ ท่ีตางกัน ่ 13) ตัวสร้ างจะปรากฎอยูในทุกอ๊ อบเจ็คที่สร้ างจากคลาสต้ นแบบ ่ 14) ตัวสร้ างทําหน้ าที่ในการกําหนดค่าเริ่ มต้ นให้ กบแอตทริบวทุกตัวเมื่อเริ่มสร้ างอ๊ อบเจ็คใหม่ ั ิ 15) แอตทริ บวในคลาสต้ นแบบจะต้ องกําหนดค่าเริ่มต้ นเสมอเมื่อเริ่มสร้ างคลาสต้ นแบบ ิ 2. คลาส (Classes) 1. การประกาศและสร้ างองค์ ประกอบของคลาส คลาสหนึงๆ มีองค์ประกอบ 3 ส่วนได้ แก่ แอตทริบว ตัวสร้ าง และเมท็อด ซึงมีวิธีการประกาศและสร้ างดังต่อไปนี ้ ่ ิ ่ 1) การประกาศและสร้ างคลาส หัวคลาส [ตัวบ่ งคุณลักษณะ] class <ชื่อคลาส> { [แอตทริบว (มีก่ ีตวก็ได้ )] ิ ั ชื่อคลาสควรขึ ้นต้ นด้ วยอักษรตัวพิมพ์ ใหญ่ [ตัวสร้ าง (มีก่ ีตวก็ได้ )] ั ตัวคลาส ถ้ าชื่อมีหลายคําสามารถเขียนแบบหลังอูฐได้ [เมท็อด (มีก่ ีตวก็ได้ )] ั ตัวบ่งคุณลักษณะ (Modifier) จะมีหรื อไม่มีก็ได้ }. ถ้ ามีจะมีได้ ดงนี ้คือ public และ final ั ตัวอย่าง 1 public class Num { 2 int x; ถ้ าสร้ างคลาสหลายคลาสอยูภายในแฟ้ ม *.java เดียว ่ 3 public double y; กัน จะต้ องมีเพียง 1 คลาสเท่านันที่เป็ นแบบ public แต่ ้ 4 Num() { 5 x = 0; y = 0.0; ถ้ าสร้ างคลาสแบบแยกแฟ้ มกัน (หนึงแฟมหนึงคลาส) จะ ่ ้ ่ 6 } สามารถใช้ public ได้ ในทุกคลาส (ในบทนี้กาหนดให้ ํ 7 ... 8 } แต่ ละคลาสสร้ างแบบแยกแฟมกัน) ้ 2) การประกาศและสร้ างแอตทริบว ซึงจะคล้ ายกับการประกาศและสร้ างตัวแปรในบทที่ 2 ิ ่ [ตัวบ่ งคุณลักษณะ] <ประเภทข้ อมล> <ชื่อแอตทริ บว>; ู ิ + public - private # protected ตัวบ่งคุณลักษณะ (Modifier) จะมีหรื อไม่มีก็ได้ ถ้ ามีจะมีได้ ดงนี ้คือ ั static final © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 4. 160 Computer Programming using Java 12 - Classes and Objects ตัวอย่าง โดยทัวไปแอตทริบิวที่มี static กํากับอยู่ จะกํา- ่ 1 public class Data { หนดค่าเริ่มต้ นให้ แอตทริบิวทันทีเมื่อเริ่มสร้ างคลาส 2 public static int n = 1; 3 private double data; ต้ นแบบ แต่แอตทริบิวอื่นๆ ที่ไม่มี static กํากับ 4 ... จะไม่มีการกําหนดค่าเริ่มต้ นใดๆ ทังสิ ้น ้ 5 } เมท็อดทุกเมท็อดภายในคลาสสามารถเรี ยกใช้ งานแอตทริบิวได้ 3) การประกาศและสร้ างตัวสร้ าง ตัวสร้ าง (Constructor) คือ เมท็อดที่มีชื่อเดียวกับชื่อคลาส (เมท็อดทีชือขึ้นต้นด้วยตัวอักษรพิมพ์ใหญ่) ่่ [ตัวบ่ งคุณลักษณะ] <ชื่อตัวสร้ าง> ([พารามิเตอร์ ]) { ตัวสร้ างไม่มี Return Type [กําหนดค่ าเริ่ มต้ นให้ กับแอตทริ บวทุกตัว] ิ ตัวบ่งคุณลักษณะจะมีหรื อไม่มีก็ได้ ถ้ า } . มีจะมีได้ แบบเดียวคือ public ตัวอย่าง วิธีการเขียนตัวสร้ าง คือ ให้ ดชื่อคลาสว่าชื่ออะไร ก็ ู 1 public class Number { 2 public long x; จะให้ ชื่อตัวสร้ างเป็ นชื่อเดียวกับชื่อคลาสนัน ้ 3 private int y; 4 public Number() { ตัวสร้ างมีได้ หลายแบบซึง Overload กัน ่ 5 x = 0L; 6 y = 0; ตัวสร้ างถูกเรี ยกใช้ ทกครังเมื่อมีการสร้ างอ๊ อบเจ็คใหม่ ุ ้ 7 } 8 public Number(long a, int b) { 9 x = a; 10 y = b; 11 } คลาสใดที่ไม่มีตวสร้ าง คอมไพเลอร์ จะใส่ตวสร้ างให้ ั ั 12 public Number(double k) { อัตโนมัติซงเป็ นตัวสร้ างเริ่ มต้ น (Default Constructor) ึ่ 13 x = y = (int) k; 14 } แต่ถ้ามีตวสร้ างอยูแล้ ว คอมไพเลอร์ จะใช้ ตวสร้ างนัน ั ่ ั ้ 15 ... ในการทํางาน โดยไม่มีการใส่ตวสร้ างเริ่ มต้ นให้ อีก ั 16 } 4) การประกาศและสร้ างเมท็อด จะเหมือนกับการประกาศและสร้ างเมท็อดในบทที่ 8 [ตัวบ่ งคุณลักษณะ] <ประเภทข้ อมลที่ส่งกลับ> <ชื่อเมท็อด> ([พารามิเตอร์ ]) { ู [ตัวแปรและคําสั่ง] ตัวเมท็อด หัวเมท็อด } . ตัวอย่าง 1 public class Operation { 2 ... ม็อดดิฟายเออร์ ของเมท็อดมีได้ ดงนี ้คือ ั 3 public int incrX(int x) { 4 x = x + 1; public, private, protected, 5 return x; static และ final 6 } 7 ... 8 } ดูรายละเอียดเพิ่มเติมในบทที่ 8 (ที เ่ รี ยนผ่านมา) © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 5. Classes and Objects - 12 Computer Programming using Java 161 โจทย์ ข้อที่ 3 [ระดับง่ าย] จงเขียนโปรแกรมภาษาจาวาให้ สมบรณ์ เพื่อสร้ างคลาสชื่อ Course ซึ่งเป็ น ู ต้ นแบบของวิชาใดๆ ในจุฬาฯ โดยประกอบไปด้ วยรายละเอียดดังต่ อไปนี ้ (30 คะแนน) public class Course { //แอตทริบว 3 ตัว (โดยไม่ ต้องกําหนดค่ าใดๆ ให้ กับแอตทริบว) มีดงต่ อไปนี ้ (3 คะแนน) ิ ิ ั //แอตทริบวชื่อ id แบบ private เพื่อเก็บรหัสวิชา (Course ID) ิ ให้ จนตนาการว่ าแอตทริ ิ //แอตทริบวชื่อ title แบบ public เพื่อเก็บชื่อวิชา (Course Title) ิ บิวเหล่ านีมีค่าพร้ อมแล้ ว ้ //แอตทริบวชื่อ credit แบบ protected เพื่อเก็บจํานวนหน่ วยกิต (Credit) สามารถเรียกใช้ ได้ เลย ิ //ตัวสร้ างแบบไม่ มีพารามิเตอร์ ใดๆ เพื่อกําหนดค่ าเริ่ มต้ นให้ กับแอตทริ บิวทัง 3 ตัวตามค่ าเริ่ มต้ น ้ ของประเภทแอตทริบวนันๆ (เช่ น int เป็ น 0, String เป็ น "" เป็ นต้ น) (3 คะแนน) ิ ้ //ตัวสร้ างแบบมีพารามิเตอร์ 3 ตัว เพื่อกําหนดค่ าเริ่มต้ นให้ กับแอตทริบวทัง 3 ตัวตามลําดับ (3 คะแนน) ิ ้ //เมท็อด setID(…)แบบ public ที่รับตัวเลขจํานวนเต็มผ่ านทางพารามิเตอร์ หนึ่งค่ า เพื่อใช้ สําหรั บ กําหนดค่ าให้ กับแอตทริบว id โดยไม่ ต้องคืนค่ ากลับ (3 คะแนน) ิ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 6. 162 Computer Programming using Java 12 - Classes and Objects //เมท็อด setTitle(…)แบบ public ที่รับข้ อความผ่ านทางพารามิเตอร์ หนึ่งค่ า เพื่อใช้ สําหรั บกํา- หนดค่ าให้ กับแอตทริบว title โดยไม่ ต้องคืนค่ ากลับ (3 คะแนน) ิ //เมท็อด setCredit(…)แบบ public ที่รับตัวเลขจํานวนจริงผ่ านทางพารามิเตอร์ หนึ่งค่ า เพื่อใช้ สํา- หรับกําหนดค่ าให้ กับแอตทริบว credit โดยไม่ ต้องคืนค่ ากลับ (3 คะแนน) ิ //เมท็อด getLevel(…)แบบ public เพื่อคืนค่ าระดับการศึกษาที่ระบุในรหัสวิชา โดยให้ ตัวเลขหลัก ที่ 3 จากทางขวามือของรหัสวิชาแทนระดับการศึกษา เช่ น 2110191 ตัวเลข 1 แทนระดับการศึกษา เป็ นต้ น ซึ่งระดับการศึกษาประกอบไปด้ วย 2 ระดับได้ แก่ Undergraduate (ตัวเลข 1-4) และ Graduated (ตัวเลข 5 เป็ นต้ นไป) โดยกําหนดให้ คืนค่ าเป็ นชื่อของระดับการศึกษานันๆ (3 คะแนน) ้ //เมท็อด getFaculty(…)แบบ public เพื่อคืนค่ ารหัสคณะที่เปิ ดสอนวิชาดังกล่ าว โดยรหัสคณะคือ ตัวเลขสองหลักแรกของรหัสวิชาเริ่มจากทางซ้ ายมือ เช่ น 2110191 ตัวเลข 21 แทนรหัสคณะ เป็ นต้ น (3 คะแนน) © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 7. Classes and Objects - 12 Computer Programming using Java 163 //เมท็อด getDepartment(…)แบบ public เพื่อคืนค่ ารหัสภาควิชาที่เปิ ดสอนวิชาดังกล่ าว โดยรหัส ภาควิชาคือตัวเลขสองหลักที่ 3-4 ของรหัสวิชาเริ่มจากทางซ้ ายมือ เช่ น 2110191 ตัวเลข 10 แทนรหัส ของภาควิชา เป็ นต้ น (3 คะแนน) //เมท็อด toString(…)แบบ public เพื่อคืนค่ ารายละเอียดของวิชาที่เก็บอย่ ูในแอตทริบิวทุกตัวใน รปแบบของข้ อความดังตัวอย่ างเช่ น 2110191 Innovative Thinking (3) เป็ นต้ น (3 คะแนน) ู } //End of class 2. ขอบเขตของตัวแปร พารามิเตอร์ และแอตทริบว ิ 1) ตัวแปร คือ ตัวแปรที่ประกาศอยู่ภายในเมท็อด โดยจะปรากฏอยู่ที่ตวเมท็อด (Body) ซึงถ้ าตัวแปรใดประ ั ่ กาศในเมท็อดไหนแล้ วจะเรี ยกใช้ งานได้ แต่เพียงในเมท็อดนันเท่านัน (Local Variable) ้ ้ 2) พารามิเตอร์ คือ ตัวแปรที่ประกาศอยู่ภายในเมท็อด แต่จะปรากฏอยู่ที่หวเมท็อด (Head) จึงเรี ยกชื่อเสีย ั ใหม่วาพารามิเตอร์ ซึงพารามิเตอร์ ใดๆ นันจะมีคณสมบัตเิ ช่นเดียวกับตัวแปร ่ ่ ้ ุ 3) แอตทริ บิว คือ ตัวแปรที่ประกาศอยู่ภายในคลาสแต่อยู่นอกเมท็อดใดๆ ซึ่งถ้ าแอตทริ บิวประกาศขึ ้นแล้ ว จะสามารถเรี ยกใช้ งานได้ จากทุกเมท็อดภายในคลาสนัน (Global Variable) ้ ตัวอย่าง x และ y คือ แอตทริ บิว 1 public class Test { getX() คืนค่าแอตทริ วบิว x 2 private static int x = 10; getX(int x) คืนค่าพารามิเตอร์ 3 private static int y = 1; 4 public static int getX() { return x; } 5 public static int getX(int x) { return x; } 6 public static int incX(int y) { return x + y; } ค่า x มาจากแอตทริ บิว x 7 8 public static void main(String[] args) { int x = 5; ค่า y มาจากพารามิเตอร์ y 9 System.out.println(x); 5 10 System.out.println(y); 1 11 System.out.println(getX()); 10 แสดงค่า x จากตัวแปร x 12 13 System.out.println(getX(2)); System.out.println(incX(x)); 2 15 แสดงค่า y จากแอตทริบิว y 14 } 15 } ตัวแปร x ในเมท็อด main(…) เป็ นคนละตัวกับพารามิเตอร์ x ในเมท็อด getX(int x) © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 8. 164 Computer Programming using Java 12 - Classes and Objects 4) ภาพรวมของตัวแปร พารามิเตอร์ และแอตทริบว ิ public class TestClass { 1 Attribute ตัวแปรกับพารามิเตอร์ ประ กาศชื่อซํากันได้ หรื อไม่ ? ้ public int add( 2 Parameter ) { 3 Variable ตัวแปรกับแอตทริบวประ ิ return … ; } //End of method กาศชื่อซํากันได้ หรื อไม่ ? ้ } //End of class โจทย์ ข้อที่ 4 [ระดับง่ าย] จงแสดงผลลัพธ์ จากโปรแกรมและตอบคําถามต่ อไปนี ้ (10 คะแนน) 1 public class Test { 2 private static int x = 5; 3 private static int y = 2; 4 public static void main(String[] args) { 5 int x = 9; 6 System.out.println(x); 7 System.out.println(getX()); 8 System.out.println(showX()); 9 y = 1; 10 System.out.println(y); 11 System.out.println(getY()); 12 System.out.println(showY()); 13 int y = 11; 14 System.out.println(y); 15 System.out.println(getY()); 16 System.out.println(showY()); 17 } 18 public static int getX() { 19 20 } return x; 1) ค่ า y ในบรรทัดที่ 10 คือแอตทริบว ิ 21 public static int getY() { y หรื อตัวแปร y 22 return y; 23 } 24 public static int showX() { 25 int x = 7; 26 return x; 27 28 } public static int showY() { 2) ค่ า y ในบรรทัดที่ 14 คือแอตทริบว ิ 29 int y = 12; y หรื อตัวแปร y 30 return y; 31 } 32 } 3. อ๊ อบเจ็ค (Objects) 1. นิยามของอ๊ อบเจ็ค 1) อ๊ อบเจ็คเป็ นตัวแทนของคลาส ซึงใช้ สําหรับอ้ างอิงแอตทริบวและเมท็อดภายในคลาสนัน โดยทัวไปคลาสที่ ่ ิ ้ ่ สร้ างขึ ้นเป็ นเพียงคลาสต้ นแบบที่ไม่สามารถใช้ งานได้ จริ ง ดังนันการสร้ างอ๊ อบเจ็คก็เป็ นเสมือนการคัดลอก ้ คลาสต้ นแบบเพื่อนําไปใช้ งานนันเอง (การคัดลองทําให้ คลาสต้ นแบบไม่เสียหาย) ่ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 9. Classes and Objects - 12 Computer Programming using Java 165 2) กระบวนการเรี ยกและการทํางานของอ๊ อบเจ็คมีดงนี ้ ั อ๊ อบเจ็คมีทกอย่างเหมือน ุ Class A Object a คลาสทุกประการ คลาสต้ นแบบ Attributes Attributes a.attr1 = 0 Constructor New Object Method-1 เรี ยกใช้ a.method1() a.method2() . . . Methods การคัดลอก Method-N เรี ยกใช้ แอตทริบิวและเมท็อด ผ่านทางอ๊ อบเจ็ค 2. การประกาศและสร้ างอ๊ อบเจ็ค 1) การประกาศตัวแปรอ๊ อบเจ็ค เหมือนการประกาศตัวแปรทัวไปเพียงแต่ ่ <ชื่อคลาส> <ชื่ออ๊ อบเจ็ค>; มีชนิดตัวแปรเป็ นชื่อคลาส เช่น Student std; / Car car; / Account obj; 2) การสร้ างอ๊ อบเจ็ค (ใช้ การ new) <ชื่ออ๊ อบเจ็ค> = new <ชื่อคลาส>(…); เช่น std = new Student(52300121); / car = new Car(); / obj = new Account(101); 3) รวมขันตอน 2 ขันตอนในข้ อ 1 และ 2 เข้ าด้ วยกัน (นิยมประกาศและสร้ างอ๊ อบเจ็คแบบวิธีนี ้) ้ ้ <ชื่อคลาส> <ชื่ออ๊ อบเจ็ค> = new <ชื่อคลาส>(…); ส่วนของ <ชื่อคลาส>(…) ก็คือตัว สร้ าง (Constructor) ของคลาสนันเอง ่ <ชื่อคลาส> <ชื่ออ๊ อบเจ็ค> = new <ตัวสร้ าง>; เช่น Student std = new Student(52300121); / Account obj = new Account(101); หมายเหตุ ค่าพารามิเตอร์ ที่จะใส่เข้ าไปภายในวงเล็บหลังชื่อคลาสหรื อหลังชื่อตัวสร้ างนัน ให้ พจารณาจาก ้ ิ คลาสต้ นแบบว่ามีตวสร้ างแบบใดบ้ างที่ประกาศขึ ้นใช้ งาน ั 4) ตัวอย่างการสร้ างและใช้ งานอ๊ อบเจ็ค คลาสประมวลผล 1 public class Digit { 1 public class TestDigit { 2 public int x; 2 public static void main(String[] args){ 3 Digit() { 3 Digit d = new Digit(); 4 x = 0; ตัวสร้ าง 4 Digit e = new Digit(1); แอตทริบิวทุกตัวของ 5 } 5 Digit f = new Digit(2); 6 Digit(int n) { 6 int digit1 = d.getX(); อ๊ อบเจ็คจะถูกกําหนด 7 x = n; 7 int digit2 = e.getX(); 8 } 8 int digit3 = f.getX(); ค่าเริ่มต้ นโดยตัวสร้ าง 9 public int getX(){ 9 } 10 return x; 10 } 11 } ภายในเมท็อด main มีการเรี ยกใช้ งานคลาสต้ นแบบผ่านทาง 12 } คลาสต้ นแบบ อ๊ อบเจ็ค โดยการเอา ชื่ออ๊ อบเจ็ค + จุด + สิ่งที่จะเรี ยก © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 10. 166 Computer Programming using Java 12 - Classes and Objects โจทย์ ข้อที่ 5 [ระดับง่ าย] จงหาผลลัพธ์ จากการทํางานของโปรแกรมต่ อไปนี ้ (8 คะแนน) 1 public class Student { คลาสต้ นแบบ 2 public int id; 3 public String name; 4 Student() { id = 0; name = ""; } 5 Student(int i, String n) { id = i; name = n; } 6 public String getName() { return name; } 7 public int getID() { return id; } 8 public char calGrad(int score) { 9 if(score > 60) { return 'S'; } 10 else { return 'U'; } 11 } 12 } 1 public class TestStudent { คลาสประมวลผล 2 public static void main(String args[]){ 3 Student y = new Student(101,"Taksin"); 4 Student z = new Student(102,"Apisit"); 5 Student x = new Student(); 6 System.out.println(x.getID() + "," + x.getName()); 7 System.out.println(y.getID() + "," + y.getName()); 8 System.out.println((z.getID() + 1) + "," + z.getName()); 9 System.out.println(y.getName()+ ":" + y.calGrad(49)); 10 System.out.println(z.getName()+ ":" + z.calGrad(79)); 11 } 12 } โจทย์ ข้อที่ 6 [ระดับง่ าย] จงเขียนคลาส TestNumber ให้ สมบรณ์ เพื่อเรี ยกใช้ งานคลาส Number โดยการ ู สร้ างอ๊ อบเจ็คที่มีชนิดเป็ น Number และเรี ยกใช้ งานเมท็อดตามเงื่อนไขต่ อไปนี ้ (10 คะแนน) 1 public class Number { คลาสต้ นแบบ 2 private double x; 3 private double y; 4 Number() { x = y = 0; } 5 Number(double a, double b) { x = a; y = b; } 6 public double add() { return x + y; } 7 public double sub() { return x - y; } 8 public double mul() { return x * y; } 9 public double div() { return x / y; } 10 public double mod() { return x % y; } 11 } //ประกาศหัวคลาส TestNumber import java.util.Scanner; public static void main(String[] args) { Scanner kb = new Scanner(System.in); //สร้ างอ๊ อบเจ็คชื่อ no1 ที่มีชนิดเป็ นคลาส Number (เป็ นตัวแทนของคลาส Number) © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 11. Classes and Objects - 12 Computer Programming using Java 167 //รั บค่ าจํานวนจริงจากแปนพิมพ์ 2 ค่ าเพื่อใช้ ในการสร้ างอ๊ อบเจ็คชื่อ no2 ที่มีชนิดเป็ นคลาส Number ้ //แสดงผลการบวก การลบ การคณ การหาร และการม็อด โดยเรี ยกเมท็อดผ่ านทางอ๊ อบเจ็ค no2 ู } //End of main } //End of class 4. การกําหนดคุณสมบัตและการใช้ งานคลาสและอ๊ อบเจ็ค ิ 1. การกําหนดตัวบ่ งคุณลักษณะให้ กับแอตทริบวและเมท็อด ิ 1) ตัวบ่งคุณลักษณะที่ใช้ กําหนดขอบเขตการเรี ยกใช้ แอตทริบวและเมท็อดได้ แก่ public, private และ ิ protected ซึงจะเป็ นตัวบอกว่าแอตทริ บวและเมท็อดจะถูกเรี ยกใช้ งานจากที่ ไหนได้ บ้าง (Where) ่ ิ Package java.test1 Package java.test2 1 Methods in A call modifier me(…) Class D 4 Methods in D call modifier me(…) Class A Class B modifier me(…) Methods in B call 2 modifier me(…) Class C Extends A 3 Methods in C call modifier me(…) 1 หมายถึง เรี ยกใช้ เมท็อด modifier me(…) จากภายในคลาสเดียวกัน (คลาส A) 2 หมายถึง เรี ยกใช้ เมท็อด modifier me(…) จากต่างคลาสกันแต่อยูภายในแพ็คเก็จเดียวกัน ่ 3 หมายถึง เรี ยกใช้ เมท็อด modifier me(…) จากต่างแพ็คเก็จกันแต่คลาสที่เรี ยกใช้ เป็ นสับคลาสกัน 4 หมายถึง เรี ยกใช้ เมท็อด modifier me(…) จากต่างแพ็คเก็จกันหรื อจากที่ใดๆ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 12. 168 Computer Programming using Java 12 - Classes and Objects สรุ ปเป็ นตารางขอบเขตการเรียกใช้ งานได้ ดงนี ้ ั รายละเอียดของ คลาสเดียวกัน ต่ างคลาสกัน เป็ นสับคลาสกัน ต่ างคลาสกัน ตัวบ่ งคุณลักษณะ แพ็คเก็จเดียวกัน แพ็คเก็จเดียวกัน (คลาสแม่ ลูก) ต่ างแพ็คเก็จกัน public me(…) private me(…) protected me(…) me(…) หมายเหตุ โดยทัวไปแอตทริ บิวนิยมประกาศเป็ น private และเมท็อดนิยมประกาศเป็ น public แต่ถ้า ่ ไม่เช่นนันก็ให้ ประกาศไปตามความต้ องการหรื อตามที่โจทย์กําหนด ้ 2) ตัวบ่งคุณลักษณะที่ใช้ กําหนดค่าประจําคลาสหรื อประจําอ๊ อบเจ็คของแอตทริ บิวและเมท็อดได้ แก่ static ซึงจะเป็ นตัวบอกว่าแอตทริบวและเมท็อดจะถูกเรี ยกใช้ งานอย่ างไรได้ บ้าง (How) ่ ิ รายละเอียดของ เรี ยกใช้ ผ่านทางคลาส เรี ยกใช้ ผ่านทางอ๊ อบเจ็ค ตัวบ่ งคุณลักษณะ ค่าประจําคลาส (มี static) ค่าประอ๊ อบเจ็ค (ไม่มี static) โจทย์ ข้อที่ 7 [ระดับง่ าย] จงประกาศและสร้ างแอตทริบวหรือหัวเมท็อดตามข้ อกําหนดต่ อไปนี ้ (18 คะแนน) ิ 1) แอตทริบวประจําอ๊ อบเจ็คชื่อ data ชนิดจํานวนจริง โดยสามารถเรียกใช้ งานได้ จากคลาสใดๆ ิ 2) แอตทริบิวประจําคลาสชื่อ var ชนิดจํานวนเต็ม โดยมีค่าเริ่มต้ นเท่ ากับ 10 และสามารถเรี ยกใช้ งาน ได้ จากภายในคลาสเดียวกันเท่ านัน ้ 3) แอตทริบวประจําคลาสชื่อ check ชนิดค่ าความจริง โดยสามารถเรี ยกใช้ งานได้ จากสับคลาส ิ 4) แอตทริบิวประจําอ๊ อบเจ็คชื่อ stdName เก็บรายชื่อนิสิตจํานวน 351 คน โดยสามารถเรี ยกใช้ งานได้ จากภายในคลาสเดียวกันเท่ านัน ้ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 13. Classes and Objects - 12 Computer Programming using Java 169 5) แอตทริบวประจําคลาสชื่อ m เก็บเมตริกซ์ ชนิดจํานวนเต็มขนาด 8 x 5 โดยสามารถเรี ยกใช้ จากที่ใดก็ได้ ิ 6) เมท็อดประจําอ๊ อบเจ็คชื่อ show เพื่อแสดงชื่อนิสิตและผลการเรี ยนเฉลี่ยที่รับจากพารามิเตอร์ ขึนบน ้ จอภาพ โดยสามารถเรียกใช้ งานได้ เฉพาะคลาสที่ประกาศเมท็อด show นีเ้ ท่ านัน ้ 7) เมท็อดประจําคลาสชื่อ search เพื่อใช้ ค้นหาตัวเลขจํานวนเต็ม x ที่รับเข้ ามาว่ ามีปรากฎอย่ ู ณ ตําแหน่ งใดในอาเรย์ num ที่รับเข้ ามาเช่ นกัน โดยสามารถเรียกใช้ งานได้ จากคลาสลกหลาน ู 8) เมท็อดประจําอ๊ อบเจ็คชื่อ mulMatrix เพื่อคํานวณค่ าหาผลคณของเมตริกซ์ สองมิตชนิดจํานวนจริง ู ิ 2 ตัวใดๆ โดยสามารถเรียกใช้ จากที่ใดก็ได้ 9) เมท็อดประจําคลาสชื่อ union เพื่อใช้ ยเนียนเซตของจํานวนเต็ม 2 เซ็ตใดๆ โดยเป็ นแบบสาธารณะ ู 2. วิธีการเรียกใช้ งานแอตทริบวและเมท็อด ิ 1) เรี ยกโดยตรง เป็ นการเรี ยกแอตทริ บิวหรื อเมท็อดที่อยู่ภายในคลาสเดียวกัน (ตามหลักการเรี ยกเมท็อดใน บทที่ 8-11 ที่ผานมา) โดยจะพิจารณาเมท็อดที่มี static และไม่มี static ดังเงื่อนไขต่อไปนี ้ ่ เมท็อดผ้ ูถกเรี ยก ู มี static เรี ยก มี static ได้ เมท็อดผ้ ูเรียก มี ไม่ มี มี static เรี ยก ไม่มี static ไม่ได้ มี ไม่มี static เรี ยก มี static ได้ ไม่มี static เรี ยก ไม่มี static ได้ ไม่ มี 2) เรียกผ่ านคลาส เป็ นการเรียกแอตทริ บวหรื อเมท็อดประจําคลาส (มี static) ที่อยูตางคลาสกัน ิ ่ ่ (1) เรี ยกแอตทริ บวผ่านคลาส ซึงเรี ยกแอตทริบวประเภทนี ้ว่า ตัวแปรประจําคลาส (Class Variable) ิ ่ ิ <ชื่อคลาส>.<ชื่อแอตทริ บว>; ิ ขึ ้นต้ นด้ วยตัวพิมพ์ใหญ่ ลงท้ ายไม่มีวงเล็บ เช่น Math.PI; Color.RED; © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 14. 170 Computer Programming using Java 12 - Classes and Objects (2) เรี ยกเมท็อดผ่านคลาส ซึงเรี ยกเมท็อดประเภทนี ้ว่า เมท็อดประจําคลาส (Class Method) ่ <ชื่อคลาส>.<ชื่อเมท็อด>(…); ขึ ้นต้ นด้ วยตัวพิมพ์ใหญ่ ลงท้ ายมีวงเล็บ เช่น Math.pow(2,3); Time.start(); 3) เรียกผ่ านอ๊ อบเจ็ค เป็ นการเรี ยกแอตทริ บวหรื อเมท็อดประจําอ๊ อบเจ็ค (ไม่มี static) ที่อยูตางคลาสกัน ิ ่ ่ (1) เรี ยกแอตทริ บวผ่านอ๊ อบเจ็ค ซึงเรี ยกแอตทริบวประเภทนี ้ว่า ตัวแปรประจําอ๊ อบเจ็ค (Object Variable) ิ ่ ิ หรื อ ตัวแปรตัวแทน (Instance Variable) <ชื่ออ๊ อบเจ็ค>.<ชื่อแอตทริ บว>; ิ ขึ ้นต้ นด้ วยตัวพิมพ์เล็ก ลงท้ ายไม่มีวงเล็บ เช่น objStd.id; no.x; g.y; (2) เรี ยกเมท็อดผ่านอ๊ อบเจ็ค ซึงเรี ยกเมท็อดประเภทนี ้ว่า เมท็อดประจําอ๊ อบเจ็ค (Object Method) หรื อ ่ เมท็อดตัวแทน (Instance Method) <ชื่ออ๊ อบเจ็ค>.<ชื่อเมท็อด>(…); ขึ ้นต้ นด้ วยตัวพิมพ์เล็ก ลงท้ ายมีวงเล็บ เช่น std.get(5230121); c.stop(); จงตอบคําถาม แอตทริบวหรือเมท็อดที่เป็ นแบบ static จะสามารถเรียกใช้ งานผ่ านทางอ๊ อบเจ็คได้ หรือไม่ ิ ได้ เราสามารถเรี ยกใช้ ทกอย่างผ่านทางอ๊ อบเจ็คได้ ไม่วาจะเป็ น static หรื อไม่ก็ตาม ุ ……………………………………………………………………………………………………………….. ่ โจทย์ ข้อที่ 8 [ระดับง่ าย] จงใช้ ตวเลือกต่ อไปนีเ้ พื่อระบุประเภทของแอตทริบวหรือเมท็อด (20 คะแนน) ั ิ (A) Class Variable (B) Class Method (C) Object Variable (D) Object Method ข้ อ แอตทริบวหรือเมท็อด ิ คําตอบ ข้ อ แอตทริบวหรื อเมท็อด ิ คําตอบ 1. Math.sqrt(x) 11. std.grad 2. p.colorCode(s) 12. Sqt.borders(a,b) 3. Array.equals(a, b) 13. in.readLine() 4. v.x 14. System.in 5. System.getProperties() 15. Math.random() 6. Integer.MAX_VALUE 16. in.hasNext() 7. kb.nextInt() 17. i.id_code 8. rectangle.setSize(w, h) 18. out.close() 9. Math.PI 19. String.format("%4d", x) 10. a.appendArrays(x,y) 20. o.name © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 15. Classes and Objects - 12 Computer Programming using Java 171 โจทย์ ข้อที่ 9 [ระดับปานกลาง] จงหาผลลัพธ์ จากการทํางานของโปรแกรมต่ อไปนี ้ (15 คะแนน) 1 public class Val { 2 public static int x; 3 public static int y; 4 public static String s; 5 public Val() { x = 0; y = 0; s = ""; } 6 public Val(int x, int y) { this.x = x; this.y = y; } 7 public static int getX() { return x; } 8 public static int getY() { return y; } 9 public static int getY(int y) { return y; } 10 public static String getS() { return s; } 11 public static String getS(String s) { return s; } 12 } 1 public class Test { 2 public static void main(String[] args) { 3 System.out.println(Val.x + "," + Val.y); 4 Val.x = 6; Val.y = 10; 5 System.out.println(Val.getX()+ "," + Val.getY()); 6 Val.s = "Good By A"; 7 System.out.println(Val.getS()); 8 System.out.println(Val.getS("See You F")); 9 Val v = new Val(); 10 System.out.println(v.x + "," + v.y); 11 v.x = 5; v.y = 7; 12 13 System.out.println(v.getX() + "," + v.getY()); System.out.println(Val.getX() + "," + Val.getY()); ข้ อนี ้แสดงให้ เห็นถึงผลกระ 14 Val w = new Val(9, 7); ทบในการประ กาศแอตทริ - 15 System.out.println(w.getX() + "," + w.getY()); 16 System.out.println(v.getX() + "," + v.getY()); บิวให้ เป็ นแบบ static ซึง ่ 17 v.s = "I love Java"; 18 System.out.println(w.getS()); จะทําให้ คาของแอตทริบิวนัน ่ ้ 19 } } เปลี่ยนแปลงแบบ Global 20 โจทย์ ข้อที่ 10 [ระดับปานกลาง] จงเขียนคลาส Dice ซึ่งเป็ นตัวแทนของลกเต๋ า n หน้ าใดๆ เช่ น ลกเต๋ า 6 ู ู หน้ า ลกเต๋ า 12 หน้ าเป็ นต้ น และเขียนคลาส TestDice เพื่อเรี ยกใช้ เมท็อดจากคลาส Dice (20 คะแนน) ู public class Dice { //แอตทริบวประจําอ๊ อบเจ็คแบบ public ชื่อ face เพื่อเก็บจํานวนหน้ าของลกเต๋ า ิ ู //แอตทริบวประจําอ๊ อบเจ็คแบบ public ชื่อ value เพื่อเก็บหมายเลขหน้ าหงายของลกเต๋ า ิ ู //ตัวสร้ างแบบไม่ มีพารามิเตอร์ เพื่อกําหนดจํานวนหน้ าของลกเต๋ าเป็ น 2 และกําหนดหน้ าหงายของ ู ลกเต๋ าโดยการสุ่มค่ า ู © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 16. 172 Computer Programming using Java 12 - Classes and Objects //ตัวสร้ างแบบมีพารามิเตอร์ หนึ่งตัว เพื่อกําหนดจํานวนหน้ าของลกเต๋ าตามตัวเลขที่ระบุทางพารามิเตอร์ ู และกําหนดหน้ าหงายของลกเต๋ าโดยการสุ่มค่ า ู //ตัวสร้ างแบบมีพารามิเตอร์ สองตัว เพื่อกําหนดจํานวนหน้ าของลกเต๋ าและกําหนดหน้ าหงายของลกเต๋ า ู ู ตามตัวเลขที่ระบุทางพารามิเตอร์ ตามลําดับ //เมท็อดประจําอ๊ อบเจ็คชื่อ roll เพื่อใช้ โยนลกเต๋ า ซึ่งจะสุ่มหมายเลขหน้ าหงายของลกเต๋ าที่มีค่าตังแต่ ู ู ้ 1 จนถึงจํานวนหน้ าที่เป็ นไปได้ ของลกเต๋ านัน และเมื่อสุ่มหน้ าหงายได้ แล้ ว ก็จะนําไปกําหนดค่ าให้ กับ ู ้ แอตทริบว value ที่เก็บหมายเลขหน้ าหงายของลกเต๋ า โดยที่เมท็อดนีไม่ ต้องมีการคืนค่ ากลับ ิ ู ้ //เมท็อดประจําอ๊ อบเจ็คชื่อ setValue เพื่อใช้ ในการพลิกหน้ าหงายของลกเต๋ าตามที่ต้องการ ซึ่งจะรับ ู ค่ าหมายเลขหน้ าหงายของลกเต๋ าผ่ านทางพารามิเตอร์ และจะนําไปกําหนดค่ าให้ กับแอตทริบว value ู ิ ที่เก็บหมายเลขหน้ าหงายของลกเต๋ า โดยที่เมท็อดนีไม่ ต้องมีการคืนค่ ากลับ ู ้ //เมท็อดประจําอ๊ อบเจ็คชื่อ getFace เพื่อคืนค่ าจํานวนหน้ าของลกเต๋ า ู © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 17. Classes and Objects - 12 Computer Programming using Java 173 //เมท็อดประจําอ๊ อบเจ็คชื่อ getValue เพื่อคืนค่ าหมายเลขหน้ าหงายของลกเต๋ า ู //เมท็อดประจําอ๊ อบเจ็คชื่อ show เพื่อแสดงจํานวนหน้ าและหมายเลขหน้ าหงายของลกเต๋ าทีละบรรทัด ู } //End of class public class TestDice { /* สร้ างลกเต๋ าขึนมา 3 ลก ในรปของอ๊ อบเจ็คที่มีช่ ือเป็ น d1, d2 และ d3 ตามลําดับมีรายละเอียดดังนี ้ ู ้ ู ู อ๊ อบเจ็ค d1 เป็ นลกเต๋ าที่ไม่ ได้ ระบุจานวนหน้ าและหมายเลขหน้ าหงาย ู ํ อ๊ อบเจ็ค d2 เป็ นลกเต๋ า 13 หน้ า ที่ไม่ ได้ ระบุหมายเลขหน้ าหงาย ู อ๊ อบเจ็ค d3 เป็ นลกเต๋ า 30 หน้ า ที่มีหมายเลขหน้ าหงายเป็ น 9 ู พร้ อมทังแสดงข้ อมลของลกเต๋ าทัง 3 ลกขึนบนจอภาพ แล้ วทําการโยนลกเต๋ าทัง 3 ลกพร้ อมๆ กัน 20 ้ ู ู ้ ู ้ ู ้ ู ครัง โดยในแต่ ละครั งให้ แสดงหมายเลขหน้ าหงายของลกเต๋ าทัง 3 ลกขึนบนจอภาพ */ ้ ้ ู ้ ู ้ } //End of class © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 18. 174 Computer Programming using Java 12 - Classes and Objects โจทย์ ข้อที่ 11 [ระดับปานกลาง] จงเขียนคลาส RealNumber ซึ่งเป็ นตัวแทนของจํานวนจริงใดๆ หนึ่งจํา- นวน และเขียนคลาส TestRealNumber เพื่อเรียกใช้ เมท็อดจากคลาส RealNumber (15 คะแนน) public class RealNumber { //แอตทริบวประจําอ๊ อบเจ็คแบบ public ชื่อ num เพื่อเก็บค่ าจํานวนจริง ิ //ตัวสร้ างแบบไม่ มีพารามิเตอร์ เพื่อกําหนดค่ าให้ กับแอตทริบว num ตามค่ า Default ิ //ตัวสร้ างแบบมีพารามิเตอร์ เพื่อกําหนดค่ าให้ กับแอตทริบว num ตามค่ าที่ระบุ ิ //เมท็อดประจําอ๊ อบเจ็คชื่อ plus เพื่อรั บค่ าจํานวนจริงหนึ่งจํานวนเข้ ามาทางพารามิเตอร์ แล้ วนํามาหา ผลบวกระหว่ างแอตทริบว num กับค่ าตัวเลขนันพร้ อมทังคืนค่ ากลับ ิ ้ ้ //เมท็อดประจําอ๊ อบเจ็คชื่อ diff เพื่อรั บค่ าจํานวนจริงหนึ่งจํานวนเข้ ามาทางพารามิเตอร์ แล้ วนํามาหา ผลต่ างระหว่ างแอตทริบว num กับค่ าตัวเลขนันพร้ อมทังคืนค่ ากลับ ิ ้ ้ } //End of class © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 19. Classes and Objects - 12 Computer Programming using Java 175 public class TestRealNumber { /* สร้ างจํานวนจริง 1 จํานวนในรปของอ๊ อบเจ็ค r ที่มีค่าเป็ น 70 ประเภท RealNumber พร้ อม ู คํานวณหาค่ าผลบวกของตัวเลขนันกับ 15 และผลต่ างของตัวเลขนันกับ 50 พร้ อมทังแสดงผลลัพธ์ ้ ้ ้ ขึนบนจอภาพ*/ ้ } //End of class โจทย์ ข้อที่ 12 [ระดับปานกลาง] จงสร้ างคลาส Account ให้ สมบรณ์ ซึ่งเป็ นคลาสที่ใช้ ในการดําเนินการ ู เกี่ยวกับระบบบัญชีธนาคาร โดยมีรายละเอียดดังต่ อไปนี ้ (10 คะแนน) 1) แอตทริบวชื่อ balance ซึ่งเป็ น Object Variable เพื่อเก็บยอดเงินในบัญชี ิ 2) คอนสตรักเตอร์ 2 แบบเพื่อใช้ ในการกําหนดค่ าเริ่มต้ นให้ กับยอดเงินเมื่อเริ่มเปิ ดบัญชี ถ้ าไม่ ได้ ระบุจานวนเงินเมื่อเริ่มต้ นเปิ ดบัญชีให้ ยอดเงินเป็ น 0 บาท ํ ถ้ ามีการระบุจานวนเงินเมื่อเริ่มต้ นเปิ ดบัญชีให้ ยอดเงินเป็ นไปตามค่ าที่ระบุ ํ 3) เมท็อด deposit(…) ซึ่งเป็ น Object Method เพื่อใช้ ในการฝากเงินตามจํานวนเงินที่ระบุโดยไม่ มีการ คืนค่ ากลับ 4) เมท็อด withdraw(…) ซึ่งเป็ น Object Method เพื่อใช้ ในการถอนเงินตามจํานวนเงินที่ระบุและต้ อง ตรวจสอบยอดเงินก่ อนเสมอว่ ามีเพียงพอในการถอนเงินหรือไม่ พร้ อมทังคืนเงินที่ถอนด้ วย ้ 5) เมท็อด getbalance(…) ซึ่งเป็ น Object Method เพื่อคืนค่ ายอดเงินคงเหลือในบัญชี © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 20. 176 Computer Programming using Java 12 - Classes and Objects ให้ สร้ างคลาส TestAccount เพื่อเรี ยกใช้ งานคลาส Account โดยให้ เปิ ดบัญชีขึนมา 1 บัญชีพร้ อมฝาก ้ เงินเริ่ มต้ นเปิ ดบัญชีจานวน 2000 บาท หลังจากนันจึงทําการถอนเงิน 1500 บาท และฝากเพิ่มอีก 800 ํ ้ บาท ตามลําดับ (ในแต่ ละกระบวนการให้ แสดงยอดเงินในบัญชีหลังทํารายการทุกครัง) (10 คะแนน) ้ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 21. Classes and Objects - 12 Computer Programming using Java 177 โจทย์ ข้อที่ 13 [ระดับปานกลาง] จงสร้ างคลาส PiggyBank ให้ สมบรณ์ เพื่อสร้ างกระปุกออมสินลกหมซึ่ง ู ู ู เก็บเฉพาะเหรียญ 1 บาท 2 บาท 5 บาท และ 10 บาท โดยมีรายละเอียดดังต่ อไปนี ้ (20 คะแนน) public class PiggyBank { (1) แอตทริบวประจําอ๊ อบเจ็คแบบ public ชื่อ one, two, five และ ten ตามลําดับ เพื่อเก็บจํานวน ิ ของเหรียญแต่ ละเหรี ยญ (2) แอตทริ บิวประจําอ๊ อบเจ็คแบบ public ชื่อ size เพื่อเก็บความจุของค่ าเงินรวมสงสุดที่สามารถ ู เก็บได้ ในกระปุก (3) ตัวสร้ าง 2 แบบเพื่อกําหนดค่ าเริ่มต้ นของกระปุก 1) ถ้ าไม่ มีการกําหนดค่ าใดๆ ให้ แอตทริบว size เป็ น 100 แอตทริบวอื่นเป็ น 0 ิ ิ 2) ถ้ ามีการกําหนดค่ าให้ กับแอตทริบว size ก็ให้ size เท่ ากับค่ าที่กาหนดมาส่ วนแอตทริบวอื่น ิ ํ ิ เป็ น 0 (4) เมท็อดประจําอ๊ อบเจ็คชื่อ clear(…) เพื่อทําการนําเหรี ยญออกจากกระปุกโดยไม่ มีการคืนค่ า กลับ (การนําเหรี ยญออกจากกระปุกคือให้ จานวนเหรี ยญทุกเหรียญเท่ ากับ 0) ํ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 22. 178 Computer Programming using Java 12 - Classes and Objects (5) เมท็อดประจําอ๊ อบเจ็คชื่อ getTotal(…) เพื่อคืนค่ าเงินรวมทังหมดที่เก็บสะสมในกระปุก ้ (6) เมท็อดประจําอ๊ อบเจ็คชื่อ full(…) เพื่อตรวจสอบว่ ากระปุกเต็มหรื อไม่ ถ้ าเต็มจะคืนค่ า true ถ้ าไม่ เต็มจะคืนค่ า false (7) เมท็อดประจําอ๊ อบเจ็คชื่อ addOne(…) เพื่อใช้ หยอดเหรี ยญ 1 บาท ตามจํานวนเหรี ยญที่ระบุลง ในกระปุก โดยก่ อนหยอดเหรียญจะต้ องตรวจสอบก่ อนว่ ากระปุกออมสินเต็มหรือไม่ (8) เมท็อดประจําอ๊ อบเจ็คชื่อ addTwo(…) เพื่อใช้ หยอดเหรี ยญ 2 บาท ตามจํานวนเหรี ยญที่ระบุลง ในกระปุก โดยก่ อนหยอดเหรียญจะต้ องตรวจสอบก่ อนว่ ากระปุกออมสินเต็มหรือไม่ © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 23. Classes and Objects - 12 Computer Programming using Java 179 (9) เมท็อดประจําอ๊ อบเจ็คชื่อ addFive(…) เพื่อใช้ หยอดเหรียญ 5 บาท ตามจํานวนเหรี ยญที่ระบุลง ในกระปุก โดยก่ อนหยอดเหรียญจะต้ องตรวจสอบก่ อนว่ ากระปุกออมสินเต็มหรือไม่ (10) เมท็อดประจําอ๊ อบเจ็คชื่อ addTen(…) เพื่อใช้ หยอดเหรี ยญ 10 บาท ตามจํานวนเหรี ยญที่ระบุ ลงในกระปุก โดยก่ อนหยอดเหรียญจะต้ องตรวจสอบก่ อนว่ ากระปุกออมสินเต็มหรือไม่ }//End of class © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้
  • 24. 180 Computer Programming using Java 12 - Classes and Objects จงสร้ างคลาส TestPiggyBank เพื่อเรี ยกใช้ งานคลาส PiggyBank โดยสร้ างกระปุกออมสินขนาดความจุ 500 บาท พร้ อมทังมีการเก็บเหรี ยญสองบาท 34 เหรี ยญ และเหรี ยญสิบบาท 13 เหรี ยญ โดยในการเพิ่ม ้ เหรี ยญแต่ ละครั งให้ แสดงค่ าเงินรวมทังหมดในกระปุกให้ เห็นทุกครัง ้ ้ ้ public class TestPiggyBank { public static void main(String[] args) { }//End of main }//End of class © สงวนลิขสิทธิ์ พฤศจิกายน 2553 (ปรับปร ุงครังที่ 7 ฉบับใช้ติวภาค 2/2553) เรียบเรียงโดย วงศ์ยศ เกิดศรี (แบงค์) ้