1.71k likes | 2.71k Views
การเขียนโปรแกรมเชิงวัตถุ Object Oriented Programming. Nerissa Onkhum. แนวการสอน. ชื่อวิชา (ภาษาไทย) การเขียนโปรแกรมเชิงวัตถุ ชื่อวิชา (ภาษาอังกฤษ) Object Oriented Programming รหัสวิชา 4121306A จำนวนหน่วยกิต 3(2-2) อาจารย์ผู้สอน อาจารย์เณริสสา อ่อนขำ
E N D
การเขียนโปรแกรมเชิงวัตถุObject Oriented Programming Nerissa Onkhum
แนวการสอน ชื่อวิชา (ภาษาไทย)การเขียนโปรแกรมเชิงวัตถุ ชื่อวิชา (ภาษาอังกฤษ) Object Oriented Programming รหัสวิชา 4121306A จำนวนหน่วยกิต 3(2-2) อาจารย์ผู้สอน อาจารย์เณริสสา อ่อนขำ E-mail NerissaOnkhum@live.uru.ac.th ห้องทำงาน 822
คำอธิบายรายวิชา หลักการการออกแบบและพัฒนาซอฟต์แวร์เชิงวัตถุ โครงสร้างโปรแกรมในภาษาเชิงวัตถุ ความหมายและ กลุ่มของวัตถุ คุณลักษณะและพฤติกรรมของวัตถุ คลาสและหลักการสำคัญของคลาส การห่อหุ้ม การสืบทอด การพ้องรูป การนำเอาส่วนประกอบของซอฟต์แวร์กลับมาใช้ กราฟิก การสร้างและจัดการโครงสร้างข้อมูลพลวัต กรณีศึกษา การเขียนโปรแกรมเชิงวัตถุ
จุดประสงค์การเรียนรู้จุดประสงค์การเรียนรู้ • เพื่อให้นักศึกษามีความรู้ ความเข้าใจเกี่ยวกับหลักการและแนวคิดเชิงวัตถุ • เพื่อให้นักศึกษามีความรู้ ความเข้าใจเกี่ยวกับการออกแบบและการเขียนโปรแกรมเชิงวัตถุ
เนื้อหาวิชา • ความรู้เบื้องต้นของภาษาจาวา • หลักการเชิงออปเจ็ค • พื้นฐานโปรแกรมภาษาจาวา • โครงสร้างควบคุม • การเขียนโปรแกรมภาษาจาวาเชิงออปเจ็ค • อะเรย์และคอลเล็กชัน • การจัดการกับข้อมูลผิดพลาด • อินพุตและเอาท์พุต • โปรแกรมจาวาแบบกราฟฟิก
หนังสือที่ใช้ในรายวิชาหนังสือที่ใช้ในรายวิชา ตำราหลัก • ธีรวัฒน์ ประกอบผล. คู่มือการเขียนโปรแกรมภาษา JAVA. พิมพ์ครั้งที่ 1 2552 : กรุงเทพฯ ; ซัคเซส มีเดีย. • อรพิน. คู่มือการเขียนโปรแกรมด้วยภาษา JAVA. พิมพ์ครั้งที่ 9 2553: กรุงเทพฯ ; โปรวิชั่น.
หนังสือที่ใช้ในรายวิชาหนังสือที่ใช้ในรายวิชา หนังสืออ่านประกอบ • ยุทธนา ลีลาศวัฒนกุล. เริ่มต้นการเขียนโปรแกรมด้วยภาษา Java. พิมพ์ครั้งที่ 1 2548 : กรุงเทพ ฯ ; ไทยเจริญการพิมพ์. • พนิดา พานิชกุล. การเขียนโปรแกรมคอมพิวเตอร์เบื้องต้นด้วยภาษา JAVA. พิมพ์ครั้งที่ 1 2548 : กรุงเทพฯ ; ไทยเจริญการพิมพ์. • วรเศรษฐ สุวรรณิก และ ทศพล ธนะทิพานนท์. เขียนโปรแกรม Java เบื้องต้น. พิมพ์ครั้งที่ 4 2551 : กรุงเทพฯ ; ซีเอ็ดยูเคชั่น.
การวัดผล • คะแนนระหว่างภาค 70 คะแนน • เข้าเรียน 5คะแนน • ทดสอบย่อย5คะแนน • แบบทดสอบ 10 คะแนน • แบบฝึกปฏิบัติ 10 คะแนน • สอบกลางภาค 30 คะแนน • สอบปฏิบัติ 10 คะแนน • คะแนนสอบปลายภาค 30 คะแนน
ข้อตกลงในชั้นเรียน • เวลาเข้าเรียนไม่ต่ำกว่าร้อยละ 80 • ขาดได้ไม่เกิน 3 ครั้ง • มาสายกว่าเวลาเรียนครึ่งชั่วโมง 2 ครั้ง ถือว่าขาด 1 ครั้ง • ส่งงานที่ได้รับมอบหมายทั้งหมดครบและตรงตามระยะเวลา ที่กำหนด • การแต่งกาย ให้เป็นไปตามระเบียบมหาวิทยาลัยกำหนด
ความรู้เบื้องต้นของภาษาจาวา(Introduction to Java Programming) Nerissa Onkhum
Outline • การเขียนโปรแกรมเชิงวัตถุ • ประวัติของภาษาจาวา • ข้อดีของภาษาจาวา • จาวาแพลตฟอร์ม • การคอมไพล์และรันโปรแกรมภาษาจาวา • โปรแกรม HelloWorld ในแบบตัวอักษรและแบบกราฟิก • การติดตั้งเครื่องมือที่ใช้ในการพัฒนาโปรแกรมในภาษา Java
การเขียนโปรแกรมแบบโครงสร้าง(Structure programming) การเขียนโปรแกรมเชิงกระบวนการ (Procedural Programming) เป็นการเขียนโปรแกรมแบบโครงสร้าง ซึ่งช่วยจัดระเบียบของคำสั่งในโปรแกรม สามารถตรวจสอบลำดับการทำงานได้ง่าย แต่เนื่องจากโปรแกรมประกอบด้วยคำสั่ง และข้อมูล เช่น ภาษา C แยกส่วนที่เป็นข้อมูลออกจากคำสั่ง ด้วยเหตุนี้ฟังก์ชันที่จัดการกับข้อมูลจึงอาจถูกวางไว้อย่างกระจัดกระจาย สร้างความลำบากในการติดตามสืบหาว่าข้อมูลถูกเปลี่ยนแปลง โดยฟังก์ชันใด
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ • การเขียนโปรแกรมแบบโครงสร้าง (Procedural) จะแบ่งเป็น 2 ส่วนคือ ส่วนโปรแกรมหลัก(Main Program) และ โปรแกรมย่อย (Procedure หรือ Function)ลักษณะของ Data ที่มีการประกาศใช้ทั่วทั้งโปรแกรม เรียกว่าประกาศใช้แบบ “Global”
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ โปรแกรมย่อย 1 โปรแกรมหลัก Global Data โปรแกรมย่อย 3 โปรแกรมย่อย 2 แสดงการเขียนโปรแกรมแบบ Procedure โปรแกรมย่อย 4
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ • การเขียนโปรแกรมแบบโครงสร้างโปรแกรมย่อยจะเรียกใช้ข้อมูลจากโปรแกรมหลักตัวเดียวกัน อาจทำให้เกิดปัญหาการเปลี่ยนแปลงค่าของข้อมูลตัวเดียวกันได้ • โปรแกรมประกอบด้วยคำสั่งและข้อมูล การจัดระเบียบคำสั่ง เพียงอย่างเดียวนั้นจึงไม่สมบูรณ์ • แยกส่วนที่เป็นข้อมูลออกจากคำสั่ง ด้วยเหตุนี้ฟังก์ชันที่จัดการกับข้อมูลจึงอาจจะถูกวางไว้อย่างกระจัดกระจาย สร้างความลำบาก ในการติดตามสืบหาว่าข้อมูลนี้ถูกเปลี่ยนแปลงโดยฟังก์ชันใด
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ • การเขียนโปรแกรมเชิงกระบวนการ (Procedural Programming) หรือการโปรแกรมแบบมีโครงสร้าง (Structure Programming) มีหลักการ 3 อย่างนี้คือ • การทำงานแบบตามลำดับ (Sequence) • การเลือกกระทำตามเงื่อนไข (Decision) • การทำซ้ำ (Loop)
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ START 1. การทำงานแบบตามลำดับ (Sequence) : รูปแบบการเขียนโปรแกรมที่ง่ายที่สุดคือ เขียนให้ทำงานจากบนลงล่าง เขียนคำสั่ง เป็นบรรทัด และทำทีละบรรทัดจากบรรทัดบนสุดลงไปจนถึงบรรทัดล่างสุด สมมติให้มี การทำงาน 3 กระบวนการคือ อ่านข้อมูล คำนวณ และพิมพ์ จะเขียนเป็นผังงาน (Flowchart) ในแบบตามลำดับได้ตามภาพ Process1 Process2 Process3 STOP แสดงการเขียนโปรแกรมเชิงกระบวนการแบบลำดับ
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ START การทำงานแบบตามลำดับ (Sequence) • ทำงานตามลำดับ • ทำงานจากบนลงล่าง (จุดเริ่มต้นถึงสิ้นสุด) • มีจุดเริ่มต้นจุดเดียว – จุดสิ้นสุดจุดเดียว Process1 Process2 Process3 STOP
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ 2. การเลือกกระทำตามเงื่อนไข (Decision) : การตัดสินใจ หรือเลือกเงื่อนไขคือ เขียนโปรแกรมเพื่อนำค่าไปเลือกกระทำ โดยปกติจะมีเหตุการณ์ให้ทำ 2 กระบวนการ คือ เงื่อนไขเป็นจริงจะกระทำกระบวนการหนึ่ง และเป็นเท็จจะกระทำอีกกระบวนการหนึ่ง แต่ถ้าซับซ้อนมากขึ้น จะต้องใช้เงื่อนไขหลายชั้น เช่นการตัดเกรดนักศึกษา เป็นต้น ตัวอย่างผังงานนี้ จะแสดงผลการเลือกอย่างง่าย เพื่อกระทำกระบวนการเพียงกระบวนการเดียว Yes No Decision Process Process แสดงการเขียนโปรแกรมเชิงกระบวนการแบบเงื่อนไข
ตัวอย่าง โปรแกรมประมวลผลการเรียน • เงื่อนไข • คะแนนสอบตั้งแต่ 80 คะแนนขึ้นไป ได้เกรด A • คะแนนสอบ 70-79 คะแนนขึ้นไป ได้เกรด B • คะแนนสอบ 60-69 คะแนนขึ้นไป ได้เกรด C • คะแนนสอบ 50-59 คะแนนขึ้นไป ได้เกรด D • คะแนนสอบต่ำกว่า 50 คะแนน ได้เกรด F
START Read Score N Y Score>=80 Y N Grade = ‘A’ Score>=70 N Y Score>=60 Grade = ‘B’ Grade = ‘C’ Y N Score>=50 Grade = ‘D’ Grade = ‘F’ ตัวอย่าง STOP Write Grade
ตัวอย่าง • อัลกอริธึม • เริ่มต้นทำงาน • รับค่า คะแนนสอบ (Score) • เปรียบเทียบคะแนนสอบ>=80 ถ้าเป็นจริง ให้ทำนิพจน์ Grade=‘A’ ถ้าเป็นเท็จ ให้เปรียบเทียบคะแนนสอบ >=70 ถ้าเป็นจริง ให้ทำนิพจน์ Grade=‘B’ ถ้าเป็นเท็จ ให้เปรียบเทียบคะแนนสอบ >=60 ถ้าเป็นจริง ให้ทำนิพจน์ Grade=‘C’ ถ้าเป็นเท็จ ให้เปรียบเทียบคะแนนสอบ >=50 ถ้าเป็นจริง ให้ทำนิพจน์ Grade=‘D’ ถ้าเป็นเท็จ ให้ให้ทำนิพจน์ Grade=‘F’ • แสดงผล เกรด (Grade) • จบการทำงาน รหัสเทียม (Pseudo Code) Begin READ Score IF Score >= 80 THEN 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
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ 3. การทำซ้ำ (Repetition or Loop) : การทำกระบวนการหนึ่งหลายครั้ง โดยมีเงื่อนไขในการควบคุม หมายถึงการทำซ้ำเป็นหลักการที่ทำความเข้าใจได้ยากกว่า 2 รูปแบบแรก เพราะการเขียนโปรแกรมแต่ละภาษา จะไม่แสดงภาพอย่างชัดเจนเหมือนการเขียนผังงาน (Flowchart) ผู้เขียนโปรแกรมต้องจินตนาการ ถึงรูปแบบการทำงาน และใช้คำสั่งควบคุมด้วยตนเอง ตัวอย่างผังงานที่นำมาแสดงนี้เป็นการแสดงคำสั่ง ทำซ้ำ (do while) ซึ่งหมายถึงการทำซ้ำในขณะที่เป็นจริง และเลิกการทำซ้ำ เมื่อเงื่อนไขเป็นเท็จ Process Yes Decision No แสดงการเขียนโปรแกรมเชิงกระบวนการแบบลำดับ
การเขียนโปรแกรมเชิงกระบวนการการเขียนโปรแกรมเชิงกระบวนการ ยกตัวอย่าง เช่น โปรแกรมตู้ขายเครื่องดื่มอัตโนมัติ วิธีการคิดแบบการเขียนโปรแกรมเชิงกระบวนการ เมื่อมีการหยอดเหรียญเข้าตู้: 1. ตรวจสอบจำนวนเหรียญและชนิดของเหรียญ 2. แสดงผลชนิดของน้ำที่สามารถเลือกซื้อได้ 3. ตรวจสอบจำนวนน้ำกระป๋องที่มีอยู่ในตู้ 4. รับผลการเลือกชนิดน้ำ 5. ส่งน้ำที่เลือกออกมาจากช่อง 6. จัดเก็บเงินเข้าระบบ 7. หากมีเงินทอน ให้ทอนเงินที่เหลือ ที่ช่องรับเงินทอน
ข้อเสียการเขียนโปรแกรมเชิงกระบวนการข้อเสียการเขียนโปรแกรมเชิงกระบวนการ แนวคิดนี้มีข้อเสียอย่างไร? • ขนาดของโปรแกรมใหญ่ขึ้น จะทำให้มีความซับซ้อนในแง่ของ การเขียนโปรแกรม • ปัญหาในเรื่องของการนำกับมาใช้ใหม่ (Reusable) • การแก้ไข (Modify) • การขยายเพื่อเพิ่มประสิทธิภาพให้กับโปรแกรม
การเขียนโปรแกรมเชิงวัตถุการเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมเชิงวัตถุ(Object-oriented programming, OOP) คือหนึ่งในรูปแบบการเขียนโปรแกรมคอมพิวเตอร์ ที่ให้ความสำคัญกับ วัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยการแลกเปลี่ยนข่าวสาร เพื่อนำมาประมวลผลและส่งข่าวสารที่ได้ไปให้วัตถุอื่นๆ ที่เกี่ยวข้องเพื่อให้ทำงานต่อไป
การเขียนโปรแกรมเชิงวัตถุการเขียนโปรแกรมเชิงวัตถุ • การเขียนโปรแกรมเชิงวัตถุ Data จะถูกประกาศใช้เฉพาะภายใน Object เท่านั้น • การที่ OOP จัด Data ไว้ในแต่ละ Object นั้น เป็นการปกป้องข้อมูลภายใน Object ลดปัญหาการเปลี่ยนแปลงข้อมูลภายใน Object โดยไม่ได้รับอนุญาต Object 1 Data Object 2 Data
การเขียนโปรแกรมเชิงวัตถุการเขียนโปรแกรมเชิงวัตถุ โปรแกรมตู้ขายเครื่องดื่มอัตโนมัติ วิธีการคิดแบบการเขียนโปรแกรมเชิงวัตถุ ตู้ขายเครื่องดื่มอัตโนมัติ ประกอบด้วยส่วนประกอบต่างๆได้แก่ หน่วยตรวจสอบและจัดการเรื่องเงิน หน่วยจัดการเครื่องดื่ม หน่วยแสดงผลและรอรับคำสั่ง 1. หน่วยตรวจสอบและจัดการเรื่องเงิน มีข้อมูลเกี่ยวกับเงินที่ได้รับ และเงินที่มีอยู่ในระบบสามารถรับและตรวจสอบเงินที่หยอดเข้ามาได้ และทอนเงินได้ 2. หน่วยจัดการเครื่องดื่ม มีข้อมูลชนิดของเครื่องดื่ม จำนวนเครื่องดื่ม สามารถจัดเตรียมชนิดเครื่องดื่มที่พอกับเงินที่หยอด และสามารถจ่ายเครื่องดื่มออกมาจากตู้ได้ 3. หน่วยแสดงผลและรอรับคำสั่ง มีหน้าที่รอรับคำสั่ง และแสดงผลเงินที่หยอดเข้ามา
ข้อดีของการพัฒนาโปรแกรมเชิงวัตถุข้อดีของการพัฒนาโปรแกรมเชิงวัตถุ • แนวคิดการวิเคราะห์ปัญหาใกล้เคียงกับธรรมชาติของมนุษย์ • ระบบจริง (real life) แบ่งตามออปเจ็ค ไม่ได้ขึ้นอยู่กับฟังก์ชันการทำงาน • ขบวนการพัฒนาโปรแกรมทำได้รวดเร็วขึ้น • ง่ายต่อการพัฒนาและแก้ไข • นำโปรแกรมกลับมาใช้ใหม่ได้ง่าย
เปรียบเทียบแนวคิดระหว่างการเขียนโปรแกรมเชิงกระบวนการ และเชิงวัตถุ แนวคิดการเขียนโปรแกรมแบบดั้งเดิมมักนิยมใช้ การเขียนโปรแกรมเชิงกระบวนการ(Procedural Programming) ซึ่งให้ความสำคัญกับขั้นตอนกระบวนการที่ทำ โดยแบ่งโปรแกรมออกเป็นส่วนๆตามลำดับขั้นตอนการทำงาน แต่แนวคิดการเขียนโปรแกรมเชิงวัตถุนั้นให้ความสำคัญกับข้อมูล (data) และ พฤติกรรม (behavior) ของวัตถุ และความสัมพันธ์กันระหว่างวัตถุกันมากกว่า
หลักการของโปรแกรมเชิงวัตถุหลักการของโปรแกรมเชิงวัตถุ • โปรแกรมเชิงวัตถุจะแบ่งการทำงานของโปรแกรมเป็นวัตถุ • การปรับปรุงหรือแก้ไขโปรแกรมเชิงวัตถุทำได้ง่ายกว่า จึงเหมาะกับการพัฒนาโปรแกรมขนาดใหญ่ที่จะต้องมีการปรับปรุงแก้ไขโปรแกรมอยู่ตลอด
วัตถุ (object) • โปรแกรมพจนานุกรมฉบับราชบัณฑิตยสถาน พ.ศ. ๒๕๒๕ นิยามคำว่า “วัตถุ” ว่าหมายถึงสิ่งของ และนิยามคำว่า “สิ่งของ” ว่าหมายถึงวัตถุต่างๆ • ในโปรแกรมจะจำลองลักษณะและความสามารถของวัตถุต่างๆ ที่อยู่ในโลกจริง • สิ่งไม่มีชีวิต เช่น รูปสี่เหลี่ยม โทรทัศน์ หรือบ้าน • สิ่งมีชีวิต เช่น พนักงาน นก หรือต้นไม้ • สิ่งที่เป็นนามธรรม เช่น แนวความคิด หลักการ หรือวิธีการ
คลาส (Class) • คลาสเป็นเหมือนส่วนของแม่พิมพ์ เพื่อบอกลักษณะว่าวัตถุในคลาสนี้มีลักษณะและพฤติกรรมเป็นอย่างไร ส่วนประกอบของคลาส • แอททริบิวท์(Attribute)หรือข้อมูล (Data) เป็นสิ่งที่ใช้บอกถึงลักษณะต่างๆของวัตถุในคลาส • เมธอด(Method)หรือพฤติกรรม (Behavior) เป็นสิ่งที่ใช้อธิบายการทำงานของวัตถุในคลาส
ตัวอย่างของคลาส • นักศึกษา อาจจะประกอบไปด้วยคุณลักษณะเช่น รหัส ชื่อ และเกรดเฉลี่ย และอาจจะมีเมธอดเช่น ลงทะเบียน สอบ และเดิน • รถยนต์ อาจจะประกอบไปด้วยคุณลักษณะเช่น ยี่ห้อ รุ่น และสี และอาจจะมีเมธอดเช่น เคลื่อนที่ หยุดและเลี้ยว • สุนัข อาจจะประกอบไปด้วยคุณลักษณะเช่น ชื่อ พันธุ์ และสี และอาจจะมีเมธอดเช่น เห่า คลาน และกระดิกหาง
คลาส (Class) • คลาสหนึ่งคลาสสามารถสร้างออปเจ็คได้หลายออปเจ็ค อาทิเช่น คลาส Student อาจสร้างออปเจ็ค s1,s2 หรือ s3 ซึ่งเป็นออปเจ็คของคลาส Student
ตัวอย่างของออปเจ็คและคลาสตัวอย่างของออปเจ็คและคลาส
คุณสมบัติของโปรแกรมเชิงวัตถุคุณสมบัติของโปรแกรมเชิงวัตถุ 1. การห่อหุ้ม (Encapsulation) - ซ่อนวิธีการทำงาน (Information Hiding) 2. การสืบทอด (Inheritance) 3. การพ้องรูป(Polymorphism)
การห่อหุ้ม (Encapsulation) การห่อหุ้ม (Encapsulation) เป็นการซ่อนรายละเอียดการทำงานและข้อมูลไว้ภายใน ไม่ให้ภายนอกสามารถเห็นได้ อาจเป็นเพราะแฟ้มเอกสารถูก Encapsulation (ซ่อนอยู่หลังกำแพง) อยู่ครับ จะมีแต่เฉพาะบุคคลภายในบริษัท C มองเห็นแฟ้มเอกสารนี้ได้ ตัวผมก็มองไม่เห็นเช่นกัน เพราะผมเองก็เป็นบุคคลภายนอกเช่นกัน ดิฉันสมหญิงจากบริษัท A ทำไมดิฉันจึงมองไม่เห็นแฟ้มเอกสารเหมือนอย่างที่คุณสมศรีบริษัท C มองเห็นคะ ดิฉันชื่อสมศรีเป็นบุคคลภายในของบริษัท C ฉันจึงเห็นแฟ้มเอกสารเหล่านี้และมีสิทธิ์เข้ามาจัดการได้ค่ะ แฟ้มเอกสารนี้เป็น private (แฟ้มส่วนบุคคล)
การห่อหุ้ม (Encapsulation) ใช่แล้วครับ โชคดีมาก เพราะจะทำให้เราสามารถเข้าไปดูข้อมูลในแฟ้มเอกสารนี้ได้ และนอกจาก เราจะดูข้อมูลได้แล้ว ยังสามารถแก้ไขข้อมูลได้ด้วย เป็นโอกาสของเราที่จะล้วงความลับและสร้างความเสียหายให้กับบริษัท C ซึ่งเป็นคู่แข่งของเราได้ ดีจังเลยนะคะที่บริษัท C ไม่ได้ทำการ encapsulate ซ่อนแฟ้มเอกสารนี้ไว้ ทำให้เราสามารถมองเห็นแฟ้มเอกสารนี้ได้ แย่แล้ว บุคคลภายนอกบริษัทดิฉันสามารถมองเห็นแฟ้มเอกสารนี้ได้ ข้อมูลของบริษัทต้องได้รับความเสียหายแน่นอนเลยค่ะ แฟ้มเอกสารนี้เป็น public (แฟ้มสาธารณะ)
ซ่อนวิธีการทำงาน (Information Hiding) • ซ่อนวิธีการทำงานของวัตถุ เพื่อป้องกันการเข้ามาใช้ข้อมูลของวัตถุโดยสิ่งอื่นที่ไม่เกี่ยวข้องแล้วทำให้เกิดการผิดเพี้ยนของการทำงานทั้งระบบ • ทำให้เกิดความยืดหยุ่น ผู้สร้างวัตถุสามารถเปลี่ยนแปลงวิธีการทำงานของวัตถุได้โดยไม่กระทบต่อผู้ใช้วัตถุ • เพื่อให้เกิดความปลอดภัยของวัตถุและระบบโดยรวมให้มากที่สุด
การสืบทอด (Inheritance) • การสืบทอด (Inheritance) คือการทำการสร้างสิ่งใหม่ขึ้นด้วยการ สืบทอดหรือรับเอาคุณสมบัติบางอย่างมาจากสิ่งเดิมที่มีอยู่แล้ว และสร้างเพิ่มเติมได้ • ข้อดี • สามารถนำสิ่งที่เคยสร้างขึ้นแล้วนำกลับมาใช้ใหม่ (re-use) ได้ • ประหยัดเวลา
การสืบทอด (Inheritance) ผมนาย ก. เป็นพนักงานคนหนึ่งครับ (Employee) คุณสมบัติผมประกอบด้วยรหัสพนักงานและตำแหน่ง ใครเป็นพนักงานเหมือนกัน เชิญสืบทอดคุณสมบัติของผมไปใช้งานได้เลยครับ ผมนาย ข. เป็นผู้จัดการครับ (Manager) ผมก็เป็นพนักงานคนหนึ่ง ดังนั้นจึงทำการสืบทอดคุณสมบัติมาจากนาย ก. ทำให้มีคุณสมบัติประกอบด้วยรหัสพนักงาน และตำแหน่ง แต่ในฐานะที่ผมเป็นผู้จัดการ ผมได้รับรถประจำตำแหน่งด้วย ดังนั้นผมจึงต้องสร้างคุณสมบัติขึ้นมาอีก 1 ข้อ inherit รหัสพนักงานตำแหน่ง รหัสพนักงานตำแหน่งรถประจำตำแหน่ง
Polymorphism (การพ้องรูป) • เป็นคุณสมบัติที่ชนิดของวัตถุที่เกิดจากชนิดของวัตถุแม่เดียวกัน สามารถมีความสามารถเหมือนแม่แต่มีวิธีการดำเนินงานไม่เหมือนกัน คือมีลักษณะเฉพาะตัว เช่น สัตว์มีปีก::บิน() นก::บิน() กระพือปีกขึ้นลง แมลงปอ::บิน() กางปีกรับลม ผึ้ง::บิน() กระพือปีกถี่เร็ว
Polymorphism (การพ้องรูป) • ตัวอย่างเช่น public void calculate (int x) {} public void calculate (double x) {} • เมธอดชื่อ calculate เหมือนกัน แต่มีการรับค่าเข้ามาภายใน เมธอดที่แตกต่างกัน • เมธอดชื่อเดียวกันสามารถรับอาร์กิวเมนต์ที่แตกต่างกันได้หลายรูปแบบนี้ เรียกว่าเมธอดนั้นถูกโอเวอร์โหลด (overload)
Polymorphism (การพ้องรูป) สรุป ข้อดีของ Polymorphism คือ การทำให้สิ่งหนึ่งสามารถทำงานได้หลากหลายรูปแบบตามความต้องการที่เกิดขึ้นในขณะหนึ่ง ๆ ถ้าเป็นลูกค้าขาจร ผมจะใช้เมธอด public void calculate(double y) ในการคำนวณราคาครับ ไม่ได้ซื้อประจำลดให้ไม่ได้ครับ เศษเล็กเศษน้อยต้องคิด แต่ถ้าเป็นลูกค้าประจำ ผมจะใช้เมธอด public void calculate(int x) ในการคำนวณราคาครับ เศษเล็ก ๆ น้อย ๆ ไม่คิดครับ
ประวัติของภาษาจาวา • เริ่มต้นขึ้นใน ปี ค.ศ. 1990 • แพททริก นอทัน(Pattrick Naughton) เขียนข้อผิดพลาดที่เกิดขึ้นในบริษัท ซันไมโครซิสเต็มส์ • เจมส์ กอสลิ่ง(James Gosling) ผู้ให้กำเนิดภาษาจาวา
ประวัติของภาษาจาวา • กรีนทีม (Green Project) • วัตถุประสงค์คือการสร้างคอมพิวเตอร์รุ่นใหม่ • ยุคถัดจากคอมพิวเตอร์ส่วนบุคคล (personal computer) ก็คือคอมพิวเตอร์ในอุปกรณ์อิเล็กโทรนิกส์ (consumer electronics)
ประวัติของภาษาจาวา ดุ๊ค - รีโมตคอนโทรลควบคุมอุปกรณ์อิเล็กทรอนิกส์ มีชื่อว่า “สตาร์เซเว่น” (*7)- ภาษาที่ใช้ควบคุมอุปกรณ์อิเล็กทรอนิกส์คือ “ภาษาโอ๊ค” (Oak)