Upload
dasan
View
46
Download
2
Embed Size (px)
DESCRIPTION
Lec03 :: หลักการเชิงออปเจ็ค (Object Oriented Concept). วิชา การเขียนโปรแกรมเชิงวัตถุ โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com [email protected]. วัตถุประสงค์. แนะนำออปเจ็คและคลาส อธิบายคุณลักษณะและเมธอด อธิบายการเขียนโปรแกรมเชิงออปเจ็คโดยใช้ภาษาจาวา - PowerPoint PPT Presentation
Citation preview
Lec03 :: หลั�กการเชิงออปเจ็�ค(Object Oriented Concept)
วิชิา การเขี�ยนโปรแกรมเชิงวิ�ตถุ�วิชิา การเขี�ยนโปรแกรมเชิงวิ�ตถุ�โดย อโดย อ . . น�ฐพงศ์ ส่"งเน�ยมน�ฐพงศ์ ส่"งเน�ยมhttp://[email protected]
วิ�ตถุ�ประส่งค แนะน��ออปเจ็คและคล�ส อธิ�บ�ยค�ณล�กษณะและเมธิอด อธิ�บ�ยก�รเขี�ยนโปรแกรมเชิ�งออปเจ็คโดยใชิ ภ�ษ�
จ็�ว� แนะน��ก�รเขี�ยนโปรแกรมโดยใชิ ค�ณล�กษณะเด#นขีอง
โปรแกรมเชิ�งออปเจ็ค แนะน�� Unified Modelling Language
หลั�กการเชิงออปเจ็�ค ภ�ษ�จ็�ว�เป%นภ�ษ�คอมพิ�วเตอร(ที่�*ใชิ หล�กก�รเชิ�งออป
เจ็ค OOP (Object Oriented Programming) OOP เป%นขีบวนก�รก�รพิ�ฒน�โปรแกรมโดยก�ร
จ็��ลองป-ญห�ว#�ประกอบไปด วยออปเจ็คใดบ �ง น�ย�มที่�*ส��ค�ญค0อ - ออปเจ็ค (object)
- คล�ส (class)
ออปเจ็�ค ออปเจ็คค0อส�*งต#�ง ๆ ที่�*ม�อย3#ในชิ�ว�ตประจ็��ว�น
- ออปเจ็คที่�*เป%นร3ปธิรรมเชิ#น น�กศึ5กษ� ใบลงที่ะเบ�ยน ป�กก� และรถ- ออปเจ็คที่�*เป%นน�มธิรรมเชิ#น คะแนน ร�ยชิ0*อว�ชิ� บ�ญชิ�เง�นฝ�ก และต�ร�งเที่�*ยวบ�น
ออปเจ็คประกอบด วย- ค�ณล�กษณะ (attribute) หร0อขี อม3ล (data)- พิฤต�กรรม (behavior) หร0อ (method)
ออปเจ็�ค ค�ณล�กษณะ
- ขี อม3ลขีองออปเจ็ค- แต#ละออปเจ็คอ�จ็ม�ค#�ขีองค�ณล�กษณะที่�*ต#�งก�น
เมธิอด- ส�*งที่�*ออปเจ็คส�ม�รถกระที่��ได - ค��ส�*งในก�รที่��ง�นขีองโปรแกรมเชิ�งออปเจ็ค- โปรแกรมจ็ะจ็�ดก�รก�บขี อม3ลโดยเร�ยกใชิ เมธิอด
ต�วิอย"างขีองออปเจ็�ค น�กศึ5กษ�
- อ�จ็จ็ะม�ค�ณล�กษณะเชิ#น รห�ส ชิ0*อ และเกรดเฉล�*ย- อ�จ็จ็ะม�เมธิอดเชิ#น ลงที่ะเบ�ยน สอบ และเด�น
รถยนต(- อ�จ็จ็ะม�ค�ณล�กษณะเชิ#น ย�*ห อ ร� #น และส�- อ�จ็จ็ะม�เมธิอดเชิ#น เคล0*อนที่�* หย�ด และเล�:ยว
ส�น�ขี- อ�จ็จ็ะม�ค�ณล�กษณะเชิ#น ชิ0*อ พิ�นธิ( และส�- อ�จ็จ็ะม�เมธิอดเชิ#น เห#� คล�น และกระด�กห�ง
ต�วิอย"างขีองโปรแกรมเชิงออปเจ็�ค โปรแกรมระบบจ็�ดก�รบ�ญชิ�เง�นฝ�กขีองธิน�ค�ร ต�วอย#�งขีองออปเจ็ค
- Account- Customer- Transaction- ATM
Account- อ�จ็ม�ค�ณล�กษณะเชิ#น เลขีที่�*บ�ญชิ� ชิ0*อเจ็ �ขีองบ�ญชิ� ว�นที่�*เป;ดบ�ญชิ� และยอดเง�นคงเหล0อ- อ�จ็ม�เมธิอดเชิ#น ฝ�ก ถอน และโอนเง�น
คลัาส่ เปร�ยบเสม0อนพิ�มพิ(เขี�ยวขีองออปเจ็ค ออปเจ็คจ็ะถ3กสร �งม�จ็�กคล�ส บ�งคร�:งเร�ยกว#�เป%น
instance ขีองคล�ส คล�สหน5*งคล�สส�ม�รถสร �งออปเจ็คได หล�ยออป
เจ็ค อ�ที่�เชิ#น คล�สชิ0*อ Student อ�จ็สร �งออปเจ็คชิ0*อ s1, s2 หร0อ s3 ซึ่5*งเป%นออปเจ็คชิน�ด Student
ร$ปแส่ดงการส่ร%างออปเจ็�คจ็ากคลัาส่ Student
ค�ณลั�กษณะขีองออปเจ็�ค ขี อม3ลที่�*เกบอย3#ในออปเจ็ค แบ#งเป%นต�วแปร (variable) และค#�คงที่�*
(constant)- ต�วแปรค0อค�ณล�กษณะที่�*ส�ม�รถเปล�*ยนค#�ได - ค#�คงที่�*ค0อค�ณล�กษณะที่�*ไม#ส�ม�รถเปล�*ยนค#�ได
ต�วิอย"างค�ณลั�กษณะขีองออปเจ็�ค
ค�ณลั�กษณะขีองคลัาส่ เป%นค�ณล�กษณะที่�*ใชิ ร#วมก�นขีองที่�กออปเจ็ค ที่�กออปเจ็คจ็ะใชิ ค�ณล�กษณะร#วมก�นที่��ให ประหย�ด
พิ0:นที่�*ในหน#วยคว�มจ็�� ต�วอย#�งเชิ#น ค�ณล�กษณะที่�*ก��หนดให เป%นค#�คงที่�*ชิ0*อ
MIN_GPA
ต�วิอย"างค�ณลั�กษณะขีองคลัาส่
เมธอด ว�ธิ�ก�รหร0อก�รกระที่��ที่�*น�ย�มอย3#ในคล�สหร0อออปเจ็ค
เพิ0*อใชิ ในก�รจ็�ดก�รก�บค�ณล�กษณะขีองออปเจ็ค เปร�ยบเที่�ยบได ก�บ function, procedure หร0อ
subroutine ขีองโปรแกรมเชิ�งกระบวนก�ร ต�วอย#�งเชิ#น เมธิอด deposit () เพิ0*อเป%นเมธิอด
ส��หร�บฝ�กเง�น
การส่)*อส่ารระหวิ"างออปเจ็�ค ก�รส0*อส�รระหว#�งก�นขีองออปเจ็คที่��ได โดยก�รผ่#�น
ขี#�วส�ร (message)ObjB ค0อชิ0*อออปเจ็คmethod4 ค0อชิ0*อเมธิอด
1 2( , ) ค0อ argument
การส่)*อส่ารระหวิ"างออปเจ็�ค ขี#�วส�รจ็ะส#งผ่#�นจ็�กออปเจ็ค objA ที่�*เป%นผ่3 ส#ง
(sender) เพิ0*อเร�ยกก�รที่��ง�นขีองเมธิอดที่�*ชิ0*อ method4 จ็�กออปเจ็ค objB ที่�*เป%นผ่3 ร �บ (receiver)
ObjB อ�จ็ส#งค#� (return value) บ�งค#�กล�บม�ย�ง objA
การเขี�ยนโปรแกรมเชิงออปเจ็�คโดยใชิ%ภาษาจ็าวิา ก�รประก�ศึคล�ส ก�รประก�ศึค�ณล�กษณะ ก�รประก�ศึเมธิอด ก�รประก�ศึและสร �งออปเจ็ค ก�รเร�ยกใชิ สม�ชิ�กขีองออปเจ็ค
การประกาศ์คลัาส่ โปรแกรมภ�ษ�จ็�ว�แต#ละโปรแกรมจ็ะประกอบไปด วยคล�ส
อย#�งน อยหน5*งคล�ส โดยม�ร3ปแบบก�รประก�ศึด�งน�:[modifier] class Classname {
[class member]}
- modifier ค0อค�ย(เว�ร(ด (keyword) ขีองภ�ษ�จ็�ว�ที่�*ใชิ ในก�รอธิ�บ�ยระด�บก�รเขี �ถ5ง (access modifier)- class ค0อค�ย(เว�ร(ดขีองภ�ษ�จ็�ว�เพิ0*อระบ�ว#�เป%นก�รประก�ศึคล�ส- Classname ค0อชิ0*อคล�ส- class member ค0อเมธิอดหร0อค�ณล�กษณะ
ต�วอย#�งpublic class Student {}
การประกาศ์ค�ณลั�กษณะ ค�ณล�กษณะขีองออปเจ็คค0อต�วแปรหร0อค#�คงที่�*ซึ่5*งประก�ศึภ�ย
ในออปเจ็คโดยม�ร3ปแบบก�รประก�ศึด�งน�:[modifier] dataType attributeName;
- modifier ค0อค�ย(เว�ร(ดขีองภ�ษ�จ็�ว�ที่�*อธิ�บ�ยค�ณสมบ�ต�ต#�ง ๆ ขีองต�วแปรหร0อค#�คงที่�*- dataType ค0อชิน�ดขี อม3ลซึ่5*งอ�จ็เป%นชิน�ดขี อม3ลพิ0:นฐ�นหร0อชิน�ดคล�ส- attributeName ค0อชิ0*อขีองค�ณล�กษณะ
ต�วอย#�งpublic class Student {
public String id;public String name;public double gpa;
}
การประกาศ์เมธอด ภ�ษ�ว�จ็�ก��หนดร3ปแบบขีองก�รประก�ศึเมธิอดที่�*อย3#ในคล�สไว
ด�งน�:[modifier] return_type methodName ( [argument]) {
[method_body]}
- modifier ค0อค�ย(เว�ร (ดขีองภ�ษ�จ็�ว�ที่�*ใชิ อธิ�บ�ยระด�บก�รเขี �ถ5ง- return_type ค0อชิน�ดขี อม3ลขีองค#�ที่�*จ็ะม�ก�รส#งกล�บ- methodName ค0อชิ0*อขีองเมธิอด- arguments ค0อ ต�วแปรที่�*ใชิ ในก�รร�บขี อม3ลที่�*ออปเจ็คส#งม�ให - method_body ค0อค��ส�*งต#�ง ๆ ขีองภ�ษ�จ็�ว�ที่�*อย3#ในเมธิอด
ต�วิอย"างโปรแกรมpublic class Student {
public String id;public String name;public double gpa;
public static final double minGPA =2.00 ;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) จ็ะเร�*มต นก�รที่��ง�นในคล�สที่�*ม�เมธิอดที่�*ชิ0*อ main โดยม�ร3ปแบบขีองเมธิอดด�งน�:
public static void main (String args[]) {
[method_body]}
การประกาศ์ออปเจ็�ค ออปเจ็คที่�กออปเจ็คในโปรแกรมภ�ษ�จ็�ว�จ็ะต องม�ค��ส�*ง
ประก�ศึเพิ0*อระบ�ว#�ออปเจ็คน�:นเป%นออปเจ็คขีองคล�สใด โดยม�ร3ปแบบก�รประก�ศึด�งน�:
[modifier] ClassName objectName;- modifier ค0อค�ย(เว�ร(ดที่�*อธิ�บ�ยค�ณสมบ�ต�ต#�ง ๆ ขีองออปเจ็ค- ClassName ค0อชิ0*อขีองคล�สส��หร�บออปเจ็คน�:น- objectName ค0อชิ0*อขีองออปเจ็ค
ต�วอย#�งStudent s1;
การส่ร%างออปเจ็�ค ค��ส�*งที่�*ใชิ ในก�รสร �งออปเจ็คจ็ะม�ร3ปแบบด�งน�:
objectName = new ClassName ([argument]);
- objectName ค0อชิ0*อขีองออปเจ็ค- new ค0อค�ย(เว�ร(ดขีองภ�ษ�จ็�ว�เพิ0*อใชิ ในก�รสร �งออปเจ็ค- ClassName ค0อชิ0*อขีองคล�ส- arguments ค0อค#�ที่�*ต องก�รส#งผ่#�นในก�รเร�ยกเมธิอด
ต�วอย#�งs1 = new Student ();
การประกาศ์แลัะส่ร%างออปเจ็�ค ค��ส�*งในก�รประก�ศึและสร �งออปเจ็คส�ม�รถที่�*จ็ะ
รวมเป%นค��ส�*งเด�ยวก�นโดยม�ร3ปแบบค��ส�*งด�งน�:[modifier] ClassName objectName =
new className ([argument]);
ต�วอย#�งStudent s1 = new Student () ;
การเร�ยกใชิ%ส่มาชิกขีองออปเจ็�ค ก�รเร�ยกใชิ ค�ณล�กษณะขีองออปเจ็คม�ร3ปแบบด�งน�:
objectName.attributeName; ก�รเร�ยกใชิ เมธิอดขีองออปเจ็คม�ร3ปแบบด�งน�:
objectName.methodName ([arguments]);- objectName ค0อชิ0*อขีองออปเจ็คที่�*สร �งขี5:น- methodName ค0อชิ0*อขีองเมธิอดขีองออปเจ็คน�:น- arguments ค0อ ค#�ที่�*ต องก�รส#งผ่#�นไปให ก�บเมธิอดขีองออปเจ็คน�:น
ต�วอย#�ง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();
}}
ค�ณลั�กษณะเด"นขีองโปรแกรมเชิงออปเจ็�ค ก�รห#อห� ม ก�รส0บที่อด ก�รม�ได หล�ยร3ปแบบ
การห"อห�%ม หม�ยถ5งก�รจ็ะเร�ยกใชิ ค�ณล�กษณะขีองออปเจ็คจ็ะ
ที่��ได โดยก�รเร�ยกผ่#�นเมธิอดเที่#�น�:น หล�กก�รขีองก�รห#อห� มค0อก�รก��หนดให ค�ณล�กษณะ
ขีองออปเจ็คม�ค�ณสมบ�ต�เป%น private และก��หนดให เมธิอดม�ค�ณสมบ�ต�เป%น public
ต�วิอย"างโปรแกรมpublic class Student {
private String id;private String name;private double gpa;
public static final double minGPA =2.00 ;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.printIn(“ID: “+id);System.out.printIn(“Name: “+name);System.out.printIn(“GPA: “+gpa);
}}
การส่)บที่อด หม�ยถ5งก�รน�ย�มคล�สใหม#จ็�กร3ปแบบขีองคล�สที่�*ม�
อย3#แล ว โดยคล�สใหม#จ็ะน��ค�ณล�กษณะและเมธิอดขีองคล�สเด�มม�ใชิ ได
โดยในภ�ษ�จ็�ว�จ็ะใชิ ค�ย(เว�ร(ด extends เพิ0*อระบ�ก�รส0บที่อด
ต�วอย#�ง
ต�วิอย"างโปรแกรม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;}
}
การม�ได%หลัายร$ปแบบ หม�ยถ5งก�รที่�*ส�ม�รถตอบสนองต#อขี#�วส�ร
(เมธิอด ) เด�ยวก�นด วยว�ธิ�ก�รที่�*ต#�งก�น และส�ม�รถก��หนดออปเจ็คได หล�ยร3ปแบบ
ต�วอย#�ง
ต�วิอย"างโปรแกรม
public class Ball {public void throw () {}
}public class SoccerBall extends Ball {
public void throw() {System.out.printIn(“Throwing soccerball”);
}}public class TennisBall extends Ball {
public void throw () {System.out.printIn(“Throwing tennisball”);
}}public class TestBall {
public static void main (String args[]) {Ball b1 = new Ball ();SoccerBall b2 = new SoccerBall();Ball b3 = new SoccerBall();
}}
ส่ร�ปเน)0อหาขีองบที่ ออปเจ็คต#�ง ๆ จ็ะประกอบไปด วยค�ณล�กษณะและเมธิอด ออปเจ็คหล�ยออปเจ็คส�ม�รถถ3กสร �งจ็�กคล�สหน5*งคล�สได ค�ณล�กษณะแบ#งออกเป%นสองประเภที่ค0อ
- ค�ณล�กษณะขีองออปเจ็ค ค0อขี อม3ลที่�*เกบอย3#ในแต#ละออปเจ็ค- ค�ณล�กษณะขีองคล�ส ค0อค�ณล�กษณะที่�*ใชิ ร#วมก�นขีองที่�กออปเจ็ค
เมธิอดค0อว�ธิ�ก�รเพิ0*อใชิ ในก�รจ็�ดก�รก�บค�ณล�กษณะขีอง ออปเจ็คหร0อค�ณล�กษณะขีองคล�ส
ส่ร�ปเน)0อหาขีองบที่
ก�รเขี�ยนโปรแกรมเชิ�งออปเจ็คโดยใชิ ภ�ษ�จ็�ว�ม�ร3ปแบบต#�ง ๆ ด�งน�:- ก�รประก�ศึคล�ส
[modifier] class Classname {[class member]
}- ก�รประก�ศึค�ณล�กษณะ
[modifier] dataType attributeName;- ก�รประก�ศึเมธิอด
[modifier] return_type methodName ([arguments]) {
[method_body]}
ส่ร�ปเน)0อหาขีองบที่ ก�รเขี�ยนโปรแกรมเชิ�งออปเจ็คโดยใชิ ภ�ษ�จ็�ว�ม�ร3ปแบบต#�ง
ๆ ด�งน�: (ต#อ)- ก�รประก�ศึออปเจ็ค
[modifier] ClassName objectName;- ก�รสร �งออปเจ็ค
objectName = new ClassName ([arguments]);- ก�รเร�ยกใชิ ค�ณล�กษณะขีองออปเจ็ค
objectName.attributeName;- ก�รเร�ยกใชิ เมธิอดขีองออปเจ็ค
objectName.methodName ([arguments]);
ส่ร�ปเน)0อหาขีองบที่ ค�ณล�กษณะเด#นขีองโปรแกรมเชิ�งออปเจ็ค
- ก�รห#อห� ม ค0อก�รที่�*ให ค�ณล�กษณะถ3กห#อห� มอย3#ภ�ยในเมธิอดโดยก��หนดให ค�ณล�กษณะม� access modifier เป%น private และก��หนดให เมธิอดม� access modifier เป%น public- ก�รส0บที่อด ค0อก�รที่�*คล�สใหม#ส�ม�รถน��เอ�ค�ณล�กษณะและเมธิอดขีองคล�สที่�*ออกแบบไว แล วม�ใชิ ได โดยใชิ ค�ย(เว�ร(ด extends ระบ�ก�รส0บที่อด- ก�รม�ได หล�ยร3ปแบบ ค0อก�รที่�*ส�ม�รถตอบสนองต#อเมธิอดเด�ยวก�นด วยว�ธิ�ก�รที่�*ต#�งก�นได และส�ม�รถก��หนดออปเจ็คได หล�ยร3ปแบบ