Top Banner
ภาษา Java เบื้องต้น
37

ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java...

Mar 07, 2018

Download

Documents

dangminh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ภาษา Java เบื้องต้น

Page 2: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

Java Java เป็นภาษาทีส่ามารถแบบเชิงวตัถุใช้หลกัการเชิงออปเจ็ค

แบง่งานเปน็ส่วนย่อยๆ และเป็นอสิระต่อกัน แต่สามารถมีการท างานท่ีร่วมกนั

การเขียนเชิงวัตถุ ไม่จ าเป็นตอ้งเป็นวัตถุทีจ่ับต้องได้จรงิๆ เช่น เวลา

นิยามทีส่ าคัญคอื ออปเจ็ต คลาส

Page 3: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

Object Object คือสื่งที่มอียู่ในชีวิตประจ าวนั ออปเจค็ที่เป็นรูปธรรม เช่น นักเรียน ใบลงทะเบียน ปากกา และรถ ออปเจค็ที่เป็นนามธรรมเช่น คะแนน รายชื่อวิชา บัญชีเงินฝาก ตารางเที่ยวบิน

Object ประกอบด้วย คณุลักษณะ (Attribute) หรือ ข้อมูล (Data) พฤติกรรม (behavior) หรือเมธอด (Method)

Page 4: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

Object คุณลกัษณะ ขอ้มลูของออปเจค็ แต่ละออปเจค็อาจมคีา่ของคุณลกัษณะทีต่่างกนั

เมธอด สิง่ทีอ่อปเจค็สามารถกระท าได้ ค าสัง่ในการท างานของโปรแกรมเชงิออปเจค็ โปรแกรมจะจดัการกบัขอ้มลูโดยเรยีกใชเ้มธอด

Page 5: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

นักศึกษา อาจจะมีคุณลักษณะเช่น รหัส ช่ือ และเกรดเฉลี่ย อาจจะมเีมธอดเช่น ลงทะเบียน สอบ และเดิน

รถยนต์ อาจจะมีคุณลักษณะเช่น ยี่ห้อ รุ่น และสี อาจจะมเีมธอดเช่น เคลื่อนที่ หยุด และเลี้ยว

สุนัข อาจจะมีคุณลักษณะเช่น ชื่อ พันธ์ และสี อาจจะมเีมธอดเช่น เห่า คลาน และกระดิกหาง

Page 6: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ตวัอยา่งของโปรแกรมเชงิออปเจค็ โปรแกรมระบบจดัการบญัชเีงนิฝากของธนาคาร

ตวัอยา่งของออปเจค็ Account

Customer

Transaction

ATM

Account

อาจมคีุณลกัษณะเชน่ เลขทีบ่ญัชี ชื่อเจา้ของบญัชี วนัทีเ่ปิดบญัชี และยอดเงนิคงเหลอื

อาจมเีมธอดเช่น ฝาก ถอน และโอนเงนิ

Page 7: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

คลาส เปรียบเสมือนพมิพ์เขียวของออปเจค็

ออปเจ็คจะถูกสรา้งมาจากคลาส บางครั้งเรียกว่าเปน็ instance ของคลาส

คลาสหนึ่งคลาสสามารถสร้างออปเจ็คได้หลายออปเจ็ค อาทิเช่น คลาสชื่อ Student

อาจสร้างออปเจ็คชื่อ s1,s2 หรือ s3 ซึ่งเป็นออปเจ็คชนิด Student

Page 8: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ตัวอย่าง Object VS class

Class

Object

จักระ 50 จักระ 30 จักระ 100 จักระ 20 จักระ 40

Page 9: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

คุณลกัษณะของออปเจค็ (attribute) ขอ้มลูทีเ่กบ็อยูใ่นออปเจค็

แบง่เป็นตวัแปร (variable) และคา่คงที่ (constant) ตวัแปรคอืคุณลกัษณะทีส่ามารถเปลีย่นคา่ได้ คา่คงทีค่อืคุณลกัษณะทีไ่มส่ามารถเปลีย่นคา่ได้

Page 10: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

เมธอด วธิกีารหรอืการกระท าทีนิ่ยามอยูใ่นคลาสหรอืออปเจค็เพือ่ใชใ้นการจดัการกบั

คุณลกัษณะของออปเจค็

เปรยีบเทยีบไดก้บั function, procedure หรอื subroutine ของโปรแกรมเชงิกระบวนการ

ตวัอยา่งเชน่ เมธอด deposit()เพือ่เป็นเมธอดส าหรบัฝากเงนิ

Page 11: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การสื่อสารระหว่างออปเจ็ค การสือ่สารระหว่างกนัของออปเจ็คท าได้โดยการผ่านข่าวสาร (message)

objB คอืชือ่ออปเจค็

method4 คอืชือ่เมธอด

(1,2) คอืargument

Page 12: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การสื่อสารระหว่างออปเจ็ค ข่าวสารจะส่งผ่านจากออปเจ็ค objA ที่เป็นผูส้่ง (sender) เพ่ือเรยีกการท างานของ

เมธอดที่ช่ือ method4 จากออปเจ็ค objB ที่เป็นผู้รับ (receiver)

objB อาจส่งค่า (return value) บางค่ากลับมายงั objA

Page 13: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การเขยีนโปรแกรมเชงิออปเจค็โดยใชภ้าษาจาวา การประกาศคลาส

การประกาศคณุลกัษณะ

การประกาศเมธอด

การประกาศและสรา้งออปเจค็

การเรยีกใชส้มาชกิของออปเจค็

Page 14: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การประกาศคลาส โปรแกรมภาษาจาวาแต่ละโปรแกรมจะประกอบไปด้วยคลาสอย่างน้อยหนึ่งคลาส โดยมี

รูปแบบการประกาศดงันี้[modifier] class Classname {

[class member]

}

modifier คือคียเ์วิร์ด (keyword) ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (access modifier)

class คือคีย์เวิร์ดของภาษาจาวาเพื่อระบุว่าเป็นการประกาศคลาส Classname คือชื่อคลาส class member คือเมธอดหรือคุณลักษณะ

ตวัอยา่งpublic class Student {

}

Page 15: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การประกาศคุณลกัษณะ คุณลกัษณะของออปเจค็คอืตวัแปรหรอืคา่คงทีซ่ึง่ประกาศภายในออปเจค็ โดยมรีูปแบบ

การประกาศดงันี้[modifier] dataType attributeName;

modifier คอืคยีเ์วริด์ของภาษาจาวาทีอ่ธบิายคุณสมบตัติ่างๆของตวัแปรหรอืคา่คงที่ dataType คอืชนิดขอ้มลูซึง่อาจเป็นชนิดขอ้มลูพืน้ฐานหรอืชนิดคลาส attributeName คอืชื่อของคุณลกัษณะ

ตวัอยา่งpublic class Student {

public String id;

public String name;

public double gpa;

}

Page 16: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การประกาศเมธอด ภาษาจาวาก าหนดรปูแบบของการประกาศเมธอดทีอ่ยูใ่นคลาสไวด้งัน้ี

[modifier] return_type methodName([arguments])

{

[method_body]

}

modifier คอืคยีเ์วริด์ของภาษาจาวาทีใ่ชอ้ธบิายระดบัการเขา้ถงึ return_type คอืชนิดขอ้มลูของคา่ทีจ่ะมกีารสง่กลบั methodName คอืชือ่ของเมธอด arguments คอืตวัแปรทีใ่ชใ้นการรบัขอ้มลูทีอ่อปเจค็สง่มาให้ method_body คอืค าสัง่ต่างๆของภาษาจาวาทีอ่ยูใ่นเมธอด

Page 17: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ตัวอย่างโปรแกรม

public class Student { public String id;

public String name;public double gpa;public void setID(String ID) {

id = ID;}

public void setName(String n) {name = n;

}

public void setGPA(double GPA) {gpa = GPA;

}public void showDetails() {

System.out.println("ID: "+id);System.out.println("Name: "+name);System.out.println("GPA: "+gpa);

}}

Page 18: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

เมธอดทีช่ือ่ main() โปรแกรมจาวาประยุกต์ (Java Application) จะเริม่ตน้การท างานในคลาสทีม่เีมธ

อดทีช่ือ่ main โดยมรีปูแบบของเมธอดดงัน้ีpublic static void main(String args[]) {

[method_body]

}

Page 19: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การประกาศออปเจค็ ออปเจค็ทกุออปเจค็ในโปรแกรมภาษาจาวาจะตอ้งมคี าสัง่ประกาศเพือ่ระบุวา่ออป

เจค็นัน้เป็นออปเจค็ของคลาสใด โดยมรีปูแบบการประกาศดงัน้ี[modifier] ClassName objectName;

modifier คอืคยีเ์วริด์ทีอ่ธบิายคณุสมบตัติ่างๆของออปเจค็ ClassName คอืชือ่ของคลาสส าหรบัออปเจค็นัน้ objectName คอืชือ่ของออปเจค็

ตวัอยา่งStudent s1;

Page 20: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การสรา้งออปเจค็ ค าสัง่ทีใ่ชใ้นการสรา้งออปเจค็จะมรีปูแบบดงัน้ี

objectName = new ClassName([arguments]);

objectName คอืชือ่ของออปเจค็ new คอืคยีเ์วริด์ของภาษาจาวาเพือ่ใชใ้นการสรา้งออปเจค็ ClassName คอืชือ่ของคลาส arguments คอืคา่ทีต่อ้งการสง่ผา่นในการเรยีก Constructor

ตวัอยา่งs1 = new Student();

Page 21: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การประกาศและสรา้งออปเจค็ ค าสัง่ในการประกาศและสรา้งออปเจค็สามารถทีจ่ะรวมเป็นค าสัง่เดยีวกนั โดยมี

รปูแบบค าสัง่ดงัน้ี[modifier] ClassName objectName =

new ClassName([arguments]);

ตวัอยา่งStudent s1 = new Student();

Page 22: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การเรยีกใชส้มาชกิของออปเจค็ การเรยีกใชค้ณุลกัษณะของออปเจค็มรีปูแบบดงัน้ี

objectName.attributeName;

การเรยีกใชเ้มธอดของออปเจค็มรีปูแบบดงัน้ีobjectName.methodName([arguments]);

objectName คอืชือ่ของออปเจค็ทีส่รา้งขึน้ methodName คอืชือ่ของเมธอดของออปเจค็นัน้ arguments คอืคา่ทีต่อ้งการสง่ผา่นไปใหก้บัเมธอดของออปเจค็นัน้

ตวัอยา่งs1.setName("Thana");

Page 23: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ตัวอย่างโปรแกรม

public class Sample {public static void main(String args[]) {

Student s1 = new Student();Student s2 = new Student();Student s3 = new Student();s1.setID("1234");s1.setName("Thana");s1.setGPA(3.25);s1.showDetails();s2.setID("1122");s2.setName("Somchai");s2.setGPA(2.90);s2.showDetails();s3.setID("2211");s3.setName("Somsri");s3.setGPA(3.00);s3.showDetails();

}

}

Page 24: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

คุณลกัษณะเดน่ของโปรแกรมเชงิออปเจค็ การหอ่หุม้ (Encapsulation)

การสบืทอด (Inheritance)

การมไีดห้ลายรปูแบบ (Polymorphism)

Page 25: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การหอ่หุม้ หมายถงึการจะเรยีกใชค้ณุลกัษณะของออปเจค็จะท าไดโ้ดยการเรยีกผา่นเมธอด

เทา่นัน้

หลกัการของการหอ่หุม้คอืการก าหนดใหค้ณุลกัษณะของออปเจค็มคีณุสมบตัเิป็นprivate และก าหนดใหเ้มธอดมคีณุสมบตัเิป็น public

Page 26: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ขอ้ดขีองการหอ่หุม้ การซ่อนเรน้ขอ้มลู (Information Hiding) ท าใหอ้อปเจค็สามารถตดิต่อกบัออปเจค็ภายนอกผา่นเมธอดทีเ่ป็นสว่นของ

interface เทา่นัน้

ความเป็นโมดลู (Modularity) การพฒันาโปรแกรมเชงิออปเจค็จะสามารถก าหนดใหอ้อปเจค็แต่ละออปเจค็มคีวามเป็นอสิระต่อกนั

Page 27: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ตัวอย่างโปรแกรม

public class Student {private String id;private String name;private double gpa;public void setID(String ID) {

id = ID;}public void setName(String n) {

name = n;}public void setGPA(double GPA) {

gpa = GPA;}public void showDetails() {

System.out.println("ID: "+id);System.out.println("Name: "+name);System.out.println("GPA: "+gpa);

}}

Page 28: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

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

สามารถทีจ่ะน าคณุลกัษณะและเมธอดของคลาสเดมิมาใชไ้ด้

โดยในภาษาจาวาจะใชค้ยีเ์วริด์ extends เพือ่ระบุการสบืทอด

ตวัอยา่ง

Page 29: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ตัวอย่างโปรแกรม

public class PartTimeStudent extends Student { }public class FullTimeStudent extends Student { }public class GradStudent extends Student {

private String thesisTitle;private String supervisor;public void setThesisTitle(String t) {

thesisTitle = t;}public void setSupervisor(String s) {

supervisor = s; }}public class PhDStudent extends GradStudent {

public boolean passQualify;public boolean isPassQualify() {

return passQualify;}

}

Page 30: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

การมไีดห้ลายรปูแบบ หมายถงึการทีส่ามารถตอบสนองต่อขา่วสาร (เมธอด) เดยีวกนัดว้ยวธิกีารที่

ต่างกนั และสามารถก าหนดออปเจค็ไดห้ลายรปูแบบ

Overridden method

Dynamic Binding

Page 31: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ตวัอยา่ง

Page 32: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ตัวอย่างโปรแกรม

class Ball {public void throw() { }

}class SoccerBall extends Ball {

public void throw() {System.out.println("Throwing soccerball");

}}class TennisBall extends Ball {

public void throw() {System.out.println("Throwing tennisball");

}}public class TestBall {

public static void main(String args[]) {Ball b1 = new Ball();SoccerBall b2 = new SoccerBall();Ball b3 = new SoccerBall();

}}

Page 33: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

Unified Modeling Language (UML) เป็นภาษาทีส่ามารถน ารปูกราฟฟิกมาจ าลองโปรแกรมเชงิออปเจค็ได้

ประกอบดว้ยสองสว่นคอื ไดอะแกรมของคลาส (Class Diagram) ไดอะแกรมของออปเจค็ (Object Diagram)

Page 34: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ไดอะแกรมของคลาส เป็นสญัลกัษณ์ทีใ่ชแ้สดงคลาส

ประกอบดว้ยสว่นต่างๆสามสว่นคอื ชือ่ของคลาส คุณลกัษณะภายในคลาส เมธอดภายในคลาส

Page 35: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ไดอะแกรมของออปเจค็ ประกอบไปดว้ยสว่นต่างๆสองสว่นคอื สว่นทีร่ะบุชื่อของออปเจค็ สว่นทีร่ะบุคา่ของคณุลกัษณะภายในออปเจค็

Page 36: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

ขั้นตอนการพัฒนาโปรแกรม ขัน้ตอนการวเิคราะห์ (Analysis)

ขัน้ตอนการออกแบบ (Design)

ขัน้ตอนการเขยีนโปรแกรม (Programming)

ขัน้ตอนการทดสอบ (Testing)

ขัน้ตอนการท างาน (Operation)

Page 37: ภาษา Java เบื้องต้นmathcom.uru.ac.th/~beebrain/Slide/4124303A/%c0%d2... · Java Java เป็นภาษาที่สามารถแบบเชิงวัตถุใช้หลักการเชิงออปเจ็ค

รปูแสดงขั้นตอนการพัฒนาโปรแกรม