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

108
LOGO กกกกกกกก กกกกกกกกกกก กกกกก Object Oriented Programming Nerissa Onkhum 20/06/22 1

Upload: yoshio-wallace

Post on 01-Jan-2016

72 views

Category:

Documents


4 download

DESCRIPTION

การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming. Nerissa Onkhum. แนวการสอน. ชื่อวิชา (ภาษาไทย) การเขียนโปรแกรมเชิงวัตถุ ชื่อวิชา (ภาษาอังกฤษ) Object Oriented Programming รหัสวิชา 4121306A จำนวนหน่วยกิต 3(2-2) อาจารย์ผู้สอน อาจารย์เณริสสา อ่อนขำ - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

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

Object Oriented Programming

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

Object Oriented Programming

Nerissa Onkhum20/04/23 1

Page 2: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

แนวัการสอน ชิ��อวั�ชิา (ภาษาไทย) การเขี�ยนโปรแกรมเชิ�งวั�ตถุ� ชิ��อวั�ชิา (ภาษาอ�งกฤษ) Object Oriented Programming

รหั�สวั�ชิา 4121306A จำ!านวันหัน"วัยก�ต 3(2-2) อาจำารย#ผู้%&สอน อาจำารย#เณร�สสา อ"อนขี!า [email protected]

หั&องท!างาน 822

20/04/23 2

Page 3: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

คำ!าอธิ�บายรายวั�ชิาหลั�กการการออกแบบแลัะพั�ฒนาซอฟต์�แวร�เชิ�ง

ว�ต์ถุ� โครงสร�างโปรแกรมในภาษาเชิ�งว�ต์ถุ� ความหมายแลัะ กลั�$มของว�ต์ถุ� ค�ณลั�กษณะแลัะพัฤต์�กรรมของว�ต์ถุ� คลัาสแลัะหลั�กการส(าค�ญของคลัาส การห$อห��ม  การส+บทอด การพั�องร.ป การน(าเอาส$วนประกอบของซอฟต์�แวร�กลั�บมาใชิ� กราฟ/ก การสร�างแลัะจั�ดการโครงสร�างข�อม.ลัพัลัว�ต์ กรณ1ศึ3กษา การเข1ยนโปรแกรมเชิ�งว�ต์ถุ�

20/04/23 3

Page 4: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

จำ�ดประสงคำ#การเร�ยนร%&

เพื่��อใหั&น�กศึ0กษาม�คำวัามร%& คำวัามเขี&าใจำเก��ยวัก�บหัลั�กการแลัะแนวัคำ�ดเชิ�งวั�ตถุ�

เพื่��อใหั&น�กศึ0กษาม�คำวัามร%& คำวัามเขี&าใจำเก��ยวัก�บการออกแบบแลัะการเขี�ยนโปรแกรมเชิ�งวั�ตถุ�

20/04/23 4

Page 5: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

เน�2อหัาวั�ชิาคำวัามร%&เบ�2องต&นขีองภาษาจำาวัาหัลั�กการเชิ�งออปเจำ3คำพื่�2นฐานโปรแกรมภาษาจำาวัาโคำรงสร&างคำวับคำ�มการเขี�ยนโปรแกรมภาษาจำาวัาเชิ�งออปเจำ3คำอะเรย#แลัะคำอลัเลั3กชิ�นการจำ�ดการก�บขี&อม%ลัผู้�ดพื่ลัาดอ�นพื่�ตแลัะเอาท#พื่�ตโปรแกรมจำาวัาแบบกราฟฟ6ก20/04/23 5

Page 6: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

หัน�งส�อท��ใชิ&ในรายวั�ชิา

ต!าราหัลั�กธี1รว�ฒน� ประกอบผลั . ค.$ม+อการเข1ยนโปรแกรม

ภาษา JAVA. พั�มพั�คร�6งท17 1 2552 : กร�งเทพัฯ ; ซ�คเซส ม1เด1ย.

อรพั�น. ค.$ม+อการเข1ยนโปรแกรมด�วยภาษา JAVA. พั�มพั�คร�6งท17 9 2553: กร�งเทพัฯ ; โปรว�ชิ� 7น.

20/04/23 6

Page 7: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

หัน�งส�อท��ใชิ&ในรายวั�ชิา

หัน�งส�ออ"านประกอบย�ทธีนา ลั1ลัาศึว�ฒนก�ลั . เร�7มต์�นการเข1ยนโปรแกรมด�วยภาษา

Java. พั�มพั�คร�6งท17 1 2548 : กร�งเทพั ฯ ; ไทยเจัร�ญการพั�มพั�.

พัน�ดา พัาน�ชิก�ลั . การเข1ยนโปรแกรมคอมพั�วเต์อร�เบ+6องต์�นด�วยภาษา JAVA. พั�มพั�คร�6งท17 1 2548 : กร�งเทพัฯ ; ไทยเจัร�ญการพั�มพั�.

วรเศึรษฐ ส�วรรณ�ก แลัะ ทศึพัลั ธีนะท�พัานนท� . เข1ยนโปรแกรม Java เบ+6องต์�น . พั�มพั�คร�6งท17 4 2551 : กร�งเทพัฯ ; ซ1เอ;ดย.เคชิ�7น.

20/04/23 7

Page 8: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

การวั�ดผู้ลัคำะแนนระหัวั"างภาคำ 70 คำะแนน

เข�าเร1ยน 5 คะแนน ทดสอบย$อย 5 คะแนน แบบทดสอบ 10 คะแนน แบบฝึ=กปฏิ�บ�ต์� 10 คะแนน สอบกลัางภาค 30 คะแนน สอบปฏิ�บ�ต์� 10 คะแนน

คำะแนนสอบปลัายภาคำ 30 คำะแนน20/04/23 8

Page 9: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ขี&อตกลังในชิ�2นเร�ยน เวัลัาเขี&าเร�ยนไม"ต!�ากวั"าร&อยลัะ 80

ขีาดได&ไม"เก�น 3 คำร�2ง มาสายกวั"าเวัลัาเร�ยนคำร0�งชิ��วัโมง 2 คำร�2ง ถุ�อวั"า

ขีาด 1 คำร�2ง ส"งงานท��ได&ร�บมอบหัมายท�2งหัมดคำรบแลัะตรง

ตามระยะเวัลัา ท��ก!าหันด การแต"งกาย ใหั&เป7นไปตามระเบ�ยบมหัาวั�ทยาลั�ย

ก!าหันด

20/04/23 9

Page 10: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

คำวัามร%&เบ�2องต&นขีองภาษาจำาวัาคำวัามร%&เบ�2องต&นขีองภาษาจำาวัา(Introduction to Java

Programming)

คำวัามร%&เบ�2องต&นขีองภาษาจำาวัาคำวัามร%&เบ�2องต&นขีองภาษาจำาวัา(Introduction to Java

Programming)

Nerissa Onkhum20/04/23 10

Page 11: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Outlineการเขี�ยนโปรแกรมเชิ�งวั�ตถุ�ประวั�ต�ขีองภาษาจำาวัาขี&อด�ขีองภาษาจำาวัาจำาวัาแพื่ลัตฟอร#มการคำอมไพื่ลั#แลัะร�นโปรแกรมภาษาจำาวัาโปรแกรม HelloWorld ในแบบต�วัอ�กษรแลัะแบบ

กราฟ6กการต�ดต�2งเคำร��องม�อท��ใชิ&ในการพื่�ฒนาโปรแกรมใน

ภาษา Java11

Page 12: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมแบบโคำรงสร&าง(Structure programming)

การเขี�ยนโปรแกรมเชิ�งกระบวันการ (Procedural Programming) เป?นการเข1ยนโปรแกรมแบบโครงสร�าง ซ37งชิ$วยจั�ดระเบ1ยบของค(าส�7งในโปรแกรม สามารถุต์รวจัสอบลั(าด�บการท(างานได�ง$าย แต์$เน+7องจัากโปรแกรมประกอบด�วยค(าส�7ง แลัะข�อม.ลั เชิ$น ภาษา C แยกส$วนท17เป?นข�อม.ลัออกจัากค(าส�7ง ด�วยเหต์�น16ฟ@งก�ชิ�นท17จั�ดการก�บข�อม.ลัจั3งอาจัถุ.กวางไว�อย$างกระจั�ดกระจัาย สร�างความลั(าบากในการต์�ดต์ามส+บหาว$าข�อม.ลัถุ.กเปลั17ยนแปลัง โดยฟ@งก�ชิ�นใด

12

Page 13: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งกระบวันการ

การเข1ยนโปรแกรมแบบโครงสร�าง (Procedural) จัะแบ$งเป?น 2 ส$วนค+อ ส$วนโปรแกรมหลั�ก(Main Program) แลัะ โปรแกรมย$อย (Procedure หร+อ Function) ลั�กษณะของ Data ท17ม1การประกาศึใชิ�ท�7วท�6งโปรแกรม เร1ยกว$าประกาศึใชิ�แบบ “Global”

13

Page 14: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งกระบวันการ

โปรแกรมย"อย 1

โปรแกรมหัลั�กGlobal Data

โปรแกรมย"อย 2

โปรแกรมย"อย 4

โปรแกรมย"อย 3

แสดงการเข1ยนโปรแกรมแบบ Procedure14

Page 15: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเข1ยนโปรแกรมแบบโครงสร�าง โปรแกรมย$อยจัะเร1ยกใชิ�ข�อม.ลัจัากโปรแกรมหลั�กต์�วเด1ยวก�น อาจัท(าให�เก�ดป@ญหาการเปลั17ยนแปลังค$าของข�อม.ลัต์�วเด1ยวก�นได�

โปรแกรมประกอบด�วยค(าส�7งแลัะข�อม.ลั การจั�ดระเบ1ยบค(าส�7ง เพั1ยงอย$างเด1ยวน�6นจั3งไม$สมบ.รณ�

แยกส$วนท17เป?นข�อม.ลัออกจัากค(าส�7ง ด�วยเหต์�น16ฟ@งก�ชิ�นท17จั�ดการก�บข�อม.ลัจั3งอาจัจัะถุ.กวางไว�อย$างกระจั�ดกระจัาย สร�างความลั(าบาก ในการต์�ดต์ามส+บหาว$าข�อม.ลัน16ถุ.กเปลั17ยนแปลังโดยฟ@งก�ชิ�นใด

การเขี�ยนโปรแกรมเชิ�งกระบวันการ

15

Page 16: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งกระบวันการ

การเขี�ยนโปรแกรมเชิ�งกระบวันการ (Procedural Programming) หร+อการโปรแกรมแบบม1โครงสร�าง (Structure Programming) ม1หลั�กการ 3 อย$างน16ค+อ การท(างานแบบต์ามลั(าด�บ (Sequence) การเลั+อกกระท(าต์ามเง+7อนไข (Decision) การท(าซ(6า (Loop)

16

Page 17: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งกระบวันการ 1. การท!างานแบบตามลั!าด�บ

(Sequence) : ร%ปแบบการเขี�ยนโปรแกรมท��ง"ายท��ส�ดคำ�อเข1ยนให�ท!างานจำากบนลังลั"าง เข1ยนค(าส�7ง เป?นบรรท�ด แลัะท(าท1ลัะบรรท�ดจัากบรรท�ดบนส�ดลังไปจันถุ3งบรรท�ดลั$างส�ด สมมต์�ให�ม1 การท(างาน 3กระบวนการค+อ อ$านข�อม.ลั ค(านวณ แลัะพั�มพั� จัะเข1ยนเป?นผ�งงาน (Flowchart) ในแบบต์ามลั(าด�บได�ต์ามภาพั

Process1

Process2

Process3

แสดงการเขี�ยนโปรแกรมเชิ�งกระบวันการแบบลั!าด�บ

START

STOP

17

Page 18: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งกระบวันการ

การท!างานแบบตามลั!าด�บ (Sequence)ท!างานตามลั!าด�บ ท!างานจำากบนลังลั"าง (จำ�ดเร��มต&นถุ0งส�2น

ส�ด)ม�จำ�ดเร��มต&นจำ�ดเด�ยวั จำ�ดส�2นส�ดจำ�ดเด�ยวั–

Process1

Process2

Process3

START

STOP

18

Page 19: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งกระบวันการ 2. การเลั�อกกระท!าตามเง��อนไขี

(Decision) : การต�ดส�นใจำ หัร�อเลั�อกเง��อนไขีคำ�อ

เข1ยนโปรแกรมเพั+7อน(าค$าไปเลั+อกกระท(า โดยปกต์�จัะม1เหต์�การณ�ให�ท(า 2กระบวนการ ค+อ เง+7อนไขเป?นจัร�งจัะกระท(ากระบวนการหน37ง แลัะเป?นเท;จัจัะกระท(าอ1กกระบวนการหน37ง แต์$ถุ�าซ�บซ�อนมากข36น จัะต์�องใชิ�เง+7อนไขหลัายชิ�6น เชิ$นการต์�ดเกรดน�กศึ3กษา เป?นต์�นต์�วอย$างผ�งงานน16 จัะแสดงผลัการเลั+อกอย$างง$าย เพั+7อกระท(ากระบวนการเพั1ยงกระบวนการเด1ยว

Process

Decision

Process

Yes No

แสดงการเขี�ยนโปรแกรมเชิ�งกระบวันการแบบเง��อนไขี

19

Page 20: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

เง��อนไขี - คำะแนนสอบต�2งแต" 80 คำะแนนขี02นไป ได&เกรด A- คำะแนนสอบ - 7079 คำะแนนขี02นไป ได&เกรด B- คำะแนนสอบ - 6069 คำะแนนขี02นไป ได&เกรด C- คำะแนนสอบ - 5059 คำะแนนขี02นไป ได&เกรด D- คำะแนนสอบต!�ากวั"า 50 คำะแนน

ได&เกรด F

ต�วัอย"าง โปรแกรมประมวัลัผู้ลัการเร�ยน

20/04/23 20

Page 21: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

STOPWrite Grade

ต�วัอย"าง START

Score>=80

Read Score

Y

Grade = ‘A’

Grade = ‘F’

Score>=70

Grade = ‘B’ Score>=60

Grade = ‘C’Score>=50

Grade = ‘D’

Y

Y

N

N

N

NY

20/04/23 21

Page 22: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

Start

Read Score

Score >= 80

Score >= 70

Score >= 60

Score >= 50

Grade = ‘F’

Grade = ‘D’

Grade = ‘C’

Grade = ‘B’

Grade = ‘A’

Stop

Y

N

Y

N

N

N

Y

Y

Write Grade

หร+อ

20/04/23 22

Page 23: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

อ�ลักอร�ธิ0ม1 .เร��มต&นท!างาน2. ร�บคำ"า คำะแนนสอบ

(Score)3. เปร�ยบเท�ยบคำะแนน

สอบ>=80 ถุ&าเป7นจำร�ง ใหั&ท!าน�พื่จำน# Grade=‘A’ ถุ&าเป7นเท3จำ ใหั&เปร�ยบเท�ยบคำะแนนสอบ >=70 ถุ&าเป7นจำร�ง ใหั&ท!าน�พื่จำน# Grade=‘B’ ถุ&าเป7นเท3จำ ใหั&เปร�ยบเท�ยบคำะแนนสอบ >=60 ถุ&าเป7นจำร�ง ใหั&ท!าน�พื่จำน# Grade=‘C’ ถุ&าเป7นเท3จำ ใหั&เปร�ยบเท�ยบคำะแนนสอบ >=50 ถุ&าเป7นจำร�ง ใหั&ท!าน�พื่จำน# Grade=‘D’ ถุ&าเป7นเท3จำ ใหั&ใหั&ท!าน�พื่จำน# Grade=‘F’

4. แสดงผู้ลั เกรด (Grade)5. จำบการท!างาน

รหั�สเท�ยม (Pseudo Code)

BeginREAD Score

IF Score >= 80THEN Grade = ‘A’ELSE IF Score >=70

THEN Grade = ‘B’

ELSE IF Score >=60

THEN Grade = ‘C’

ELSE IF Score >=50

THEN Grade = ‘D’

ELSE Grade = ‘F’WRITE Grade

End

ต�วัอย"าง

20/04/23 23

Page 24: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งกระบวันการ 3. การท!าซ้ำ!2า (Repetition or Loop)

: การท!ากระบวันการหัน0�งหัลัายคำร�2ง

โดยม1เง+7อนไขในการควบค�ม หมายถุ3งการท(าซ(6าเป?นหลั�กการท17ท(าความเข�าใจัได�ยากกว$า 2 ร.ปแบบแรก เพัราะการเข1ยนโปรแกรมแต์$ลัะภาษา จัะไม$แสดงภาพัอย$างชิ�ดเจันเหม+อนการเข1ยนผ�งงาน (Flowchart) ผ.�เข1ยนโปรแกรมต์�องจั�นต์นาการ ถุ3งร.ปแบบการท(างาน แลัะใชิ�ค(าส�7งควบค�มด�วยต์นเอง ต์�วอย$างผ�งงานท17น(ามาแสดงน16เป?นการแสดงค(าส�7ง ท(าซ(6า (do while) ซ37งหมายถุ3งการท(าซ(6าในขณะท17เป?นจัร�ง แลัะเลั�กการท(าซ(6า เม+7อเง+7อนไขเป?นเท;จั

Decision

ProcessYes

No

แสดงการเขี�ยนโปรแกรมเชิ�งกระบวันการแบบลั!าด�บ

24

Page 25: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งกระบวันการยกต�วัอย"าง เชิ"น โปรแกรมต%&ขีายเคำร��องด��มอ�ตโนม�ต�

วั�ธิ�การคำ�ดแบบการเขี�ยนโปรแกรมเชิ�งกระบวันการ เม+7อม1การหยอดเหร1ยญเข�าต์.�:

1. ต์รวจัสอบจั(านวนเหร1ยญแลัะชิน�ดของเหร1ยญ 2 . แสดงผลัชิน�ดของน(6าท17สามารถุเลั+อกซ+6อได�

3. ต์รวจัสอบจั(านวนน(6ากระปAองท17ม1อย.$ในต์.� 4. ร�บผลัการเลั+อกชิน�ดน(6า 5. ส$งน(6าท17เลั+อกออกมาจัากชิ$อง 6. จั�ดเก;บเง�นเข�าระบบ 7. หากม1เง�นทอน ให�ทอนเง�นท17เหลั+อ ท17ชิ$องร�บเง�นทอน

25

Page 26: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ขี&อเส�ยการเขี�ยนโปรแกรมเชิ�งกระบวันการ

แนวัคำ�ดน�2ม�ขี&อเส�ยอย"างไร?• ขีนาดขีองโปรแกรมใหัญ่"ขี02น จำะท!าใหั&ม�

คำวัามซ้ำ�บซ้ำ&อนในแง"ขีองการเขี�ยนโปรแกรม• ป<ญ่หัาในเร��องขีองการน!าก�บมาใชิ&ใหัม"

(Reusable) • การแก&ไขี (Modify)• การขียายเพื่��อเพื่��มประส�ทธิ�ภาพื่ใหั&ก�บโปรแกรม

26

Page 27: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

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

การเขี�ยนโปรแกรมเชิ�งวั�ตถุ� (Object-oriented programming, OOP) ค+อหน37งในร.ปแบบการเข1ยนโปรแกรมคอมพั�วเต์อร� ท17ให�ความส(าค�ญก�บ วั�ตถุ� ซ37งสามารถุน(ามาประกอบก�นแลัะน(ามาท(างานรวมก�นได� โดยการแลักเปลั17ยนข$าวสาร เพั+7อน(ามาประมวลัผลัแลัะส$งข$าวสารท17ได�ไปให�ว�ต์ถุ�อ+7นๆ ท17เก17ยวข�องเพั+7อให�ท(างานต์$อไป

27

Page 28: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งวั�ตถุ�การเข1ยนโปรแกรมเชิ�งว�ต์ถุ� Data จัะถุ.กประกาศึ

ใชิ�เฉพัาะภายใน Object เท$าน�6น

การท17 OOP จั�ด Data ไว�ในแต์$ลัะ Object น�6น เป?นการปกปDองข�อม.ลัภายใน Object ลัดป@ญหาการเปลั17ยนแปลังข�อม.ลัภายใน Object โดยไม$ได�ร�บอน�ญาต์

Data DataObject 1

Object 2

28

Page 29: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเขี�ยนโปรแกรมเชิ�งวั�ตถุ�โปรแกรมต%&ขีายเคำร��องด��มอ�ตโนม�ต�วั�ธิ�การคำ�ดแบบการเขี�ยนโปรแกรมเชิ�งวั�ตถุ�

ต์.�ขายเคร+7องด+7มอ�ต์โนม�ต์� ประกอบด�วยส$วนประกอบต์$างๆได�แก$ หน$วยต์รวจัสอบแลัะจั�ดการเร+7องเง�น หน$วยจั�ดการเคร+7องด+7ม หน$วยแสดงผลัแลัะรอร�บค(าส� 7ง

1. หน$วยต์รวจัสอบแลัะจั�ดการเร+7องเง�น ม1ข�อม.ลัเก17ยวก�บเง�นท17ได�ร�บ แลัะเง�นท17ม1อย.$ในระบบสามารถุร�บแลัะต์รวจัสอบเง�นท17หยอดเข�ามาได� แลัะทอนเง�นได�

2. หน$วยจั�ดการเคร+7องด+7ม ม1ข�อม.ลัชิน�ดของเคร+7องด+7ม จั(านวนเคร+7องด+7ม สามารถุจั�ดเต์ร1ยมชิน�ดเคร+7องด+7มท17พัอก�บเง�นท17หยอด แลัะสามารถุจั$ายเคร+7องด+7มออกมาจัากต์.�ได�

3. หน$วยแสดงผลัแลัะรอร�บค(าส� 7ง ม1หน�าท17รอร�บค(าส� 7ง แลัะแสดงผลัเง�นท17หยอดเข�ามา

29

Page 30: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ขี&อด�ขีองการพื่�ฒนาโปรแกรมเชิ�งวั�ตถุ�

แนวค�ดการว�เคราะห�ป@ญหาใกลั�เค1ยงก�บธีรรมชิาต์�ของมน�ษย�

ระบบจัร�ง (real life) แบ$งต์ามออปเจั;ค ไม$ได�ข36นอย.$ก�บฟ@งก�ชิ�นการท(างาน

ขบวนการพั�ฒนาโปรแกรมท(าได�รวดเร;วข36นง$ายต์$อการพั�ฒนาแลัะแก�ไขน(าโปรแกรมกลั�บมาใชิ�ใหม$ได�ง$าย20/04/23 30

Page 31: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

เปร�ยบเท�ยบแนวัคำ�ดระหัวั"างการ เขี�ยนโปรแกรมเชิ�งกระบวันการ

แลัะเชิ�งวั�ตถุ�แนวค�ดการเขี�ยนโปรแกรมแบบด�2งเด�มม�ก

น�ยมใชิ� การเขี�ยนโปรแกรมเชิ�งกระบวันการ(Procedural Programming) ซ37งให�ความส(าค�ญก�บข�6นต์อนกระบวนการท17ท(า โดยแบ$งโปรแกรมออกเป?นส$วนๆต์ามลั(าด�บข�6นต์อนการท(างาน แต์$แนวค�ดการเขี�ยนโปรแกรมเชิ�งวั�ตถุ�น�6นให�ความส(าค�ญก�บขี&อม%ลั (data) แลัะ พื่ฤต�กรรม (behavior) ของว�ต์ถุ� แลัะความส�มพั�นธี�ก�นระหว$างว�ต์ถุ�ก�นมากกว$า

31

Page 32: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

หัลั�กการขีองโปรแกรมเชิ�งวั�ตถุ�

โปรแกรมเชิ�งว�ต์ถุ�จัะแบ$งการท(างานของโปรแกรมเป?นว�ต์ถุ�

การปร�บปร�งหร+อแก�ไขโปรแกรมเชิ�งว�ต์ถุ�ท(าได� ง$ายกว$า จั3งเหมาะก�บการพั�ฒนาโปรแกรมขนาด

ใหญ$ท17จัะต์�องม1การปร�บปร�งแก�ไขโปรแกรมอย.$ ต์ลัอด

32

Page 33: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

วั�ตถุ� (object)

โปรแกรมพัจันาน�กรมฉบ�บราชิบ�ณฑิ�ต์ยสถุาน พั.ศึ . ๒๕๒๕ น�ยามค(าว$า “ว�ต์ถุ� ว$าหมายถุ3งส�7งของ แลัะน�ยามค(าว$า ส�7งของ ว$าหมาย” “ ”ถุ3งว�ต์ถุ�ต์$างๆ

ในโปรแกรมจัะจั(าลัองลั�กษณะแลัะความสามารถุของว�ต์ถุ�ต์$างๆ ท17อย.$ในโลักจัร�ง ส�7งไม$ม1ชิ1ว�ต์ เชิ$น ร.ปส17เหลั17ยม โทรท�ศึน� หร+อบ�าน ส�7งม1ชิ1ว�ต์ เชิ$น พัน�กงาน นก หร+อต์�นไม� ส�7งท17เป?นนามธีรรม เชิ$น แนวความค�ด หลั�กการ หร+อว�ธี1

การ 33

Page 34: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

คำลัาส (Class)

คลัาสเป?นเหม+อนส$วนของแม$พั�มพั� เพั+7อบอกลั�กษณะว$าว�ต์ถุ�ในคลัาสน16ม1ลั�กษณะแลัะพัฤต์�กรรมเป?นอย$างไร

ส"วันประกอบขีองคำลัาสแอททร�บ�วัท#(Attribute) หร+อข�อม.ลั (Data)

เป?นส�7งท17ใชิ�บอกถุ3งลั�กษณะต์$างๆของว�ต์ถุ�ในคลัาสเมธิอด(Method) หร+อพัฤต์�กรรม

(Behavior) เป?นส�7งท17ใชิ�อธี�บายการท(างานของว�ต์ถุ�ในคลัาส

34

Page 35: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ต�วัอย"างขีองคำลัาสน�กศึ0กษา อาจัจัะประกอบไปด�วยค�ณลั�กษณะเชิ$น

รห�ส ชิ+7อ แลัะเกรดเฉลั17ย แลัะอาจัจัะม1เมธีอดเชิ$น ลังทะเบ1ยน สอบ แลัะเด�น

รถุยนต# อาจัจัะประกอบไปด�วยค�ณลั�กษณะเชิ$น ย17ห�อ ร� $น แลัะส1แลัะอาจัจัะม1เมธีอดเชิ$น เคลั+7อนท17 หย�ดแลัะเลั16ยว

ส�น�ขี อาจัจัะประกอบไปด�วยค�ณลั�กษณะเชิ$น ชิ+7อ พั�นธี�� แลัะส1

แลัะอาจัจัะม1เมธีอดเชิ$น เห$า คลัาน แลัะกระด�กหาง 35

Page 36: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

คำลัาส (Class)

คลัาสหน37งคลัาสสามารถุสร�างออป เจั;คได�หลัายออปเจั;ค อาท�เชิ$น คลัาส

Student อาจัสร�างออปเจั;ค s1,s2 หร+อ s3 ซ37งเป?นออปเจั;คของคลัาส

Student

36

Page 37: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ต�วัอย"างขีองออปเจำ3คำแลัะคำลัาส

37

Page 38: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

คำ�ณสมบ�ต�ขีองโปรแกรมเชิ�งวั�ตถุ�

1. การหั"อหั�&ม (Encapsulation) - ซ้ำ"อนวั�ธิ�การท!างาน (Information Hiding)

2. การส�บทอด (Inheritance)3. การพื่&องร%ป (Polymorphism)

38

Page 39: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

การหั"อหั�&ม (Encapsulation)การหั"อหั�&ม (Encapsulation) เป7นการ

ซ้ำ"อนรายลัะเอ�ยดการท!างานแลัะขี&อม%ลัไวั&ภายใน ไม"ใหั&ภายนอกสามารถุเหั3นได&ด�ฉ�นสมหญ�งจัาก

บร�ษ�ท A ท(าไมด�ฉ�นจั3งมองไม$เห;นแฟDมเอกสารเหม+อนอย$างท17ค�ณสมศึร1บร�ษ�ท C มองเห;นคะ

อาจัเป?นเพัราะแฟDมเอกสารถุ.ก Encapsulation (ซ$อนอย.$หลั�งก(าแพัง ) อย.$คร�บ จัะม1แต์$เฉพัาะบ�คคลัภายในบร�ษ�ท C มองเห;นแฟDมเอกสารน16ได� ต์�วผมก;มองไม$เห;นเชิ$นก�น เพัราะผมเองก;เป?นบ�คคลัภายนอกเชิ$นก�น

ด�ฉ�นชิ+7อสมศึร1เป?นบ�คคลัภายในของบร�ษ�ท C ฉ�นจั3งเห;นแฟDมเอกสารเหลั$าน16แลัะม1ส�ทธี�Hเข�ามาจั�ดการได�ค$ะ

แฟ=มเอกสารน�2เป7น private

(แฟ=มส"วันบ�คำคำลั)

20/04/2339

Page 40: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

การหั"อหั�&ม (Encapsulation)

ด1จั�งเลัยนะคะท17บร�ษ�ท C ไม$ได�ท(าการ encapsulate ซ$อนแฟDมเอกสารน16ไว� ท(าให�เราสามารถุมองเห;นแฟDมเอกสารน16ได�

ใชิ$แลั�วคร�บ โชิคด1มาก เพัราะจัะท(าให�เราสามารถุเข�าไปด.ข�อม.ลัในแฟDมเอกสารน16ได� แลัะนอกจัาก เราจัะด.ข�อม.ลัได�แลั�ว ย�งสามารถุแก�ไขข�อม.ลัได�ด�วย เป?นโอกาสของเราท17จัะลั�วงความลั�บแลัะสร�างความเส1ยหายให�ก�บบร�ษ�ท C ซ37งเป?นค.$แข$งของเราได�

แย$แลั�ว บ�คคลัภายนอกบร�ษ�ทด�ฉ�นสามารถุมองเห;นแฟDมเอกสารน16ได� ข�อม.ลัของบร�ษ�ทต์�องได�ร�บความเส1ยหายแน$นอนเลัยค$ะ

แฟ=มเอกสารน�2เป7น public

(แฟ=มสาธิารณะ)

20/04/2340

Page 41: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ซ้ำ"อนวั�ธิ�การท!างาน (Information Hiding)

ซ$อนว�ธี1การท(างานของว�ต์ถุ� เพั+7อปDองก�นการเข�ามาใชิ�ข�อม.ลัของว�ต์ถุ�โดยส�7งอ+7นท17ไม$เก17ยวข�องแลั�วท(าให�เก�ดการผ�ดเพั16ยนของการท(างานท�6งระบบ

ท(าให�เก�ดความย+ดหย�$น ผ.�สร�างว�ต์ถุ�สามารถุเปลั17ยนแปลังว�ธี1การท(างานของว�ต์ถุ�ได�โดยไม$กระทบต์$อผ.�ใชิ�ว�ต์ถุ�

เพั+7อให�เก�ดความปลัอดภ�ยของว�ต์ถุ�แลัะระบบโดยรวมให�มากท17ส�ด

41

Page 42: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23 42

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

• การส+บทอด (Inheritance ) ค+อการท(าการสร�างส�7งใหม$ข36นด�วยการ ส+บทอดหร+อร�บเอาค�ณสมบ�ต์�บางอย$างมาจัากส�7งเด�มท17ม1อย.$แลั�ว แลัะสร�างเพั�7มเต์�มได� • ข�อด1

• สามารถุน(าส�7งท17เคยสร�างข36นแลั�วน(ากลั�บมาใชิ�ใหม$ (re-use) ได�• ประหย�ดเวลัา

Page 43: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ผมนาย ข . เป?นผ.�จั�ดการคร�บ (Manager) ผมก;เป?นพัน�กงานคนหน37ง ด�งน�6นจั3งท(าการส+บทอดค�ณสมบ�ต์�มาจัากนาย ก . ท(าให�ม1ค�ณสมบ�ต์�ประกอบด�วยรห�สพัน�กงาน แลัะต์(าแหน$ง แต์$ในฐานะท17ผมเป?นผ.�จั�ดการ ผมได�ร�บรถุประจั(าต์(าแหน$งด�วย ด�งน�6นผมจั3งต์�องสร�างค�ณสมบ�ต์�ข36นมาอ1ก 1 ข�อ

ผมนาย ข . เป?นผ.�จั�ดการคร�บ (Manager) ผมก;เป?นพัน�กงานคนหน37ง ด�งน�6นจั3งท(าการส+บทอดค�ณสมบ�ต์�มาจัากนาย ก . ท(าให�ม1ค�ณสมบ�ต์�ประกอบด�วยรห�สพัน�กงาน แลัะต์(าแหน$ง แต์$ในฐานะท17ผมเป?นผ.�จั�ดการ ผมได�ร�บรถุประจั(าต์(าแหน$งด�วย ด�งน�6นผมจั3งต์�องสร�างค�ณสมบ�ต์�ข36นมาอ1ก 1 ข�อ

ผมนาย ก . เป?นพัน�กงานคนหน37งคร�บ (Employee) ค�ณสมบ�ต์�ผมประกอบด�วยรห�สพัน�กงานแลัะต์(าแหน$ง ใครเป?นพัน�กงานเหม+อนก�น เชิ�ญส+บทอดค�ณสมบ�ต์�ของผมไปใชิ�งานได�เลัยคร�บ

ผมนาย ก . เป?นพัน�กงานคนหน37งคร�บ (Employee) ค�ณสมบ�ต์�ผมประกอบด�วยรห�สพัน�กงานแลัะต์(าแหน$ง ใครเป?นพัน�กงานเหม+อนก�น เชิ�ญส+บทอดค�ณสมบ�ต์�ของผมไปใชิ�งานได�เลัยคร�บ

รหั�สพื่น�กงานต!าแหัน"งรหั�ส

พื่น�กงานต!าแหัน"งรถุประจำ!าต!าแหัน"ง

inherit

20/04/23 43

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

Page 44: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Polymorphism (การพื่&องร%ป)

เป?นค�ณสมบ�ต์�ท17ชิน�ดของว�ต์ถุ�ท17เก�ดจัากชิน�ดของว�ต์ถุ�แม$เด1ยวก�น สามารถุม1ความสามารถุเหม+อนแม$แต์$ม1ว�ธี1การด(าเน�นงานไม$เหม+อนก�น ค+อม1ลั�กษณะเฉพัาะต์�ว เชิ$น

ส�ตวั#ม�ป>ก::บ�น()

นก::บ�น()กระพื่�อป>กขี02นลัง

แมลังปอ::บ�น()กางป>กร�บลัม

ผู้02ง::บ�น()กระพื่�อป>กถุ��เร3วั

44

Page 45: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Polymorphism (การพื่&องร%ป)

ต์�วอย$างเชิ$นpublic void calculate (int x) {}public void calculate (double x) {}

เมธีอดชิ+7อ calculate เหม+อนก�น แต์$ม1การร�บค$าเข�ามาภายใน เมธีอดท17แต์กต์$างก�น

เมธีอดชิ+7อเด1ยวก�นสามารถุร�บอาร�ก�วเมนต์�ท17แต์กต์$างก�นได�หลัายร.ปแบบน16 เร1ยกว$าเมธีอดน�6นถุ.กโอเวอร�โหลัด (overload)

45

Page 46: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ถุ�าเป?นลั.กค�าขาจัร ผมจัะใชิ�เมธีอด public void calculate(double y) ในการค(านวณราคาคร�บ ไม$ได�ซ+6อประจั(าลัดให�ไม$ได�คร�บ เศึษเลั;กเศึษน�อยต์�องค�ด

ถุ�าเป?นลั.กค�าขาจัร ผมจัะใชิ�เมธีอด public void calculate(double y) ในการค(านวณราคาคร�บ ไม$ได�ซ+6อประจั(าลัดให�ไม$ได�คร�บ เศึษเลั;กเศึษน�อยต์�องค�ด

แต์$ถุ�าเป?นลั.กค�าประจั(า ผมจัะใชิ�เมธีอด public void calculate(int x) ในการค(านวณราคาคร�บ เศึษเลั;ก ๆ น�อย ๆ ไม$ค�ดคร�บ

แต์$ถุ�าเป?นลั.กค�าประจั(า ผมจัะใชิ�เมธีอด public void calculate(int x) ในการค(านวณราคาคร�บ เศึษเลั;ก ๆ น�อย ๆ ไม$ค�ดคร�บ

20/04/23 46

Polymorphism (การพื่&องร%ป)สร�ป

ขี&อด�ขีอง Polymorphism คำ�อ การท!าใหั&ส��งหัน0�งสามารถุท!างานได&หัลัากหัลัายร%ปแบบตามคำวัามต&องการท��เก�ดขี02นในขีณะหัน0�ง ๆ

Page 47: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

20/04/23

ประวั�ต�ขีองภาษาจำาวัาประวั�ต�ขีองภาษาจำาวัา

47

Page 48: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ประวั�ต�ขีองภาษาจำาวัา

เร�7มต์�นข36นใน ป> คำ.ศึ . 1990แพื่ททร�ก นอท�น (Pattrick

Naughton) เข1ยนข�อผ�ดพัลัาดท17เก�ดข36นในบร�ษ�ท ซ�นไมโครซ�สเต์;มส�

เจำมส# กอสลั��ง (James Gosling) ผ.�ให�ก(าเน�ดภาษาจัาวา

48

Page 49: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ประวั�ต�ขีองภาษาจำาวัา

กร�นท�ม (Green Project) ว�ต์ถุ�ประสงค�ค+อการสร�างคอมพั�วเต์อร�ร� $น

ใหม$ ย�คถุ�ดจัากคอมพั�วเต์อร�ส$วนบ�คคลั (personal computer ) ก;ค+อคอมพั�วเต์อร�ในอ�ปกรณ�อ�เลั;กโทรน�กส� (consumer electronics)

49

Page 50: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ประวั�ต�ขีองภาษาจำาวัา

ด�@คำ

- ร1โมต์คอนโทรลัควบค�มอ�ปกรณ�อ�เลั;กทรอน�กส� ม1ชิ+7อว$า “สตาร#เซ้ำเวั"น ” (*7)- ภาษาท17ใชิ�ควบค�มอ�ปกรณ�อ�เลั;กทรอน�กส�ค+อ “ภาษาโอ@คำ ” (Oak)

50

Page 51: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ประวั�ต�ขีองภาษาจำาวัา-Gosling ได�ร�บมอบหมายให�สร�างภาษาใหม$ ส(าหร�บต์�ดต์�6งให�ก�บอ�ปกรณ�- โดยภาษาท��สร&างขี02นต&องเป7นภาษาท��ม�ขีนาดเลั3ก อ�ปกรณ#ไม"ใชิ&หัน"วัยประมวัลัผู้ลัท��ส%ง- ส��งส!าคำ�ญ่ ภาษาท��สร&างขี02นจำะต&องเป7นภาษาท��ไม"ย0ดต�ดก�บอ�ปกรณ#ฮาร#ดแวัร# (Platform-independent)

-Gosling ได�ประด�ษฐ� ภาษาโอ@คำ แทนภาษา C++ เพั+7อใชิ�ในโปรแกรมอ�ปกรณ�อ�เลั;กทรอน�กส�-

51

Page 52: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ประวั�ต�ขีองภาษาจำาวัาเปลั��ยนชิ��อจำาก “Oak ” เป7น “JAVA”มาร#คำ แอนดร�สเซ้ำน ออกแบบ Mosaic ซ้ำ0�งเป7นโปร

แกรมเวั3บเบราเซ้ำอร#บ�ลั จำอย (Bill Joy) แจำกจำ"ายต�วัพื่�ฒนาภาษา นอท�นพื่�ฒนาเวั3บเบราเซ้ำอร#ท��สน�บสน�นภาษาจำาวัา

โปรแกรมด�งกลั"าวัม�ชิ��อวั"า HotJava Netscape Navigator 23 มกราคำม คำ.ศึ . 1996 ซ้ำ�นได&ออก JDK 1.0

52

Page 53: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

20/04/23

ขี&อด�ขีองภาษาจำาวัาขี&อด�ขีองภาษาจำาวัา

53

Page 54: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ขี&อด�ขีองภาษาจำาวัา ท!างานบนเวั3บเบราเซ้ำอร#ได& คำวัามปลัอดภ�ยส%ง สน�บสน�นงานหัลัายระด�บ

54

Page 55: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ขี&อด�ขีองภาษาจำาวัา สามารถุท!างานบนเคำร��องคำอมพื่�วัเตอร#

ต"างระบบได& ภาษาจำาวัาเป7นภาษาเชิ�งวั�ตถุ� คำวัามเร�ยบง"าย ไวยากรณ�ของภาษาจัาวา

ถุ.กออกแบบมาเป?นอย$างด1 ท(าให�เข�าใจัง$ายระบบจำ�ดการคำ�นพื่�2นท��ในหัน"วัยคำวัามจำ!า

อ�ตโนม�ต� (Automatic Garbage Collection)

55

Page 56: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ขี&อด�ขีองภาษาจำาวัา ม�คำลัาสจำ!านวันมากมายใหั&ใชิ&

ในจำาวัาแพื่ลั3ตฟอร#มมาตรฐาน J2SE ร�"น 5.0 ม�คำลัาสแลัะอ�นเทอร#เฟซ้ำ 3,279

ฟร� เคำร��องม�อในการพื่�ฒนา,ต�วัแปลัภาษา,โปรแกรมเคำร��องจำ�กรเสม�อน ฯลัฯ

56

Page 57: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

20/04/23

จำาวัาแพื่ลัตฟอร#มจำาวัาแพื่ลัตฟอร#ม

57

Page 58: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

แพื่ลัตฟอร#ม (platform)

ระบบท17โปรแกรมอาศึ�ยท(างานHardwareSoftware Ex. แพัลั;ต์ฟอร�ม Wintel

ซ้ำ�พื่�ย%ขีองอ�นเทลั แลัะระบบปฏิ�บ�ต�การไมโคำรซ้ำอฟท#วั�นโดวัส#

58

Page 59: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

แพื่ลัตฟอร#ม (platform)

จัาวาแพัลั;ต์ฟอร�ม เป?นซอฟแวร� ซ37งประกอบด�วย ต�วัแปลัภาษา โปรแกรมเคำร��องจำ�กรเสม�อนจำาวัา คำลัาส (แกนหลั�กของภาษาจัาวา)

59

Page 60: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

จำาวัาม� 3 แพื่ลัตฟอร#ม Java 2 Platform, Standard Edition (J2 SE) เป?น

แพัลัต์ฟอร�มมาต์รฐาน จัาวาแอพัพัลั�เคชิ�น (Java application) ใชิ�ส(าหร�บเข1ยนโปรแกรมท�7วไป แอพัเพัลัต์ (Java applet) โปรแกรมท17ท(างานบนเว;บเบราเซอร�

Java 2 Platform, Enterprise Edition (J2 EE) โปรแกรมแบบม�ลัต์�เท1ยร� (multitiered) ส(าหร�บการพั�ฒนาโปรแกรมในระด�บ

องค�กรJava 2 Platform, Micro Edition (J2 ME)

ส�นค�าอ1เลั;กโทรน�กส� เชิ$น โทรศึ�พัท�ม+อถุ+อ พั1ด1เอ (personal digital assistant) แลัะกลั$องเคเบ�6ลัท1ว1 (TV set-top box

60

Page 61: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

20/04/23

การคำอมไพื่ลั#แลัะร�นโปรแกรมภาษาจำาวัาการคำอมไพื่ลั#แลัะร�นโปรแกรมภาษาจำาวัา

61

Page 62: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

องคำ#ประกอบขีองระบบคำอมพื่�วัเตอร#

ฮาร#ดแวัร# (Hardware) ส$วนประกอบท17เป?นต์�วเคร+7องคอมพั�วเต์อร�

ระบบปฏิ�บ�ต�การ (Operating System) Windows 7, Linux แลัะ Solaris

โปรแกรมประย�กต# (Application Programs) โปรแกรมท�7วๆไป อาท�เชิ$น Word processor เกม

บราวเซอร� (Browser) พั�ฒนาโดยใชิ�ภาษาคอมพั�วเต์อร�ต์$างๆ เชิ$น ฟอร�แทน

(FORTRAN) โคบอลั (COBOL) C++ หร+อ JAVA

20/04/23 62

Page 63: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ภาษาคำอมพื่�วัเตอร#

ภาษาเคำร��อง (Machine Language) 01010110

ภาษาแอสเซ้ำมบลั�2 (Assembly Language) ADD R1,R2

ภาษาคำอมพื่�วัเตอร#ระด�บส%ง x = c1+c2

20/04/23 63

Page 64: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ภาษาคำอมพื่�วัเตอร#ระด�บส%ง

ภาษาย�คำแรก ฟอร�แทรน โคบอลั เบส�ก (BASIC)

ภาษาเชิ�งกระบวันการ (Procedural Language) ปาสคาลั (Pascal) ซ1 (C)

ภาษาเชิ�งออปเจำ3คำ (Object Oriented Programming) C++ Smalltalk JAVA

20/04/23 64

Page 65: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ต�วัแปลัภาษา

ภาษาระด�บส.งจัะต์�องใชิ�ต์�วแปลัภาษา(Language Translator) เพั+7อเปลั17ยน

ซอร�ดโค�ด (Source Code) ให�เป?นค(าส�7งท17 คอมพั�วเต์อร�สามารถุเข�าใจัได�

ว�ธี1แปลัภาษาม1อย.$สองแบบ คอมไพัเลัอร� (Compiler) อ�นเต์อร�พัร1ต์เต์อร� (Interpreter)

20/04/23 65

Page 66: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

คำอมไพื่เลัอร#ท(าหน�าท17แปลัซอร�ดโค�ดท�6งโปรแกรมให�

เป?นโค�ดท17สามารถุท(างานได�(executable code)

โปรแกรม executable code จัะสามารถุถุ.กน(าไปใชิ�งานได�ท�นท1

ต์�วอย$างของภาษาท17ใชิ�คอมไพัเลัอร�ค+อ ฟอร�แทรน ปาสคาลั แลัะ C++

20/04/23 66

Page 67: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ขี�2นตอนการท!างานขีองคำอมไพื่เลัอร#

20/04/23 67

Page 68: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ขี&อด�แลัะขี&อเส�ยขีองคำอมไพื่เลัอร#

ขี&อด� ท(างานได�เร;ว ต์รวจัสอบข�อผ�ดพัลัาดของโปรแกรมซอร�ดโค�ดใน

ข�6นต์อนของการคอมไพัลั�ขี&อเส�ย

ต์�องน(าโปรแกรมซอร�ดโค�ดมาแปลัใหม$เม+7อเปลั17ยน ระบบปฏิ�บ�ต์�การ เน+7องจัากคอมไพัเลัอร�เป?นต์�วแปลั

ภาษาท17ข36นอย.$ก�บแพัลัต์ฟอร�ม (Platform Specific)

20/04/23 68

Page 69: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

อ�นเตอร#พื่ร�ตเตอร#

แปลัโปรแกรมซอร�ดโค�ดท1ลัะบรรท�ดให�เป?นexecutable code แลัะท(างานท�นท1

ม1ข�อด1ค+อ อ�นเต์อร�พัร1ต์เต์อร�ถุ.กสร�างข36นได�ง$าย กว$าแลัะม1ขนาดเลั;ก ท(าให�ภาษาท17ใชิ�อ�นเต์อร�พัร1ต์

เต์อร�สามารถุท(างานข�ามแพัลัต์ฟอร�มได� ม1ข�อเส1ยค+อ ท(างานได�ชิ�ากว$าคอมไพัเลัอร� ต์�วอย$างของภาษาท17ใชิ�อ�นเต์อร�พัร1ต์เต์อร�ค+อ เบส�

ก โปรลั;อก(Prolog) แลัะ Smalltalk20/04/23 69

Page 70: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

ขี�2นตอนการท!างานขีองอ�นเตอร#พื่ร�ตเตอร#

20/04/23 70

Page 71: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ก"อนท�เราจำะเขี�ยนโปรแกรมด&วัยJava ต&องม�อะไรบ&าง

1. Text Editor เชิ$นเด1ยวก�นก�บการเข1ยนโปรแกรมในภาษาอ+7น ๆ เราต์�องม1 Text Editor ท17ใชิ�สร�างแลัะเก;บ source code

2. JDK (Java Development Kit) ซ37งม1หลัาย version เราต์�องใชิ� JDK ในการ compile โปรแกรมท17เราได�เข1ยนข36น

3. Java VM หร+อท17เร1ยกว$า Java Virtual Machine ซ37งเป?น ต์�วกลัางท17เปลั17ยน code ท17ได�จัากการ compile เป?น code ท17

สามารถุ execute บนเคร+7องต์$าง ๆ (code ท17เคร+7องน�6น ๆ ร. �จั�ก– machine code หร+อท17ชิาว Java เร1ยกว$า byte code) โดย

ปกต์� VM จัะถุ.กต์�ดต์�6งพัร�อมก�บ JDK4. JRE (Java Runtime Environment) ต์�วร�น ภาษา

java ท1ถุ.กแปลังเป?น byte code แลั�ว

71

Page 72: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

องคำ#ประกอบขีอง JDK

JDKJRE

JVM

72

Page 73: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ชิ�ดพื่�ฒนาภาษาจำาวัา (JDK)

ชิ�ดพื่�ฒนาภาษาจำาวัา (Java Development Kit - JDK) ประกอบด&วัย 1. จำาวัาคำอมไพื่เลัอร# (javac.exe)

ซ้ำอร#สโคำ&ด (ไฟลั# .java)

คำอมไพื่เลัอร# (โปรแกรม javac)

Byte code(ไฟลั# .class)

73

Page 74: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ชิ�ดพื่�ฒนาภาษาจำาวัา (JDK)

2. สภาพื่แวัดลั&อมการร�นโปรแกรมจำาวัา (Java Runtime Environment - JRE) (java.exe)

Download http://java.sun.com

Byte code(ไฟลั# .class)

สภาพื่แวัดลั&อมส!าหัร�บร�นโปรแกรม

จำาวัา(โปรแกรม java)

ผู้ลัการท!างาน

74

Page 75: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ขี�2นตอนการพื่�ฒนาโปรแกรมภาษาจำาวัา

75

Page 76: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

ขี�2นตอนการพื่�ฒนาโปรแกรมภาษาจำาวัา

76

Page 77: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Java Development Kit (JDK)

JDK เป?นส$วนประกอบหน37งของ JAVA SE เหมาะส(าหร�บผ.�พั�ฒนาโปรแกรม หร+อ

โปรแกรมเมอร�ดาวน�โหลัดไปใชิ�งาน JDK ประกอบด�วย

คอมไพัเลัอร�ส(าหร�บคอมไพัลั�โปรแกรม ด1บ�กเกอร�ส(าหร�บด1บ�กโปรแกรมเพั+7อค�นหาแลัะ

แก�ไขส$วนผ�ดพัลัาดของโปรแกรม JDK ประกอบด�วย JRE

77

Page 78: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Java Runtime Environment (JRE)

JRE เป?นส$วนท17จั(าเป?นส(าหร�บการเร1ยกร�นโปรแกรมท17เข1ยนข36นด�วยภาษาจัาวา

JRE ประกอบด�วย JVM, ไลับราร1ต์$าง ๆ แลัะคอมโพัเน�นท�

78

Page 79: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Java Virtual Machine (JVM)

หน�าท17ของ JVM ค+อ จั(าลัองคอมพั�วเต์อร�เสม+อน (Virtual machine) ข36นบนเคร+7องคอมพั�วเต์อร�

คอมพั�วเต์อร�เสม+อนจัะท(าหน�าท17ในการแปลัไบต์�โค�ด (bytecode) ไปเป?นภาษาเคร+7องท17เหมาะสมก�บแพัลัต์ฟอร�มจัร�ง ๆ ของแต์$ลัะเคร+7อง

โปรแกรมภาษาจัาวาจัะคอมไพัลั�ได�ไบท�โค�ด โดย JVM จัะเป?นอ�นเต์อร�พัร1ต์เต์อร�ท17แปลัไบท�โค�ดให�เป?นค(าส�7งท17ภาษาเคร+7องเข�าใจั

จัาวาไบท�โค�ดสามารถุจัะร�นข�ามแพัลัต์ฟอร�ม (platform) ได� ถุ�า แพัลัต์ฟอร�มน�6นม1 JVM อย.$

JVM เป?นโปรแกรมท17ข36นอย.$ก�บแพัลัต์ฟอร�ม (platform specific)JVM อาจัพั�ฒนาเป?นโปรแกรมซอฟต์�แวร�หร+อฮาร�ดแวร�ได�

79

Page 80: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

เตร�ยมคำวัามพื่ร&อม/ต�ดต�2งโปรแกรม

1. ต์�ดต์�6ง JDK 2. ก(าหนดท17อย.$ของไฟลั�ต์$าง ๆ (path) ท17

จั(าเป?นส(าหร�บการ compile ภายในเคร+7องเพั+7อให�การ compile แลัะ executeโปรแกรมเป?นไปได� ถุ�าเราไม$ก(าหนด – pathเคร+7องของเราจัะไม$ร. �จั�กค(าส�7งต์$าง ๆ ท17 Javaใชิ� ให�ก(าหนดท17อย.$

80

Page 81: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

เตร�ยมคำวัามพื่ร&อม/ต�ดต�2งโปรแกรม

หลั�งจัากท17ได�ต์�ดต์�6ง JDK พัร�อมท�6ง ไฟลั�อ+7นๆ แลั�วหน�าต์าของ directory ของ

Java ก;จัะม1 folder ต์$างๆ คลั�ายๆ ก�บท17เห;นน16

81

Page 82: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การก!าหันด path

กดป�Jมขวาของ mouse บน icon My Computer(หร+อ ไปท17ป�Jม start ท17ม�มลั$างซ�ายของจัอแลั�วเลั+อก

My Computer) แลั�วเลั+อก Propertiesกดป�Jม advanced บน System Propertiesกดป�Jม Environment Variables

82

Page 83: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การก!าหันด path

ใน System Variables เลั+อกข�อความท17ข36นต์�นด�วยค(าว$า Path

เม+7อกดป�Jม Edit ก;จัะได�หน�าจัอด�งท17เห;น

เต์�ม ; (semicolon) ถุ�าย�งไม$ม1 แลั�วจั3งใส$ path ท17ได� install JDK ไว� เสร;จัแลั�วกดป�Jม OK เพั+7อให�ระบบบ�นท3กการเปลั17ยนแปลังท17ได�ท(าข36น

83

Page 84: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

โปรแกรมท��ใชิ&เขี�ยนต&นฉบ�บโปรแกรม

Notepad มาพัร�อมก�บ Windows

J-Lab http://www.cp.eng.chula.ac.th/~somchai/

JLab/Netbeans

http://www.netbeans.org/Eclipse

http://www.eclipse.org/

84

Page 85: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Notepad

85

Page 86: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

J-Lab

86

Page 87: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Netbeans

87

Page 88: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

Eclipse

88

Page 89: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

20/04/23

โปรแกรม HelloWorld ในแบบต�วัอ�กษรแลัะแบบกราฟ6ก

โปรแกรม HelloWorld ในแบบต�วัอ�กษรแลัะแบบกราฟ6ก

89

Page 90: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

โปรแกรม HelloWorld

พั�มพั�ค(าว$า Hello, World! ข36นบนหน�าจัอคอมพั�วเต์อร�

90

Page 91: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเป6ดโปรแกรม cmd

1

2

3

91

Page 92: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

คำอมไพื่ลั#โปรแกรม

92

Page 93: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

โปรแกรม HelloWorld

public class HelloWorld

{

}

93

Page 94: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

โปรแกรม HelloWorld

public class HelloWorld

{

public static void main(String[] args)

{

}

}

94

Page 95: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

โปรแกรม HelloWorld

public class HelloWorld

{

public static void main(String[] args)

{

System.out.println("Hello, World!");

}

}

95

Page 96: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

โปรแกรม HelloWorld แบบกราฟ6ก

96

Page 97: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

โปรแกรม HelloWorld แบบกราฟ6ก

import java.awt.*;import javax.swing.*;public class HelloGraphicsWorld {

public static void main(String[] args) { JFrame frame = new JFrame() { public void paint(Graphics g) { g.drawString("Hello, World!", 110, 150); g.drawOval(100, 130, 90, 30); }

}; frame.setSize(300, 300); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setVisible(true); }}

97

Page 98: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

คำ!าอธิ�บายในโปรแกรมคำอมเมนต#บรรท�ดเด�ยวั

// print the word hello คำอมเมนต#ท��เป7นย"อหัน&า

/* This program will print the word hello */

98

Page 99: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

คำ!าอธิ�บายในโปรแกรม

คอมเมนต์�ท17เป?นย$อหน�าส(าหร�บการสร�างเอกสารด�วยโปรแกรม javadoc /**

*/

99

Page 100: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเซ้ำตคำ"าโปรแกรม Edit Plus

เลั+อกท17 Menu tool > Preferences เลั+อก User tools

เลั+อกท17 Group Name ต์�6งชิ+7อ Java จัากน�6นกด OK เลั+อกท17 Add Tool -> Program

100

Page 101: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเซ้ำตคำ"าโปรแกรม Edit Plus

ต์�6งชิ+7อ Java Compile กดป�Jม Browse ไปท17ต์�ดต์�6งโปรแกรม j2sdk แลั�วเข�าไปท17 bin เลั+อก javac.exe ด�งร.ป ท17 Argument เลั+อกท17 Flie Name เม+7อเซต์ได�ต์ามร.ปแลั�วกด OK

101

Page 102: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

การเซ้ำตคำ"าโปรแกรม Edit Plus

กลั�บไปท(าข�6นต์อนเด�มท17 Add Tool ต์�6งชิ+7อ Java Run เลั+อกไฟลั� java.exe ใน bin แลัะ Argumentให�เลั+อก File Name Without Extension จัากน�6นก;กด OK

102

Page 103: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

20/04/23

สร�ปสร�ป

103

Page 104: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

สร�ปโปรแกรมในจำาวัาแพื่ลัตฟอร#มมาตรฐานม�อย%"สองประเภทคำ�อ

แอพื่พื่ลั�เคำชิ�น แลัะ แอพื่เพื่ลัทจำาวัาแอพื่พื่ลั�เคำชิ�นสามารถุท!างานได&เหัม�อนก�บโปรแกรม

ท��วัไป ม�นสามารถุท!างานบนคำอมพื่�วัเตอร#ต"างร�"นต"างระบบปฏิ�บ�ต�การได& เพื่ราะวั"าม�นท!างานอย%"บนโปรแกรมเคำร��องจำ�กรเสม�อน

จำาวัาแอพื่เพื่ลัตสามารถุท!างานบนเวั3บเพื่จำได& ม�นสามารถุท!างานบนคำอมพื่�วัเตอร#ต"างร�"นต"างระบบปฏิ�บ�ต�การได& ขีอเพื่�ยงแคำ"ม�โปรแกรม เวั3บเบราเซ้ำอร#ท��สน�บสน�นภาษาจำาวัาต�ดต�2งอย%"บนระบบปฏิ�บ�ต�การน�2น

104

Page 105: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

สร�ปซ้ำอร#สโคำ&ดโปรแกรมจำาวัาอย%"ในแฟ=มท��ม�

นามสก�ลั .javaโปรแกรมท��ใชิ&คำอมไพื่ลั#ภาษาจำาวัาชิ��อ javacผู้ลัการคำอมไพื่ลั#จำะได&แฟ=มท��ม�นามสก�ลั .classไฟลั#นามสก�ลั class สามารถุท!างานใน JRE ได&ใชิ&โปรแกรม java ร�นไฟลั# .class ท��ม�เมธิอด

main()การพื่�มพื่#ขี&อคำวัามใชิ&คำ!าส��ง

System.out.println("ขี&อคำวัามท��ต&องการพื่�มพื่#")

105

Page 106: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

LOGO

20/04/23 106

Page 107: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

แบบทดสอบวั�ชิา 4121306A การเขี�ยนโปรแกรมเชิ�งวั�ตถุ�

จังพั�จัารณาว$าประโยคน16ถุ.กหร+อผ�ด1 .ท�กคร�6งท17ต์�ดต์�6ง JRE จัะได� JDK ต์�ดต์�6งมาพัร�อมก�นด�วยเสมอ2. JVM ไม$ได�เป?นส$วนประกอบหน37งท17อย.$ใน JRE3. JDK ประกอบด�วย JRE, คอมไพัเลัอร� แลัะด1บ�กเกอร�4. หากต์�ดต์�6ง JDK ลังท17เคร+7อง ก;จัะสามารถุเร1ยกร�นจัาวาแอพั

เพัลัต์ได�เชิ$นเด1ยวก�บการต์�ดต์�6ง JRE ลังท17เคร+7อง5. โปรแกรมภาษาจัาวาไม$เป?น Platfom-independent6. เม+7อ compile โปรแกรมแลั�วจัะได�เป?น bytecode ซ37งเป?น

ไฟลั�ท17ม1นามสก�ลั .javac7. bytecode จัะย3ดต์�ดก�บ platform

107

Page 108: การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming

20/04/23

แบบทดสอบวั�ชิา 4121306A การเขี�ยนโปรแกรมเชิ�งวั�ตถุ�

1. JAVA platform แบ$งออกเป?นก17ประเภท อะไรบ�าง จังอธี�บาย2. JRE ค+ออะไร ประกอบด�วยอะไรบ�าง3. JDK ค+ออะไร ประกอบด�วยอะไรบ�าง

4. ถุ�าเป?นโปรแกรมเมอร�ม1หน�าท17เข1ยนโปรแกรมภาษาจัาวาให�ก�บบร�ษ�ท ควรเลั+อกดาวน�โหลัด JDK หร+อ JRE มาใชิ�งาน เพัราะเหต์�ใด

5. ถุ�าบ�คคลัท�7วไปท17ไม$ใชิ$โปรแกรมเมอร� เป?นบ�คคลัท17ใชิ�เว;บท�7วไป โดยท17เว;บท17สนใจัส$วนใหญ$ลั�วนม1จัาวาแอพัเพัลัต์ร�นอย.$ท� 6งส�6น เธีอควรเลั+อกดาวน�โหลัด JDK หร+อ JRE มาใชิ�งาน เพัราะเหต์�ใด

6. JVM ค+ออะไร จังอธี�บาย 7. เพัราะเหต์�ใดจั3งไม$ต์�องแยกเข1ยนโปรแกรมภาษาจัาวาส(าหร�บ

แพัลัต์ฟอร�มแต์$ลัะแพัลัต์ฟอร�ม แต์$สามารถุเข1ยนโปรแกรมภาษาจัาวาเพั1ยงแค$คร�6งเด1ยว แลั�วน(าไปร�นได�บนท�กแพัลัต์ฟอร�ม

8. จังอธี�บายค�ณสมบ�ต์�ของโปรแกรมเชิ�งว�ต์ถุ� ประกอบด�วยอะไรบ�าง อธี�บายอย$างลัะเอ1ยด พัร�อมยกต์�วอย$าง

9. จังอธี�บายข�อด1ของ JAVA 108