Upload
gretel
View
55
Download
0
Embed Size (px)
DESCRIPTION
หลักการเชิง วัตถุ (Object Oriented Concept). Nerissa Onkhum. วัตถุประสงค์. แนะนำ วัตถุ และคลาส อธิบายคุณลักษณะและเมธอด อธิบายการเขียนโปรแกรมเชิง วัตถุ โดยใช้ภาษาจาวา แนะนำการเขียนโปรแกรมโดยใช้คุณลักษณะเด่น ของโปรแกรมเชิ งวัตถุ - PowerPoint PPT Presentation
Citation preview
LOGO
หลั�กการเชิงวั�ตถุ�(Object
Oriented Concept)
หลั�กการเชิงวั�ตถุ�(Object
Oriented Concept)
Nerissa Onkhum21/04/23 1
วั�ตถุ�ประสงค์�แนะน�าวั�ตถุ�แลัะค์ลัาสอธิบายค์�ณลั�กษณะแลัะเมธิอดอธิบายการเขี ยนโปรแกรมเชิงวั�ตถุ�โดยใชิ#ภาษาจาวัา แนะน�าการเขี ยนโปรแกรมโดยใชิ#ค์�ณลั�กษณะเด&น
ขีองโปรแกรมเชิงวั�ตถุ� แนะน�า Unified Modelling Languageอธิบายขี�'นตอนการพั�ฒนาโปรแกรม
21/04/23 2
หลั�กการเชิงวั�ตถุ� ภาษาจาวาเป็�นภาษาคอมพิ�วเตอร์�ที่��ใช้�หลั�กการ์เช้�ง
ว�ตถุ� OOP (Object Oriented Programming) OOP เป็�นขบวนการ์การ์พิ�ฒนาโป็ร์แกร์มโดยการ์
จ&าลัองป็'ญหาว)า ป็ร์ะกอบไป็ด�วยว�ตถุ� ใดบ�าง น�ยามที่��สำ&าค�ญค-อ
ว�ตถุ� (object) คลัาสำ (class)
21/04/23 3
วั�ตถุ�วั�ตถุ� ค์*อส+งต&าง ๆ ที่ +ม อย.&ในชิ วัตประจ�าวั�น
ว�ตถุ� ที่��เป็�นร์.ป็ธร์ร์มเช้)น น�กศึ1กษา ใบลังที่ะเบ�ยน ป็ากกา แลัะร์ถุ
ว�ตถุ� ที่��เป็�นนามธร์ร์มเช้)น คะแนน ร์ายช้-�อว�ช้า บ�ญช้� เง�นฝาก แลัะตาร์างเที่��ยวบ�น
วั�ตถุ�ประกอบด#วัย ค�ณลั�กษณะ (attribute) หร์-อข�อม.ลั (data) พิฤต�กร์ร์ม (behavior) หร์-อเมธอด (method)
21/04/23 4
วั�ตถุ�ค์�ณลั�กษณะ
ข�อม.ลัของว�ตถุ� แต)ลัะว�ตถุ�อาจม�ค)าของค�ณลั�กษณะที่��ต)างก�น
เมธิอด สำ��งที่��ว�ตถุ�สำามาร์ถุกร์ะที่&าได� ค&าสำ��งในการ์ที่&างานของโป็ร์แกร์มเช้�งว�ตถุ� โป็ร์แกร์มจะจ�ดการ์ก�บข�อม.ลัโดยเร์�ยกใช้�เมธอด
21/04/23 5
ต�วัอย&างขีองวั�ถุต�
21/04/236
วั�ตถุ� พัน�กงานบรษ�ที่“ ”แอตที่ร์�บ�วต�
ร์ห�สำพิน�กงาน, เง�นเด-อน, เวลัาเข�างาน
เมธอด ร์.ดบ�ตร์พิน�กงาน, ร์�บเง�นเด-อน “ ”วั�ตถุ� โที่รที่�ศน�
แอตที่ร์�บ�วต�
ย��ห�อ, ขนาด, ร์ะบบเสำ�ยง, ฟั'งก�ช้�นการ์ที่&างาน
เมธอด เป็6ด, ป็6ด, เพิ��ม, ลัดเสำ�ยง, ป็ร์�บความคมช้�ดของภาพิ
ต�วัอย&างขีองวั�ถุต�
21/04/237
“ ”วั�ตถุ� รถุจ�กรยานยนต�แอตที่ร์�บ�วต�
ย��ห�อ, ร์� )น, สำ�, ร์ะบบเก�ยร์�, ป็ร์�มาตร์กร์ะบอกสำ.บ
เมธอด ต�ดเคร์-�อง, ออกต�ว, เลั�7ยว, เป็ลั��ยนเก�ยร์�, หย�ดร์ถุ “ ”วั�ตถุ� โที่รศ�พัที่�ม*อถุ*อ
แอตที่ร์�บ�วต�
ย��ห�อ, ร์� )น, จอภาพิ, ร์.ป็แบบของเสำ�ยงเร์�ยกเข�า
เมธอด เป็6ด, ป็6ด, เลั-อกร์.ป็แบบของเสำ�ยงเร์�ยกเข�า, ต�7งเวลัาป็ลั�ก
ต�วัอย&างขีองโปรแกรมเชิงวั�ตถุ�โป็ร์แกร์มร์ะบบจ�ดการ์บ�ญช้�เง�นฝากของธนาคาร์
ต�วัอย&างขีองวั�ตถุ� Account Customer Transaction ATM
Account อาจม�ค�ณลั�กษณะเช้)น เลัขที่��บ�ญช้� ช้-�อเจ�าของบ�ญช้� ว�นที่��
เป็6ดบ�ญช้� แลัะยอดเง�นคงเหลั-อ อาจม�เมธอดเช้)น ฝาก ถุอน แลัะโอนเง�น
21/04/238
ค์ลัาสเป็ร์�ยบเสำม-อนพิ�มพิ�เข�ยวของว�ตถุ�ว�ตถุ� จะถุ.กสำร์�างมาจากคลัาสำ บางคร์�7ง
เร์�ยกว)าเป็�น instance ของคลัาสำคลัาสำหน1�งคลัาสำสำามาร์ถุสำร์�างว�ตถุ�ได�
หลัายว�ตถุ� อาที่�เช้)น คลัาสำช้-�อ Student อาจสำร์�างว�ตถุ� ช้-�อ s1,s2 หร์-อ s3 ซึ่1�งเป็�นว�ตถุ� ช้น�ด Student
21/04/23 9
ร.ปแสดงการสร#างวั�ตถุ� จากค์ลัาสStudent
21/04/23 10
ค์�ณลั�กษณะขีองวั�ตถุ�ข�อม.ลัที่��เก:บอย.)ในว�ตถุ� แบ)งเป็�นต�วแป็ร์
(variable) แลัะค)าคงที่��(constant) ต�วแป็ร์ค-อค�ณลั�กษณะที่��สำามาร์ถุเป็ลั��ยนค)า
ได� ค)าคงที่��ค-อค�ณลั�กษณะที่��ไม)สำามาร์ถุเป็ลั��ยน
ค)าได�21/04/23 11
ต�วัอย&างค์�ณลั�กษณะขีองวั�ตถุ�
21/04/23 12
ค์�ณลั�กษณะขีองค์ลัาสเป็�นค�ณลั�กษณะที่��ใช้�ร์)วมก�นของที่�ก
ว�ตถุ�ที่�กว�ตถุ�จะใช้�ค�ณลั�กษณะร์)วมก�นที่&าให�
ป็ร์ะหย�ดพิ-7นที่�� ในหน)วยความจ&า
ต�วอย)างเช้)น ค�ณลั�กษณะที่��ก&าหนดให� เป็�นค)าคงที่��ช้-�อ MIN_GPA
21/04/23 13
ต�วัอย&างค์�ณลั�กษณะขีองค์ลัาส
21/04/23 14
เมธิอดว�ธ�การ์หร์-อการ์กร์ะที่&าที่��น�ยามอย.)ในคลัาสำหร์-อ
ว�ตถุ� เพิ-�อใช้�ในการ์จ�ดการ์ก�บค�ณลั�กษณะของว�ตถุ�
เป็ร์�ยบเที่�ยบได�ก�บ function, procedure หร์-อ subroutine ของโป็ร์แกร์มเช้�ง
กร์ะบวนการ์ ต�วอย)างเช้)น เมธอด deposit() เพิ-�อเป็�น
เมธอดสำ&าหร์�บ ฝากเง�น21/04/23 15
การส*+อสารระหวั&างวั�ตถุ�การ์สำ-�อสำาร์ร์ะหว)างก�นของว�ตถุ�ที่&าได�โดยการ์ผ่)าน
ข)าวสำาร์ (message)
objB ค-อ ช้-�อว�ตถุ�method4 ค-อ ช้-�อเมธอด(1,2) ค-อ argument
21/04/23 16
การส*+อสารระหวั&างวั�ตถุ�ข)าวสำาร์จะสำ)งผ่)านจากว�ตถุ� objA ที่��เป็�น
ผ่.�สำ)ง (sender) เพิ-�อเร์�ยก การ์ที่&างานของเมธอดที่��ช้-�อ method4
จากว�ตถุ� objB ที่��เป็�นผ่.�ร์ �บ (receiver)objB อาจสำ)งค)า (return value) บาง
ค)ากลั�บมาย�ง objA
21/04/23 17
การเขี ยนโปรแกรมเชิงวั�ตถุ�
โดยใชิ#ภาษาจาวัาModifier ในภาษาจาวาการ์ป็ร์ะกาศึคลัาสำการ์ป็ร์ะกาศึค�ณลั�กษณะการ์ป็ร์ะกาศึเมธอดการ์ป็ร์ะกาศึแลัะสำร์�างว�ตถุ�การ์เร์�ยกใช้�สำมาช้�กของว�ตถุ�21/04/23 18
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
Modifier ในภาษาจาวัาการน�า Access Modifier ไปใชิ#งาน
access modifier ใช้�ก&าหนดไว�หน�าคลัาสำ แอตที่ร์�บ�วต� เมธอด จ�ดป็ร์ะสำงค� เพิ-�อก&าหนดร์ะด�บการ์เข�าใช้�งาน access modifier : public, protected, package, private modifier public แลัะ package สำามาร์ถุใช้�ก&าหนดให�ก�บค์ลัาส
แอตที่รบวัต�หร์-อเมธิอด Modifier protected แลัะ private ใช้�ก&าหนดให�ก�บคลัาสำไม)ได�
แต)สำามาร์ถุก&าหนดให�ก�บแอตที่รบวัต�หร์-อเมธิอดได�
21/04/23
20
Modifier ในภาษาจาวัาสร�ปการน�า access modifier แต&ลัะแบบ
ไปใชิ#งาน
21/04/2321
Access modifier
ใชิ#ก�บค์ลัาส ใชิ#ก�บแอตที่รบวัต�
ใชิ#ก�บเมธิอด
public protected
package
private
Modifier ในภาษาจาวัาจาวาแบ)งร์ะด�บของ access modifier ออกเป็�น 4 ร์ะด�บ ค-อ
public (สาธิารณะ ) หากก&าหนด modifier public ให�ก�บคลัาสำ แอตที่ร์�บ�วต� หร์-อเมธอดใดแลั�ว คลัาสำอ-�น ๆ จะสามารถุเขี#าใชิ#งานค์ลัาส แอตที่รบวัต� หร*อเมธิอดน�'นได#อสระ ไม&ม ขี ดจ�าก�ด
protected (ถุ.กปกป2อง ) ไม)ได�เป็6ดให�คลัาสำใด ๆ สำามาร์ถุเข�าใช้�งานได�อย)างอ�สำร์ะ แต)ไม)ถุ1งก�บป็6ดไม)ให�ใคร์เข�าใช้�งานเลัย
21/04/23
22
Modifier ในภาษาจาวัา protected ม�ลั�กษณะการ์เข�าใช้�งาน ด�งน�7
•ก&าหนด modifier เป็�น protected ให�ก�บแอตที่ร์�บ�วต�แลัะเมธอดของคลัาสำ ค์ลัาสอ*+น ๆ ในเพั3กเกจเด ยวัก�นจะสามารถุเร ยกใชิ#งานแอตที่รบวัต�แลัะ เมธิอดได#
•ก&าหนด modifier เป็�น protected ให�ก�บแอตที่ร์�บ�วต�แลัะเมธอดของคลัาสำ ค์ลัาสอ*+น ๆ ที่ +อย.&ต&างเพั3กเกจ จะไม&สามารถุเร ยกใชิ#งานแอตที่รบวัต�แลัะ
เมธิอดได# •ก&าหนด modifier เป็�น protected ให�ก�บแอตที่ร์�บ�วต�แลัะเมธอดของคลัาสำ คลัาสำอ-�น ๆ
ที่��ม ค์วัามส�มพั�นธิ�เป4นค์ลัาสแม&ค์ลัาสลั.กก�บค์ลัาสน�7 ถุ1งแม�จะ อย.&ค์นลัะแพั3กเกจก�น ก:สำามาร์ถุเร ยกใชิ#งานแอตที่รบวัต�แลัะเมธิอดได#
21/04/23 23
Modifier ในภาษาจาวัา package
•กร์ณ�ที่��ไม&ได#ก�าหนด modifier ใด ๆ ไว�หน�าคลัาสำ แอตที่ร์�บ�วต�หร์-อเมธอด จะที่�าให#ค์ลัาส แอตที่รบวัต� หร*อเมธิอดม ระด�บเขี#าถุ5งเป4น package
•ก�าหนด modifier เป4น package หน�าคลัาสำ แอตที่ร์�บ�วต� หร์-อเมธอด จะที่�าให#ค์ลัาสที่ +อย.&ในแพั3กเกจอ*+นจะไม&สามารถุเขี#าใชิ#งานค์ลัาส แอตที่รบวัต� หร*อเมธิอดได#
private (ส&วันบ�ค์ค์ลั)•แอตที่รบวัต�แลัะเมธิอดขีองค์ลัาสจะถุ.กห�#มห&อ (Encapsulate) เอาไว� ป็6ดก�7นไม)ให�
คลัาสำอ-�นเข�ามาใช้�งานแอตที่ร์�บ�วต�หร์-อเมธอดที่��ก&าหนด modifier เป็�น private ได�•จะม�เฉพิาะค์ลัาสขีองม�นเองเที่&าน�'นที่ +ม สที่ธิ6ใชิ#งานได# หลั�กการ์น�7เร์�ยกว)า information hiding
21/04/23 24
Modifier ในภาษาจาวัาสร�ปการที่�างาน access modifier แต&ลัะ
แบบ
21/04/2325
Access modifi
er
ใชิ#ได#ที่�'งหมด
แพั3กเกจ
เด ยวัก�น
ต&างแพั3กเก
จก�น
ต&างแพั3กเกจก�นแต&เป4น
ค์ลัาสแม&ค์ลัาสลั.ก
ค์ลัาสเด ยวัก�
น
public
protected
package
private
การประกาศค์ลัาส
26
โป็ร์แกร์มภาษาจาวาแต)ลัะโป็ร์แกร์มจะป็ร์ะกอบไป็ด�วย คลัาสำอย)างน�อยหน1�งคลัาสำ โดยม�ร์.ป็แบบการ์ป็ร์ะกาศึ
ด�งน�7[modifier] class Classname {[class member]
} modifier ค-อค�ย�เว�ร์�ด (keyword) ของภาษาจาวาที่��ใช้�ในการ์
อธ�บายร์ะด�บการ์เข�าถุ1ง (access modifier) class ค-อค�ย�เว�ร์�ดของภาษาจาวาเพิ-�อร์ะบ�ว)าเป็�นการ์ป็ร์ะกาศึคลัาสำ Classname ค-อช้-�อคลัาสำ class member ค-อเมธอดหร์-อค�ณลั�กษณะ
การประกาศค์ลัาสต�วอย)าง
public class Student {
}
21/04/23 27
การประกาศค์�ณลั�กษณะค�ณลั�กษณะของว�ตถุ�ค-อต�วแป็ร์หร์-อค)าคงที่��ซึ่1�งป็ร์ะกาศึภายในว�ตถุ�
โดยม�ร์.ป็แบบการ์ป็ร์ะกาศึ ด�งน�7
[modifier] dataType attributeName;
modifier ค-อค�ย�เว�ร์�ดของภาษาจาวาที่��อธ�บายค�ณสำมบ�ต�ต)างๆของต�วแป็ร์หร์-อค)าคงที่��
dataType ค-อช้น�ดข�อม.ลัซึ่1�งอาจเป็�นช้น�ดข�อม.ลัพิ-7นฐานหร์-อช้น�ดคลัาสำ
attributeName ค-อช้-�อของค�ณลั�กษณะ21/04/23 28
การประกาศค์�ณลั�กษณะต�วอย)าง
public class Student {public String id;
public String name;public double gpa;
}
21/04/23 29
การประกาศเมธิอดภาษาจาวาก&าหนดร์.ป็แบบของการ์ป็ร์ะกาศึเมธอดที่��อย.)ในคลัาสำไว�
ด�งน�7 [modifier] return_type
methodName([arguments]) { [method_body]
} modifier ค-อค�ย�เว�ร์ �ดของภาษาจาวาที่��ใช้�อธ�บายร์ะด�บการ์เข�าถุ1ง return_type ค-อช้น�ดข�อม.ลัของค)าที่��จะม�การ์สำ)งกลั�บ methodName ค-อช้-�อของเมธอด arguments ค-อต�วแป็ร์ที่��ใช้�ในการ์ร์�บข�อม.ลัที่��ว�ตถุ� สำ)งมาให� method_body ค-อค&าสำ��งต)างๆของภาษาจาวาที่��อย.)ในเมธอด
21/04/23 30
ต�วัอย&างโปรแกรม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
เมธิอดที่ +ชิ*+อ main() โป็ร์แกร์มจาวาป็ร์ะย�กต� (Java Application) จะ
เร์��มต�นการ์ที่&างานในคลัาสำที่��ม�เมธอดที่��ช้-�อ main โดยม�ร์.ป็แบบของเมธอด ด�งน�7
public static void main(String args[]) {
[method_body] }
21/04/23 32
การประกาศวั�ตถุ�ว�ตถุ�ที่�กว�ตถุ� ในโป็ร์แกร์มภาษาจาวาจะต�องม�ค&าสำ��งป็ร์ะกาศึ เพิ-�อ
ร์ะบ�ว)าว�ตถุ�น�7นเป็�นว�ตถุ� ของคลัาสำใด โดยม�ร์.ป็แบบการ์ป็ร์ะกาศึด�งน�7
[modifier] ClassName objectName;
modifier ค-อค�ย�เว�ร์�ดที่��อธ�บายค�ณสำมบ�ต�ต)าง ๆ ของว�ตถุ� ClassName ค-อช้-�อของคลัาสำสำ&าหร์�บว�ตถุ�น�7น objectName ค-อช้-�อของว�ตถุ�
ต�วอย)างStudent s1;
21/04/23 33
การสร#างวั�ตถุ�ค&าสำ��งที่��ใช้�ในการ์สำร์�างว�ตถุ� จะม�ร์.ป็แบบ ด�งน�7
objectName = new ClassName([arguments]);
objectName ค-อ ช้-�อของว�ตถุ� new ค-อ ค�ย�เว�ร์�ดของภาษาจาวาเพิ-�อใช้�ในการ์สำร์�างว�ตถุ� ClassName ค-อ ช้-�อของคลัาสำ arguments ค-อ ค)าที่��ต�องการ์สำ)งผ่)านในการ์เร์�ยก
Constructorต�วอย)าง
s1 = new Student();21/04/23 34
การประกาศแลัะสร#างวั�ตถุ�ค&าสำ��งในการ์ป็ร์ะกาศึแลัะสำร์�างว�ตถุ�สำามาร์ถุที่��จะร์วมเป็�น
ค&าสำ��งเด�ยวก�น โดยม�ร์.ป็แบบค&าสำ��ง ด�งน�7
[modifier] ClassName objectName = new ClassName([arguments]);
ต�วอย)างStudent s1 = new Student();
21/04/23 35
การเร ยกใชิ#สมาชิกขีองวั�ตถุ�
การ์เร์�ยกใช้�ค�ณลั�กษณะของว�ตถุ� ม�ร์.ป็แบบ ด�งน�7objectName.attributeName;
การ์เร์�ยกใช้�เมธอดของว�ตถุ� ม�ร์.ป็แบบ ด�งน�7
objectName.methodName([arguments]); objectName ค-อช้-�อของว�ตถุ�ที่��สำร์�างข17น methodName ค-อช้-�อของเมธอดของว�ตถุ�น�7น arguments ค-อค)าที่��ต�องการ์สำ)งผ่)านไป็ให�ก�บเมธอดของ
ว�ตถุ�น�7น21/04/23 36
การเร ยกใชิ#สมาชิกขีองวั�ตถุ�
ต�วอย)าง
s1.setName("Thana");
21/04/23 37
ต�วัอย&างโปรแกรม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
ค์�ณลั�กษณะเด&นขีองโปรแกรมวั�ตถุ�
การ์ห)อห��ม (Encapsulation) การ์สำ-บที่อด (Inheritance) การ์ม�ได�หลัายร์.ป็แบบ(Polymorphism)
21/04/23 39
การห&อห�#มหมายถุ1งการ์จะเร์�ยกใช้�ค�ณลั�กษณะของว�ตถุ�จะ
ที่&าได�โดยการ์เร์�ยกผ่)านเมธอดเที่)าน�7นหลั�กการ์ของการ์ห)อห��มค-อการ์ก&าหนดให�
ค�ณลั�กษณะของว�ตถุ� ม�ค�ณสำมบ�ต�เป็�นprivate แลัะก&าหนดให�เมธอดม�ค�ณสำมบ�ต�เป็�นpublic
21/04/23 40
ขี#อด ขีองการห&อห�#ม การซ่&อนเร#นขี#อม.ลั (Information
Hiding) ที่&าให�ว�ตถุ�สำามาร์ถุต�ดต)อก�บว�ตถุ�ภายนอกผ่)าน
เมธอดที่��เป็�นสำ)วนของ interface เที่)าน�7น ค์วัามเป4นโมด.ลั (Modularity)
การ์พิ�ฒนาโป็ร์แกร์มเช้�งว�ตถุ�จะสำามาร์ถุก&าหนดให�ว�ตถุ�แต)ลัะว�ตถุ�ม�ความเป็�นอ�สำร์ะต)อ
ก�น21/04/23 41
ต�วัอย&างโปรแกรม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
การส*บที่อดหมายถุ1งการ์น�ยามคลัาสำใหม)จากร์.ป็แบบของคลัาสำที่��
ม�อย.)แลั�ว โดยคลัาสำใหม)สำามาร์ถุที่��จะน&าค�ณลั�กษณะ แลัะเมธอดของคลัาสำเด�มมาใช้�ได�
โดยในภาษาจาวาจะใช้�ค�ย�เว�ร์�ด extends เพิ-�อร์ะบ� การ์สำ-บที่อด
ต�วอย)าง
21/04/23 43
ต�วัอย&างโปรแกรม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
การม ได#หลัายร.ปแบบหมายถุ1งการ์ที่��สำามาร์ถุตอบสำนองต)อ
ข)าวสำาร์ (เมธอด) เด�ยวก�นด�วยว�ธ�การ์ที่��ต)าง ก�น แลัะสำามาร์ถุก&าหนดว�ตถุ� ได�หลัายร์.ป็แบบ
ต�วอย)าง
21/04/23 45
ต�วัอย&างโปรแกรม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
Unified Modeling Language (UML)
เป็�นภาษาที่��สำามาร์ถุน&าร์.ป็กร์าฟัฟั6กมาจ&าลัองโป็ร์แกร์มเช้�งว�ตถุ�ได�
ป็ร์ะกอบด�วยสำองสำ)วนค-อ ไดอะแกร์มของคลัาสำ (Class Diagram)
ไดอะแกร์มของว�ตถุ� (Object Diagram)
21/04/23 47
ไดอะแกรมขีองค์ลัาสเป็�นสำ�ญลั�กษณ�ที่��ใช้�แสำดงคลัาสำ ป็ร์ะกอบด�วยสำ)วนต)างๆ สำามสำ)วนค-อ
ช้-�อของคลัาสำ ค�ณลั�กษณะภายในคลัาสำ เมธอดภายในคลัาสำ
21/04/23 48
ไดอะแกรมขีองวั�ตถุ�ป็ร์ะกอบไป็ด�วยสำ)วนต)างๆสำองสำ)วนค-อ
สำ)วนที่��ร์ะบ�ช้-�อของว�ตถุ� สำ)วนที่��ร์ะบ�ค)าของค�ณลั�กษณะภายในว�ตถุ�
21/04/23 49
ขี�'นตอนการพั�ฒนาโปรแกรม
ข�7นตอนการ์ว�เคร์าะห� (Analysis) ข�7นตอนการ์ออกแบบ (Design) ข�7นตอนการ์เข�ยนโป็ร์แกร์ม
(Programming) ข�7นตอนการ์ที่ดสำอบ (Testing) ข�7นตอนการ์ที่&างาน (Operation)21/04/23 50
ร.ปแสดงขี�'นตอนการพั�ฒนาโปรแกรม
21/04/23 51
สร�ปเน*'อหาขีองบที่โป็ร์แกร์มเช้�งว�ตถุ�จะม�ค&าน�ยามที่��สำ&าค�ญสำองค&าค-อว�ตถุ�แลัะคลัาสำว�ตถุ�ค-อสำ��งต)างๆที่��ม�อย.)ในช้�ว�ตป็ร์ะจ&าว�นจะป็ร์ะกอบไป็ด�วย
ค�ณลั�กษณะแลัะเมธอดคลัาสำเป็ร์�ยบเสำม-อนพิ�มพิ�เข�ยวของว�ตถุ� ว�ตถุ�ที่��ถุ.กสำร์�างมาจาก
คลัาสำ ว�ตถุ�หลัายว�ตถุ�สำามาร์ถุถุ.กสำร์�างจากคลัาสำหน1�งคลัาสำได�ค�ณลั�กษณะของว�ตถุ�ค-อข�อม.ลัที่��เก:บอย.)ในว�ตถุ�ซึ่1�งจะแบ)งออก
เป็�น ต�วแป็ร์แลัะค)าคงที่��ค�ณลั�กษณะของคลัาสำเป็�นค�ณลั�กษณะที่��ใช้�ร์)วมก�นของที่�กว�ตถุ�เมธอดค-อว�ธ�การ์เพิ-�อใช้�ในการ์จ�ดการ์ก�บค�ณลั�กษณะของว�ตถุ�
หร์-อค�ณลั�กษณะของคลัาสำ21/04/23 52
สร�ปเน*'อหาขีองบที่ภาษาจาวาม�น�ยามในการ์เข�ยนโป็ร์แกร์มเช้�งว�ตถุ�เพิ-�อป็ร์ะกาศึ
คลัาสำ ค�ณลั�กษณะ เมธอด แลัะว�ตถุ�โป็ร์แกร์มเช้�งว�ตถุ� จะม�ค�ณลั�กษณะเด)นอย.)สำามป็ร์ะการ์ค-อ การ์ห)อ
ห��ม การ์สำ-บที่อด แลัะการ์ม�ได�หลัายร์.ป็แบบ การ์ห)อห��มค-อการ์ที่��ให�ค�ณลั�กษณะถุ.กห)อห��มอย.)ภายในเมธอด
โดยก&าหนดให�ค�ณลั�กษณะม� access modifier เป็�น private แลัะก&าหนดให�เมธอดม� access modifier เป็�น public
ข�อด�ของการ์ห)อห��มค-อการ์ซึ่)อนเร์�นข�อม.ลัแลัะความเป็�นโมด.ลัการ์สำ-บที่อดค-อการ์ที่��คลัาสำใหม)สำามาร์ถุน&าเอาค�ณลั�กษณะแลัะ
เมธอดของคลัาสำที่��ออกแบบไว�แลั�วมาใช้�ได�
21/04/2353
สร�ปเน*'อหาขีองบที่การ์ม�ได�หลัายร์.ป็แบบค-อการ์ที่��ก&าหนดให�ม�การ์ตอบสำนองต)อ
เมธอดเด�ยวก�นด�วยว�ธ�การ์ที่��ต)างก�น แลัะสำามาร์ถุก&าหนดว�ตถุ�ได�หลัายร์.ป็แบบ
Unified Modeling Language (UML) เป็�นภาษาที่��ใช้�ร์.ป็ กร์าฟัฟั6กเพิ-�อจ&าลัองร์ะบบซึ่อฟัต�แวร์� ในที่��น�7ได�แนะน&า
สำ�ญลั�กษณ�ของ UML ที่��สำ&าค�ญสำองอย)างค-อ ไดอะแกร์มของคลัาสำแลัะไดอะแกร์มของว�ตถุ�
ว�ฎจ�กร์การ์พิ�ฒนาโป็ร์แกร์มจะป็ร์ะกอบไป็ด�วยข�7นตอนต)างๆ 5 ข�7นตอนค-อ ข�7นตอนการ์ว�เคร์าะห� ข� 7นตอนการ์ออกแบบ ข�7น
ตอนการ์เข�ยนโป็ร์แกร์ม ข�7นตอนการ์ที่ดสำอบ แลัะข�7นตอนการ์ ที่&างาน
21/04/23 54
แบบที่ดสอบที่ + 2ให#น�กศ5กษาตอบค์�าถุามต&อไปน '
1. จงอธ�บายความหมายแลัะสำ)วนป็ร์ะกอบของว�ตถุ� พิร์�อมที่�7งยกต�วอย)างป็ร์ะกอบ2. คลัาสำค-ออะไร์
3 . เมธอดค-ออะไร์ 4. จงอธ�บายการ์สำ-�อสำาร์ร์ะหว)างว�ตถุ� 5. จงอธ�บาย Modifier ในภาษาจาวาค-ออะไร์ ม�ก��ป็ร์ะเภที่ 6. จงสำร์�ป็การ์น&า access modifier แต)ลัะแบบไป็ใช้�งาน 7. จงสำร์�ป็การ์ที่&างาน access modifier แต)ลัะแบบ 8. จงอธ�บาย UML ค-ออะไร์ แลัะม�สำ)วนป็ร์ะกอบอะไร์บ�าง
21/04/23 55
LOGO
21/04/23 56