การเขียนโปรแกรมเชิงวัตถุ -...
TRANSCRIPT
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