29
4. Object-Oriented Programming Faculty of Technology and Environment Prince of Songkla University, Phuket Campus 2/2551 976-140 Object-Oriented Programming 344-202 Introduction to OOP การโปรแกรมเชิงวัตถุ

4.Oop

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 4.Oop

4. Object-Oriented Programming

Faculty of Technology and Environment

Prince of Songkla University, Phuket Campus

2/2551

976-140 Object-Oriented Programming

344-202 Introduction to OOP

การโปรแกรมเชงวตถ

Page 2: 4.Oop

2Object-Oriented Programming 2/2551

Contents

Class & Object

Class structure

Attribute

Method

Instantiating an object

Page 3: 4.Oop

3Object-Oriented Programming 2/2551

ขนตอนในการพฒนาโปรแกรม

การวเคราะหระบบ วาระบบทตองการพฒนาสามารถท าอะไรไดบาง

การออกแบบระบบ เพอใหเหนวาระบบทจะพฒนามโครงสรางอยางไร

การพฒนาระบบ เปนการเขยนโปรแกรมตามทออกแบบไวใหท างานไดจรง

การทดสอบระบบ เปนการทดสอบวาระบบทพฒนาขนท างานไดถกตอง และตรง

กบความตองการ

การตดตงระบบ น าระบบทพฒนาไปตดตงใชงานจรง

การบ ารงรกษาระบบ เปนการปรบปรงแกไขระบบหลงจากมการใชงานแลว

Page 4: 4.Oop

4Object-Oriented Programming 2/2551

แนวคดการเขยนโปรแกรมเชงวตถ

ระบบทพฒนาโดยใชแนวทาง OOP จะประกอบดวยวตถ (object) ตาง ๆ

ท างานรวมกน

ในการพฒนาระบบ จะท าการจ าลองวตถในระบบงานจรง มาเปนวตถใน

โปรแกรมทเราพฒนา

วตถ (object) คอสงตาง ๆ ซงจ าลองมาจากสงทมอยจรง ไดแก

สงทจบตองได เชน คน สตว สงของ

สงทจบตองไมได เชน การด าเนนงาน การลงทะเบยน การซอขาย

ในการวเคราะหและออกแบบโปรแกรมเชงวตถ ตองท าการคนหาใหไดวา

ระบบจะมวตถ หรอ object อะไรบาง

Page 5: 4.Oop

5Object-Oriented Programming 2/2551

การพฒนาระบบดวยแนวทางเชงวตถ

วตถ ประกอบดวย คณลกษณะและพฤตกรรม

ขอมล หรอคณลกษณะ (data/attribute) คอ สงทบงบอกลกษณะของวตถ

การกระท า หรอพฤตกรรม (operation/behavior) คอ สงทวตถสามารถท าได

ตวอยาง ระบบธนาคาร ประกอบดวยวตถคอ ลกคา

ลกคา

• ขอมล คอ ชอ เลขทบตรประชาชน ทอย เลขทบญชเงนฝาก

• การกระท าของลกคา คอ เปดบญช ฝากเงน ถอนเงน โอนเงน

บญชเงนฝาก

• ขอมล คอ เลขทบญช เจาของบญช ประเภทบญช ยอดคงเหลอ

• การกระท า คอ การฝากเงน การถอนเงน การสอบถามยอดคงเหลอ

Page 6: 4.Oop

6Object-Oriented Programming 2/2551

การพฒนาระบบดวยแนวทางเชงวตถ

ตวอยาง ระบบลงทะเบยน ประกอบดวยวตถ คอ นกศกษา วชา

นกศกษา

• ขอมล คอ รหสนกศกษา ชอ ทอย สาขาวชา

• การกระท าของนกศกษา คอ ลงทะเบยนวชา เพมวชา ถอนวชา

วชา

• ขอมล คอ รหสวชา ชอวชา หนวยกต

การลงทะเบยน

• ขอมล คอ รหสนกศกษา รหสวชา section

Page 7: 4.Oop

7Object-Oriented Programming 2/2551

Class

สงทเราสนใจจะเกบขอมล หรอขอมลตาง ๆ ทเกดขนจะถกน ามาเปนวตถ

ในโปรแกรม

การสรางวตถ ท าไดโดยการก าหนดคลาสของวตถนนขนมากอน

คลาส คอ ตนแบบทใชในการก าหนดคณลกษณะ และพฤตกรรมของวตถ

คลาส เปนการก าหนดลกษณะพนฐานของวตถไววาตองมองคประกอบ

อะไรบาง โดยวตถทสรางจากคลาสเดยวกนอาจมคณลกษณะตางกนได

Class is a template of object

Page 8: 4.Oop

8Object-Oriented Programming 2/2551

Class

ตวอยาง ก าหนดคลาสของสมดบญช ชอ

BankAccount

เมอมการเปดบญชจากลกคา 3 คน กจะมการ

สรางวตถของสมดบญชขนมา 3 วตถ

ทกวตถสามารถ

เกบขอมล เลขทบญช (accNo), เลขทลกคา

(custNo) ยอดคงเหลอ (balance)

ท าการฝากเงน(deposit) ถอนเงน(withdraw)

และดยอดคงเหลอ(getBalance) ได

+deposit()

+withdraw()

+getBalance()

+accNo

+custNo

+balance

BankAccount

+deposit()

+withdraw()

+getBalance()

+accNo

+custNo

+balance

BankAccount

Mr.A Mr.B Mr.C

+deposit()

+withdraw()

+getBalance()

+accNo

+custNo

+balance

BankAccount

+deposit()

+withdraw()

+getBalance()

+accNo

+custNo

+balance

BankAccount

Page 9: 4.Oop

9Object-Oriented Programming 2/2551

โครงสรางคลาส

คลาส ประกอบดวย

ขอมล หรอ attribute แทนไดดวย ตวแปร

การกระท า หรอ behaviour แทนไดดวย เมธอด (method)

class ชอคลาส {attribute1;attribute2;

method1() {//ค าสงการท างาน

}method2() {

//ค าสงการท างาน}

}

+deposit()

+withdraw()

+getBalance()

+accNo

+custNo

+balance

BankAccount

Page 10: 4.Oop

10Object-Oriented Programming 2/2551

Attributes/data

Attribute คอ สงทบงบอกลกษณะของวตถ อาจเปน ลกษณะทมองเหน

สถานะ คณภาพ ปรมาณ

Attribute ของ สมดบญช ประกอบดวย เลขทบญช รหสลกคา ยอด

คงเหลอ

คาทเกบในวตถของสมดบญชแตละเลมจะเปนขอมลของบญชนน

การประกาศ attribute ของ object คอการประกาศตวแปร (variable) ไว

ในคลาส

แตละวตถมตวแปรชอเหมอนกน แตคาในตวแปรมไดตางกน จงมกเรยก

ตวแปรของวตถเหลานวา instance variable

Page 11: 4.Oop

11Object-Oriented Programming 2/2551

Behavior/method

Behavior คอ สงทวตถสามารถท าได หรอตอบสนองตอวตถอนได

Behavior ของสมดบญช เชน การถอนเงน ฝากเงน ดยอดคงเหลอ

การประกาศ behavior ให object คอ การประกาศเมธอดในคลาส

ภายในเมธอดประกอบดวยค าสงในการด าเนนงาน เชน

เมธอด ฝากเงน ตองมค าสง รบจ านวนเงนทจะฝาก และเพมจ านวนเงนนนใน

ยอดคงเหลอ

Page 12: 4.Oop

12Object-Oriented Programming 2/2551

Draw a class in class diagram

Class

Attributes / data

Behaviors / methods

+deposit()

+withdraw()

+getBalance()

+accNo

+custNo

+balance

BankAccount

Page 13: 4.Oop

13Object-Oriented Programming 2/2551

Object

Object ถกสรางขนมาจากคลาส (object คอ instance ของคลาส)

แตละวตถจะแทนขอมลของคนแตละคน หรอของแตละชน เชน

1 object แทน นกศกษา 1 คน หรอ บญชเงนฝาก 1 บญช

วตถ BankAccount ของ Mr.A, Mr.B, Mr.C มขอมลดงน

class objects

+deposit()

+withdraw()

+getBalance()

+accNo=111

+custNo=37899

+balance=500.0

BankAccount

+deposit()

+withdraw()

+getBalance()

+accNo=222

+custNo=87678

+balance=1000.0

BankAccount

+deposit()

+withdraw()

+getBalance()

+accNo=333

+custNo=67777

+balance=800.0

BankAccount

Mr.A Mr.B Mr.C

+deposit()

+withdraw()

+getBalance()

+accNo

+custNo

+balance

BankAccount

Page 14: 4.Oop

14Object-Oriented Programming 2/2551

Define class in Java

ค าสงในการประกาศคลาส

[AccessModifier] class ClassName

{ class-body }

AccessModifier ค าทแสดงความสามารถในการเขาถง เชน public

หมายถงคลาสอนสามารถเรยกใชงานได

class เปนค าเพอบอกใหคอมไพเลอรรวาสวนตอไปน หมายถงคลาส

ใน {class-body} ประกอบดวยการประกาศ attributes & methods

Page 15: 4.Oop

15Object-Oriented Programming 2/2551

Declare attributes in class

การประกาศ attribute คอการประกาศตวแปรของคลาส

Syntax:

[AccessModifier] typeName attributeName [= value];

ตวแปรของคลาสตองอยภายใน { class-body }

ตวแปรของคลาสสามารถถกเรยกใชไดจากทก method ในคลาส

AccessModifier ของ attributes

ถาก าหนดเปน public จะท าให object อนมองเหนตวแปรน และเรยกใชได

ถาก าหนดเปน private จะท าให object อนมองไมเหนตวแปรน เรยกใชไมได

Page 16: 4.Oop

16Object-Oriented Programming 2/2551

Declare attributes in class

ตวอยางการประกาศ

Page 17: 4.Oop

17Object-Oriented Programming 2/2551

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 น เรยกใชไมได

Page 18: 4.Oop

18Object-Oriented Programming 2/2551

Declare method in class

Return-type เปนการระบวาเมธอดมการคนคาใหกบวตถทเรยกใชเมธอด

หรอไม

ถาไมมการคนคา ใหระบวาเปน void

ถามการคนคา ใหระบชนดขอมลทตองการคนคา และระบค าสง return วาจะคน

คาใด

Page 19: 4.Oop

19Object-Oriented Programming 2/2551

Declare method in class

Parameter-list ระบวามการรบ parameter หรอ argument หรอไม

ถาไมมการรบ parameter ใหใสวงเลบวางๆ

ถามการรบ parameter ใหระบชนดขอมลและชอของ parameter ไวในวงเลบ

Page 20: 4.Oop

20Object-Oriented Programming 2/2551

EX. Circle class

Page 21: 4.Oop

21Object-Oriented Programming 2/2551

Ex. BankAccount class

Page 22: 4.Oop

22Object-Oriented Programming 2/2551

Instantiating an object

การเขยนโปรแกรมเชงวตถ จะตองมการสรางวตถขนมากอน

การสรางวตถ คอการจองพนทไวในหนวยความจ าส าหรบเกบคาของตว

แปร

เราสามารถอางถงวตถนนโดยการตงชอใหแกวตถ (ตวแปรวตถ)

การสรางวตถท าไดโดยใช keyword new

Page 23: 4.Oop

23Object-Oriented Programming 2/2551

Instantiating an object

Circle c; //ประกาศตวแปรวตถ c

c = new Circle(); //สรางวตถซงมโครงสรางของคลาส Circle

หรอเขยนในค าสงเดยวกนเปน

Circle c = new Circle();

Page 24: 4.Oop

24Object-Oriented Programming 2/2551

Instantiating an object

เมอมการสราง object ดวยค าสง new มขนตอนการท างานดงน

Circle c = new Circle();

1. new Circle() ท าใหเกดการสราง object ของคลาส Circle โดยมการจอง

หนวยความจ าเทากบจ านวนตวแปรของคลาสนน

คลาส Circle มตวแปรคลาสคอ radius และ area กจะจองใหตามขนาดของ

ชนดขอมล และก าหนดคาเรมตนใหตาม default

radius 0

area 0.0

เลขทหนวยความจ า

(10004)

Page 25: 4.Oop

25Object-Oriented Programming 2/2551

Instantiating an object

2. Circle c - จองพนทใหตวแปร c โดยคาทเกบใน c ตองเปน address ของ object ท

สรางจากคลาส Circle

c

3. c = new Circle(); คอการน าคา เลขทหนวยความจ า ของ object ทสรางในขอ 1

ใหกบตวแปร c

เรยกวา c เปนตวแปรวตถ(reference) ทอางถง object ของคลาส Circle

c 10004

Page 26: 4.Oop

26Object-Oriented Programming 2/2551

Instantiating an object

Initial value of object’s attributes คาเรมตนเมอมการสรางวตถ

Page 27: 4.Oop

27Object-Oriented Programming 2/2551

Instantiating an object

วตถทถกสรางขนจะถกก าหนดคาใหกบตวแปรและเรยกใชเมธอดให

ท างานได

การอางถงตวแปรและเมธอดของวตถ ใช . (dot) ตอทายชอวตถ เชน

Circle c = new Circle();

Circle d = new Circle();

c.radius = 5;

d.radius = 10;

c.calculateArea();

d.calculateArea();

Page 28: 4.Oop

28Object-Oriented Programming 2/2551

Ex. Program TestCircle

Area =78.53981633974483

Area =314.1592653589793

ระวง ! คลาสทมเมธอด main จงจะสามารถรนโปรแกรมได

Page 29: 4.Oop

29Object-Oriented Programming 2/2551

แบบฝกหด

จงสรางคลาสจาก class diagram

Method printName() ใหพมพชอ

Method calculateGrade() ใหค านวณเกรด

• ต ากวา 70 ใหพมพ Unpass

• 70 ขนไป ใหพมพ Pass

จงเขยนโปรแกรมเพอสราง object ของคลาส Student 2 objects

คนแรกม name=“Asakura Yo” , score= 90

คนทสอง name=“Tao Ren”, score 65

เรยก method เพอแสดงชอและเกรด

Student

name

score

printName()

calculateGrade()