56
LOGO หหหหหหหหหหห หหหหห (Object Oriented Concept) Nerissa Onkhum 12/06/22 1

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

  • Upload
    gretel

  • View
    55

  • Download
    0

Embed Size (px)

DESCRIPTION

หลักการเชิง วัตถุ (Object Oriented Concept). Nerissa Onkhum. วัตถุประสงค์. แนะนำ วัตถุ และคลาส อธิบายคุณลักษณะและเมธอด อธิบายการเขียนโปรแกรมเชิง วัตถุ โดยใช้ภาษาจาวา แนะนำการเขียนโปรแกรมโดยใช้คุณลักษณะเด่น ของโปรแกรมเชิ งวัตถุ - PowerPoint PPT Presentation

Citation preview

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

LOGO

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

Oriented Concept)

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

Oriented Concept)

Nerissa Onkhum21/04/23 1

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

วั�ตถุ�ประสงค์�แนะน�าวั�ตถุ�แลัะค์ลัาสอธิบายค์�ณลั�กษณะแลัะเมธิอดอธิบายการเขี ยนโปรแกรมเชิงวั�ตถุ�โดยใชิ#ภาษาจาวัา แนะน�าการเขี ยนโปรแกรมโดยใชิ#ค์�ณลั�กษณะเด&น

ขีองโปรแกรมเชิงวั�ตถุ� แนะน�า Unified Modelling Languageอธิบายขี�'นตอนการพั�ฒนาโปรแกรม

21/04/23 2

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

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

ว�ตถุ� OOP (Object Oriented Programming) OOP เป็�นขบวนการ์การ์พิ�ฒนาโป็ร์แกร์มโดยการ์

จ&าลัองป็'ญหาว)า ป็ร์ะกอบไป็ด�วยว�ตถุ� ใดบ�าง น�ยามที่��สำ&าค�ญค-อ

ว�ตถุ� (object) คลัาสำ (class)

21/04/23 3

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

วั�ตถุ�วั�ตถุ� ค์*อส+งต&าง ๆ ที่ +ม อย.&ในชิ วัตประจ�าวั�น

ว�ตถุ� ที่��เป็�นร์.ป็ธร์ร์มเช้)น น�กศึ1กษา ใบลังที่ะเบ�ยน ป็ากกา แลัะร์ถุ

ว�ตถุ� ที่��เป็�นนามธร์ร์มเช้)น คะแนน ร์ายช้-�อว�ช้า บ�ญช้� เง�นฝาก แลัะตาร์างเที่��ยวบ�น

วั�ตถุ�ประกอบด#วัย ค�ณลั�กษณะ (attribute) หร์-อข�อม.ลั (data) พิฤต�กร์ร์ม (behavior) หร์-อเมธอด (method)

21/04/23 4

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

วั�ตถุ�ค์�ณลั�กษณะ

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

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

21/04/23 5

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

ต�วัอย&างขีองวั�ถุต�

21/04/236

วั�ตถุ� พัน�กงานบรษ�ที่“ ”แอตที่ร์�บ�วต�

ร์ห�สำพิน�กงาน, เง�นเด-อน, เวลัาเข�างาน

เมธอด ร์.ดบ�ตร์พิน�กงาน, ร์�บเง�นเด-อน “ ”วั�ตถุ� โที่รที่�ศน�

แอตที่ร์�บ�วต�

ย��ห�อ, ขนาด, ร์ะบบเสำ�ยง, ฟั'งก�ช้�นการ์ที่&างาน

เมธอด เป็6ด, ป็6ด, เพิ��ม, ลัดเสำ�ยง, ป็ร์�บความคมช้�ดของภาพิ

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

ต�วัอย&างขีองวั�ถุต�

21/04/237

“ ”วั�ตถุ� รถุจ�กรยานยนต�แอตที่ร์�บ�วต�

ย��ห�อ, ร์� )น, สำ�, ร์ะบบเก�ยร์�, ป็ร์�มาตร์กร์ะบอกสำ.บ

เมธอด ต�ดเคร์-�อง, ออกต�ว, เลั�7ยว, เป็ลั��ยนเก�ยร์�, หย�ดร์ถุ “ ”วั�ตถุ� โที่รศ�พัที่�ม*อถุ*อ

แอตที่ร์�บ�วต�

ย��ห�อ, ร์� )น, จอภาพิ, ร์.ป็แบบของเสำ�ยงเร์�ยกเข�า

เมธอด เป็6ด, ป็6ด, เลั-อกร์.ป็แบบของเสำ�ยงเร์�ยกเข�า, ต�7งเวลัาป็ลั�ก

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

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

ต�วัอย&างขีองวั�ตถุ� Account Customer Transaction ATM

Account อาจม�ค�ณลั�กษณะเช้)น เลัขที่��บ�ญช้� ช้-�อเจ�าของบ�ญช้� ว�นที่��

เป็6ดบ�ญช้� แลัะยอดเง�นคงเหลั-อ อาจม�เมธอดเช้)น ฝาก ถุอน แลัะโอนเง�น

21/04/238

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

ค์ลัาสเป็ร์�ยบเสำม-อนพิ�มพิ�เข�ยวของว�ตถุ�ว�ตถุ� จะถุ.กสำร์�างมาจากคลัาสำ บางคร์�7ง

เร์�ยกว)าเป็�น instance ของคลัาสำคลัาสำหน1�งคลัาสำสำามาร์ถุสำร์�างว�ตถุ�ได�

หลัายว�ตถุ� อาที่�เช้)น คลัาสำช้-�อ Student อาจสำร์�างว�ตถุ� ช้-�อ s1,s2 หร์-อ s3 ซึ่1�งเป็�นว�ตถุ� ช้น�ด Student

21/04/23 9

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

ร.ปแสดงการสร#างวั�ตถุ� จากค์ลัาสStudent

21/04/23 10

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

ค์�ณลั�กษณะขีองวั�ตถุ�ข�อม.ลัที่��เก:บอย.)ในว�ตถุ� แบ)งเป็�นต�วแป็ร์

(variable) แลัะค)าคงที่��(constant) ต�วแป็ร์ค-อค�ณลั�กษณะที่��สำามาร์ถุเป็ลั��ยนค)า

ได� ค)าคงที่��ค-อค�ณลั�กษณะที่��ไม)สำามาร์ถุเป็ลั��ยน

ค)าได�21/04/23 11

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

ต�วัอย&างค์�ณลั�กษณะขีองวั�ตถุ�

21/04/23 12

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

ค์�ณลั�กษณะขีองค์ลัาสเป็�นค�ณลั�กษณะที่��ใช้�ร์)วมก�นของที่�ก

ว�ตถุ�ที่�กว�ตถุ�จะใช้�ค�ณลั�กษณะร์)วมก�นที่&าให�

ป็ร์ะหย�ดพิ-7นที่�� ในหน)วยความจ&า

ต�วอย)างเช้)น ค�ณลั�กษณะที่��ก&าหนดให� เป็�นค)าคงที่��ช้-�อ MIN_GPA

21/04/23 13

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

ต�วัอย&างค์�ณลั�กษณะขีองค์ลัาส

21/04/23 14

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

เมธิอดว�ธ�การ์หร์-อการ์กร์ะที่&าที่��น�ยามอย.)ในคลัาสำหร์-อ

ว�ตถุ� เพิ-�อใช้�ในการ์จ�ดการ์ก�บค�ณลั�กษณะของว�ตถุ�

เป็ร์�ยบเที่�ยบได�ก�บ function, procedure หร์-อ subroutine ของโป็ร์แกร์มเช้�ง

กร์ะบวนการ์ ต�วอย)างเช้)น เมธอด deposit() เพิ-�อเป็�น

เมธอดสำ&าหร์�บ ฝากเง�น21/04/23 15

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

การส*+อสารระหวั&างวั�ตถุ�การ์สำ-�อสำาร์ร์ะหว)างก�นของว�ตถุ�ที่&าได�โดยการ์ผ่)าน

ข)าวสำาร์ (message)

objB ค-อ ช้-�อว�ตถุ�method4 ค-อ ช้-�อเมธอด(1,2) ค-อ argument

21/04/23 16

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

การส*+อสารระหวั&างวั�ตถุ�ข)าวสำาร์จะสำ)งผ่)านจากว�ตถุ� objA ที่��เป็�น

ผ่.�สำ)ง (sender) เพิ-�อเร์�ยก การ์ที่&างานของเมธอดที่��ช้-�อ method4

จากว�ตถุ� objB ที่��เป็�นผ่.�ร์ �บ (receiver)objB อาจสำ)งค)า (return value) บาง

ค)ากลั�บมาย�ง objA

21/04/23 17

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

การเขี ยนโปรแกรมเชิงวั�ตถุ�

โดยใชิ#ภาษาจาวัาModifier ในภาษาจาวาการ์ป็ร์ะกาศึคลัาสำการ์ป็ร์ะกาศึค�ณลั�กษณะการ์ป็ร์ะกาศึเมธอดการ์ป็ร์ะกาศึแลัะสำร์�างว�ตถุ�การ์เร์�ยกใช้�สำมาช้�กของว�ตถุ�21/04/23 18

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

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

Modifier ในภาษาจาวาแบ)งออกเป็�น 2 ป็ร์ะเภที่ ค-อAccess modifier ได�แก) private, public, protected แลัะ package (อาจเร์�ยก package ว)า none, default หร์-อ friendly)

Non-access modifier ได�แก) final, abstract, static, native, transient, volatile, synchronized, strictfp

21/04/23 19

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

Modifier ในภาษาจาวัาการน�า Access Modifier ไปใชิ#งาน

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

แอตที่รบวัต�หร์-อเมธิอด Modifier protected แลัะ private ใช้�ก&าหนดให�ก�บคลัาสำไม)ได�

แต)สำามาร์ถุก&าหนดให�ก�บแอตที่รบวัต�หร์-อเมธิอดได�

21/04/23

20

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

Modifier ในภาษาจาวัาสร�ปการน�า access modifier แต&ลัะแบบ

ไปใชิ#งาน

21/04/2321

Access modifier

ใชิ#ก�บค์ลัาส ใชิ#ก�บแอตที่รบวัต�

ใชิ#ก�บเมธิอด

public protected

package

private

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

Modifier ในภาษาจาวัาจาวาแบ)งร์ะด�บของ access modifier ออกเป็�น 4 ร์ะด�บ ค-อ

public (สาธิารณะ ) หากก&าหนด modifier public ให�ก�บคลัาสำ แอตที่ร์�บ�วต� หร์-อเมธอดใดแลั�ว คลัาสำอ-�น ๆ จะสามารถุเขี#าใชิ#งานค์ลัาส แอตที่รบวัต� หร*อเมธิอดน�'นได#อสระ ไม&ม ขี ดจ�าก�ด

protected (ถุ.กปกป2อง ) ไม)ได�เป็6ดให�คลัาสำใด ๆ สำามาร์ถุเข�าใช้�งานได�อย)างอ�สำร์ะ แต)ไม)ถุ1งก�บป็6ดไม)ให�ใคร์เข�าใช้�งานเลัย

21/04/23

22

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

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

•ก&าหนด modifier เป็�น protected ให�ก�บแอตที่ร์�บ�วต�แลัะเมธอดของคลัาสำ ค์ลัาสอ*+น ๆ ในเพั3กเกจเด ยวัก�นจะสามารถุเร ยกใชิ#งานแอตที่รบวัต�แลัะ เมธิอดได#

•ก&าหนด modifier เป็�น protected ให�ก�บแอตที่ร์�บ�วต�แลัะเมธอดของคลัาสำ ค์ลัาสอ*+น ๆ ที่ +อย.&ต&างเพั3กเกจ จะไม&สามารถุเร ยกใชิ#งานแอตที่รบวัต�แลัะ

เมธิอดได# •ก&าหนด modifier เป็�น protected ให�ก�บแอตที่ร์�บ�วต�แลัะเมธอดของคลัาสำ คลัาสำอ-�น ๆ

ที่��ม ค์วัามส�มพั�นธิ�เป4นค์ลัาสแม&ค์ลัาสลั.กก�บค์ลัาสน�7 ถุ1งแม�จะ อย.&ค์นลัะแพั3กเกจก�น ก:สำามาร์ถุเร ยกใชิ#งานแอตที่รบวัต�แลัะเมธิอดได#

21/04/23 23

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

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

•กร์ณ�ที่��ไม&ได#ก�าหนด modifier ใด ๆ ไว�หน�าคลัาสำ แอตที่ร์�บ�วต�หร์-อเมธอด จะที่�าให#ค์ลัาส แอตที่รบวัต� หร*อเมธิอดม ระด�บเขี#าถุ5งเป4น package

•ก�าหนด modifier เป4น package หน�าคลัาสำ แอตที่ร์�บ�วต� หร์-อเมธอด จะที่�าให#ค์ลัาสที่ +อย.&ในแพั3กเกจอ*+นจะไม&สามารถุเขี#าใชิ#งานค์ลัาส แอตที่รบวัต� หร*อเมธิอดได#

private (ส&วันบ�ค์ค์ลั)•แอตที่รบวัต�แลัะเมธิอดขีองค์ลัาสจะถุ.กห�#มห&อ (Encapsulate) เอาไว� ป็6ดก�7นไม)ให�

คลัาสำอ-�นเข�ามาใช้�งานแอตที่ร์�บ�วต�หร์-อเมธอดที่��ก&าหนด modifier เป็�น private ได�•จะม�เฉพิาะค์ลัาสขีองม�นเองเที่&าน�'นที่ +ม สที่ธิ6ใชิ#งานได# หลั�กการ์น�7เร์�ยกว)า information hiding

21/04/23 24

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

Modifier ในภาษาจาวัาสร�ปการที่�างาน access modifier แต&ลัะ

แบบ

21/04/2325

Access modifi

er

ใชิ#ได#ที่�'งหมด

แพั3กเกจ

เด ยวัก�น

ต&างแพั3กเก

จก�น

ต&างแพั3กเกจก�นแต&เป4น

ค์ลัาสแม&ค์ลัาสลั.ก

ค์ลัาสเด ยวัก�

public

protected

package

private

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

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

26

โป็ร์แกร์มภาษาจาวาแต)ลัะโป็ร์แกร์มจะป็ร์ะกอบไป็ด�วย คลัาสำอย)างน�อยหน1�งคลัาสำ โดยม�ร์.ป็แบบการ์ป็ร์ะกาศึ

ด�งน�7[modifier] class Classname {[class member]

} modifier ค-อค�ย�เว�ร์�ด (keyword) ของภาษาจาวาที่��ใช้�ในการ์

อธ�บายร์ะด�บการ์เข�าถุ1ง (access modifier) class ค-อค�ย�เว�ร์�ดของภาษาจาวาเพิ-�อร์ะบ�ว)าเป็�นการ์ป็ร์ะกาศึคลัาสำ Classname ค-อช้-�อคลัาสำ class member ค-อเมธอดหร์-อค�ณลั�กษณะ

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

การประกาศค์ลัาสต�วอย)าง

public class Student {

}

21/04/23 27

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

การประกาศค์�ณลั�กษณะค�ณลั�กษณะของว�ตถุ�ค-อต�วแป็ร์หร์-อค)าคงที่��ซึ่1�งป็ร์ะกาศึภายในว�ตถุ�

โดยม�ร์.ป็แบบการ์ป็ร์ะกาศึ ด�งน�7

[modifier] dataType attributeName;

modifier ค-อค�ย�เว�ร์�ดของภาษาจาวาที่��อธ�บายค�ณสำมบ�ต�ต)างๆของต�วแป็ร์หร์-อค)าคงที่��

dataType ค-อช้น�ดข�อม.ลัซึ่1�งอาจเป็�นช้น�ดข�อม.ลัพิ-7นฐานหร์-อช้น�ดคลัาสำ

attributeName ค-อช้-�อของค�ณลั�กษณะ21/04/23 28

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

การประกาศค์�ณลั�กษณะต�วอย)าง

public class Student {public String id;

public String name;public double gpa;

}

21/04/23 29

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

การประกาศเมธิอดภาษาจาวาก&าหนดร์.ป็แบบของการ์ป็ร์ะกาศึเมธอดที่��อย.)ในคลัาสำไว�

ด�งน�7 [modifier] return_type

methodName([arguments]) { [method_body]

} modifier ค-อค�ย�เว�ร์ �ดของภาษาจาวาที่��ใช้�อธ�บายร์ะด�บการ์เข�าถุ1ง return_type ค-อช้น�ดข�อม.ลัของค)าที่��จะม�การ์สำ)งกลั�บ methodName ค-อช้-�อของเมธอด arguments ค-อต�วแป็ร์ที่��ใช้�ในการ์ร์�บข�อม.ลัที่��ว�ตถุ� สำ)งมาให� method_body ค-อค&าสำ��งต)างๆของภาษาจาวาที่��อย.)ในเมธอด

21/04/23 30

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

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

}}

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

}}

21/04/23 31

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

เมธิอดที่ +ชิ*+อ main() โป็ร์แกร์มจาวาป็ร์ะย�กต� (Java Application) จะ

เร์��มต�นการ์ที่&างานในคลัาสำที่��ม�เมธอดที่��ช้-�อ main โดยม�ร์.ป็แบบของเมธอด ด�งน�7

public static void main(String args[]) {

[method_body] }

21/04/23 32

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

การประกาศวั�ตถุ�ว�ตถุ�ที่�กว�ตถุ� ในโป็ร์แกร์มภาษาจาวาจะต�องม�ค&าสำ��งป็ร์ะกาศึ เพิ-�อ

ร์ะบ�ว)าว�ตถุ�น�7นเป็�นว�ตถุ� ของคลัาสำใด โดยม�ร์.ป็แบบการ์ป็ร์ะกาศึด�งน�7

[modifier] ClassName objectName;

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

ต�วอย)างStudent s1;

21/04/23 33

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

การสร#างวั�ตถุ�ค&าสำ��งที่��ใช้�ในการ์สำร์�างว�ตถุ� จะม�ร์.ป็แบบ ด�งน�7

objectName = new ClassName([arguments]);

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

Constructorต�วอย)าง

s1 = new Student();21/04/23 34

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

การประกาศแลัะสร#างวั�ตถุ�ค&าสำ��งในการ์ป็ร์ะกาศึแลัะสำร์�างว�ตถุ�สำามาร์ถุที่��จะร์วมเป็�น

ค&าสำ��งเด�ยวก�น โดยม�ร์.ป็แบบค&าสำ��ง ด�งน�7

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

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

21/04/23 35

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

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

การ์เร์�ยกใช้�ค�ณลั�กษณะของว�ตถุ� ม�ร์.ป็แบบ ด�งน�7objectName.attributeName;

การ์เร์�ยกใช้�เมธอดของว�ตถุ� ม�ร์.ป็แบบ ด�งน�7

objectName.methodName([arguments]); objectName ค-อช้-�อของว�ตถุ�ที่��สำร์�างข17น methodName ค-อช้-�อของเมธอดของว�ตถุ�น�7น arguments ค-อค)าที่��ต�องการ์สำ)งผ่)านไป็ให�ก�บเมธอดของ

ว�ตถุ�น�7น21/04/23 36

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

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

ต�วอย)าง

s1.setName("Thana");

21/04/23 37

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

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

}}

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

}}

21/04/23 38

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

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

การ์ห)อห��ม (Encapsulation) การ์สำ-บที่อด (Inheritance) การ์ม�ได�หลัายร์.ป็แบบ(Polymorphism)

21/04/23 39

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

การห&อห�#มหมายถุ1งการ์จะเร์�ยกใช้�ค�ณลั�กษณะของว�ตถุ�จะ

ที่&าได�โดยการ์เร์�ยกผ่)านเมธอดเที่)าน�7นหลั�กการ์ของการ์ห)อห��มค-อการ์ก&าหนดให�

ค�ณลั�กษณะของว�ตถุ� ม�ค�ณสำมบ�ต�เป็�นprivate แลัะก&าหนดให�เมธอดม�ค�ณสำมบ�ต�เป็�นpublic

21/04/23 40

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

ขี#อด ขีองการห&อห�#ม การซ่&อนเร#นขี#อม.ลั (Information

Hiding) ที่&าให�ว�ตถุ�สำามาร์ถุต�ดต)อก�บว�ตถุ�ภายนอกผ่)าน

เมธอดที่��เป็�นสำ)วนของ interface เที่)าน�7น ค์วัามเป4นโมด.ลั (Modularity)

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

ก�น21/04/23 41

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

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

}}

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

}}

21/04/23 42

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

การส*บที่อดหมายถุ1งการ์น�ยามคลัาสำใหม)จากร์.ป็แบบของคลัาสำที่��

ม�อย.)แลั�ว โดยคลัาสำใหม)สำามาร์ถุที่��จะน&าค�ณลั�กษณะ แลัะเมธอดของคลัาสำเด�มมาใช้�ได�

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

ต�วอย)าง

21/04/23 43

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

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

}

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

}

21/04/23 44

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

การม ได#หลัายร.ปแบบหมายถุ1งการ์ที่��สำามาร์ถุตอบสำนองต)อ

ข)าวสำาร์ (เมธอด) เด�ยวก�นด�วยว�ธ�การ์ที่��ต)าง ก�น แลัะสำามาร์ถุก&าหนดว�ตถุ� ได�หลัายร์.ป็แบบ

ต�วอย)าง

21/04/23 45

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

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

}}

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

}}21/04/23 46

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

Unified Modeling Language (UML)

เป็�นภาษาที่��สำามาร์ถุน&าร์.ป็กร์าฟัฟั6กมาจ&าลัองโป็ร์แกร์มเช้�งว�ตถุ�ได�

ป็ร์ะกอบด�วยสำองสำ)วนค-อ ไดอะแกร์มของคลัาสำ (Class Diagram)

ไดอะแกร์มของว�ตถุ� (Object Diagram)

21/04/23 47

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

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

ช้-�อของคลัาสำ ค�ณลั�กษณะภายในคลัาสำ เมธอดภายในคลัาสำ

21/04/23 48

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

ไดอะแกรมขีองวั�ตถุ�ป็ร์ะกอบไป็ด�วยสำ)วนต)างๆสำองสำ)วนค-อ

สำ)วนที่��ร์ะบ�ช้-�อของว�ตถุ� สำ)วนที่��ร์ะบ�ค)าของค�ณลั�กษณะภายในว�ตถุ�

21/04/23 49

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

ขี�'นตอนการพั�ฒนาโปรแกรม

ข�7นตอนการ์ว�เคร์าะห� (Analysis) ข�7นตอนการ์ออกแบบ (Design) ข�7นตอนการ์เข�ยนโป็ร์แกร์ม

(Programming) ข�7นตอนการ์ที่ดสำอบ (Testing) ข�7นตอนการ์ที่&างาน (Operation)21/04/23 50

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

ร.ปแสดงขี�'นตอนการพั�ฒนาโปรแกรม

21/04/23 51

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

สร�ปเน*'อหาขีองบที่โป็ร์แกร์มเช้�งว�ตถุ�จะม�ค&าน�ยามที่��สำ&าค�ญสำองค&าค-อว�ตถุ�แลัะคลัาสำว�ตถุ�ค-อสำ��งต)างๆที่��ม�อย.)ในช้�ว�ตป็ร์ะจ&าว�นจะป็ร์ะกอบไป็ด�วย

ค�ณลั�กษณะแลัะเมธอดคลัาสำเป็ร์�ยบเสำม-อนพิ�มพิ�เข�ยวของว�ตถุ� ว�ตถุ�ที่��ถุ.กสำร์�างมาจาก

คลัาสำ ว�ตถุ�หลัายว�ตถุ�สำามาร์ถุถุ.กสำร์�างจากคลัาสำหน1�งคลัาสำได�ค�ณลั�กษณะของว�ตถุ�ค-อข�อม.ลัที่��เก:บอย.)ในว�ตถุ�ซึ่1�งจะแบ)งออก

เป็�น ต�วแป็ร์แลัะค)าคงที่��ค�ณลั�กษณะของคลัาสำเป็�นค�ณลั�กษณะที่��ใช้�ร์)วมก�นของที่�กว�ตถุ�เมธอดค-อว�ธ�การ์เพิ-�อใช้�ในการ์จ�ดการ์ก�บค�ณลั�กษณะของว�ตถุ�

หร์-อค�ณลั�กษณะของคลัาสำ21/04/23 52

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

สร�ปเน*'อหาขีองบที่ภาษาจาวาม�น�ยามในการ์เข�ยนโป็ร์แกร์มเช้�งว�ตถุ�เพิ-�อป็ร์ะกาศึ

คลัาสำ ค�ณลั�กษณะ เมธอด แลัะว�ตถุ�โป็ร์แกร์มเช้�งว�ตถุ� จะม�ค�ณลั�กษณะเด)นอย.)สำามป็ร์ะการ์ค-อ การ์ห)อ

ห��ม การ์สำ-บที่อด แลัะการ์ม�ได�หลัายร์.ป็แบบ การ์ห)อห��มค-อการ์ที่��ให�ค�ณลั�กษณะถุ.กห)อห��มอย.)ภายในเมธอด

โดยก&าหนดให�ค�ณลั�กษณะม� access modifier เป็�น private แลัะก&าหนดให�เมธอดม� access modifier เป็�น public

ข�อด�ของการ์ห)อห��มค-อการ์ซึ่)อนเร์�นข�อม.ลัแลัะความเป็�นโมด.ลัการ์สำ-บที่อดค-อการ์ที่��คลัาสำใหม)สำามาร์ถุน&าเอาค�ณลั�กษณะแลัะ

เมธอดของคลัาสำที่��ออกแบบไว�แลั�วมาใช้�ได�

21/04/2353

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

สร�ปเน*'อหาขีองบที่การ์ม�ได�หลัายร์.ป็แบบค-อการ์ที่��ก&าหนดให�ม�การ์ตอบสำนองต)อ

เมธอดเด�ยวก�นด�วยว�ธ�การ์ที่��ต)างก�น แลัะสำามาร์ถุก&าหนดว�ตถุ�ได�หลัายร์.ป็แบบ

Unified Modeling Language (UML) เป็�นภาษาที่��ใช้�ร์.ป็ กร์าฟัฟั6กเพิ-�อจ&าลัองร์ะบบซึ่อฟัต�แวร์� ในที่��น�7ได�แนะน&า

สำ�ญลั�กษณ�ของ UML ที่��สำ&าค�ญสำองอย)างค-อ ไดอะแกร์มของคลัาสำแลัะไดอะแกร์มของว�ตถุ�

ว�ฎจ�กร์การ์พิ�ฒนาโป็ร์แกร์มจะป็ร์ะกอบไป็ด�วยข�7นตอนต)างๆ 5 ข�7นตอนค-อ ข�7นตอนการ์ว�เคร์าะห� ข� 7นตอนการ์ออกแบบ ข�7น

ตอนการ์เข�ยนโป็ร์แกร์ม ข�7นตอนการ์ที่ดสำอบ แลัะข�7นตอนการ์ ที่&างาน

21/04/23 54

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

แบบที่ดสอบที่ + 2ให#น�กศ5กษาตอบค์�าถุามต&อไปน '

1. จงอธ�บายความหมายแลัะสำ)วนป็ร์ะกอบของว�ตถุ� พิร์�อมที่�7งยกต�วอย)างป็ร์ะกอบ2. คลัาสำค-ออะไร์

3 . เมธอดค-ออะไร์ 4. จงอธ�บายการ์สำ-�อสำาร์ร์ะหว)างว�ตถุ� 5. จงอธ�บาย Modifier ในภาษาจาวาค-ออะไร์ ม�ก��ป็ร์ะเภที่ 6. จงสำร์�ป็การ์น&า access modifier แต)ลัะแบบไป็ใช้�งาน 7. จงสำร์�ป็การ์ที่&างาน access modifier แต)ลัะแบบ 8. จงอธ�บาย UML ค-ออะไร์ แลัะม�สำ)วนป็ร์ะกอบอะไร์บ�าง

21/04/23 55

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

LOGO

21/04/23 56