Chapter1

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Chapter1 as PDF for free.

More details

  • Words: 559
  • Pages: 5
CS313: Object-Oriented Programming

บทที่ 1: แนะนําการเขียนโปรแกรมเชิงวัตถุ

บทที่ 1: แนะนําการเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming) เปนการเขียนโปรแกรมที่มองโปรแกรม ในรูปของวัตถุ จัดเปนแนวทางหนึ่งของการจัดระบบโปรแกรม โดยจะเนนที่แนวทางการออกแบบโปรแกรม ไมได เนนหนักเกีย่ วกับรายละเอียดของตัวดําเนินการแตละตัว การเขียนโปรแกรมเชิงวัตถุ มีจุดเดนที่สําคัญ คือ การ นําโปรแกรมกลับมาใชใหม 1.1 ปญหาที่เกิดกับการเขียนโปรแกรมเชิงโครงสราง โปรแกรมเชิงโครงสราง (structured programming) เปนลักษณะการออกแบบโปรแกรมที่ระบุถึงคําสั่ง และเนนทีล่ าดั ํ บของคําสั่ง การออกแบบโปรแกรมเชนนี้ไดรับความนิยมมากในชวงหลายปที่ผานมา ลักษณะ เดนประการหนึ่ง คือ เมือ่ โปรแกรมเริ่มมีขนาดใหญขึ้น จะมีการแบงโปรแกรมเปนโปรแกรมยอย (sub-program) ซึ่งไดแก ฟงกชั่น (function) โพรซีเยอร (procedure) หรือโมดูล (module) โดยทีแ่ ตละโปรแกรมยอยจะถูกนิยาม จุดประสงคไวอยางชัดเจน ปญหาทีเ่ กิดกับโปรแกรมเชิงโครงสราง มักเกิดกับโปรแกรมที่มีขนาดใหญและซับซอนมาก สาเหตุหลัก ประการหนึง่ มาจาก ความสัมพันธระหวางขอมูลของโปรแกรมหลักและโปรแกรมยอย โดยทั่วไปหากโปรแกรม หนึง่ ๆ ตองการที่จะใหขอมูลชุดหนึ่งสามารถถูกเขาถึงไดโดยทุกฟงกชั่น หรือโพรซีเยอรในโปรแกรมนั้น ขอมูลชุด นัน้ จะตองถูกประกาศเปนตัวแปรสวนกลาง (global variable) สวนตัวแปรที่ถูกประกาศไวภายใตโปรแกรมยอย หนึง่ ๆ จะสามารถถูกเรียกใชไดเฉพาะโปรแกรมยอยนั้นๆ โดยที่โปรแกรมยอยอื่นๆ ไมสามารถเขาถึงตัวแปรชุด นี้ได ตัวแปรสวนกลางมีทั้งขอดีและขอเสีย ขอดี คือ ทุกๆ สวนของโปรแกรมสามารถเรียกใชขอมูลชุดนี้ได ทําใหงา ยตอการจัดการ แตในทางตรงกันขาม หากผูเขียนโปรแกรมทําการเปลี่ยนแปลงหรือแกไขโครงสรางของ ขอมูลชุดนี้ ก็จะมีผลกระทบตอการทํางานของโปรแกรมตางๆ ที่เรียกใชขอมูลชุดนี้ดวย ปญหาอีกประการหนึ่งคือ เรื่องของชนิดขอมูล (data type) โดยทัว่ ไป ภาษาเชิงโครงสราง จะมีการ กําหนดชนิดขอมูลที่ตายตัว การสรางชนิดขอมูลใหมเพื่อใหสอดคลองกับโปรแกรมที่ออกแบบ ทําไดคอนขาง ยากและซับซอน 1.2 ลักษณะการโปรแกรมเชิงวัตถุ ปญหาตางๆ ทีเ่ กิดกับการเขียนโปรแกรมเชิงโครงสราง ไดถูกกําจัดไปโดยการเขียนโปรแกรมเชิงวัตถุ ลักษณะเดนของการเขียนโปรแกรมแบบนี้ คือการรวมขอมูลและโปรแกรมยอยที่ดําเนินการตอขอมูลชุดนั้นๆ เขา ไวเปนหนวยเดียวกันที่เรียกวา วัตถุเปาหมาย (object) ในสวนของการออกแบบโปรแกรมเชิงวัตถุ ผูออกแบบ จะตัง้ คําถามในลักษณะที่วา “จะแบงปญหาออกไปเปนวัตถุเปาหมายไดอยางไร” วัตถุเปาหมายในโปรแกรม 2/2545

1

CS313: Object-Oriented Programming

บทที่ 1: แนะนําการเขียนโปรแกรมเชิงวัตถุ

อาจอยูใ นลักษณะของวัตถุในโลกที่เปนจริง หรือวัตถุในระบบคอมพิวเตอร ตอไปนี้เปนตัวอยางจํานวนหนึ่งเกี่ยว กับวัตถุเปาหมาย -

-

-

-

-

วัตถุเปาหมายเชิงกายภาพ (physical objects) ♦ รถยนต ในการจําลองการเคลื่อนตัวของจราจร ♦ สวนประกอบไฟฟา ในโปรแกรมการออกแบบวงจร ♦ ประเทศ ในการจําลองทางเศรษฐกิจ ♦ เครือ่ งบิน ในระบบการควบคุมการจราจรทางอากาศ สวนประกอบของสภาพแวดลอมที่เกี่ยวของกับผูใชคอมพิวเตอร (elements of the computer-user environment) ♦ วินโดว (window) ♦ เมนู (menu) ♦ วัตถุกราฟกส - เสน สี่เหลี่ยมมุมฉาก วงกลม (graphics object) โครงประกอบโปรแกรม ( data-storage constructs) ♦ customized arrays, stacks, linked list, binary trees การรวมกลุมขอมูล (collections of data) ♦ บัญชีรายการสินคา ♦ แฟมบุคลากร ♦ พจนานุกรม ชนิดขอมูลที่ผูใชนิยาม (user-defined data types) ♦ เวลา ♦ มุม ♦ จํานวนเชิงซอน ♦ จุดบนระนาบ สวนประกอบในเกมคอมพิวเตอร (components in computer games) ♦ ปศาจในเกมเขาวงกต ♦ ตําแหนงในเกมกระดาน ♦ สัตวในการจําลองทางนิเวศวิทยา

การจับคูก นั ระหวางวัตถุเปาหมายในโปรแกรม กับวัตถุของโลกที่เปนจริง ทําใหเกิดการรวมตัวของขอ มูลและการทํางานของโปรแกรมยอยเขาไวดวยกัน วัตถุเปาหมายที่เกิดขึ้นไดทําใหเกิดการปฏิวัติการออกแบบ โปรแกรม ซึ่งลักษณะการรวมตัวเชนนี้จะไมปรากฎในโปรแกรมเชิงโครงสราง

2/2545

2

CS313: Object-Oriented Programming

บทที่ 1: แนะนําการเขียนโปรแกรมเชิงวัตถุ

1.3 คุณสมบัติของโปรแกรมเชิงวัตถุ จุดประสงคหลักของการโปรแกรมเชิงวัตถุคือ การนําซอฟตแวรกลับมาใชใหม (software reusability) ซึง่ สามารถทําได เนือ่ งจากวัตถุเปาหมายแตละตัวมีความเปนอิสระตอกัน การจัดการตางๆ สามารถทําไดงาย ขึน้ โดยไมมีผลกระทบตอวัตถุเปาหมายอื่นๆ 1.3.1

คลาสและวัตถุเปาหมาย (class and object)

คลาส (class) และวัตถุเปาหมาย (object) มีความสัมพันธซึ่งกันและกัน กลาวคือ คลาสจะเปนแม พิมพ (pattern) ของวัตถุเปาหมาย แตละคลาสจะถูกกําหนดคุณสมบัติ (attributes) และวิธีการ (method) วัตถุเปาหมายจะถูกสรางจากคลาส ดังนั้นอาจกลาวไดอีกนัยหนึ่งคือ คลาสคือกลุมของวัตถุเปาหมายที่มีคุณ สมบัติและวิธีการที่คลายคลึงกัน วัตถุเปาหมายที่มาจากคลาสเดียวกัน จะมีคุณสมบัติและ Class Human ความสามารถพื้นฐานที่เหมือนกัน แตอาจมีคุณลักษณะเฉพาะตัว ที่ Attributes แตกตางกัน โดยทั่วไปวัตถุเปาหมายหนึ่งๆ จะมี 3 องคประกอบ คือ name, birthday, height, - คุณลักษณะเฉพาะ (Identity) เชน ชื่อของวัตถุเปาหมาย weight, eye color - สถานะ (state) คาของคุณสมบัติ (attributes) จะเปนตัว Method / behavior กําหนดสถานะใหกับวัตถุเปาหมายนั้นๆ walk - ความสามารถ (operations / behavior) วิธกี ารของวัตถุ eat เปาหมายแตละตัวจะเปนตัวเปลี่ยนสถานะของวัตถุเปาหมายนั้นๆ grow reproduce

1.3.2

แนวความคิดหลักของโปรแกรมเชิงวัตถุ ♦ การซอนขอมูล (encapsulation) ♦ การสืบทอด (inheritance) ♦ การเปลี่ยนรูป (polymorphism)

1.3.2.1 การซอนขอมูล (encapsulation) เปนการสรางขอบเขตการมองเห็นใหกับวัตถุเปาหมาย ทําใหสามารถขจัดปญหาเกี่ยวกับเรื่องตัวแปร สวนกลาง (global variable) ลงไปได การกําหนดขอบเขตขึ้นอยูกับความสัมพันธระหวางคลาส ซึ่งในโปรแกรม เชิงวัตถุมีความสัมพันธ 2 แบบ คือ 1. “ ..is a.. ” เชน class A is a class B หมายถึง คลาส A มีคณ ุ สมบัติและวิธีการทุกอยางเหมือน คลาส B แต คลาส B อาจไมมีคุณสมบัติทุกอยางที่คลาส A มี 2/2545

3

CS313: Object-Oriented Programming

บทที่ 1: แนะนําการเขียนโปรแกรมเชิงวัตถุ

Class A Class B attributes Class B is class A with attributes

attributes

attributes

ตัวอยาง “is a” relationship a square is a rectangle that has equal sides 2. “..has a..” เชน class A has a class B หมายถึง คลาส A มีคลาส B เปนสวนประกอบ Class A

attributes Class B

attributes

Class A has class B

ตัวอยาง “has a” relationship every car has a steering wheel every radio has speaker(s)

2/2545

4

CS313: Object-Oriented Programming

บทที่ 1: แนะนําการเขียนโปรแกรมเชิงวัตถุ

1.3.2.2 การสืบทอด (inheritance) การสืบทอดเปนกระบวนการในการกําหนดคลาสหนึ่ง จากอีกคลาสหนึ่ง เชน คลาส A สืบทอดจาก คลาส B นัน่ หมายถึงวา คลาส A จะใชคุณลักษณะทั่วไปของคลาส B รวมกัน ขณะเดียวกัน คลาส A อาจมีคุณ สมบัติเฉพาะตัวที่คลาส A ไมมี การสืบทอดสามารถชวยลดขนาดของโปรแกรมและเวลาที่ใชในการพัฒนาโปรแกรม เนื่องมาจากการ ใชขอ มูลรวมกันระหวางคลาสที่สืบทอดกันมา รวมทั้งเปนที่มาของการนําซอฟตแวรกลับมาใชใหมอีกดวย ซึ่งถือ เปนจุดประสงคหลักของการโปรแกรมเชิงวัตถุ Inheritance

A

Base class / super class

A

A B

C

A

E

D

Derived class / sub class

1.3.2.3 การเปลี่ยนรูป (polymorphism) ลักษณะการใชตัวดําเนินการ หรือฟงกชนั่ ทีแ่ ตกตางกัน โดยขึ้นอยูกับวาตัวดําเนินการนั้นกําลังทํางาน อยูกับอะไร ตัวอยางเชน “ + ” หมายถึง การบวก สําหรับตัวเลข แตหมายถึงการรวมขอความ สําหรับตัวอักขระ “ draw (10,20) ” หมายถึง การวาดวงกลมที่ coordinate (10,20) สําหรับวัตถุเปาหมายวงกลม แต ถาเปนวัตถุเปาหมายแบบสี่เหลี่ยม method นีจ้ ะหมายถึงการวาดรูปสี่เหลี่ยมที่ coordinate (10,20) บทสรุป การเขียนโปรแกรมเชิงวัตถุ เปนแนวทางหนึ่งในการจัดระบบโปรแกรม โดยจะเนนหนักเกี่ยวกับแนวทาง การออกแบบโปรแกรม ไมไดเนนหนักเกี่ยวกับรายละเอียดของตัวดําเนินการแตละตัว จุดประสงคหลักของการ ออกแบบโปรแกรมวิธีนี้คือ การนําซอฟตแวรกลับมาใชใหม ซึ่งจะสามารถลดเวลาในการพัฒนาโปรแกรมลงไปได มาก ในบทตอไป จะเปนการแนะนําการเขียนโปรแกรมเชิงวัตถุโดยใชภาษาจาวา (Java) ซึ่งเปนภาษาที่ถูก พัฒนาขึน้ มาเพื่อการเขียนโปรแกรมดวยวิธีนี้โดยเฉพาะ 2/2545

5

Related Documents

Chapter1
November 2019 38
Chapter1
November 2019 44
Chapter1
October 2019 33
Chapter1
July 2020 3
Chapter1
July 2020 2
Chapter1
November 2019 24