390 likes | 682 Vues
การโปรแกรม การออกแบบ และการวิเคราะห์เชิงวัตถุ Object-Oriented Programming, Design and Analysis. สาขาวิชาวิทยาการคอมพิวเตอร์ ภาควิชาคณิตศาสตร์ คณะวิทยาศาสตร์ มหาวิทยาลัยศิลปากร. แนวความคิดภาษาเชิงวัตถุ. การเน้นที่ปัญหาและองค์ประกอบของปัญหาเพื่อการแก้ปัญหานั้น เราเรียกว่า Problem space
E N D
การโปรแกรม การออกแบบและการวิเคราะห์เชิงวัตถุObject-Oriented Programming, Design and Analysis สาขาวิชาวิทยาการคอมพิวเตอร์ ภาควิชาคณิตศาสตร์ คณะวิทยาศาสตร์ มหาวิทยาลัยศิลปากร
แนวความคิดภาษาเชิงวัตถุแนวความคิดภาษาเชิงวัตถุ • การเน้นที่ปัญหาและองค์ประกอบของปัญหาเพื่อการแก้ปัญหานั้น เราเรียกว่า Problem space • เหมือนการจำลองความเป็นจริงในชีวิตความเป็นอยู่ของมนุษย์ที่จะประกอบด้วย คน สัตว์ สิ่งของ และใช้สิ่งต่างๆ เพื่อแก้ปัญหา คือแต่ละสิ่ง มีหน้าที่ในการแก้ปัญหา ต้องการหาความบันเทิงด้วยดนตรี ก็ต้องมีสิ่งต่างๆ คือเครื่องดนตรีและ คนเล่นดนตรี เป็นต้น
แนวคิดของเอลัน เคย์ (Alan Kay) เป็นผู้หนึ่งที่พัฒนาตัวแปร small Talk ซึ่งเป็นต้นแบบของการเขียนโปรแกรมเชิงวัตถุ ได้ให้นิยามของภาษาเชิงวัตถุไว้ดังนี้ • ทุกๆ สิ่งเป็นวัตถุ • โปรแกรม คือ กลุ่มของวัตถุที่ส่งสารบอกกันเพื่อทำงาน • วัตถุแต่ละวัตถุมีหน่วยความจำ • วัตถุต้องมีชนิด • วัตถุที่จัดอยู่ในประเภทเดียวกันย่อมได้รับข่าวสารเหมือนกัน
ทุกๆ สิ่งเป็นวัตถุ • องค์ประกอบของโปรแกรมคอมพิวเตอร์ทุก ๆ ส่วนจะต้องเป็นวัตถุซึ่งกฎข้อนี้เองที่ทำให้ล่ามแปลภาษาส่วนมากรวมทั้ง JAVA ด้วย ไม่เป็นภาษาเชิงวัตถุแบบบริสุทธิ์เพราะในล่ามแปลภาษา JAVA ยังมีบางส่วนที่ไม่เป็นวัตถุ เช่น การกำหนดตัวแปร เป็นต้น
หน่วยความจำคอมพิวเตอร์หน่วยความจำคอมพิวเตอร์
โปรแกรมคือกลุ่มของวัตถุโปรแกรมคือกลุ่มของวัตถุ • โปรแกรมในความหมายของการเขียนโปรแกรมเชิงวัตถุ ก็คือ กลุ่มของวัตถุที่ส่งข้อความข่าวสาร(Message) ถึงกันและกันเพื่อบอกให้วัตถุทำงาน
วัตถุมีหน่วยความจำ • วัตถุในความหมายของการเขียนโปรแกรมเชิงวัตถุ จะต้องมีหน่วยความจำของตัวเอง หรือนั่นคือส่วนที่เก็บข้อมูลส่วนของวัตถุนั้นๆ เองซึ่งเราเรียกว่า attribute • ส่วนของข้อมูลนี้อาจจะประกอบขึ้นจากวัตถุอื่นๆ ได้ • เป็นที่มาของการเกิดคุณสมบัติการถ่ายทอดและคุณสมบัติขององค์ประกอบคอมโพสิต
วัตถุจะต้องจัดอยู่ในกลุ่มหรือชนิดวัตถุจะต้องจัดอยู่ในกลุ่มหรือชนิด • ชนิดของวัตถุดังกล่าวก็คือคลาส • ในการเขียนโปรแกรมเชิงวัตถุจะต้องเขียนคลาสขึ้นมาก่อนเสมอ แล้วจึงจะสร้างวัตถุจากคลาส ดังนั้นวัตถุจึงจะต้องอยู่ในคลาสใดคลาสหนึ่ง • ดังนั้นคลาสเปรียบเหมือนแม่พิมพ์ ส่วนวัตถุก็คือสิ่งที่เกิดจากแม่พิมพ์ วัตถุที่เกิดจากคลาสเดียวกันจึงมีคุณสมบัติพื้นฐานเหมือนกัน
ตัวอย่างชนิดของวัตถุและวัตถุตัวอย่างชนิดของวัตถุและวัตถุ :siemens MobilePhone String bandname Button button Screen screen Antenna antenna Simm simNet :ericsson call() receive() hangup() sendSMS() :nokia
วัตถุประเภทเดียวกันย่อมได้ข่าวสารเหมือนกันวัตถุประเภทเดียวกันย่อมได้ข่าวสารเหมือนกัน • วัตถุที่อยู่ในประเภทเดียวกันย่อมได้ข่าวสารเหมือนกัน คุณสมบัติข้อนี้ทำให้การเขียนโปรแกรมเชิงวัตถุมีประสิทธิภาพเพิ่มขึ้นเพราะชนิดของวัตถุมิได้กำหนดหรืออยู่อย่างโดด ๆ แต่สามารถจัดเป็นกลุ่ม ผู้เขียนคำสั่งสามารถกำหนดชนิดย่อย ๆ ของวัตถุได้อีก เช่น คลาสคือ shape เราสามารถแตกออกเป็นชนิดที่จำเพาะลงไปเป็น Circle, Triangle, Rectangle เป็นต้น ดังนั้นเมื่อวัตถุในคลาส Circle สามารถได้รับข่าวสารเหมือนกับ Triangle และ Rectangle
แนวคิดที่เป็นอัตประโยชน์จากการโปรแกรมเชิงวัตถุแนวคิดที่เป็นอัตประโยชน์จากการโปรแกรมเชิงวัตถุ • การซ่อนรายละเอียด • การเชื่อมต่อ • การนำวัตถุมาใช้ใหม่ • การพ้องรูป: หนึ่งรูปหลายพฤติกรรม
การซ่อนรายละเอียด(Information Hiding) • มีผู้สังเกตเห็นว่าในชีวิตประจำวันของเรานั้น ไม่จำเป็นต้องทราบหรือรู้ทุกเรื่องก็สามารถใช้งานสิ่งของนั้นๆ ได้ เช่น โทรทัศน์ที่มีอยู่ตามบ้าน เรา ไม่ต้องทราบการทำงานของ อุปกรณ์ภายในของมัน แต่ เราก็สามารถเปิดเครื่องและ ดูรายการโปรดของเราได้ เพียงรู้วิธีการกดปุ่มต่างๆ
การเชื่อมต่อ(Interface) • โดยปรกติจะเชื่อมต่อระหว่างผู้ใช้กับคอมพิวเตอร์ เรียกว่า user interface แต่คำว่าอินเตอร์เฟสสำหรับวัตถุคือ ส่วนที่บอกว่าวัตถุนั้นให้บริการหรือสามารถทำอะไรได้บ้าง
การนำวัตถุมาใช้ใหม่(Reusable)การนำวัตถุมาใช้ใหม่(Reusable) • จุดประสงค์ใหญ่ของการเขียนโปรแกรมเชิงวัตถุก็คือการนำส่วนต่างๆ ของวัตถุที่สร้างขึ้นกลับมาใช้ใหม่หรือที่เรียกในภาษาอังกฤษว่า “reuse” เมื่อมีวัตถุถูกสร้างขึ้นมา ก็สามารถนำวัตถุต่างๆ มาประกอบกันเป็นวัตถุอีกชนิดหนึ่งได้ เพื่อให้วัตถุใหม่มีความสามารถมากกว่าเดิม เช่นกรณีของรถยนต์สามารถประกอบขึ้นจาก เครื่องยนต์ ตัวถัง ประตู และล้อ เป็นต้น
ตัวอย่างวัตถุที่เกิดจากวิธีคอมโพสิตตัวอย่างวัตถุที่เกิดจากวิธีคอมโพสิต
การพ้องรูป (Polymorphism) • รากฐานของการพ้องรูปคือคุณสมบัติการถ่ายทอด • คุณสมบัติการถ่ายทอดยืนยันได้ว่าคลาสลูกที่เกิดจากคลาสแม่เดียวกันย่อมมีคุณสมบัติเหมือนกัน • เป็นที่มาของหนึ่งรูปหลายพฤติกรรม คลาสแม่คือ Shape คลาสลูกคือ Circle, Triangle, Rectangle มีคุณสมบัติเหมือน คลาสแม่ทุกประการ
Shape Circle Line Rectangle +draw() +erase() +draw() +erase() +draw() +erase() +draw() +erase() การถ่ายทอดให้เกิดลักษณะของพ้องรูป
มารู้จักคลาสและวัตถุกันมารู้จักคลาสและวัตถุกัน • คลาสเป็นเหมือนส่วนของแม่พิมพ์ เพื่อบอกลักษณะว่าวัตถุในคลาสนี้มีลักษณะและพฤติกรรมเป็นอย่างไร • วัตถุเป็นสิ่งที่ถูกสร้างขึ้นมาจากคลาสเพื่อใช้งาน กำหนดค่าต่างๆ ส่งข้อความสั่งให้วัตถุทำงาน คลาสสี่เหลี่ยมผืนผ้า คุณสมบัติ:กว้าง, ยาว เมธทอด:คำนวณพื้นที่ วัตถุA:สี่เหลี่ยมผืนผ้า กว้าง 2 ยาว 3 เมธทอด:คำนวณพื้นที่
เปรียบเทียบคลาสกับวัตถุเปรียบเทียบคลาสกับวัตถุ
ภาษาโปรแกรมเชิงวัตถุ • ในปี 1967 ภาษา Simula67 ถูกพัฒนาที่นอร์เวย์ เพื่อช่วยในการเขียนโปรแกรมสำหรับจำลอง (simulation) • โดยทั่วไประบบที่ซับซ้อนจะประกอบด้วยวัตถุจำนวนมากที่ทำงานเกี่ยวข้องกัน โดยการสร้างโปรแกรมที่จำลองการทำงานของแต่ละวัตถุไปที่ละขั้นจนกว่าจะได้คำตอบ ซึ่งแนวคิดนี้เรียกว่า การโปรแกรมเชิงวัตถุ • 1990s มีภาษาเก่าถูกเพิ่มเติมในส่วนของการโปรแกรมเชิงวัตถุ แต่โดยพื้นฐานของภาษาจึงทำให้กลไกไม่เป็นเชิงวัตถุอย่างสมบูรณ์
JAVA • เป็นผลิตผลจากบริษัท ซัน ไมโครซิสเต็ม ซึ่งในขณะนั้นได้คิดพัฒนาระบบซอฟต์แวร์เพื่อใช้บนชิพของเครื่องใช้ไฟฟ้าขนาดเล็ก แต่ประสบปัญหากับการใช้ภาษาซีพลัสพลัส(C++) ซึ่งเป็นภาษาเชิงวัตถุที่นิยมในขณะนั้น จึงได้คิดพัฒนาภาษาใหม่ที่เหมาะสมกว่า • ปัญหาของภาษา C++ คือ • ชิพของเครื่องใช้ไฟฟ้ามีหลายเบอร์หลายยี่ห้อที่ชุดคำสั่งต่างกัน • หน่วยความจำของเครื่องใช้ไฟฟ้ามีขนาดเล็ก • ไม่มีความปลอดภัย
การออกแบบของภาษาจาวา • เป็นภาษาที่ง่าย ต่อการเรียนและเข้าใจ • เป็นภาษาเชิงวัตถุ • เป็นภาษาที่มีความคงทน เพราะมีการดักจับข้อผิดพลาด • เป็นภาษาที่มีความปลอดภัย • เป็นภาษาที่รันได้กับเครื่องทุกระบบ “จาวาเป็นแพลตฟอร์ม”
จาวาเป็นแพลตฟอร์ม • เนื่องจากจาวาได้ถูกพัฒนาเพื่อให้สามารถรันบนระบบใดก็ได้ ดังนั้นจาวาจึงได้สร้างแพลตฟอร์มของมันเองขึ้นมาเพื่อให้การแปลความของภาษาจาวาเป็นหนึ่งเดียวเท่านั้น • จาวาได้นำแนวคิดการจำลองเครื่องจักรสมมุติขึ้นมาเรียกว่า java virtual machine (JVM) เพื่อมาติดต่องานกับระบบที่มีอยู่
จาวาและเครื่องจักรสมมุติจาวาและเครื่องจักรสมมุติ • แผนผังแสดงการติดต่อของจาวาและเครื่องจักรสมมุติ Java program Java program Java program Java virtual machine Windows Unix Macintosh
แผนผังแสดงการทำงานของภาษาจาวาแผนผังแสดงการทำงานของภาษาจาวา java compiler Java program Java virtual machine program java interpreter
แรกเริ่มกับจาวา • ดาวน์โหลดชุดพัฒนาภาษาจาวาที่เวบต์ http://java.sun.com/j2se Java virtual machine : JRE (Java Runtime Environment) Java Developer Kit : JDK
ขั้นตอนการติดตั้งชุดพัฒนาภาษาจาวาขั้นตอนการติดตั้งชุดพัฒนาภาษาจาวา • ดับเบิ้ลคลิกไอคอนนี้เพื่อทำการติดตั้ง
ขั้นตอนการติดตั้งชุดพัฒนาภาษาจาวาขั้นตอนการติดตั้งชุดพัฒนาภาษาจาวา
ขั้นตอนการติดตั้งชุดพัฒนาภาษาจาวาขั้นตอนการติดตั้งชุดพัฒนาภาษาจาวา
กำหนดเส้นทางของคำสั่งในชุดพัฒนาภาษาจาวากำหนดเส้นทางของคำสั่งในชุดพัฒนาภาษาจาวา • คลิกขวาที่ไอคอน My computer • เลือก properties จากเมนูบ๊อบอัพ • จะปรากฏหน้าต่างดังด้านขวา • คลิก Environment variable
กำหนดเส้นทาง(ต่อ) • เลือก path จาก System variable • คลิก Edit • เพิ่มข้อความในส่วนแถบสีฟ้า ;C:\j2sdk1.4.1_02\bin;.
ขั้นตอนการสร้างโปรแกรมจาวาขั้นตอนการสร้างโปรแกรมจาวา A.java javac A.java A.class java A 1. editor 2. compiler javac filename.java 3. interpreter java filename
มารู้จักซอฟแวร์สำหรับสร้างโปรแกรมภาษามารู้จักซอฟแวร์สำหรับสร้างโปรแกรมภาษา • ซอฟต์แวร์ที่ใช้ชื่อว่า EditPlus • สามารถสร้างโปรแกรมได้หลายภาษาโดยจะมีสีแยกประเภทของคำในแต่ละภาษาให้ ทำให้สะดวกต่อการอ่านโปรแกรม • ให้ทำการสร้าง config เพื่อให้โปรแกรมเราสามารถคอมไพล์ไฟล์โปรแกรมจาวาและรันไฟล์โปรแกรมจาวาได้
สร้าง config ใน EditPlus กันก่อนนะคะ • ทำการสร้าง configเพื่อให้โปรแกรม EditPlusสามารถคอมไพล์และรันโปรแกรมภาษาจาวาได้
สร้าง config ใน EditPlus กันก่อนนะคะ คลิก add tool/Program แล้วเติมข้อความดังในภาพด้านล่างทั้งสอง ขวา set interpreter ซ้าย set compiler
เริ่มใช้โปรแกรมEditPlus • เปิดโปรแกรม EditPlusขึ้นมา • คลิกเมนู File/New เลือก java • ลองพิมพ์ไฟล์ต่อไปนี้แล้วบันทึกในชื่อ Welcome1.java /** A first program in Java.*/ public class Welcome1 { /* main method begins execution of Java application */ public static void main ( String args[] ) { System.out.println(“Welcome to Java Programming!”); } // end method main } // end class Welcome1
ลองสร้างโปรแกรมแรกกันเถอะลองสร้างโปรแกรมแรกกันเถอะ