ข้อมูลองค์ความรู้โดย
ณัฐพล วัฒนวิภัทรเจริญ
ตำแหน่ง IT

Java ตอนที่ 4 คลาสและเมทธอด

ประเภททางด้าน IT หลัก :   Development & Integration
ประเภททางด้าน IT ย่อย :   Java
  ลงข้อมูลเมื่อ 10:35:39 10/08/2010
  Page View (2856) แบ่งปัน

String เป็นวัตถุ ต่างกับ primitive data type ที่ไม่เป็นวัตถุ การเป็นวัตถุจะเข้าครอบครองพื้นที่ใน heap memory ซึ่งวัตถุที่ไม่ถูกอ้างอิงจะกลายเป็นขยะให้ Garbage Collection ล้างทิ้งในภายหลัง

ตัวอย่าง . การใช้ method จาก String Class

String aa = Double.toString(Double.parseDouble("123") + 1);

aa = Integer.toString(Integer.parseInt("456") + 2);

aa = aa.substring(0,3);

aa = new String("ThaiAll");

String z ="ThaiAll";

System.out.println("string = "+z);

System.out.println(z.substring(0,4));  // Thai

System.out.println(z.substring(2,5));  // aiA

System.out.println(z.substring(4));    // All

System.out.println(z.toUpperCase());   // THAIALL

System.out.println(z.toLowerCase());   // thaiall

char ar[] = new char[128];

ar = z.toCharArray();

System.out.println((char)ar[0]);       // T

System.out.println(ar[0]);             // T

System.out.println(ar[2] + ar[4]);     // 162 (97 + 65)

z = "1234.1";

int m = Integer.parseInt(z.substring(0,3)) + 5;  // 123 + 5

double n = Double.parseDouble(z) + 0.2;          // 1234.3

System.out.println(m + n);           // 128 + 1234.3 = 1362.3

System.out.println(Integer.toString(m) + 5);      // 1285

 

4.2 คำขยายเมทธอดหรือคลาส (Method and Class Modifiers)

http://java.sun.com/docs/books/tutorial/reflect/member/method.html

ตัวอย่าง 4.1 การเรียกใช้ระหว่าง static method

                ปรับจากตัวอย่าง http://www.thaiall.com/perlphpasp/source.pl?j0401

class x { // output = xxy (j0401)

public static void main(String args[]) {

  sub1();

  sub1(); sub2();

}

static void sub1() {

  System.out.print("x");

}

static void sub2() { System.out.print("y"); }

}

ตัวอย่าง 4.2 การสร้างเมธอดแบบรับ และคืนค่า

class x { // output = 140 (j0402)

public static void main(String args[]) {

  int s = sub(2,8,0);   // 20

  s = sub(7,3,s);       // 60

  s = sub(4,6,s);       // 140

  System.out.println("Sum = "+s);

}

public static int sub(int x, int y, int z) {

  int a = x + y + z;

  return (a + x + y + z);

}

}

ตัวอย่าง 4.3 สร้างเมธอดแบบคืนค่า 2 เท่า

class x { // output = 6 (j0403)

public static void main(String args[]) {

  int j = 3;

  System.out.println(doubleofnumber(j));

}

static int doubleofnumber(int i) {

  i = i * 2;

  return (i);

}

}

 


4.3 ประเภทการเข้าถึง (Access Modifier)

                การกำหนดการเข้าถึง นิยมกำหนดไว้สำหรับเมธอด ทำให้เสริมความสามารถด้านการรับษาความลับ และจัดกลุ่มโปรแกรมให้ตรงกับวัตถุประสงค์ของผู้ออกแบบระบบ

1. public ถูกกำหนดเพื่อแจ้งว่า คลาสใด ๆ ก็สามารถเรียกไปประมวลผลได้

                2. private ถูกกำหนดเพื่อแจ้งว่าถูกเรียกไปประมวลผลได้ ก็ต่อเมื่ออยู่ในคลาสเดียวกันเท่านั้น แม้แต่ซับคลาส (Sub Class) ก็เรียกใช้งานไม่ได้

                3. protected ถูกกำหนดเพื่อแจ้งว่าถูกเรียกไปประมวลผลก็ต่อเมื่อเป็นสมาชิกของคลาส หรือ เป็นซับคลาส แม้อยู่ต่างแพคเก็ตก็เรียกประมวลผลได้ถ้าเป็นซับคลาส

                4. package ถูกกำหนดเพื่อแจ้งว่าถูกเรียกประมวลผลได้ก็ต่อเมื่ออยู่ภายในคลาสเดียวกัน หรือในแพคเก็ต เดียวกัน

ประเภทการเข้าถึง

การขยาย

(Modifier)

ในคลาส

(class)

ในแพกเกจ

(package)

ในซับคลาส

(sub class)

ใครก็ได้

(world)

public

/

/

/

/

protected

/

/

/

.

no modifier

/

/

.

.

private

/

.

.

.

 

4.4 วิธีเรียกใช้เมธอดเบื้องต้น (Method Calling)

class TAirPlane {  

   int color;                 // สี เป็น คุณสมบัติอีกแบบ

   static void Fly() { };     // บิน เป็น พฤติกรรม หรือ กริยา ที่ object ทำได้

   static void Land() { };    // ลงจอด เป็น อีกพฤติกรรมหนึ่ง

   TAirPlane() {

     System.out.println("result of constructor");

   }

}

TAirPlane AirPlane1;  

TAirPlane AirPlane2;  

AirPlane1 = new AirPlane1(); // จองพื้นที่ในหน่วยความจำ จึงจะเริ่มเรียกใช้ได้

AirPlane1.Fly();       // สั่งให้ object AirPlane1 ทำกริยา บิน

AirPlane1.color = RED; // เปลี่ยน สี (คุณสมบัติ) ของเครื่องบิน ให้เป็นสีแดง

ตัวอย่าง 4.4 การจองพื้นที่ให้กับวัตถุและเรียกใช้ Constructor

class hello1 {

  public static void main(String args[]) {

    TAirPlane abc = new TAirPlane();

  }

}

ตัวอย่าง 4.5 การประกาศตัวแปร และเข้าใช้ Heap กับ Stack Memeory แยกกัน

class hello2 {

  public static void main(String args[]) {

    TAirPlane  abc;

    abc = new TAirPlane();

  }

}

ตัวอย่าง 4.6 เรียกใช้ Constructor แบบชั่วคราว ที่อ้างอิงมาใช้อีกไม่ได้

- คลาส TAirPlane ต้องอยู่ใน Directory เดียวกับ hello3 หรือ Package เดียวกัน

class hello3 {

  public static void main(String args[]) {

    new TAirPlane();

    new TAirPlane();

  }

}

ตัวอย่าง 4.7 เรียกใช้ Method แบบชั่วคราว ที่อ้างอิงมาใช้อีกไม่ได้

class hello4 {

  public static void main(String args[]) {

    new TAirPlane().Fly();

    new TAirPlane().Land();

  }

}

ตัวอย่าง 4.8 เรียกใช้ Method จากพื้นที่เดิมใน Heap Memory

      - แบบนี้เรียกใช้ Constructor เพียงครั้งเดียว

class hello5 {

  public static void main(String args[]) {

    TAirPlane abc = new TAirPlane();

    abc.Fly();

    abc.Land();

  }

}

ตัวอย่าง 4.9 การเรียกใช้ main ที่รับค่าผ่านอาร์เรย์เสมอ

class hello6 {

  public static void main(String args[]) {

    TAirPlane  abc = new TAirPlane();

    String a[] = {};   // new String[0];

    abc.main(a);

  }

}

ตัวอย่าง 4.10 การเรียกใช้ Method ในคลาสเดียวกัน แบบ static

                - เพราะ main เป็น static ดังนั้น minihello ต้องเป็น static ด้วย

class hello7 {

  public static void main(String args[]) {

    minihello();

  }

  static void minihello()   {

    System.out.println("result of mini hello");

  }

}

ตัวอย่าง 4.11 การเรียกใช้ Method ในคลาสเดียวกัน แบบไม่เป็น static

class hello8 {

  public static void main(String args[]) {

    hello8 x = new hello8();

    x.minihello();

  }

  void minihello() {

    System.out.println("result of mini hello");

  }

}

ตัวอย่าง 4.12 การเรียกใช้ Method แบบรับ และคืนค่า แบบไม่เป็น static

class hello9 {

  public static void main(String args[]) {

    hello9 xx = new hello9();

    System.out.println(xx.oho(4)); // 8

  }

  int oho(int x) { return (x * 2); }

}

ตัวอย่าง 4.13 การเรียกใช้ Method แบบรับ และคืนค่า แบบเป็น static

class hello10 {

  public static void main(String args[]) {

    System.out.println(oho(5));

  }

  static int oho(int x)   {

    x = x * 2;

    return x;

  }

}

ตัวอย่าง 4.14 การสืบทอดจากคลาสแม่

                - จะไม่เรียก Constructor เพราะเป็นการสืบทอดโดยตรง

class Mother {

  Mother() { System.out.println(5); }

  static void m1() { System.out.println(6); }

 

}

class hello11 extends Mother {

  public static void main(String args[]) {

    m1();  // 6

  }

}

ตัวอย่าง 4.15 การเรียกใช้ Constructor ภายในคลาส

                - เรียกใช้ Constructor ก็จะเรียกใช้ Constructor ของคลาสแม่มาอัตโนมัติ

                - โปรแกรมนี้จะเรียกใช้ Constructor ของ TAirPlane ผ่าน  Constructor ของ hello12

class hello12 extends TAirPlane {

  hello12() {

    Fly();

    Land();

  }

  public static void main(String args[]) {

    new hello12();

  }

}

 

4.5 คอนสตักเตอร์เมธอด (Constructor Method)

ตัวอย่าง 4.16 การใช้ super กับ this ใน constructor

class sub01 {

void subx() {

System.out.println("subx in sub01");

}

}

class sub02 {

void subx() {

System.out.println("subx in sub02");

}

}

class j0404 extends sub02 {

j0404() {

  super.subx(); // subx in sub02

  this.subx(); // subx in main

}

public static void main(String args[]) {

  sub01 x = new sub01();

  System.out.println("main"); // main

  x.subx();      // subx in sub01

  j0404 y = new j0404();

}

void subx() {

  System.out.println("subx in main");

}

}

 

สรุปเนื้อหาท้ายบท

- การใช้งานเมธอดในคลาส String

      String z ="ThaiAll";

      System.out.println(z.substring(0,2));  // Th

      System.out.println(z.length());        // 7

- ชื่อแฟ้ม เช่น x.java ไม่จำเป็นต้องได้ class ชื่อ x เพียงคลาสเดียว อาจได้คลาสอะไร กี่คลาสก็ได้

- ในแฟ้ม x.java อาจมีหลายคลาสในแฟ้มเดียวกัน ทำให้ compile ครั้งเดียวได้แฟ้ม .class หลายแฟ้ม

- ในแต่ละคลาสจะประกอบด้วย method ซึ่งเรียกใช้กันได้โดยอิสระ

- สร้างคลาสธรรมดาชื่อ x

                - ถ้าจะให้ main ใช้ได้ต้องกำหนดเมธอดเป็น static เพราะไม่ถูก new ตอนเริ่มคลาส

class x {

  static void x1() {

      System.out.println(5);

  }

}

- สร้างคลาสชื่อ y สืบทอดมาจากคลาส x

class y extends x{

  public static void main(String abc[]) {

      x1();

  }

}

- รับค่าจากแป้นพิมพ์ แล้วส่งค่าไปให้เมธอด oho

import java.io.*;

class x {

public static void main(String args[]) throws IOException {

 BufferedReader wow;

 wow = new BufferedReader(new InputStreamReader(System.in));

 oho(wow.readLine());

}

static void oho (String a){

 System.out.println(a);

}

}

ne-levs �#'<���p��e='mso-ansi-language: EN-US'>5. การพัฒนาระบบ (System Construction)

 

5.1 การเขียนโปรแกรม (Programming)

5.2 การทดสอบโปรแกรม (Testing and Evaluation)

5.3 จัดทำคู่มือ (Documentation)

5.4 ฝึกอบรม (Training)

6. การติดตั้งระบบใหม่ หรือนำมาใช้จริง (Conversion and Installation)

6.1 ป้อนข้อมูล (Data Entry)

6.2 เริ่มใช้งานระบบ (Go On)

7. การบำรุงรักษาระบบ (System Maintenance)

สรุปเนื้อหาท้ายบท

- substring คือการตัดตัวข้อความจากตัวแปร String

เลชตัวแรกเริ่มต้นที่ 0 เลขตัวที่สองเริ่มต้นที่ 1

System.out.println("womenroom".substring(4,7));

System.out.println("womenroom".substring(0,1));

System.out.println("womenroom".substring(1,2));

System.out.println("womenroom".substring(2,3));

System.out.println("womenroom".substring(i,i + 1));

                i++          คือ ใช้ค่า i แล้วจึงเพิ่มค่าอีก 1 ให้แก่ i

                ++ i         คือ เพิ่มค่าอีก 1 ให้แก่ i แล้วจึงใช้ค่า i

      เช่น     int i = 5;

            System.out.println(i++);            // 5

            System.out.println(i++ + ++i);      // 6+8,14

            System.out.println(++i);            // 9

            System.out.println(i);              // 9

      เช่น     int i = 5;

            do {

            System.out.println(i++);            // 5,6     

            i = i++;         

            System.out.println(++i);            // 7

            } while(i <10);

      เช่น     int i = 5;

            do {

            for (int j=10;j>i;j--)  i = ++i;         

            System.out.println(++i);            // 9,11,12

            } while(i <12);

- length ของอาร์เรย์จะไม่มี () แต่ของ String จะมี ()

ที่มาจาก www.thaiall.com



องค์ความรู้ที่มีผู้อ่านมากสุด
Java ตอนที่ 3 รับข้อมูลทางแป้นพิมพ์ และแสดงผล
การติดต่อกับผู้ใช้เป็นความสามารถของภาษาคอมพิวเตอร์ที่จะเปิดให้ผู้ใช้เข้าควบคุมการทำงานของเครื่องคอมพิวเตอร์ ซึ่งการติดต่อของอุปกรณ์อิเล็กทรอนิกส์หรือฮาร์ดแวร์กับผู้ใช้นั้นสามารถกระทำได้หลายวิธี เช่น แป้นพิมพ์ (Keyboard) เมาส์ (Mouse) หรือเซนเซอร์ต่าง ๆ แต่ที่นิยมใช้และมีประสิทธิภาพสำหรับงานทั่วไปคือการรับคำสั่งจากผู้ใช้ผ่านแป้นพิมพ์ ส่วนการตอบสนองของเครื่องคอมพิวเตอร์ให้ผู้ใช้ได้ทราบถึงผลของการประมวลผลคำสั่งที่ได้รับจากผู้ใช้ก็คือจอภาพ (Screen) และเครื่องพิมพ์ (Printer) เป็นต้น ในบทนี้จะกล่าวถึงการเชื่อมต่อกับผู้ใช้ที่รับข้อมูลผ่านแป้นพิมพ์ และการแสดงผลให้ผู้ใช้ทราบทางจอภาพเป็นหลัก

โดย... ณัฐพล วัฒนวิภัทรเจริญ

่Java ตอนที่ 10 แอพเพลท
เมื่อสร้าง Applet ซึ่งเป็นแฟ้ม .class แล้ว จะต้องสร้างแฟ้ม .htm เพื่อเรียกใช้ Applet แสดงผล ซึ่งมีหลักการเช่นเดียวกับการสร้าง Application ที่ประมวลผลใน console คือได้โปรแกรม .class ก็ต้องสั่งประมวลผลผ่านโปรแกรม java แต่ Applet มีวิธีเรียกใช้ที่ต่างออกไป ซึ่งทำได้ 2 วิธี หลังสร้างแฟ้ม .htm แล้ว

โดย... ณัฐพล วัฒนวิภัทรเจริญ

ลำดับการทำงาน 3D Animation
โครงการสร้าง 3D Animation ขนาดใหญ่จะเป็นไปตามลำดับการทำงานที่เฉพาะเจาะจง แม้แต่โครงการเล็กๆ ที่มีศิลปินเพียง 1 – 2 คนก็ยังใช้ประโยชน์จากการทำงานตามลำดับขั้นที่โครงงานใหญ่ๆ ที่มีความพร้อมสูงใช้กัน โดยอาจจะนำมาใช้เป็นบางส่วนหรือทั้งหมดเลยก็มี

โดย... ณัฐพล วัฒนวิภัทรเจริญ

Java ตอนที่ 1 ความรู้เบื้องต้นเกี่ยวกับจาวา
ภาษาจาวา (Java Language) คือ ภาษาคอมพิวเตอร์ที่ถูกพัฒนาขึ้นโดยบริษัท ซันไมโครซิสเต็มส์ เป็นภาษาสำหรับเขียนโปรแกรมที่สนับสนุนการเขียนโปรแกรมเชิงวัตถุ (OOP : Object-Oriented Programming) โปรแกรมที่เขียนขึ้นถูกสร้างภายในคลาส ดังนั้นคลาส (Class) คือที่เก็บเมทธอด (Method) หรือพฤติกรรม (Behavior) ซึ่งมีสถานะ (State) และรูปพรรณ (Identity) ประจำพฤติกรรม

โดย... ณัฐพล วัฒนวิภัทรเจริญ

Java ตอนที่ 13 จาร์
Jar (ava Archieve) หมายถึง ที่เก็บเอกสาร เป็นแฟ้มที่มีสกุลเป็น .jar สามารถเก็บแฟ้มต่าง ๆ ได้เหมือนกับแฟ้ม .zip แต่ผู้พัฒนาสามารถเรียกใช้โปรแกรมภายในแฟ้ม .jar ได้ทันที โดยไม่ต้องแตกแฟ้มออกมาก่อน แล้วจึงเรียกใช้เหมือนกับแฟ้ม .zip

โดย... ณัฐพล วัฒนวิภัทรเจริญ

Java ตอนที่ 14 เจเอสพี
ภาษาเจเอสพี (JSP = Java Server Pages) คือ ภาษาสคริปต์ที่ทำงานบนเครื่องบริการ เช่นเดียวกับภาษา perl, php หรือ asp มีโครงสร้างภาษาแบบจาวา หรือภาษาซี โดยมีตัวแปลภาษาที่ถูกพัฒนาโดยบริษัทซันไมโครซิสเต็ม ซึ่งเป็นเทคโนโลยีของจาวา สำหรับสร้างรหัสเอชทีเอ็มแอล (HTML)

โดย... ณัฐพล วัฒนวิภัทรเจริญ

มารู้จักกราฟฟิคการ์ด (VGA Card)
กราฟฟิคกา่ร์ดหรือที่ภาษาทั่วไปเขาเรียกกันว่าการ์ดจอนั่นเอง คุณสมบัติของมันคือจะมีหน้าที่ช่วย CPU ในการประมวลผล คำสั่งเกี่ยวกับกราฟฟิค อาทิเช่น การทำงานด้านรูปภาำำพ การเล่นเกมส์ เป็นต้น เป็นหัวใจสำคัญในการทำงานด้านกราฟฟิค เลยทีเดียว หากคุณมีกราฟฟิคการ์ดที่มีความสามารถไม่สูงพอ ณ ขณะที่คุณทำการประมวลผลด้านกราฟฟิคที่มี ความซับซ้อนสูงก็จะทำให้เครื่องคอมพิวเตอร์ของคุณเสียเวลาไปกับมันอย่า่งมากและคุณก็จะรู้สึกว่าเครื่องคอมพิวเตอร์ ของคุณนั้นทำงานช้าเกินไป

โดย... ณัฐพล วัฒนวิภัทรเจริญ

การประยุกต์ใช้งานอินทราเน็ตและเอ็กทราเน็ตเพื่อสนับสนุนการค้าบนเวบ (Intranet/Extranet)
ตามความหมายแล้ว ทั้งสองระบบนี้ หมายถึง ระบบเครือข่ายที่สร้างขึ้นจากการนำหลักการหรือระบบการทำงานของอินเทอร์เนตมาใช้งานภายในองค์กร (Intranet) และระหว่างองค์กรเฉพาะกลุ่ม (Extranet) ซึ่งหน้าที่ต่างๆในการใช้งานไม่ว่าจะเป็นเรื่องเว็บบราวเซอร์ การรับ-ส่งอีเมล์ การทำการโอนย้ายแฟ้มข้อมูล (FTP) จะเหมือนกันกับที่ใช้อยู่บนระบบอินเทอร์เน็ตปกติ ซึ่งระบบนี้ทำงานด้วยการตั้งอินทราเน็ตเซิร์ฟเวอร์ขึ้นมาภายในองค์กรหรือศูนย์กลางของกลุ่มองค์กรของเรา เช่น ระหว่างบริษัทของเรากับกับกลุ่มตัวแทนจำหน่าย

โดย... ณัฐพล วัฒนวิภัทรเจริญ

ระบบ SAN (Storage Area Network)
ยุคการจัดการความรอบรู้ได้เริ่มต้นขึ้นแล้ว อิเล็กทรอนิกส์ทำให้ระบบการเรียนรู้ต่าง ๆ เปลี่ยนแปลงไปมาก เรามีระบบการเรียนรู้แบบใหม่ที่ชื่อ eLearning ใช้สื่อข้อมูลเป็นแหล่งการเรียนรู้ใหญ่ มีระบบ eLibrary เก็บข้อมูลหนังสือที่เป็นแบบ eBook รวมทั้งสิ่งพิมพ์ประเภท eMagazine eJournal และ eProceeding ระบบ e ยังทำให้เกิดการเรียนรู้แบบ eEducation on Demand หรือ eEOD

โดย... ณัฐพล วัฒนวิภัทรเจริญ

Java ตอนที่ 12 แพ็คเกจ
ในอนาคต หากมี .class หลายร้อยแฟ้ม และเก็บแยก directory อย่างเป็นระเบียบ เช่น ห้อง c:\java\bin\aaa เก็บ .class 100 แฟ้ม และ c:\java\bin\burin เก็บ . class 150 แฟ้ม การเรียกใช้จากแต่ละห้อง สามารถทำได้ด้วยการใช้คำสั่ง import แต่ class ที่อยู่ในแต่ละห้องจะประกาศด้วยคำสั่ง package และมีข้อมูลว่าแต่ละห้อง จะต้องมีชื่อ class ที่ไม่ซ้ำกัน

โดย... ณัฐพล วัฒนวิภัทรเจริญ