chapter i| introduction to objects · เมธอดส...

39
CHAPTER 3 คลาสและการเขียนโปรแกรมเช งวัตถุเบื้องต ้น (CLASS AND OBJECT-ORIENTED PROGRAMING) 221202 | OBJECT-ORIENTED APPLICATION DEVELOPMENT

Upload: others

Post on 05-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

CHAPTER 3

คลาสและการเขยนโปรแกรมเชงวตถเบองตน(CLASS AND OBJECT-ORIENTED PROGRAMING)

221202 | OBJECT-ORIENTED APPLICATION DEVELOPMENT

Page 2: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

ความสมพนธระหวางคลาสและออบเจกต

Data/Attribute

Object Operation/

Methods

Behaviors of an

object

Characteristics that

define an object

Class

▪ a instruction to create objects.

▪ describes what attribute its objects will

have and what those objects will be able

to do.

▪ Attributes and Methods is member of

Class

Page 3: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

ชนดของคลาส

แบงไดเปน 3 ชนด▪ Concrete Class เปนคลาสทวไปซงสามารถใชงานเพอการ

สรางออบเจกตไดทนท

▪ Abstract Class เปนคลาสทถกออกแบบมาใหใชงานเพอการสบทอดคณสมบต แตไมสามารถใชงานเพอการสรางออบเจกตได

▪ Interface Class คลายกนกบ Abstract Class แตโครงสรางภายในคลาสจะมเฉพาะตวแปรทเปนคาคงท และเมธอดทมระบเฉพาะชอเทานน

Page 4: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Concrete Class โครงสรางคลาสประกอบดวย Attribute และ Method โดย Method จะมระบข นตอนการท างานไวภายในเรยบรอยแลว

Page 5: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Abstract Class โครงสรางคลาสประกอบดวย Attribute และ Method โดย Method นนจะมทง Method ทระบข นตอนการท างานไวเรยบรอยแลว กบ Method ทเรยกวาAbstract Method

▪ โครงสรางของคลาสทมาสบทอดคณสมบตจาก Abstract Classสามารถม Method อนๆ ได แตตองม Method ทมชอเดยวกนกบ Abstract Method ทอยใน Abstract Class

Page 6: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Interface Class โครงสรางคลาสประกอบดวย Attribute ทมคาคงท และ Abstract Methodเทานน

▪ โครงสรางของคลาสทมาสบทอดคณสมบตจาก Interface Classจ าเปนตองม Method ทมชอเดยวกนกบ Abstract Method ทอยใน Interface Class

Page 7: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

คลาสไดอะแกรม (CLASS DIAGRAM)เปนแผนภาพตามมาตรฐานในการสรางแบบจ าลองเชงวตถภาษายเอมแอล (UML; Unified Modelling Language) ใชแสดงใหเหนโครงสรางของออบเจกต หรอคลาส

Page 8: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Object “สเหลยม”

Attribute▪ ชอสเหลยม : ชนดขอความ▪ ความกวาง : ชนดเลขทศนยม▪ ความยาว : ชนดเลขทศนยม▪ พนท : ชนดเลขทศนยม

Methods▪ เมธอดส าหรบใหออบเจกตสเหลยมใชก าหนดชอ, ความ

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

แสดงผลออกทางจอภาพ

A

B

Page 9: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Rectangle

name : Stringwidth : doublelength: doublearea :doublesetName(n:String)setWidth(w:double)setLength(l:double)printArea()

Attribute▪ ชอสเหลยม : ชนดขอความ▪ ความกวาง : ชนดเลขทศนยม▪ ความยาว : ชนดเลขทศนยม▪ พนท : ชนดเลขทศนยมMethods▪ เมธอดส าหรบใหออบเจกต

สเหลยมใชก าหนดชอ, ความกวาง และความยาว

▪ เมธอดใชส าหรบค านวณหาคาพนทของรปสเหลยมและแสดงผลออกทางจอภาพ

Page 10: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

การสรางคลาสและออบเจกต

Page 11: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

การสรางคลาส

[AccessModifier] class Name

{

Members

}

public /packageคยเวรดใชส าหรบการสรางคลาส

ชอคลาส

▪ Attribute/Data_Member▪ Method_Member

Page 12: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

เกรนน า Access Modifier และการใชงาน

Access Modifier คอ ระดบในการเขาถง Class, Attribute หรอMethod ในภาษาเชงวตถ ม 4 ระดบ

Access Modifier Class Attribute Method

public ✓ ✓ ✓

protected ✓ ✓

package ✓ ✓ ✓

private ✓ ✓

Page 13: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

public ▪ เปนการประกาศระดบการเขาถงทเขมงวดนอยทสด▪ สญลกษณทใชในคลาสไดอะแกรม ไดแก +

protected ▪ เปนการประกาศระดบการเขาถงทเกยวของกบเรองการสบทอด

(Inheritance) และคลาสทอยในแพคเกจเดยวกน▪ สญลกษณทใชในคลาสไดอะแกรม ไดแก #

Page 14: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

package ▪ เปนระดบการเขาถงเรมตน (Default) ในภาษาจาวา Class,

Attribute หรอ Method ทไมไดระบ Access Modifier ใดๆ ไวภาษาจาวาจะก าหนด Access Modifier ใหเปนแบบ package ทนท

▪ คลาสทอยตางแพคเกจกนจะไมสามารถเรยกใชงานสมาชกของกนและกนได

private ▪ เปนการประกาศระดบการเขาถงทเขมงวดมากทสด Attribute

หรอ Method จะมไวใชเฉพาะภายในคลาสนนเทานน คลาสอนจะไมมสทธใชงาน

▪ สญลกษณทใชในคลาสไดอะแกรม ไดแก -

Page 15: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

ตวอยางการใชงานสญลกษณ Access Modifierใน Class Diagram

public Methods

private attributeprotected attribute

Page 16: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Rectangle

+ name : String+ width : double+ length: double- area :double+ setName(n:String)+ setWidth(w:double)+ setLength(l:double)+ printArea()

ตวอยางการใชงานสญลกษณ Access Modifierใน Class Diagram’s Rectangle

private attribute

public Methods

public attributes

Page 17: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Rectangle

+ name : String+ width : double+ length: double- area :double+ setName(n:String)+ setWidth(w:double)+ setLength(l:double)+ printArea()

ตวอยางการสรางคลาส เชน

Page 18: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

กฎและขอแนะน าในการตงชอ Class

▪ กฎการตงชอคลาสเปนไปตามกฎการตงชอ identify ของภาษาจาวา▪ นยมขนตนดวยตวใหญ▪ หากชอคลาสประกอบดวยค ามากกวา 1 ค า โดยทวไปนยมก าหนดให

ตวอกษรแรกของแตละค าเปนตวใหญ▪ ชอคลาสควรเปนค านาม

Page 19: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

การสราง Attribute

public class ClassName {

}

Attribute1

Attribute2

Attribute3

[AccessModifier] dataType Name;

public/ protected/ package/ private

ชนดของแอทรบวต▪byte/ short/ int/ long ▪double/ float▪Boolean▪char String

ชอแอทรบวต

Method

Page 20: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Rectangle

+ name : String+ width : double+ length: double- area :double+ setName(n:String)+ setWidth(w:double)+ setLength(l:double)+ printArea()

ตวอยางเชน

Page 21: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Rectangle

+ name : String+ width : double = 0.0+ length: double = 0.0- area :double = 0.0+ setName(n:String)+ setWidth(w:double)+ setLength(l:double)+ printArea()

เราสามารถก าหนดคาเรมตนใหกบแอทรบวตได ดงตวอยาง การก าหนดใหกบ width, length และ area

Page 22: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

กฎและขอแนะน าในการตงชอ Attributes

▪ ชอเปนไปตาม กฎการตงชอ identify ของภาษาจาวา▪ นยมขนตนดวยตวเลก▪ หากชอแอตทรบวตประกอบดวยค ามากกวา 1 ค า โดยทวไปนยม

ก าหนดใหตวอกษรตวแรกของแตละค า (ยกเวนค าแรก) เปนตวใหญ▪ ชอแอตทรบวตควรเปนค านาม

Page 23: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

การสราง Method

public class ClassName {

}

Attribute1

Method1

Method2

Method3

[AccessModifier] returnType Name(arguments){

statement;return (data);

}

public/ protected/ package/ private

Data type in Java หรอระบเปนคยเวรด void กรณไมมการสงคนคากลบ ชอเมธอด

ตวแปรพารามเตอรใชในการรบขอมลเขาเมธอด

คยเวรดทใชส าหรบการสงคนคากลบของเมธอด

Page 24: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Rectangle

+ name : String+ width : double+ length: double- area :double

+ setName(n:String)+ setWidth(w:double)+ setLength(l:double)+ printArea()

ตวอยางเชน

Page 25: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

กฎและขอแนะน าในการตงชอ Attributes

▪ ตงชอเปนไปตาม กฎการตงชอ identifier ของภาษาจาวา▪ นยมขนตนดวยตวเลก▪ หากชอเมธอดประกอบดวยค ามากกวา 1 ค า โดยทวไปนยมก าหนดให

ตวอกษรตวแรกของแตละค า (ยกเวนค าแรก) เปนตวใหญ▪ ชอเมธอดควรก าหนดใหเปนค ากรยา

Page 26: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

แผนภาพแสดงความสมพนธการสรางออบเจกตจากคลาส

หรอ

Page 27: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Rectangle

name : Stringwidth : doublelength: doublearea :doublesetName(n:String)setWidth(w:double)setLength(l:double)printArea()

A

B

A:Rectangle

name = “A”width = 4.0length = 5.0

B:Rectangle

name = “B”width = 2.0length = 6.0

Page 28: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

การสราง Object

ประกาศตวแปรออบเจค(Object Declaration)

ชอคลาส ชอตวแปรออบเจค;

สรางออบเจค

(Object Creation) ชอตวแปรออบเจค = new ชอคลาส(อารกวเมนต);

คยเวรดทใชส าหรบการสรางออบเจกต

Page 29: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

ClassName objectName ;objectName = new ClassName();

รปแบบ 1

ClassName objectName = new ClassName(); รปแบบ 2

ClassName objectName1, objectName2 = new ClassName(); รปแบบ 3

รปแบบการเขยนประกาศและสรางออบเจกต

Page 30: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

RectangleA:Rectangle

B:Rectangle

ตวอยางเชน

Page 31: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

การใชงาน Attribute และ Method

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

public class ClassName {

}

Attribute1

Attribute2

Method1

Method2

Page 32: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

รปแบบการใชงาน Attribute

ObjecName . ชอแอทรบวต

ชอออบเจกต ชอแอทรบวต

จด

ObjecName . ชอแอทรบวต = คาทตองการจดเกบในแอทรบวต

คาขอมล

เครองหมาย =

▪ กรณแสดงคาทจดเกบในแอทรบวต

▪ กรณจดเกบคาในแอทรบวต

Page 33: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

การใชงาน Method

ObjecName . ชอเมธอด(อารกวเมนต)

ชอออบเจกต ชอแอทรบวต

จด ขอมลทออบเจกตตองสงเขาไปในเมธอด

Page 34: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Rectangle

A:Rectangle

name = “A”width = 4.0length = 5.0

Instance ofตวอยางเชน

ออบเจกต A เรยกใชงานเมธอด printArea()

พมพคา width ทออบเจกต A ท าการจดเกบ

Page 35: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

เราจะไมสามารถเขยนใหออบเจกต A เรยกใชงานแอทรบวต area แบบนได

A.area = 20.0;

เนองจาก area ถกประกาศใหเปนแบบ private

Page 36: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

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

A.setArea(20.0);

Page 37: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

ขนตอนการออกแบบคลาส

1.

สรางแนวคดใหกบวตถ

2.

สรางตนแบบของวตถ

3.

สรางวตถจากตนแบบ

Definite

➢Attribute’s object

➢Method’s object

Create

➢ClassCreate

➢Object

➢Use Attribute and Method

Page 38: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

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

1. สรางแนวคดใหกบวตถ

✓ Object คอ .....

✓ Attribute’s object ?

✓Method’s object ?

2. สรางคลาสโปรแกรม

เขยนเปน Class Diagram

3. สรางออบเจกตและเรยกใชงานแอทรบวตและเมธอดในคลาส

Page 39: Chapter I| Introduction to Objects · เมธอดส าหรับให้ออบเจ็กต์ สี่เหลี่ยมใช้ก าหนดชื่อ, ความ

Q & A