Java อาร เรย 2 ม ต float สองตำแหน ง

  • 1. เพื่อใหมีความรูความเขาใจในการสงผานคาตัวแปรอารเรยไปยังเมธอดตางๆ ♦ เพื่อสามารถนําแนวคิดตัวแปรอารเรยไปเขียนโปรแกรมประยุกตใชกับงานจริงได บทที่ 6
  • 2. หนาที่ 142 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ เนื้อหาบทเรียน ♦ ตัวแปรอารเรย(array of local variable) ♦ สมาชิกอารเรย(array of attribute) ♦ อารเรยของคลาส(array of class) ♦ การสงผานขอมูลอารเรยระหวางเมธอด ♦ อารเรยหลายมิติ(multi dimensional array)
  • 3. หนาที่ 143 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวแปรอารเรยคือ ตัวแปรชุดชนิด reference data type แบบพิเศษ ที่สามารถเก็บขอมูลชนิด เดียวกันไดหลายคา เปนชุดของขอมูลที่มีประเภทเดียวกัน เชน ขอมูลคะแนนสอบของนักเรียน 15 คน ขอมูลอุณหภูมิของชวงหกโมงเย็นใน 1 เดือน ขอมูลปริมาณน้ําฝนใน 1 ป เปนตนเราสามารถ ประยุกตใชตัวแปรอารเรยชวยจัดการกับขอมูลดังกลาวเพื่อนํามาประมวลผลตอไป เชนใชในการหา คาเฉลี่ยของปริมาณน้ําฝนในรอบ 12 เดือน เก็บขอมูลนิสิตสาขาวิทยาการคอมพิวเตอร เปนตน ซึ่งสา มาชิกของอารเรยอาจเปนตัวแปรพื้นฐาน(Primitive Data Types)หรือตัวแปรอางอิง(Reference Data Types)ก็ได จํานวนสมาชิกของอารเรยมีขนาดแนนอนไมสามารถเปลี่ยนแปลงขนาดได และสมาชิก ของอารเรยแตละตัวจะมีลําดับประจําตัวอยู อารเรยในภาษาจาวาเปนวัตถุ ดังนั้นจึงเปนการดีที่จะไดเห็นตัวอยางการเอาแนวคิดเรื่องวัตถุไป ใชจริง อยางไรก็ตามอารเรยเปนวัตถุพิเศษจึงมีวิธีการใชงานและคําสั่งที่ไมเหมือนกับวัตถุทั่วไปนัก ตัวอยาง การเขียนโปรแกรมเพื่อคํานวณคาเฉลี่ยดวยวิธีธรรมดาไมไดใชตัวแปรอารเรย import javax.swing.JOptionPane; public class InputTest { public static void main(String args[]){ float sum = 0.0f, rainfall, annualAverage; for (int i=0; i < 12; i++) { String input = JOptionPane.showInputDialog("Rainfall for month" + (i+1)); rainfall =Float.parseFloat(input); sum += rainfall; } annualAverage = sum / 12.0f; JOptionPane.showMessageDialog(null,"Annual Average " + annualAverage); System.exit(0); } } จากโปรแกรมนี้เมื่อทําการรันจะปรากฎหนาจอเพื่อรับคาปริมาณน้ําฝนจํานวน 12 ครั้งดังหนาจอตอไปนี้
  • 4. หนาที่ 144 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ เมื่อครบ 12 ครั้งแลวจะแสดงคาเฉลี่ยดังหนาจอตอไปนี้ จากโปแกรมดังกลาวหากตองการทราบปริมาณน้ําฝนในแตละเดือนจะไมสามารถนํากลับมาแสดงได ดังนั้นหากขอมูลที่ตองการจัดเก็บมีลักษณะนี้ใหทําการเก็บขอมูลไวในตัวแปรชนิดอารเรย 6.1. การประกาศตัวแปรอารเรย 1 มิติสําหรับตัวแปรชนิดพื้นฐาน อารเรยเปนวัตถุ ดังนั้นตองมีการประกาศตัวแปรอางอิง และสรางอินสแตนท การประกาศ อารเรยหรือการประกาศตัวแปรอางอิงแบบอารเรยมี 2 รูปแบบคือ รูปแบบที่ 1 Data_type[] data_identifier; เชน double[ ] rainfall; int[] a , b ,c ; // a ,b ,c เปนตัวแปร integer ชนิดอารเรย 1 มิติ รูปแบบที่ 2 Data_type data_identifier[]; เชน double rainfall[ ]; int a , b[] , c ; // a , c เปนตัวแปร integer สวน b เปนตัวแปร integer ชนิดอารเรย หมายเหตุ ในการประกาศตัวแปรอารเรยนั้นไมสามารถระบุขนาดของ array ในสวน declare ได เชน int a[3]; // error
  • 5. หนาที่ 145 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 6.2 การสราง Array เมื่อทําการประกาศตัวแปรแลวใหทําการสรางตัวแปรอารเรยโดยใชคําสั่ง new รูปแบบที่ 1 สรางเมื่อประกาศตัวแปรอารเรยแลว Data_identifier[] = new data_type[size_of_arry]; เชน rainfall = new double[12]; a = new int[5]; b = new int[20]; รูปแบบที่ 2 ทําการประกาศตัวแปรอารเรยพรอมสรางตัวแปรอารเรย Data_type Data_identifier = new data_type[size_of_arry]; เชน double[ ] rainfall = new double[12]; //ทําการประกาศ &สราง rainfall 0 1 2 3 4 5 6 7 8 9 10 11 rainfall[2]ตําแหนงแรกตําแหนงแรก ของของ AArrrraayy จะเปนตําแหนงที่จะเปนตําแหนงที่ 00 หมายเหตุ : หากตองการทราบขนาดของอารเรยสามารถหาไดจาก รูปแบบ ชื่อตัวแปรอารเรย.length เชน int a ; double[] rainfall = new double[12]; a = rainfall.length; // a = 12
  • 6. หนาที่ 146 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง แสดงการกําหนดคาเริ่มตนใหกับอารเรย 1 มิติ ดวยตัวอักษร A – Z class testArray{ public static void main(String[] args) { char ch[]; ch = new char[26]; // loop กําหนดคาเริ่มตนใหกับตัวแปรอารเรย for(int i = 0; i < ch.length ; i ){// สิ่งที่ไดจาก ch.length คือขนาดของอารเรย ch ch[i] = (char)('A'+i); } // นําคาที่อยูในตัวแปรอารเรยมาแสดงบนหนาจอ for (int i=0; i< ch.length ;i ){ System.out.print(ch[i] + "t"); } } } ผลลัพธที่ไดคือ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ตัวอยาง การใชงาน Array import javax.swing.JOptionPane; public class InputTest { public static void main(String args[]){ double[ ] rainfall = new double[12]; double annualAverage, sum = 0.0f; for (int i = 0; i < rainfall.length ; i++) { String input = JOptionPane.showInputDialog("Rainfall for month" + (i+1)); rainfal[i]l =Float.parseFloat(input);//ทําการแปลงคาจากตัวหนังสือเปน float sum += rainfall[i]; }
  • 7. หนาที่ 147 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ annualAverage = sum / rainfall.length; // rainfall.length = ขนาดของอารเรย rainfall JOptionPane.showMessageDialog(null,"Annual Average " + annualAverage); System.exit(0); } } ตัวอยาง สวนของโปรแกรมเพื่อกําหนดคาเริ่มตนใหกับตัวแปรอารเรย double[ ] rainfall = new double[12]; String[ ] monthName = new String[12]; monthName[0] = “January”; monthName[1] = “February”; … double annualAverage, sum = 0.0f; for (int i = 0; i < rainfall.length; i++) { String input = JOptionPane.showInputDialog("Rainfall for month" + monthName[i]); rainfal[i]l =Float.parseFloat(input); sum += rainfall[i]; } annualAverage = sum / rainfall.length; ตัวอยาง สวนของการหาคาเฉลี่ยปริมาณน้ําฝนในแตละไตรมาศ double[ ] quarterAverage = new double[4]; for (int i = 0; i < 4; i++) { sum = 0; for (int j = 0; j < 3; j++) {//compute the sum of one quarter sum += rainfall[3*i + j]; } quarterAverage[i] = sum / 3.0; //Quarter (i+1) average ประกาศและสรางตัวแปรอารเรย กําหนดคาเริ่มตนใหแกตัวแปรอารเรย
  • 8. หนาที่ 148 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ หมายเหตุ - Array ใน Java นั้นไมอยูในรูปแบบขอมูลเรียงตอๆกัน หากแตเปน Object ชนิดหนึ่ง - Array ที่ยังไมทําการสราง(Construct)โดยใชคําสั่ง new จะมีคาเปน null หากมีการใชจะเกิด Runtime Exception (NullException) จะกลาวถึงในบทที่ 13 ในตอนนี้ทราบเพียงวาสิ่งที่เกิดขึ้นเปนขอผิดพลาด ชนิดหนึ่ง เกิดในขณะ run โปรแกรม 6.4 การกําหนดคาเริ่มตนให Array เราสามารถทําการประกาศตัวแปร Array และทําการกําหนดคาเริ่มตนใหตัวแปร Array ในณะ เดียวกันเชนเดียวกับการประกาศตัวแปรชนิดอื่นๆ ตัวอยาง การสรางและกําหนดคาเริ่มตนใหอารเรย int[ ] number = { 2, 4, 6, 8 }; double[ ] samplingData = { 2.443, 8.99, 12.3, 45.009, 18.2, 9.00, 3.123, 22.084, 18.08 }; char[] ch = {‘w’,’x’,’y’,’z’}; String[ ] monthName = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October" , "November", "December" }; สังเกตวา กรณีที่กําหนดคาให array พรอมๆกับ declare ไมตองใช new เชน int []a = { 1,2,3}; ตัวอยาง สรางและกําหนดคาแบบ Anonymous Array char [] ch; ch = new char[] {‘a’ , ‘b’, ‘c’}; หมายเหตุ - การอางอิงเลข index ของ array ที่มากกวา length นั้นจะทําใหเกิด Run Time Exception เรียกวา ArrayIndexOutofBoundException - จะตองกําหนด size ของ array ที่จะสรางเสมอ หรือไมเชนนั้นก็ตองระบุสมาชิกใหแก array int [] a ; a = new int[5]; int [] b ; b = new int[] {1,2,3}; Object [] c = new Object[3]; Object [] d = new Object[] {new Object(),”Test”}
  • 9. หนาที่ 149 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ - จากการใชคําสั่ง char [] ch = new char[4]; ตัวอยาง หากไมไดกําหนดคาเริ่มตนใหตัวแปร Array จาวาเวอรชัวร(JVM) เปนผูกําหนดคาเริ่มตนใหใน ขณะที่สรางตัวแปรอารเรยดวยคําสั่ง new class NonInitial { public static void main(String[] args) { int size = 3; byte b[] = new byte[size]; short s[] = new short[size]; int in[] = new int[size]; float f[]=new float[size]; boolean bl[] = new boolean[size]; System.out.println(" tbytetshorttinttfloattboolean"); for(int i =0; i<b.length; i++){ System.out.println("index "+ i + "t"+b[i] +"t"+s[i]+"t"+in[i]+"t" +f[i]+"t" + bl[i]+"t"+ "stop"); } } } ผลลัพธที่ได byte short int float boolean index 0 0 0 0 0.0 false stop index 1 0 0 0 0.0 false stop index 2 0 0 0 0.0 false stop Stack Execution ch
  • 10. หนาที่ 150 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 6.5 อารเรยของ Objects นอกจาก Arrays จะสามารถใชงานกับขอมูลประเภท Primitive Data Type แลว เรายังสามารถ ใชงาน Array กับขอมูลประเภท Reference Data Type ไดอีกดวย ตัวอยาง Class Person ขั้นตอนที่ 1 Person[ ] person; // ประกาศออบเจ็ค ขั้นตอนที่ 2 person = new Person[5]; // สรางออบเจ็ค ขั้นตอนที่ 3 person[0] = new Person ( ); Person name : String inpStr : String age : int gender : char setName(String) : void setinpStr(String) : void setAge(int ) : void setGender(char) : void ppeerrssoonn ppeerrssoonn 0 1 2 3 4 Person ppeerrssoonn 0 1 2 3 4
  • 11. หนาที่ 151 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การสราง Person objects และการสราง person array import javax.swing.JOptionPane; class Person{ String name; int age; char gender; void setAge(int a){age = a;} void setName(String s){name =s;} void setGender(char g){gender = g;} }; public class TestCreateObjectArray{ public static void main(String[] args) { Person[ ] person = new Person[2]; String name, inpStr; int age; char gender; // ทําการรับคาใหเพื่อกําหนดคาใหกับ Object Person for (int i = 0; i < person.length; i++) { name = JOptionPane.showInputDialog("Enter name:"); //รับชื่อ inpStr = JOptionPane.showInputDialog("Enter age:");//รับขอมูลอายุ age = Integer.parseInt(inpStr);//ทําการเปลี่ยนคาที่รับเปนชนิด integer inpStr = JOptionPane.showInputDialog("Enter gender:");//รับขอมูลเพศ gender = inpStr.charAt(0);// gender ตัดเฉพาะตัวอักษรตัวแรกของ inpStr person[i] = new Person( ); //สราง object Person person[i].setName(name); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i] person[i].setAge ( age ); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i] person[i].setGender( gender ); // เรียกใช method setName เพื่อกําหนด name ใหกับ person[i] } // แสดงคาที่อยูใน Object Person บนหนาจอ Output for(int i = 0 ; i < person.length;i++){ System.out.println("Person Number " + (i+1) );
  • 12. หนาที่ 152 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ System.out.println(person[i].name + " " + person[i].age + " " +person[i].gender); } System.exit(0); }} เมื่อทําการกรอกขอมูลจํานวน 2 คนแลวจะปรากฎขอมูลตอไปนี้ในผลลัพธ Person Number 1 surangkana 20 F Person Number 2 suda 24 m ตัวอยาง การหาคนที่อายุมากและอายุนอยที่สุด int minIdx = 0; //index to the youngest person int maxIdx = 0; //index to the oldest person for (int i = 1; i < person.length; i++) { if ( person[i].getAge() < person[minIdx].getAge() ) {
  • 13. หนาที่ 153 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ minIdx = i; //found a younger person } else if (person[i].getAge() > person[maxIdx.getAge() ) { maxIdx = i; //found an older person } 6.6 ลบ Object ออกจาก Array int delIdx = 1; person[delIdx] = null; 6.7 อารเรย 2 มิติ หากมีขอมูลที่เก็บในลักษณะ 2 มิติ(dimension) ดังตัวอยางตอไปนี้ ppeerrssoonn 0 1 2 3 4 ppeerrssoonn 0 1 2 3 4
  • 14. หนาที่ 154 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ การจัดการกับขอมูลลักษณะนี้เหมาะกับการใชตัวแปรอารเรย 2 มิติ 6.7.1 การประกาศ Array 2 มิติ รูปแบบที่ 1 Data_type [][] Data_identifier ; เชน float[ ] [ ] payScaleTable; รูปแบบที่ 2 Data_type Data_identifier [][]; เชน float payscaleTable[ ][ ]; สังเกตุวา ตําแหนงของ [] ไมมีผลใดๆ ตอการการประกาศ Array int a[]; int[] b; int[] c[]; int[][] 3; 6.7.2 การสราง Array 2 มิติ รูปแบบที่ 1 Data_identifier = new Data_type[size][size]; เชน payScaleTable = new float[4][5];
  • 15. หนาที่ 155 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ รูปแบบที่ 2 Data_type[][]Data_identifier = new Data_type [size][size]; เชน double[][] a = new double[3][5]; หรือ เชน double [][] a; a = new double[3][]; a[0] = new double[5]; a[1] = new double[5]; a[2] = new double[5]; ตัวอยาง การสรางและกําหนดคาแบบ Anonymous Array int [] [] i = new int[][] { {1, 4}, {1} }; ตัวอยาง การสรางอารเรย 2 มิติ char []ch[] = new char[2][3]; ตัวอยาง การสรางอารเรย 2 มิติ char ch[][] = new char[2][]; ch[0] = new char[3]; ch[1] = new char[2]; Stack Execution ch Stack Execution ch
  • 16. หนาที่ 156 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ตัวอยาง การสรางอารเรย 3 มิติ char ch[][][] = new char[3][][]; ch[0] = new char[3][]; ch[1] = new char[2][]; ch[2] = new char[4][]; ch[0][0] = new char[2]; ch[0][1] = new char[3]; ch[0][2] = new char[1]; …………. หมายเหตุ สําหรับอารเรยหลายมิติจะตองระบุ size อยางนอย 1 คาของ dimension สูงสุด เชน int [][][]a = new int[2][][]; int [][][]b = new int[2][3][]; int [][][]c = new int[2][][4]; // error Stack Execution ch ch[0] ch[1] ch[2] ch[0][0] ch[0][1] ch[0][2] ch[1][0] ch[1][1] ch[2][0] ch[2][1] ch[2][2] ch[2][3] ch[0][0][0] ch[0][0][1] ch[0][1][0] ch[0][1][1] ch[0][1][2] ch[0][2][0] ch[0][2][0] =’0x0000’ =’0x0000’ =’0x0000’ =’0x0000’ =’0x0000’ =’0x0000’ =’0x0000’ Heap memory
  • 17. หนาที่ 157 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 6.7.3 การกําหนดคาใหตัวแปรอารเรยหลายมิติ เมื่อทําการประกาศ (declaration)ตัวแปรอารเรย และทําการจองพื้นที่แลว ถาตองการกําหนดคา ใหกับตัวแปรอารเรยในการอางถึงตัวแปรอารเรย 2 มิติใหพิจารณาดังตัวอยางตอไปนี้ ตัวอยางโปรแกรมกําหนดคาใหกับอารเรย 2 มิติ ทุกตัวแปรมีคาเปน Z char[][] page = new char[30][100]; // page.length มีคาเทากับ 30 // page[0].length มีคาเทากับ 100 int row, col; for (row = 0; row < page.length; row++) for(col=0;col<page[row].length;col++) page[row][column] = 'Z'; สําหรับการกําหนดคาใหกับตัวแปรหลายมิติจะตองใหตัวแปรอารเรยทั้งสองมีมิติที่สอดคลองกัน ดังตัวอยาง int[] blots; int[][] squeegees = new int[3][]; blots = squeegees; // error , squeegees เปน อารเรย 2 มิติของ integer int[] blocks = new int[6]; blots = blocks; // OK, blocks เปนอารเรยของ integer int[][] books = new int[3][]; int[] numbers = new int[6]; int aNumber = 7; books[0] = aNumber; //error เพราะใหคา integer แก อินสแตนทของอารเรย books[0] = numbers; //OK, numbers เปน array
  • 18. หนาที่ 158 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ 6.7.3 การหาขนาดของ array เมื่อเราสรางออปเจ็คของ array แลว JVM จะไปกําหนด attribute ตัวหนึ่งชื่อวา length ใหมีคาเทากับ ขนาดของ array ตัวอยาง int []i = new int [10]; แลว i.length จะมีคาเทากับ 10 int [][] i = new int[3][8]; แลว i[0].length ก็จะมีคาเทากับ 8 แลว i[1].length ก็จะมีคาเทากับ 8 แลว i[2].length ก็จะมีคาเทากับ 8 แลว i[3].length เกิดขอผิดพลาดที่ชื่อวา ArrayIndexOutOfBoundsException ตอนรันโปรแกรม ตัวอยาง class SizeOfArrayTreeDimension{ public static void main(String[] args) { char ch[][][] = new char[3][][]; ch[0] = new char[3][]; ch[1] = new char[2][]; ch[2] = new char[4][]; ch[0][0] = new char[5]; ch[0][1] = new char[3]; ch[0][2] = new char[1]; System.out.println(" size of ch.length = " + ch.length); System.out.println(" size of ch[0].length = " + ch[0].length); System.out.println(" size of ch[1].length = " + ch[1].length); System.out.println(" size of ch[2].length = " + ch[2].length); System.out.println(" size of ch[0][0].length = "+ ch[0][0].length); System.out.println(" size of ch[0][1].length = " + ch[0][1].length); System.out.println(" size of ch[0][2].length = " + ch[0][2].length); } }
  • 19. หนาที่ 159 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ ผลลัพธที่ไดคือ size of ch.length = 3 size of ch[0].length = 3 size of ch[1].length = 2 size of ch[2].length = 4 size of ch[0][0].length = 5 size of ch[0][1].length = 3 size of ch[0][2].length = 1
  • 20. หนาที่ 160 เอกสารประกอบการสอน 305272 การเขียนโปรแกรมคอมพิวเตอรขั้นสูง อ.สุรางคนา ระวังยศ แบบฝกหัด 1. ใหทําการสรางไฟลชื่อ Array1.java - ประกาศตัวแปรชนิดขอมูลอารเรยชนิด Integer ชื่อ var - สรางออบเจ็ค var ใหมีจํานวนหนึ่งมิติขนาดเทากับ 5 - กําหนดคาใหสมาชิกทุกตัวในอารเรยมีคาเทากับ index ของตัวเอง คูณดวย 2 - ทําการแสดงคาของสมาชิกทุกตัว 2. ทําการสรางคลาสชื่อ Student โดยมี attribute เก็บชื่อและลําดับที่ของ Student โดยรับคาจาก การสรางออบเจ็ค - ทําการเก็บขอมูล Student ดังนี้ ลําดับที่ 1 ชื่อ Jane ลําดับที่ 2 ชื่อ Jimmy ลําดับที่ 3 ชื่อ Dan ลําดับที่ 4 ชื่อ Nisa - ทําการแสดงขอมูลเลขที่และชื่อของ คลาส Student ดังกลาว 3. สราง class DateofBirth และ class Student ซึ่งมีโครงสรางคลาสดังนี้ โดยสรางตัวแปร array เพื่อรับขอมูลของนิสิตจํานวน 5 คน ดังขอมูลตอไปนี้ แลวแสดงคาตัวแปร ดังกลาวออกทางหนาจอ ID NAME DateofBirth 250 Dang 15-12-1986 251 Dumlong 14-06-1987 252 Dararat 12-07-1985 253 Darintorn 20-02-1985 254 Darinee 19-05-1986 Date day : int month : String year : int Student Id : int Name : String Db : Date getId() : int getName() : String getDb( ) : Date