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

Post on 31-Dec-2019

4 views 0 download

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

LOGO

การเขยนโปรแกรมเชงวตถObject Oriented Programming

Nerissa Onkhum11/06/55 1

ค าอธบายรายวชาหลกการการออกแบบและพฒนาซอฟตแวรเชงวตถ

โครงสรางโปรแกรมในภาษาเชงวตถ ความหมายและ กลมของวตถ คณลกษณะและพฤตกรรมของวตถ คลาสและหลกการส าคญของคลาส การหอหม การสบทอด การพองรป การน าเอาสวนประกอบของซอฟตแวรกลบมาใช กราฟก การสรางและจดการโครงสรางขอมลพลวต กรณศกษา การเขยนโปรแกรมเชงวตถ

11/06/55 2

จดประสงคการเรยนรเพอใหนกศกษามความร ความเขาใจเกยวกบหลกการและ

แนวคดเชงวตถ

เพอใหนกศกษามความร ความเขาใจเกยวกบการออกแบบและการเขยนโปรแกรมเชงวตถ

11/06/55 3

เนอหาวชาความรเบองตนของภาษาจาวา

หลกการเชงออปเจค

พนฐานโปรแกรมภาษาจาวา

โครงสรางควบคม

การเขยนโปรแกรมภาษาจาวาเชงออปเจค

อะเรยและคอลเลกชน

การจดการกบขอมลผดพลาด

อนพตและเอาทพต

โปรแกรมจาวาแบบกราฟฟก11/06/55 4

หนงสอทใชในรายวชาต าราหลก

ธรวฒน ประกอบผล. คมอการเขยนโปรแกรมภาษา JAVA. พมพครงท 1 2552 : กรงเทพฯ ; ซคเซส มเดย.อรพน. คมอการเขยนโปรแกรมดวยภาษา JAVA. พมพครงท 9 2553:

กรงเทพฯ ; โปรวชน.

11/06/55 5

หนงสอทใชในรายวชาหนงสออานประกอบ

ยทธนา ลลาศวฒนกล. เรมตนการเขยนโปรแกรมดวยภาษา Java. พมพครงท 1 2548 : กรงเทพ ฯ ; ไทยเจรญการพมพ.พนดา พานชกล. การเขยนโปรแกรมคอมพวเตอรเบองตนดวยภาษา

JAVA. พมพครงท 1 2548 : กรงเทพฯ ; ไทยเจรญการพมพ.วรเศรษฐ สวรรณก และ ทศพล ธนะทพานนท. เขยนโปรแกรม Java

เบองตน. พมพครงท 4 2551 : กรงเทพฯ ; ซเอดยเคชน.

11/06/55 6

การวดผลคะแนนระหวางภาค 70 คะแนน

เขาเรยน 10 คะแนน การบาน 40 คะแนน สอบกลางภาค 10 คะแนน สอบปฏบต 10 คะแนน

คะแนนสอบปลายภาค 30 คะแนน

11/06/55 7

ขอตกลงในชนเรยน เวลาเขาเรยนไมต ากวารอยละ 80

ขาดไดไมเกน 3 ครง

มาสายกวาเวลาเรยนครงชวโมง ถอวาขาด 1 ครง

สงงานทไดรบมอบหมายทงหมดครบและตรงตามระยะเวลา ทก าหนด

การแตงกาย ใหเปนไปตามระเบยบมหาวทยาลยก าหนด

11/06/55 8

LOGO

ความรเบองตนของภาษาจาวา(Introduction to Java Programming)

Nerissa Onkhum11/06/55 9

11/06/55

Outline

การเขยนโปรแกรมเชงวตถ

ประวตของภาษาจาวา

ขอดของภาษาจาวา

จาวาแพลตฟอรม

การคอมไพลและรนโปรแกรมภาษาจาวา

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

การตดตงเครองมอทใชในการพฒนาโปรแกรมในภาษา Java10

11/06/55

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

การเขยนโปรแกรมเชงกระบวนการ (Procedural Programming) เปนการเขยนโปรแกรมแบบโครงสราง ซงชวยจดระเบยบของค าสงในโปรแกรม สามารถตรวจสอบล าดบการท างานไดงาย แตเนองจากโปรแกรมประกอบดวยค าสง และขอมล เชน ภาษา C แยกสวนทเปนขอมลออกจากค าสง ดวยเหตนฟงกชนทจดการกบขอมลจงอาจถกวางไวอยางกระจดกระจาย สรางความล าบากในการตดตามสบหาวาขอมลถกเปลยนแปลง โดยฟงกชนใด

11

11/06/55

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

การเขยนโปรแกรมแบบโครงสราง (Procedural) จะแบงเปน 2 สวนคอ สวนโปรแกรมหลก(Main Program) และ โปรแกรมยอย (Procedure หรอ Function) ลกษณะของ Data ทมการประกาศใชทวทงโปรแกรม เรยกวาประกาศใชแบบ “Global”

12

11/06/55

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

โปรแกรมยอย 1

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

โปรแกรมยอย 2

โปรแกรมยอย 4

โปรแกรมยอย 3

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

13

11/06/55

การเขยนโปรแกรมแบบโครงสราง โปรแกรมยอยจะเรยกใชขอมลจากโปรแกรมหลกตวเดยวกน อาจท าใหเกดปญหาการเปลยนแปลงคาของขอมลตวเดยวกนไดโปรแกรมประกอบดวยค าสงและขอมล การจดระเบยบค าสง

เพยงอยางเดยวนนจงไมสมบรณ แยกสวนทเปนขอมลออกจากค าสง ดวยเหตนฟงกชนทจดการกบ

ขอมลจงอาจจะถกวางไวอยางกระจดกระจาย สรางความล าบาก ในการตดตามสบหาวาขอมลนถกเปลยนแปลงโดยฟงกชนใด

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

14

11/06/55

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

การเขยนโปรแกรมเชงกระบวนการ (Procedural Programming) หรอการโปรแกรมแบบมโครงสราง (Structure Programming) มหลกการ 3 อยางนคอ การท างานแบบตามล าดบ (Sequence) การเลอกกระท าตามเงอนไข (Decision) การท าซ า (Loop)

15

11/06/55

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

1. การท างานแบบตามล าดบ (Sequence) : รปแบบการเขยนโปรแกรมทงายทสดคอ

เขยนใหท างานจากบนลงลาง เขยนค าสง เปนบรรทด และท าทละบรรทดจากบรรทดบนสดลงไปจนถงบรรทดลางสด สมมตใหม การท างาน 3 กระบวนการคอ อานขอมล ค านวณ และพมพ จะเขยนเปนผงงาน (Flowchart) ในแบบตามล าดบไดตามภาพ

Process1

Process2

Process3

แสดงการเขยนโปรแกรมเชงกระบวนการแบบล าดบ

START

STOP

16

11/06/55

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

การท างานแบบตามล าดบ (Sequence)

ท างานตามล าดบ

ท างานจากบนลงลาง (จดเรมตนถงสนสด)

มจดเรมตนจดเดยว – จดสนสดจดเดยว

Process1

Process2

Process3

START

STOP

17

11/06/55

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

2. การเลอกกระท าตามเงอนไข (Decision) : การตดสนใจ หรอเลอกเงอนไขคอ

เขยนโปรแกรมเพอน าคาไปเลอกกระท า โดยปกตจะมเหตการณใหท า 2 กระบวนการ คอ เงอนไขเปนจรงจะกระท ากระบวนการหนง และเปนเทจจะกระท าอกกระบวนการหนง แตถาซบซอนมากขน จะตองใชเงอนไขหลายชน เชนการตดเกรดนกศกษา เปนตน

ตวอยางผงงานน จะแสดงผลการเลอกอยางงาย เพอกระท ากระบวนการเพยงกระบวนการเดยว

Process

Decision

Process

Yes No

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

18

เงอนไข - คะแนนสอบตงแต 80 คะแนนขนไป ไดเกรด A- คะแนนสอบ 70-79 คะแนนขนไป ไดเกรด B- คะแนนสอบ 60-69 คะแนนขนไป ไดเกรด C- คะแนนสอบ 50-59 คะแนนขนไป ไดเกรด D- คะแนนสอบต ากวา 50 คะแนน ไดเกรด F

ตวอยาง โปรแกรมประมวลผลการเรยน

11/06/55 19

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

11/06/55 20

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

หรอ

11/06/55 21

อลกอรธม1. เรมตนท างาน2. รบคา คะแนนสอบ (Score)3. เปรยบเทยบคะแนนสอบ>=80 ถาเปนจรง ให

ท านพจน Grade=‘A’ ถาเปนเทจ ใหเปรยบเทยบคะแนนสอบ >=70 ถาเปนจรง ใหท านพจน Grade=‘B’ ถาเปนเทจ ใหเปรยบเทยบคะแนนสอบ >=60 ถาเปนจรง ใหท านพจน Grade=‘C’ ถาเปนเทจ ใหเปรยบเทยบคะแนนสอบ >=50 ถาเปนจรง ใหท านพจน Grade=‘D’ ถาเปนเทจ ใหใหท านพจน Grade=‘F’

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

รหสเทยม (Pseudo Code)Begin

READ ScoreIF 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 GradeEnd

ตวอยาง

11/06/55 22

11/06/55

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

3. การท าซ า (Repetition or Loop) : การท ากระบวนการหนงหลายครง

โดยมเงอนไขในการควบคม หมายถงการท าซ าเปนหลกการทท าความเขาใจไดยากกวา 2 รปแบบแรก เพราะการเขยนโปรแกรมแตละภาษา จะไมแสดงภาพอยางชดเจนเหมอนการเขยนผงงาน (Flowchart) ผเขยนโปรแกรมตองจนตนาการ ถงรปแบบการท างาน และใชค าสงควบคมดวยตนเอง ตวอยางผงงานทน ามาแสดงนเปนการแสดงค าสง ท าซ า (do while) ซงหมายถงการท าซ าในขณะทเปนจรง และเลกการท าซ า เมอเงอนไขเปนเทจ

Decision

Process

Yes

No

แสดงการเขยนโปรแกรมเชงกระบวนการแบบล าดบ

23

11/06/55

การเขยนโปรแกรมเชงกระบวนการยกตวอยาง เชน โปรแกรมตขายเครองดมอตโนมต

วธการคดแบบการเขยนโปรแกรมเชงกระบวนการ

เมอมการหยอดเหรยญเขาต:1. ตรวจสอบจ านวนเหรยญและชนดของเหรยญ2. แสดงผลชนดของน าทสามารถเลอกซอได3. ตรวจสอบจ านวนน ากระปองทมอยในต4. รบผลการเลอกชนดน า5. สงน าทเลอกออกมาจากชอง6. จดเกบเงนเขาระบบ7. หากมเงนทอน ใหทอนเงนทเหลอ ทชองรบเงนทอน

24

11/06/55

ขอเสยการเขยนโปรแกรมเชงกระบวนการ

แนวคดนมขอเสยอยางไร?• ขนาดของโปรแกรมใหญขน จะท าใหมความซบซอนในแงของ

การเขยนโปรแกรม

• ปญหาในเรองของการน ากบมาใชใหม (Reusable)

• การแกไข (Modify)

• การขยายเพอเพมประสทธภาพใหกบโปรแกรม

25

11/06/55

การเขยนโปรแกรมเชงวตถ

การเขยนโปรแกรมเชงวตถ (Object-oriented programming, OOP) คอหนงในรปแบบการเขยนโปรแกรมคอมพวเตอร ทใหความส าคญกบ วตถ ซงสามารถน ามาประกอบกนและน ามาท างานรวมกนได โดยการแลกเปลยนขาวสาร เพอน ามาประมวลผลและสงขาวสารทไดไปใหวตถอนๆ ทเกยวของเพอใหท างานตอไป

26

11/06/55

การเขยนโปรแกรมเชงวตถ

การเขยนโปรแกรมเชงวตถ Data จะถกประกาศใชเฉพาะภายใน Object เทานน

การท OOP จด Data ไวในแตละ Object นน เปนการปกปองขอมลภายใน Object ลดปญหาการเปลยนแปลงขอมลภายใน Object โดยไมไดรบอนญาต

Data DataObject 1 Object 2

27

11/06/55

การเขยนโปรแกรมเชงวตถโปรแกรมตขายเครองดมอตโนมต

วธการคดแบบการเขยนโปรแกรมเชงวตถ

ตขายเครองดมอตโนมต ประกอบดวยสวนประกอบตางๆไดแก หนวยตรวจสอบและจดการเรองเงน หนวยจดการเครองดม หนวยแสดงผลและรอรบค าสง

1. หนวยตรวจสอบและจดการเรองเงน มขอมลเกยวกบเงนทไดรบ และเงนทมอยในระบบสามารถรบและตรวจสอบเงนทหยอดเขามาได และทอนเงนได

2. หนวยจดการเครองดม มขอมลชนดของเครองดม จ านวนเครองดม สามารถจดเตรยมชนดเครองดมทพอกบเงนทหยอด และสามารถจายเครองดมออกมาจากตได

3. หนวยแสดงผลและรอรบค าสง มหนาทรอรบค าสง และแสดงผลเงนทหยอดเขามา

28

ขอดของการพฒนาโปรแกรมเชงวตถ

แนวคดการวเคราะหปญหาใกลเคยงกบธรรมชาตของมนษยระบบจรง (real life) แบงตามออปเจค ไมไดขนอยกบฟงกชน

การท างานขบวนการพฒนาโปรแกรมท าไดรวดเรวขนงายตอการพฒนาและแกไขน าโปรแกรมกลบมาใชใหมไดงาย

11/06/55 29

11/06/55

เปรยบเทยบแนวคดระหวางการเขยนโปรแกรมเชงกระบวนการ และเชงวตถ

แนวคดการเขยนโปรแกรมแบบดงเดมมกนยมใช การเขยนโปรแกรมเชงกระบวนการ(Procedural Programming) ซงใหความส าคญกบขนตอนกระบวนการทท า โดยแบงโปรแกรมออกเปนสวนๆตามล าดบขนตอนการท างาน แตแนวคดการเขยนโปรแกรมเชงวตถนนใหความส าคญกบขอมล (data) และ พฤตกรรม (behavior) ของวตถ และความสมพนธกนระหวางวตถกนมากกวา

30

11/06/55

หลกการของโปรแกรมเชงวตถ

โปรแกรมเชงวตถจะแบงการท างานของโปรแกรมเปนวตถ

การปรบปรงหรอแกไขโปรแกรมเชงวตถท าไดงายกวา จงเหมาะกบการพฒนาโปรแกรมขนาดใหญทจะตองมการปรบปรงแกไขโปรแกรมอยตลอด

31

11/06/55

วตถ (object)

โปรแกรมพจนานกรมฉบบราชบณฑตยสถาน พ.ศ. ๒๕๒๕ นยามค าวา “วตถ” วาหมายถงสงของ และนยามค าวา “สงของ” วาหมายถงวตถตางๆในโปรแกรมจะจ าลองลกษณะและความสามารถของวตถตางๆ ทอยในโลกจรง

สงไมมชวต เชน รปสเหลยม โทรทศน หรอบาน สงมชวต เชน พนกงาน นก หรอตนไม สงทเปนนามธรรม เชน แนวความคด หลกการ หรอวธการ

32

11/06/55

คลาส (Class)

คลาสเปนเหมอนสวนของแมพมพ เพอบอกลกษณะวาวตถในคลาสนมลกษณะและพฤตกรรมเปนอยางไร

สวนประกอบของคลาส

แอททรบวท(Attribute) หรอขอมล (Data) เปนสงทใชบอกถงลกษณะตางๆของวตถในคลาสเมธอด(Method) หรอพฤตกรรม (Behavior) เปนสงทใชอธบาย

การท างานของวตถในคลาส

33

11/06/55

ตวอยางของคลาส

นกศกษา อาจจะประกอบไปดวยคณลกษณะเชน รหส ชอ และเกรดเฉลย และอาจจะมเมธอดเชน ลงทะเบยน สอบ และเดนรถยนต อาจจะประกอบไปดวยคณลกษณะเชน ยหอ รน และสและอาจจะมเมธอดเชน เคลอนท หยดและเลยวสนข อาจจะประกอบไปดวยคณลกษณะเชน ชอ พนธ และส และอาจจะมเมธอดเชน เหา คลาน และกระดกหาง

34

11/06/55

คลาส (Class)

คลาสหนงคลาสสามารถสรางออปเจคไดหลายออปเจคอาทเชน คลาส Student อาจสรางออปเจค s1,s2 หรอ s3 ซงเปนออปเจคของคลาส Student

35

11/06/55

ตวอยางของออปเจคและคลาส

36

11/06/55

คณสมบตของโปรแกรมเชงวตถ

1. การหอหม (Encapsulation)

- ซอนวธการท างาน (Information Hiding)

2. การสบทอด (Inheritance)

3. การพองรป (Polymorphism)

37

การหอหม (Encapsulation)การหอหม (Encapsulation) เปนการซอนรายละเอยดการท างาน

และขอมลไวภายใน ไมใหภายนอกสามารถเหนไดดฉนสมหญงจากบรษท A ท าไมดฉนจงมองไมเหนแฟมเอกสารเหมอนอยางทคณสมศรบรษท C มองเหนคะ

อาจเปนเพราะแฟมเอกสารถก Encapsulation (ซอนอยหลงก าแพง) อยครบ จะมแตเฉพาะบคคลภายในบรษท C มองเหนแฟมเอกสารนได ตวผมกมองไมเหนเชนกน เพราะผมเองกเปนบคคลภายนอกเชนกน

ดฉนชอสมศรเปนบคคลภายในของบรษท C ฉนจงเหนแฟมเอกสารเหลานและมสทธเขามาจดการไดคะ

แฟมเอกสารนเปน private (แฟมสวนบคคล)11/06/55

38

การหอหม (Encapsulation)

ดจงเลยนะคะทบรษท C ไมไดท าการ encapsulate ซอนแฟมเอกสารนไว ท าใหเราสามารถมองเหนแฟมเอกสารนได

ใชแลวครบ โชคดมาก เพราะจะท าใหเราสามารถเขาไปดขอมลในแฟมเอกสารนได และนอกจาก เราจะดขอมลไดแลว ยงสามารถแกไขขอมลไดดวย เปนโอกาสของเราทจะลวงความลบและสรางความเสยหายใหกบบรษท C ซงเปนคแขงของเราได

แยแลว บคคลภายนอกบรษทดฉนสามารถมองเหนแฟมเอกสารนได ขอมลของบรษทตองไดรบความเสยหายแนนอนเลยคะ

แฟมเอกสารนเปน public (แฟมสาธารณะ)11/06/55

39

11/06/55

ซอนวธการท างาน (Information Hiding)

ซอนวธการท างานของวตถ เพอปองกนการเขามาใชขอมลของวตถโดยสงอนทไมเกยวของแลวท าใหเกดการผดเพยนของการท างานทงระบบ ท าใหเกดความยดหยน ผสรางวตถสามารถเปลยนแปลงวธการท างานของวตถไดโดยไมกระทบตอผใชวตถ เพอใหเกดความปลอดภยของวตถและระบบโดยรวมใหมากทสด

40

11/06/55 41

การสบทอด (Inheritance)

• การสบทอด (Inheritance) คอการท าการสรางสงใหมขนดวยการ สบทอดหรอรบเอาคณสมบตบางอยางมาจากสงเดมทมอยแลว และสรางเพมเตมได • ขอด

• สามารถน าสงทเคยสรางขนแลวน ากลบมาใชใหม (re-use) ได• ประหยดเวลา

ผมนาย ข. เปนผจดการครบ (Manager) ผมกเปนพนกงานคนหนง ดงนนจงท าการสบทอดคณสมบตมาจากนาย ก. ท าใหมคณสมบตประกอบดวยรหสพนกงาน และต าแหนง แตในฐานะทผมเปนผจดการ ผมไดรบรถประจ าต าแหนงดวย ดงนนผมจงตองสรางคณสมบตขนมาอก 1 ขอ

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

รหสพนกงานต าแหนง

รหสพนกงานต าแหนงรถประจ าต าแหนง

inherit

11/06/55 42

การสบทอด (Inheritance)

11/06/55

Polymorphism (การพองรป)

เปนคณสมบตทชนดของวตถทเกดจากชนดของวตถแมเดยวกน สามารถมความสามารถเหมอนแมแตมวธการด าเนนงานไมเหมอนกน คอมลกษณะเฉพาะตว เชน

สตวมปก::บน()

นก::บน()กระพอปกขนลง

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

ผง::บน()กระพอปกถเรว

43

11/06/55

Polymorphism (การพองรป)

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

เมธอดชอ calculate เหมอนกน แตมการรบคาเขามาภายใน เมธอดทแตกตางกน เมธอดชอเดยวกนสามารถรบอารกวเมนตทแตกตางกนไดหลายรปแบบน เรยกวาเมธอดนนถกโอเวอรโหลด (overload)

44

ถาเปนลกคาขาจร ผมจะใชเมธอด public void calculate(double y) ในการค านวณราคาครบ ไมไดซอประจ าลดใหไมไดครบ เศษเลกเศษนอยตองคด

แตถาเปนลกคาประจ า ผมจะใชเมธอด public void calculate(int x) ในการค านวณราคาครบ เศษเลก ๆ นอย ๆ ไมคดครบ

11/06/55 45

Polymorphism (การพองรป)สรป

ขอดของ Polymorphism คอ การท าใหสงหนงสามารถท างานไดหลากหลายรปแบบตามความตองการทเกดขนในขณะหนง ๆ

LOGO

11/06/55

ประวตของภาษาจาวา

46

11/06/55

ประวตของภาษาจาวา

เรมตนขนใน ป ค.ศ. 1990 แพททรก นอทน (Pattrick Naughton) เขยนขอผดพลาดท

เกดขนในบรษท ซนไมโครซสเตมสเจมส กอสลง (James Gosling) ผใหก าเนดภาษาจาวา

47

11/06/55

ประวตของภาษาจาวา

กรนทม (Green Project) วตถประสงคคอการสรางคอมพวเตอรรนใหม

ยคถดจากคอมพวเตอรสวนบคคล (personal computer) กคอคอมพวเตอรในอปกรณอเลกโทรนกส (consumer electronics)

48

11/06/55

ประวตของภาษาจาวา

ดค

- รโมตคอนโทรลควบคมอปกรณอเลกทรอนกส มชอวา ‚สตารเซเวน‛ (*7)- ภาษาทใชควบคมอปกรณอเลกทรอนกสคอ “ภาษาโอค‛ (Oak)

49

11/06/55

ประวตของภาษาจาวา

-Gosling ไดรบมอบหมายใหสรางภาษาใหม ส าหรบตดตงใหกบอปกรณ

- โดยภาษาทสรางขนตองเปนภาษาทมขนาดเลก อปกรณไมใชหนวยประมวลผลทสง

- สงส าคญ ภาษาทสรางขนจะตองเปนภาษาทไมยดตดกบอปกรณฮารดแวร (Platform-independent)

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

- 50

11/06/55

ประวตของภาษาจาวา

เปลยนชอจาก ‚Oak‛ เปน ‚JAVA‛มารค แอนดรสเซน ออกแบบ Mosaic ซงเปนโปรแกรมเวบเบราเซอรบล จอย (Bill Joy) แจกจายตวพฒนาภาษานอทนพฒนาเวบเบราเซอรทสนบสนนภาษาจาวา โปรแกรมดงกลาวมชอวา HotJava Netscape Navigator 23 มกราคม ค.ศ. 1996 ซนไดออก JDK 1.0

51

LOGO

11/06/55

ขอดของภาษาจาวา

52

11/06/55

ขอดของภาษาจาวา

ท างานบนเวบเบราเซอรได

ความปลอดภยสง

สนบสนนงานหลายระดบ

53

11/06/55

ขอดของภาษาจาวา

สามารถท างานบนเครองคอมพวเตอรตางระบบได ภาษาจาวาเปนภาษาเชงวตถความเรยบงาย ไวยากรณของภาษาจาวาถกออกแบบมาเปน

อยางด ท าใหเขาใจงายระบบจดการคนพนทในหนวยความจ าอตโนมต (Automatic

Garbage Collection)

54

11/06/55

ขอดของภาษาจาวา

มคลาสจ านวนมากมายใหใช ในจาวาแพลตฟอรมมาตรฐาน J2SE รน 5.0 มคลาสและอนเทอรเฟซ 3,279

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

55

LOGO

11/06/55

จาวาแพลตฟอรม

56

11/06/55

แพลตฟอรม (platform)

ระบบทโปรแกรมอาศยท างานHardwareSoftware Ex. แพลตฟอรม Wintel

ซพยของอนเทล และระบบปฏบตการไมโครซอฟทวนโดวส

57

11/06/55

แพลตฟอรม (platform)

จาวาแพลตฟอรม เปนซอฟแวร ซงประกอบดวย ตวแปลภาษา

โปรแกรมเครองจกรเสมอนจาวา

คลาส (แกนหลกของภาษาจาวา)

58

11/06/55

จาวาม 3 แพลตฟอรม

Java 2 Platform, Standard Edition (J2SE) เปนแพลตฟอรมมาตรฐาน จาวาแอพพลเคชน (Java application) ใชส าหรบเขยนโปรแกรมทวไป แอพเพลต (Java applet) โปรแกรมทท างานบนเวบเบราเซอร

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

องคกร

Java 2 Platform, Micro Edition (J2ME) สนคาอเลกโทรนกส เชน โทรศพทมอถอ พดเอ (personal digital assistant) และ

กลองเคเบลทว (TV set-top box 59

LOGO

11/06/55

การคอมไพลและรนโปรแกรมภาษาจาวา

60

องคประกอบของระบบคอมพวเตอร

ฮารดแวร (Hardware) สวนประกอบทเปนตวเครองคอมพวเตอร

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

โปรแกรมประยกต (Application Programs) โปรแกรมทวๆไป อาทเชน Word processor เกม บราวเซอร (Browser) พฒนาโดยใชภาษาคอมพวเตอรตางๆ เชน ฟอรแทน (FORTRAN) โคบอล

(COBOL) C++ หรอ JAVA

11/06/55 61

ภาษาคอมพวเตอร

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

ภาษาแอสเซมบล (Assembly Language) ADD R1,R2

ภาษาคอมพวเตอรระดบสง x = c1+c2

11/06/55 62

ภาษาคอมพวเตอรระดบสง

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

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

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

11/06/55 63

ตวแปลภาษา

ภาษาระดบสงจะตองใชตวแปลภาษา (Language Translator) เพอเปลยนซอรดโคด (Source Code) ใหเปนค าสงทคอมพวเตอรสามารถเขาใจไดวธแปลภาษามอยสองแบบ คอมไพเลอร (Compiler) อนเตอรพรตเตอร (Interpreter)

11/06/55 64

คอมไพเลอร

ท าหนาทแปลซอรดโคดทงโปรแกรมใหเปนโคดทสามารถท างานได (executable code)โปรแกรม executable code จะสามารถถกน าไปใชงานไดทนทตวอยางของภาษาทใชคอมไพเลอรคอ ฟอรแทรนปาสคาล และ C++

11/06/55 65

ขนตอนการท างานของคอมไพเลอร

11/06/55 66

ขอดและขอเสยของคอมไพเลอร

ขอด ท างานไดเรว ตรวจสอบขอผดพลาดของโปรแกรมซอรดโคดในขนตอนของการคอมไพล

ขอเสย ตองน าโปรแกรมซอรดโคดมาแปลใหมเมอเปลยนระบบปฏบตการเนองจากคอมไพเลอรเปนตวแปลภาษาทขนอยกบแพลตฟอรม(Platform Specific)

11/06/55 67

อนเตอรพรตเตอร

แปลโปรแกรมซอรดโคดทละบรรทดใหเปน executable code และท างานทนทมขอดคอ อนเตอรพรตเตอรถกสรางขนไดงายกวาและมขนาดเลก

ท าใหภาษาทใชอนเตอรพรตเตอรสามารถท างานขามแพลตฟอรมไดมขอเสยคอ ท างานไดชากวาคอมไพเลอรตวอยางของภาษาทใชอนเตอรพรตเตอรคอ เบสก โปรลอก

(Prolog) และ Smalltalk

11/06/55 68

ขนตอนการท างานของอนเตอรพรตเตอร

11/06/55 69

11/06/55

กอนทเราจะเขยนโปรแกรมดวย Java ตองมอะไรบาง

1. Text Editor เชนเดยวกนกบการเขยนโปรแกรมในภาษาอน ๆ เราตองมText Editor ทใชสรางและเกบ source code

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

3. Java VM หรอทเรยกวา Java Virtual Machine ซงเปนตวกลางทเปลยนcode ทไดจากการ compile เปน code ทสามารถ execute บนเครองตาง ๆ(code ทเครองนน ๆ รจก – machine code หรอทชาว Java เรยกวา byte code) โดยปกต VM จะถกตดตงพรอมกบ JDK

4. JRE (Java Runtime Environment) ตวรน ภาษา java ทถกแปลงเปน byte code แลว

70

11/06/55

องคประกอบของ JDK

JDKJRE

JVM

71

11/06/55

ชดพฒนาภาษาจาวา (JDK)

ชดพฒนาภาษาจาวา (Java Development Kit - JDK) ประกอบดวย

1. จาวาคอมไพเลอร (javac.exe)

ซอรสโคด (ไฟล .java)

คอมไพเลอร (โปรแกรม javac)

Byte code(ไฟล .class)

72

11/06/55

ชดพฒนาภาษาจาวา (JDK)

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

Download http://java.sun.com

Byte code(ไฟล .class)

สภาพแวดลอมส าหรบรนโปรแกรมจาวา(โปรแกรม java)

ผลการท างาน

73

11/06/55

ขนตอนการพฒนาโปรแกรมภาษาจาวา

74

11/06/55

ขนตอนการพฒนาโปรแกรมภาษาจาวา

75

11/06/55

Java Development Kit (JDK)

JDK เปนสวนประกอบหนงของ JAVA SE เหมาะส าหรบผพฒนาโปรแกรม หรอโปรแกรมเมอรดาวนโหลดไปใชงาน JDK ประกอบดวย คอมไพเลอรส าหรบคอมไพลโปรแกรม ดบกเกอรส าหรบดบกโปรแกรมเพอคนหาและแกไขสวนผดพลาดของโปรแกรม JDK ประกอบดวย JRE

76

11/06/55

Java Runtime Environment (JRE)

JRE เปนสวนทจ าเปนส าหรบการเรยกรนโปรแกรมทเขยนขนดวยภาษาจาวา JRE ประกอบดวย JVM, ไลบรารตาง ๆ และคอมโพเนนท

77

11/06/55

Java Virtual Machine (JVM)

หนาทของ JVM คอ จ าลองคอมพวเตอรเสมอน (Virtual machine) ขนบนเครองคอมพวเตอรคอมพวเตอรเสมอนจะท าหนาทในการแปลไบตโคด (bytecode) ไปเปน

ภาษาเครองทเหมาะสมกบแพลตฟอรมจรง ๆ ของแตละเครองโปรแกรมภาษาจาวาจะคอมไพลไดไบทโคด โดย JVM จะเปนอนเตอรพรตเตอรท

แปลไบทโคดใหเปนค าสงทภาษาเครองเขาใจจาวาไบทโคดสามารถจะรนขามแพลตฟอรม (platform) ได ถาแพลตฟอรมนนม

JVM อยJVM เปนโปรแกรมทขนอยกบแพลตฟอรม (platform specific)JVM อาจพฒนาเปนโปรแกรมซอฟตแวรหรอฮารดแวรได

78

11/06/55

เตรยมความพรอม/ตดตงโปรแกรม

1. ตดตง JDK2. ก าหนดทอยของไฟลตาง ๆ (path) ทจ าเปนส าหรบการ compile

ภายในเครองเพอใหการcompile และ execute โปรแกรมเปนไปได – ถาเราไมก าหนด path เครองของเราจะไมรจกค าสงตาง ๆ ท Java ใช ใหก าหนดทอย

79

11/06/55

เตรยมความพรอม/ตดตงโปรแกรม

หลงจากทไดตดตง JDK พรอมทงไฟลอนๆ แลวหนาตาของdirectory ของ Java กจะม folder ตางๆ คลายๆ กบทเหนน

80

11/06/55

การก าหนด path

กดปมขวาของ mouse บน icon My Computer (หรอ ไปทปม start ทมมลางซายของจอแลวเลอก My Computer) แลวเลอก Propertiesกดปม advanced บน System Propertiesกดปม Environment Variables

81

11/06/55

การก าหนด path

ใน System Variables เลอกขอความทขนตนดวยค าวา Pathเมอกดปม Edit กจะไดหนาจอดงทเหน

เตม ; (semicolon) ถายงไมม แลวจงใส path ทได install JDK ไว เสรจแลวกดปม OK เพอใหระบบบนทกการเปลยนแปลงทไดท าขน

82

11/06/55

โปรแกรมทใชเขยนตนฉบบโปรแกรมNotepad มาพรอมกบ Windows

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

Netbeans http://www.netbeans.org/

Eclipse http://www.eclipse.org/

83

11/06/55

Notepad

84

11/06/55

J-Lab

85

11/06/55

Netbeans

86

11/06/55

Eclipse

87

LOGO

11/06/55

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

88

11/06/55

โปรแกรม HelloWorld

พมพค าวา Hello, World! ขนบนหนาจอคอมพวเตอร

89

11/06/55

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

1

2

3

90

11/06/55

คอมไพลโปรแกรม

91

11/06/55

โปรแกรม HelloWorld

public class HelloWorld

{

}

92

11/06/55

โปรแกรม HelloWorld

public class HelloWorld

{

public static void main(String[] args)

{

}

}

93

11/06/55

โปรแกรม HelloWorld

public class HelloWorld

{

public static void main(String[] args)

{

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

}

}

94

11/06/55

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

95

11/06/55

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

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

}

}

96

11/06/55

ค าอธบายในโปรแกรม

คอมเมนตบรรทดเดยว// print the word hello

คอมเมนตทเปนยอหนา/*

This program will print the word hello

*/ 97

11/06/55

ค าอธบายในโปรแกรม

คอมเมนตทเปนยอหนาส าหรบการสรางเอกสารดวยโปรแกรม javadoc /**

*/

98

11/06/55

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

เลอกท Menu tool > Preferences เลอก User tools เลอกท Group Name ตงชอ Java จากนนกด OK เลอกท Add Tool -> Program

99

11/06/55

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

ตงชอ Java Compile กดปม Browse ไปทตดตงโปรแกรม j2sdk แลวเขาไปท bin เลอก javac.exe ดงรป ท Argument เลอกท Flie Name เมอเซตไดตามรปแลวกด OK

100

11/06/55

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

กลบไปท าขนตอนเดมท Add Tool ตงชอ Java Run เลอกไฟล java.exe ใน bin และ Argument ใหเลอก File Name Without Extension จากนนกกด OK

101

LOGO

11/06/55

สรป

102

11/06/55

สรป

โปรแกรมในจาวาแพลตฟอรมมาตรฐานมอยสองประเภทคอ แอพพลเคชน และ แอพเพลท

จาวาแอพพลเคชนสามารถท างานไดเหมอนกบโปรแกรมทวไป มนสามารถท างานบนคอมพวเตอรตางรนตางระบบปฏบตการได เพราะวามนท างานอยบนโปรแกรมเครองจกรเสมอน

จาวาแอพเพลตสามารถท างานบนเวบเพจได มนสามารถท างานบนคอมพวเตอรตางรนตางระบบปฏบตการได ขอเพยงแคมโปรแกรม เวบเบราเซอรทสนบสนนภาษาจาวาตดตงอยบนระบบปฏบตการนน

103

11/06/55

สรป

ซอรสโคดโปรแกรมจาวาอยในแฟมทมนามสกล .javaโปรแกรมทใชคอมไพลภาษาจาวาชอ javacผลการคอมไพลจะไดแฟมทมนามสกล .classไฟลนามสกล class สามารถท างานใน JRE ไดใชโปรแกรม java รนไฟล .class ทมเมธอด main()การพมพขอความใชค าสง

System.out.println("ขอความทตองการพมพ")

104

LOGO

11/06/55 105

11/06/55

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

จงพจารณาวาประโยคนถกหรอผด1. ทกครงทตดตง JRE จะได JDK ตดตงมาพรอมกนดวยเสมอ2. JVM ไมไดเปนสวนประกอบหนงทอยใน JRE3. JDK ประกอบดวย JRE, คอมไพเลอร และดบกเกอร4. หากตดตง JDK ลงทเครอง กจะสามารถเรยกรนจาวาแอพเพลตไดเชนเดยวกบการตดตง

JRE ลงทเครอง5. โปรแกรมภาษาจาวาไมเปน Platfom-independent6. เมอ compile โปรแกรมแลวจะไดเปน bytecode ซงเปนไฟลทมนามสกล .javac7. bytecode จะยดตดกบ platform

106

11/06/55

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

1. JAVA platform แบงออกเปนกประเภท อะไรบาง จงอธบาย2. JRE คออะไร ประกอบดวยอะไรบาง3. JDK คออะไร ประกอบดวยอะไรบาง4. ถาเปนโปรแกรมเมอรมหนาทเขยนโปรแกรมภาษาจาวาใหกบบรษท ควรเลอกดาวนโหลด JDK หรอ

JRE มาใชงาน เพราะเหตใด5. ถาบคคลทวไปทไมใชโปรแกรมเมอร เปนบคคลทใชเวบทวไป โดยทเวบทสนใจสวนใหญลวนมจาวา

แอพเพลตรนอยทงสน เธอควรเลอกดาวนโหลด JDK หรอ JRE มาใชงาน เพราะเหตใด6. JVM คออะไร จงอธบาย7. เพราะเหตใดจงไมตองแยกเขยนโปรแกรมภาษาจาวาส าหรบแพลตฟอรมแตละแพลตฟอรม แตสามารถ

เขยนโปรแกรมภาษาจาวาเพยงแคครงเดยว แลวน าไปรนไดบนทกแพลตฟอรม8. จงอธบายคณสมบตของโปรแกรมเชงวตถ ประกอบดวยอะไรบาง อธบายอยางละเอยด พรอม

ยกตวอยาง9. จงอธบายขอดของ JAVA

107