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

107
LOGO การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming Nerissa Onkhum 11/06/55 1

Upload: others

Post on 31-Dec-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

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

Nerissa Onkhum11/06/55 1

Page 2: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

11/06/55 2

Page 3: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

แนวคดเชงวตถ

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

11/06/55 3

Page 4: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

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

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

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

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

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

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

Page 5: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

11/06/55 5

Page 6: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

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

11/06/55 6

Page 7: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

11/06/55 7

Page 8: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

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

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

11/06/55 8

Page 9: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

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

Nerissa Onkhum11/06/55 9

Page 10: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Outline

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

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

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

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

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

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

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

Page 11: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

11

Page 12: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

12

Page 13: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

โปรแกรมยอย 1

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

โปรแกรมยอย 2

โปรแกรมยอย 4

โปรแกรมยอย 3

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

13

Page 14: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

14

Page 15: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

15

Page 16: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

Process1

Process2

Process3

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

START

STOP

16

Page 17: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

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

Process1

Process2

Process3

START

STOP

17

Page 18: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

Process

Decision

Process

Yes No

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

18

Page 19: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

11/06/55 19

Page 20: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

Page 21: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

Page 22: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

อลกอรธม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

Page 23: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

Decision

Process

Yes

No

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

23

Page 24: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

24

Page 25: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

• การแกไข (Modify)

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

25

Page 26: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

26

Page 27: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

Data DataObject 1 Object 2

27

Page 28: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

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

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

28

Page 29: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

11/06/55 29

Page 30: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

30

Page 31: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

31

Page 32: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

วตถ (object)

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

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

32

Page 33: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

คลาส (Class)

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

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

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

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

33

Page 34: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

34

Page 35: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

คลาส (Class)

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

35

Page 36: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

36

Page 37: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

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

37

Page 38: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

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

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

38

Page 39: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

การหอหม (Encapsulation)

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

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

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

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

39

Page 40: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

40

Page 41: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55 41

การสบทอด (Inheritance)

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

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

Page 42: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

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

inherit

11/06/55 42

การสบทอด (Inheritance)

Page 43: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Polymorphism (การพองรป)

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

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

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

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

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

43

Page 44: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Polymorphism (การพองรป)

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

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

44

Page 45: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

11/06/55 45

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

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

Page 46: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

11/06/55

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

46

Page 47: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

47

Page 48: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

48

Page 49: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

ดค

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

49

Page 50: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

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

- 50

Page 51: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

51

Page 52: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

11/06/55

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

52

Page 53: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

53

Page 54: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

Garbage Collection)

54

Page 55: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

55

Page 56: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

11/06/55

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

56

Page 57: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

แพลตฟอรม (platform)

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

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

57

Page 58: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

แพลตฟอรม (platform)

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

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

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

58

Page 59: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

Page 60: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

11/06/55

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

60

Page 61: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

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

(COBOL) C++ หรอ JAVA

11/06/55 61

Page 62: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

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

11/06/55 62

Page 63: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

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

11/06/55 63

Page 64: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

ตวแปลภาษา

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

11/06/55 64

Page 65: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

คอมไพเลอร

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

11/06/55 65

Page 66: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

11/06/55 66

Page 67: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

11/06/55 67

Page 68: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

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

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

(Prolog) และ Smalltalk

11/06/55 68

Page 69: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

11/06/55 69

Page 70: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

Page 71: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

JDKJRE

JVM

71

Page 72: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

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

Byte code(ไฟล .class)

72

Page 73: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

Download http://java.sun.com

Byte code(ไฟล .class)

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

ผลการท างาน

73

Page 74: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

74

Page 75: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

75

Page 76: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Java Development Kit (JDK)

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

76

Page 77: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Java Runtime Environment (JRE)

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

77

Page 78: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Java Virtual Machine (JVM)

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

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

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

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

78

Page 79: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

79

Page 80: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

80

Page 81: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

การก าหนด path

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

81

Page 82: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

การก าหนด path

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

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

82

Page 83: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

Page 84: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Notepad

84

Page 85: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

J-Lab

85

Page 86: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Netbeans

86

Page 87: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

Eclipse

87

Page 88: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

11/06/55

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

88

Page 89: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

โปรแกรม HelloWorld

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

89

Page 90: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

1

2

3

90

Page 91: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

91

Page 92: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

โปรแกรม HelloWorld

public class HelloWorld

{

}

92

Page 93: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

โปรแกรม HelloWorld

public class HelloWorld

{

public static void main(String[] args)

{

}

}

93

Page 94: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

โปรแกรม HelloWorld

public class HelloWorld

{

public static void main(String[] args)

{

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

}

}

94

Page 95: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

95

Page 96: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

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

Page 97: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

This program will print the word hello

*/ 97

Page 98: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

*/

98

Page 99: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

99

Page 100: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

100

Page 101: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

101

Page 102: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

11/06/55

สรป

102

Page 103: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

สรป

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

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

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

103

Page 104: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

สรป

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

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

104

Page 105: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

LOGO

11/06/55 105

Page 106: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

106

Page 107: การเขียนโปรแกรมเชิงวัตถุ - URUmathcom.uru.ac.th/~beebrain/Slide/4121306A/01_OOP.pdf · 2012-06-11 · คู่มือการเขียนโปรแกรมภาษา

11/06/55

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

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

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

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

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

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

107