ภาษา java...

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

Upload: dangminh

Post on 07-Mar-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Customer

Transaction

ATM

Account

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

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

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

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

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

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

ตัวอย่าง Object VS class

Class

Object

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

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

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

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

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

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

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

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

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

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

(1,2) คอืargument

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

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

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

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

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

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

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

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

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

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

[class member]

}

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

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

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

}

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

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

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

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

public String id;

public String name;

public double gpa;

}

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

[modifier] return_type methodName([arguments])

{

[method_body]

}

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

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

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);

}}

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

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

[method_body]

}

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

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

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

ตวัอยา่งStudent s1;

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

objectName = new ClassName([arguments]);

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

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

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

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

new ClassName([arguments]);

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

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

objectName.attributeName;

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

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

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

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

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();

}

}

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

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

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

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

เทา่นัน้

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

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

interface เทา่นัน้

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

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

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);

}}

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

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

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

ตวัอยา่ง

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

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;}

}

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

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

Overridden method

Dynamic Binding

ตวัอยา่ง

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

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();

}}

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

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

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

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

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

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

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

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

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

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

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