4.Oop
Upcoming SlideShare
Loading in...5
×
 

4.Oop

on

  • 2,135 views

สื่อการเรียนการสอน เรื่อง โปรแกรมเชิงวัตถุ โดยคุณ Kan http://learners.in.th/file/zniperlll

สื่อการเรียนการสอน เรื่อง โปรแกรมเชิงวัตถุ โดยคุณ Kan http://learners.in.th/file/zniperlll

Statistics

Views

Total Views
2,135
Views on SlideShare
2,135
Embed Views
0

Actions

Likes
2
Downloads
54
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

4.Oop 4.Oop Presentation Transcript

  • 976-140 Object-Oriented Programming 344-202 Introduction to OOP การโปรแกรมเชิงวัตถุ4. Object-Oriented Programming Faculty of Technology and Environment Prince of Songkla University, Phuket Campus 2/2551
  • Contents  Class & Object  Class structure  Attribute  Method  Instantiating an objectObject-Oriented Programming 2/2551 2
  • ขั้นตอนในการพัฒนาโปรแกรม  การวิเคราะห์ระบบ ว่าระบบที่ต้องการพัฒนาสามารถทาอะไรได้บ้าง  การออกแบบระบบ เพื่อให้เห็นว่าระบบที่จะพัฒนามีโครงสร้างอย่างไร  การพัฒนาระบบ เป็นการเขียนโปรแกรมตามที่ออกแบบไว้ให้ทางานได้จริง  การทดสอบระบบ เป็นการทดสอบว่าระบบที่พัฒนาขึ้นทางานได้ถูกต้อง และตรง กับความต้องการ  การติดตั้งระบบ นาระบบที่พัฒนาไปติดตั้งใช้งานจริง  การบารุงรักษาระบบ เป็นการปรับปรุงแก้ไขระบบหลังจากมีการใช้งานแล้วObject-Oriented Programming 2/2551 3
  • แนวคิดการเขียนโปรแกรมเชิงวัตถุ  ระบบที่พัฒนาโดยใช้แนวทาง OOP จะประกอบด้วยวัตถุ (object) ต่าง ๆ ทางานร่วมกัน  ในการพัฒนาระบบ จะทาการจาลองวัตถุในระบบงานจริง มาเป็นวัตถุใน โปรแกรมที่เราพัฒนา  วัตถุ (object) คือสิ่งต่าง ๆ ซึ่งจาลองมาจากสิ่งที่มีอยู่จริง ได้แก่  สิ่งที่จับต้องได้ เช่น คน สัตว์ สิ่งของ  สิ่งที่จับต้องไม่ได้ เช่น การดาเนินงาน การลงทะเบียน การซื้อขาย  ในการวิเคราะห์และออกแบบโปรแกรมเชิงวัตถุ ต้องทาการค้นหาให้ได้ว่า ระบบจะมีวัตถุ หรือ object อะไรบ้างObject-Oriented Programming 2/2551 4
  • การพัฒนาระบบด้วยแนวทางเชิงวัตถุ  วัตถุ ประกอบด้วย คุณลักษณะและพฤติกรรม  ข้อมูล หรือคุณลักษณะ (data/attribute) คือ สิ่งที่บ่งบอกลักษณะของวัตถุ  การกระทา หรือพฤติกรรม (operation/behavior) คือ สิ่งที่วัตถุสามารถทาได้  ตัวอย่าง ระบบธนาคาร ประกอบด้วยวัตถุคือ ลูกค้า  ลูกค้า • ข้อมูล คือ ชื่อ เลขที่บัตรประชาชน ที่อยู่ เลขที่บัญชีเงินฝาก • การกระทาของลูกค้า คือ เปิดบัญชี ฝากเงิน ถอนเงิน โอนเงิน  บัญชีเงินฝาก • ข้อมูล คือ เลขที่บัญชี เจ้าของบัญชี ประเภทบัญชี ยอดคงเหลือ • การกระทา คือ การฝากเงิน การถอนเงิน การสอบถามยอดคงเหลือObject-Oriented Programming 2/2551 5
  • การพัฒนาระบบด้วยแนวทางเชิงวัตถุ  ตัวอย่าง ระบบลงทะเบียน ประกอบด้วยวัตถุ คือ นักศึกษา วิชา  นักศึกษา • ข้อมูล คือ รหัสนักศึกษา ชื่อ ที่อยู่ สาขาวิชา • การกระทาของนักศึกษา คือ ลงทะเบียนวิชา เพิ่มวิชา ถอนวิชา  วิชา • ข้อมูล คือ รหัสวิชา ชื่อวิชา หน่วยกิต  การลงทะเบียน • ข้อมูล คือ รหัสนักศึกษา รหัสวิชา sectionObject-Oriented Programming 2/2551 6
  • Class  สิ่งที่เราสนใจจะเก็บข้อมูล หรือข้อมูลต่าง ๆ ที่เกิดขึ้นจะถูกนามาเป็นวัตถุ ในโปรแกรม  การสร้างวัตถุ ทาได้โดยการกาหนดคลาสของวัตถุนั้นขึ้นมาก่อน  คลาส คือ ต้นแบบทีใช้ในการกาหนดคุณลักษณะ และพฤติกรรมของวัตถุ ่  คลาส เป็นการกาหนดลักษณะพื้นฐานของวัตถุไว้ว่าต้องมีองค์ประกอบ อะไรบ้าง โดยวัตถุที่สร้างจากคลาสเดียวกันอาจมีคุณลักษณะต่างกันได้ Class is a template of objectObject-Oriented Programming 2/2551 7
  • Class  ตัวอย่าง กาหนดคลาสของสมุดบัญชี ชื่อ BankAccount BankAccount +accNo  เมื่อมีการเปิดบัญชีจากลูกค้า 3 คน ก็จะมีการ +custNo +balance สร้างวัตถุของสมุดบัญชีขึ้นมา 3 วัตถุ +deposit()  ทุกวัตถุสามารถ +withdraw() +getBalance()  เก็บข้อมูล เลขที่บัญชี (accNo), เลขที่ลูกค้า (custNo) ยอดคงเหลือ (balance) Mr.A Mr.B Mr.C  ทาการฝากเงิน(deposit) ถอนเงิน(withdraw) BankAccount BankAccount BankAccount +accNo +accNo +accNo และดูยอดคงเหลือ(getBalance) ได้ +custNo +custNo +custNo +balance +balance +balance +deposit() +deposit() +deposit() +withdraw() +withdraw() +withdraw() +getBalance() +getBalance() +getBalance()Object-Oriented Programming 2/2551 8
  • โครงสร้างคลาส BankAccount  คลาส ประกอบด้วย +accNo +custNo  ข้อมูล หรือ attribute แทนได้ด้วย ตัวแปร +balance +deposit()  การกระทา หรือ behaviour แทนได้ด้วย เมธอด (method) +withdraw() +getBalance() class ชื่อคลาส { attribute1; attribute2; method1() { //คาสั่งการทางาน } method2() { //คาสั่งการทางาน } }Object-Oriented Programming 2/2551 9
  • Attributes/data  Attribute คือ สิ่งที่บ่งบอกลักษณะของวัตถุ อาจเป็น ลักษณะที่มองเห็น สถานะ คุณภาพ ปริมาณ  Attribute ของ สมุดบัญชี ประกอบด้วย เลขที่บญชี รหัสลูกค้า ยอด ั คงเหลือ  ค่าที่เก็บในวัตถุของสมุดบัญชีแต่ละเล่มจะเป็นข้อมูลของบัญชีนั้น  การประกาศ attribute ของ object คือการประกาศตัวแปร (variable) ไว้ ในคลาส  แต่ละวัตถุมีตวแปรชื่อเหมือนกัน แต่ค่าในตัวแปรมีได้ต่างกัน จึงมักเรียก ั ตัวแปรของวัตถุเหล่านีว่า instance variable ้Object-Oriented Programming 2/2551 10
  • Behavior/method  Behavior คือ สิ่งที่วัตถุสามารถทาได้ หรือตอบสนองต่อวัตถุอื่นได้  Behavior ของสมุดบัญชี เช่น การถอนเงิน ฝากเงิน ดูยอดคงเหลือ  การประกาศ behavior ให้ object คือ การประกาศเมธอดในคลาส  ภายในเมธอดประกอบด้วยคาสั่งในการดาเนินงาน เช่น  เมธอด ฝากเงิน ต้องมีคาสั่ง รับจานวนเงินที่จะฝาก และเพิ่มจานวนเงินนั้นใน ยอดคงเหลือObject-Oriented Programming 2/2551 11
  • Draw a class in class diagram Class BankAccount +accNo Attributes / data +custNo +balance +deposit() Behaviors / methods +withdraw() +getBalance()Object-Oriented Programming 2/2551 12
  • Object  Object ถูกสร้างขึ้นมาจากคลาส (object คือ instance ของคลาส)  แต่ละวัตถุจะแทนข้อมูลของคนแต่ละคน หรือของแต่ละชิ้น เช่น  1 object แทน นักศึกษา 1 คน หรือ บัญชีเงินฝาก 1 บัญชี  วัตถุ BankAccount ของ Mr.A, Mr.B, Mr.C มีข้อมูลดังนี้ BankAccount Mr.A Mr.B Mr.C +accNo BankAccount BankAccount BankAccount +custNo +accNo=111 +accNo=222 +accNo=333 +custNo=37899 +custNo=87678 +custNo=67777 +balance +balance=500.0 +balance=1000.0 +balance=800.0 +deposit() +deposit() +deposit() +deposit() +withdraw() +withdraw() +withdraw() +withdraw() +getBalance() +getBalance() +getBalance() +getBalance() class objectsObject-Oriented Programming 2/2551 13
  • Define class in Java  คาสั่งในการประกาศคลาส [AccessModifier] class ClassName { class-body }  AccessModifier คาที่แสดงความสามารถในการเข้าถึง เช่น public หมายถึงคลาสอื่นสามารถเรียกใช้งานได้  class เป็นคาเพื่อบอกให้คอมไพเลอร์รู้ว่าส่วนต่อไปนี้ หมายถึงคลาส  ใน {class-body} ประกอบด้วยการประกาศ attributes & methodsObject-Oriented Programming 2/2551 14
  • Declare attributes in class  การประกาศ attribute คือการประกาศตัวแปรของคลาส  Syntax: [AccessModifier] typeName attributeName [= value];  ตัวแปรของคลาสต้องอยู่ภายใน { class-body }  ตัวแปรของคลาสสามารถถูกเรียกใช้ได้จากทุก method ในคลาส  AccessModifier ของ attributes  ถ้ากาหนดเป็น public จะทาให้ object อื่นมองเห็นตัวแปรนี้ และเรียกใช้ได้  ถ้ากาหนดเป็น private จะทาให้ object อื่นมองไม่เห็นตัวแปรนี้ เรียกใช้ไม่ได้Object-Oriented Programming 2/2551 15
  • Declare attributes in class  ตัวอย่างการประกาศObject-Oriented Programming 2/2551 16
  • Declare method in class  การประกาศ method ในคลาส จะเป็นการบอกระบุการทางานที่วัตถุนั้น สามารถทาได้  Syntax: [AccessModifier] [static] return-type method-name([parameter-list]) { statements }  Method จะต้องอยู่ใน { class-body}  AccessModifier ของ attributes  ถ้ากาหนดเป็น public จะทาให้ object อื่นมองเห็น method นี้ และเรียกใช้ได้  ถ้ากาหนดเป็น private จะทาให้ object อื่นมองไม่เห็น method นี้ เรียกใช้ไม่ได้Object-Oriented Programming 2/2551 17
  • Declare method in class  Return-type เป็นการระบุว่าเมธอดมีการคืนค่าให้กับวัตถุที่เรียกใช้เมธอด หรือไม่  ถ้าไม่มีการคืนค่า ให้ระบุว่าเป็น void  ถ้ามีการคืนค่า ให้ระบุชนิดข้อมูลที่ต้องการคืนค่า และระบุคาสั่ง return ว่าจะคืน ค่าใดObject-Oriented Programming 2/2551 18
  • Declare method in class  Parameter-list ระบุว่ามีการรับ parameter หรือ argument หรือไม่  ถ้าไม่มีการรับ parameter ให้ใส่วงเล็บว่างๆ  ถ้ามีการรับ parameter ให้ระบุชนิดข้อมูลและชื่อของ parameter ไว้ในวงเล็บObject-Oriented Programming 2/2551 19
  • EX. Circle classObject-Oriented Programming 2/2551 20
  • Ex. BankAccount classObject-Oriented Programming 2/2551 21
  • Instantiating an object  การเขียนโปรแกรมเชิงวัตถุ จะต้องมีการสร้างวัตถุขนมาก่อน ึ้  การสร้างวัตถุ คือการจองพื้นที่ไว้ในหน่วยความจาสาหรับเก็บค่าของตัว แปร  เราสามารถอ้างถึงวัตถุนนโดยการตั้งชื่อให้แก่วัตถุ (ตัวแปรวัตถุ) ั้  การสร้างวัตถุทาได้โดยใช้ keyword newObject-Oriented Programming 2/2551 22
  • Instantiating an object Circle c; //ประกาศตัวแปรวัตถุ c c = new Circle(); //สร้างวัตถุซึ่งมีโครงสร้างของคลาส Circle หรือเขียนในคาสั่งเดียวกันเป็น Circle c = new Circle();Object-Oriented Programming 2/2551 23
  • Instantiating an object เมื่อมีการสร้าง object ด้วยคาสั่ง new มีขั้นตอนการทางานดังนี้ Circle c = new Circle(); 1. new Circle() ทาให้เกิดการสร้าง object ของคลาส Circle โดยมีการจอง หน่วยความจาเท่ากับจานวนตัวแปรของคลาสนั้น  คลาส Circle มีตัวแปรคลาสคือ radius และ area ก็จะจองให้ตามขนาดของ ชนิดข้อมูล และกาหนดค่าเริ่มต้นให้ตาม default เลขที่หน่วยความจา (10004) radius 0 area 0.0Object-Oriented Programming 2/2551 24
  • Instantiating an object 2. Circle c - จองพื้นที่ให้ตัวแปร c โดยค่าที่เก็บใน c ต้องเป็น address ของ object ที่ สร้างจากคลาส Circle c 3. c = new Circle(); คือการนาค่า เลขที่หน่วยความจา ของ object ที่สร้างในข้อ 1 ให้กับตัวแปร c c 10004 เรียกว่า c เป็นตัวแปรวัตถุ(reference) ที่อ้างถึง object ของคลาส CircleObject-Oriented Programming 2/2551 25
  • Instantiating an object  Initial value of object’s attributes ค่าเริ่มต้นเมื่อมีการสร้างวัตถุObject-Oriented Programming 2/2551 26
  • Instantiating an object  วัตถุทถูกสร้างขึ้นจะถูกกาหนดค่าให้กับตัวแปรและเรียกใช้เมธอดให้ ี่ ทางานได้  การอ้างถึงตัวแปรและเมธอดของวัตถุ ใช้ . (dot) ต่อท้ายชื่อวัตถุ เช่น Circle c = new Circle(); Circle d = new Circle(); c.radius = 5; d.radius = 10; c.calculateArea(); d.calculateArea();Object-Oriented Programming 2/2551 27
  • Ex. Program TestCircle Area =78.53981633974483 Area =314.1592653589793  ระวัง ! คลาสที่มีเมธอด main จึงจะสามารถรันโปรแกรมได้Object-Oriented Programming 2/2551 28
  • แบบฝึกหัด Student  จงสร้างคลาสจาก class diagram name  Method printName() ให้พิมพ์ชื่อ score  Method calculateGrade() ให้คานวณเกรด printName() • ต่ากว่า 70 ให้พิมพ์ Unpass calculateGrade() • 70 ขึ้นไป ให้พิมพ์ Pass  จงเขียนโปรแกรมเพื่อสร้าง object ของคลาส Student 2 objects  คนแรกมี name=“Asakura Yo” , score= 90  คนที่สอง name=“Tao Ren”, score 65  เรียก method เพื่อแสดงชื่อและเกรดObject-Oriented Programming 2/2551 29