หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/slide/4121306a/02_oop.pdf ·...

56
LOGO หลักการเชิงวัตถุ (Object Oriented Concept) Nerissa Onkhum 19/06/55 1

Upload: others

Post on 05-Feb-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

LOGO

หลักการเชิงวัตถุ(Object Oriented Concept)

Nerissa Onkhum19/06/55 1

Page 2: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

วัตถุประสงค์

แนะน าวัตถุและคลาส

อธิบายคุณลกัษณะและเมธอด

อธิบายการเขียนโปรแกรมเชิงวัตถโุดยใช้ภาษาจาวา

แนะน าการเขียนโปรแกรมโดยใช้คุณลักษณะเด่น

ของโปรแกรมเชิงวัตถุ

แนะน า Unified Modelling Language

อธิบายขั้นตอนการพัฒนาโปรแกรม19/06/55 2

Page 3: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

หลักการเชิงวัตถุ

ภาษาจาวาเป็นภาษาคอมพิวเตอร์ที่ใช้หลักการเชิงวัตถุ OOP (Object Oriented Programming) OOP เป็นขบวนการการพัฒนาโปรแกรมโดยการจ าลองปัญหาว่า

ประกอบไปดว้ยวัตถใุดบ้าง นิยามที่ส าคัญคือ วัตถุ (object)

คลาส (class)

19/06/55 3

Page 4: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

วัตถุ

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

วัตถปุระกอบด้วย คุณลักษณะ (attribute) หรือข้อมูล (data) พฤติกรรม (behavior) หรือเมธอด (method)

19/06/55 4

Page 5: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

วัตถุ

คุณลกัษณะ ข้อมูลของวัตถุ แต่ละวัตถุอาจมีค่าของคุณลักษณะที่ต่างกนั

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

19/06/55 5

Page 6: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างของวัถตุ

19/06/556

วัตถุ “พนักงานบริษัท”แอตทริบิวต์ รหัสพนักงาน, เงินเดือน, เวลาเข้างาน

เมธอด รูดบัตรพนักงาน, รับเงินเดือน

วัตถุ “โทรทัศน์”แอตทริบิวต์ ยี่ห้อ, ขนาด, ระบบเสียง, ฟังก์ชันการท างาน

เมธอด เปิด, ปิด, เพิ่ม, ลดเสียง, ปรับความคมชัดของภาพ

Page 7: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างของวัถตุ

19/06/557

วัตถุ “รถจักรยานยนต์”แอตทริบิวต์ ยี่ห้อ, รุ่น, สี, ระบบเกียร์, ปริมาตรกระบอกสูบ

เมธอด ติดเครื่อง, ออกตัว, เลี้ยว, เปลี่ยนเกียร์, หยุดรถ

วัตถุ “โทรศัพท์มือถือ”แอตทริบิวต์ ยี่ห้อ, รุ่น, จอภาพ, รูปแบบของเสียงเรียกเข้า

เมธอด เปิด, ปิด, เลือกรูปแบบของเสียงเรียกเข้า, ตั้งเวลาปลุก

Page 8: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

Account

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

19/06/558

Page 9: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

คลาส

เปรียบเสมือนพิมพ์เขียวของวัตถุวัตถุจะถูกสร้างมาจากคลาส บางครั้งเรียกว่าเป็น instance ของคลาสคลาสหนึ่งคลาสสามารถสร้างวัตถุได้หลายวัตถุ อาทิเช่นคลาสชื่อ Student อาจสร้างวัตถชุื่อ s1,s2 หรอื s3 ซึ่งเป็นวัตถุชนิด Student

19/06/55 9

Page 10: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

รูปแสดงการสร้างวัตถจุากคลาส Student

19/06/55 10

Page 11: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

คุณลักษณะของวัตถุ

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

19/06/55 11

Page 12: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างคุณลักษณะของวัตถุ

19/06/55 12

Page 13: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

คุณลักษณะของคลาส

เป็นคุณลักษณะที่ใช้ร่วมกันของทุกวัตถุทุกวัตถุจะใช้คุณลักษณะร่วมกันท าให้ประหยัดพื้นที่ในหน่วยความจ าตัวอย่างเช่น คุณลักษณะที่ก าหนดให้เป็นค่าคงที่ชื่อ

MIN_GPA

19/06/55 13

Page 14: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างคุณลักษณะของคลาส

19/06/55 14

Page 15: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

เมธอด

วิธีการหรือการกระท าที่นิยามอยู่ในคลาสหรอืวัตถุ เพื่อใช้ในการจัดการกับคุณลักษณะของวัตถุเปรียบเทียบได้กับ function, procedure หรอื subroutine ของโปรแกรมเชิงกระบวนการตัวอย่างเช่น เมธอด deposit() เพื่อเป็นเมธอดส าหรับฝากเงิน

19/06/55 15

Page 16: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การสื่อสารระหว่างวัตถุ

การส่ือสารระหว่างกันของวัตถทุ าได้โดยการผ่านข่าวสาร (message)

objB คือ ชื่อวัตถุmethod4 คือ ชื่อเมธอด(1,2) คือ argument

19/06/55 16

Page 17: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การสื่อสารระหว่างวัตถุ

ข่าวสารจะส่งผ่านจากวัตถุ objA ที่เป็นผู้ส่ง (sender) เพื่อเรียกการท างานของเมธอดที่ชื่อ method4 จากวัตถุ objB ที่เป็นผู้รับ (receiver)objB อาจส่งค่า (return value) บางค่ากลับมายัง objA

19/06/55 17

Page 18: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การเขียนโปรแกรมเชิงวัตถุโดยใช้ภาษาจาวา

Modifier ในภาษาจาวาการประกาศคลาสการประกาศคุณลักษณะการประกาศเมธอดการประกาศและสร้างวัตถุการเรียกใช้สมาชิกของวัตถุ19/06/55 18

Page 19: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

Modifier ในภาษาจาวา

Modifier ในภาษาจาวาแบ่งออกเป็น 2 ประเภท คือ Access modifier ได้แก่ private, public, protected และ

package (อาจเรียก package ว่า none, default หรือ friendly) Non-access modifier ได้แก่ final, abstract, static, native,

transient, volatile, synchronized, strictfp

19/06/55 19

Page 20: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

Modifier ในภาษาจาวา

การน า Access Modifier ไปใช้งาน access modifier ใช้ก าหนดไว้หน้าคลาส แอตทริบิวต์ เมธอด จุดประสงค์ เพื่อก าหนดระดับการเข้าใช้งาน access modifier : public, protected, package, private modifier public และ package สามารถใช้ก าหนดใหก้ับคลาส แอตทรบิิวต์หรือเมธอด Modifier protected และ private ใช้ก าหนดให้กบัคลาสไม่ได้ แต่สามารถก าหนดให้กบัแอตทริบิวตห์รือเมธอดได้

19/06/5520

Page 21: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

Modifier ในภาษาจาวา

สรุปการน า access modifier แต่ละแบบไปใชง้าน

19/06/5521

Access modifier ใช้กับคลาส ใช้กับแอตทริบิวต์ ใช้กับเมธอด

public

protected

package

private

Page 22: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

Modifier ในภาษาจาวาจาวาแบ่งระดับของ access modifier ออกเป็น 4 ระดับ คอื public (สาธารณะ) หากก าหนด modifier public ให้กบัคลาส แอตทริบิวต์ หรือเมธอดใดแล้ว คลาสอื่น ๆ จะสามารถเข้าใช้งานคลาส แอตทริบิวต์ หรือเมธอดนั้นได้อิสระ ไม่มีขดีจ ากัด

protected (ถูกปกป้อง) ไม่ได้เปิดให้คลาสใด ๆ สามารถเข้าใช้งานได้อย่างอิสระ แต่ไม่ถึงกับปิดไม่ให้ใครเข้าใช้งานเลย

19/06/5522

Page 23: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

Modifier ในภาษาจาวา protected มีลักษณะการเข้าใช้งาน ดังนี้

• ก าหนด modifier เป็น protected ให้กับแอตทริบิวตแ์ละเมธอดของคลาส คลาสอื่น ๆ ในเพ็กเกจเดียวกันจะสามารถเรียกใช้งานแอตทรบิิวต์และ เมธอดได้

• ก าหนด modifier เป็น protected ให้กับแอตทริบิวตแ์ละเมธอดของคลาส คลาสอื่น ๆ ที่อยู่ต่างเพ็กเกจ จะไม่สามารถเรียกใช้งานแอตทริบิวตแ์ละ เมธอดได้

• ก าหนด modifier เป็น protected ให้กับแอตทริบิวตแ์ละเมธอดของคลาส คลาสอื่น ๆ ที่มีความสัมพันธ์เป็นคลาสแม่คลาสลูกกับคลาสนี้ ถึงแม้จะ อยู่คนละแพ็กเกจกัน ก็สามารถเรียกใช้งานแอตทริบิวตแ์ละเมธอดได้

19/06/55 23

Page 24: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

Modifier ในภาษาจาวา package

• กรณีท่ีไม่ไดก้ าหนด modifier ใด ๆ ไว้หน้าคลาส แอตทริบิวต์หรือเมธอด จะท าให้คลาส แอตทริบิวต์ หรือเมธอดมีระดับเข้าถึงเป็น package

• ก าหนด modifier เป็น package หน้าคลาส แอตทริบิวต์ หรือเมธอด จะท าให้คลาสที่อยู่ในแพ็กเกจอื่นจะไม่สามารถเข้าใช้งานคลาส แอตทริบิวต์ หรือเมธอดได้

private (ส่วนบุคคล)• แอตทริบิวต์และเมธอดของคลาสจะถูกหุ้มห่อ (Encapsulate) เอาไว้ ปิดกั้นไม่ให้คลาสอื่นเข้ามาใช้งานแอตทริบิวต์หรือเมธอดที่ก าหนด modifier เป็น private ได้

• จะมีเฉพาะคลาสของมันเองเท่านั้นที่มีสิทธิ์ใช้งานได้ หลักการนี้เรียกว่า information hiding

19/06/55 24

Page 25: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

Modifier ในภาษาจาวา

สรุปการท างาน access modifier แต่ละแบบ

19/06/5525

Access modifier

ใช้ได้ทั้งหมด

แพ็กเกจเดียวกัน

ต่างแพ็กเกจกัน

ต่างแพ็กเกจกันแต่เป็นคลาสแม่

คลาสลูก

คลาสเดียวกัน

public

protected

package

private

Page 26: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การประกาศคลาส

26

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

[modifier] class Classname {[class member]

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

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

Page 27: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การประกาศคลาส

ตัวอย่าง

public class Student {

}

19/06/55 27

Page 28: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

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

[modifier] dataType attributeName;

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

19/06/55 28

Page 29: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

ตัวอย่าง

public class Student {

public String id;

public String name;

public double gpa;

}

19/06/55 29

Page 30: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

ภาษาจาวาก าหนดรูปแบบของการประกาศเมธอดที่อยู่ในคลาสไว้ดังน้ี[modifier] return_type methodName([arguments]) {

[method_body]

}

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

19/06/55 30

Page 31: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างโปรแกรม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);

}}

19/06/55 31

Page 32: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

เมธอดที่ชื่อ main()

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

public static void main(String args[]) {

[method_body]

}

19/06/55 32

Page 33: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

วัตถนุั้นเป็นวัตถุของคลาสใด โดยมีรูปแบบการประกาศ ดังนี้

[modifier] ClassName objectName;

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

ตัวอย่างStudent s1;

19/06/55 33

Page 34: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การสร้างวัตถุ

ค าส่ังที่ใช้ในการสร้างวัตถจุะมีรูปแบบ ดงันี้

objectName = new ClassName([arguments]);

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

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

19/06/55 34

Page 35: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การประกาศและสร้างวัตถุ

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

[modifier] ClassName objectName = new ClassName([arguments]);

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

19/06/55 35

Page 36: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การเรียกใช้สมาชิกของวัตถุ

การเรียกใช้คุณลักษณะของวัตถมุีรูปแบบ ดังนี้

objectName.attributeName;

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

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

19/06/55 36

Page 37: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การเรียกใช้สมาชิกของวัตถุ

ตัวอย่าง

s1.setName("Thana");

19/06/55 37

Page 38: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างโปรแกรม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();

}

}

19/06/55 38

Page 39: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

คุณลักษณะเด่นของโปรแกรมวัตถุ

การหอ่หุ้ม (Encapsulation)การสืบทอด (Inheritance)การมีไดห้ลายรูปแบบ (Polymorphism)

19/06/55 39

Page 40: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การห่อหุ้ม

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

คุณสมบัติเป็น private และก าหนดให้เมธอดมีคุณสมบัติเป็น public

19/06/55 40

Page 41: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ข้อดีของการห่อหุ้ม

การซ่อนเร้นข้อมูล (Information Hiding)

ท าใหว้ัตถุสามารถติดต่อกับวัตถุภายนอกผ่านเมธอดที่เป็นส่วนของ interface เท่านั้น

ความเป็นโมดูล (Modularity)

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

19/06/55 41

Page 42: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างโปรแกรม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);

}}

19/06/55 42

Page 43: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

การสืบทอด

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

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

19/06/55 43

Page 44: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างโปรแกรม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;}

}

19/06/55 44

Page 45: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

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

ตัวอย่าง

19/06/55 45

Page 46: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ตัวอย่างโปรแกรม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();

}}19/06/55 46

Page 47: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

Unified Modeling Language (UML)

เป็นภาษาที่สามารถน ารูปกราฟฟิกมาจ าลองโปรแกรมเชิงวัตถุได้ประกอบด้วยสองส่วนคือ ไดอะแกรมของคลาส (Class Diagram) ไดอะแกรมของวัตถุ (Object Diagram)

19/06/55 47

Page 48: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ไดอะแกรมของคลาส

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

คุณลักษณะภายในคลาส

เมธอดภายในคลาส

19/06/55 48

Page 49: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

19/06/55 49

Page 50: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

ขั้นตอนการพัฒนาโปรแกรม

ขั้นตอนการวิเคราะห์ (Analysis)ขั้นตอนการออกแบบ (Design)ขั้นตอนการเขียนโปรแกรม (Programming)ขั้นตอนการทดสอบ (Testing)ขั้นตอนการท างาน (Operation)

19/06/55 50

Page 51: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

19/06/55 51

Page 52: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

โปรแกรมเชิงวัตถุจะมีค านิยามที่ส าคัญสองค าคือวัตถุและคลาสวัตถุคือสิ่งต่างๆที่มีอยู่ในชีวิตประจ าวันจะประกอบไปด้วยคุณลักษณะและเมธอดคลาสเปรียบเสมือนพิมพ์เขียวของวัตถุ วัตถุที่ถูกสร้างมาจากคลาส วัตถุหลายวัตถุ

สามารถถูกสร้างจากคลาสหนึ่งคลาสได้คุณลักษณะของวัตถุคือข้อมูลที่เก็บอยู่ในวัตถุซึ่งจะแบ่งออกเป็น ตัวแปรและค่าคงที่คุณลักษณะของคลาสเป็นคุณลักษณะที่ใช้ร่วมกันของทุกวัตถุ เมธอดคือวิธีการเพื่อใช้ในการจัดการกับคุณลักษณะของวัตถุหรือคุณลักษณะของ

คลาส

19/06/55 52

Page 53: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

ภาษาจาวามีนิยามในการเขียนโปรแกรมเชิงวัตถเุพื่อประกาศคลาส คุณลักษณะ เมธอดและวัตถุ

โปรแกรมเชิงวัตถุจะมีคุณลักษณะเด่นอยู่สามประการคือ การห่อหุ้ม การสืบทอดและการมีได้หลายรูปแบบ

การห่อหุ้มคือการที่ให้คุณลักษณะถูกห่อหุ้มอยู่ภายในเมธอด โดยก าหนดให้คุณลักษณะมี access modifier เป็น private และก าหนดให้เมธอดมี access modifier เป็น public

ข้อดีของการห่อหุ้มคือการซ่อนเร้นข้อมูลและความเป็นโมดูลการสืบทอดคือการที่คลาสใหม่สามารถน าเอาคุณลักษณะและเมธอดของคลาสที่

ออกแบบไว้แล้วมาใช้ได้19/06/55

53

Page 54: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

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

การมีได้หลายรูปแบบคือการที่ก าหนดให้มีการตอบสนองต่อเมธอดเดียวกันด้วยวิธีการที่ต่างกัน และสามารถก าหนดวัตถไุด้หลายรูปแบบ

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

วัฎจักรการพัฒนาโปรแกรมจะประกอบไปด้วยขั้นตอนต่างๆ 5 ขั้นตอนคือขั้นตอนการวิเคราะห์ ขั้นตอนการออกแบบ ขั้นตอนการเขียนโปรแกรม ขั้นตอนการทดสอบ และขั้นตอนการท างาน

19/06/55 54

Page 55: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

แบบทดสอบที่ 2

ให้นักศึกษาตอบค าถามต่อไปน้ี

1. จงอธิบายความหมายและส่วนประกอบของวัตถุ พร้อมทั้งยกตัวอย่างประกอบ2. คลาสคืออะไร

3. เมธอดคืออะไร 4. จงอธิบายการสื่อสารระหว่างวัตถุ 5. จงอธิบาย Modifier ในภาษาจาวาคืออะไร มีกี่ประเภท 6. จงสรุปการน า access modifier แต่ละแบบไปใช้งาน 7. จงสรุปการท างาน access modifier แต่ละแบบ 8. จงอธิบาย UML คืออะไร และมีส่วนประกอบอะไรบ้าง 19/06/55 55

Page 56: หลักการเชิงวัตถุmathcom.uru.ac.th/~beebrain/Slide/4121306A/02_OOP.pdf · 2012-06-19 · อธิบายขั้นตอน ... วัตถุที่เป็นนามธรรมเช่นคะแนนรายชื่อวิชาบัญชี

LOGO

19/06/55 56