Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
CHAPTER 3
คลาสและการเขยนโปรแกรมเชงวตถเบองตน(CLASS AND OBJECT-ORIENTED PROGRAMING)
221202 | OBJECT-ORIENTED APPLICATION DEVELOPMENT
ความสมพนธระหวางคลาสและออบเจกต
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
ชนดของคลาส
แบงไดเปน 3 ชนด▪ Concrete Class เปนคลาสทวไปซงสามารถใชงานเพอการ
สรางออบเจกตไดทนท
▪ Abstract Class เปนคลาสทถกออกแบบมาใหใชงานเพอการสบทอดคณสมบต แตไมสามารถใชงานเพอการสรางออบเจกตได
▪ Interface Class คลายกนกบ Abstract Class แตโครงสรางภายในคลาสจะมเฉพาะตวแปรทเปนคาคงท และเมธอดทมระบเฉพาะชอเทานน
Concrete Class โครงสรางคลาสประกอบดวย Attribute และ Method โดย Method จะมระบข นตอนการท างานไวภายในเรยบรอยแลว
Abstract Class โครงสรางคลาสประกอบดวย Attribute และ Method โดย Method นนจะมทง Method ทระบข นตอนการท างานไวเรยบรอยแลว กบ Method ทเรยกวาAbstract Method
▪ โครงสรางของคลาสทมาสบทอดคณสมบตจาก Abstract Classสามารถม Method อนๆ ได แตตองม Method ทมชอเดยวกนกบ Abstract Method ทอยใน Abstract Class
Interface Class โครงสรางคลาสประกอบดวย Attribute ทมคาคงท และ Abstract Methodเทานน
▪ โครงสรางของคลาสทมาสบทอดคณสมบตจาก Interface Classจ าเปนตองม Method ทมชอเดยวกนกบ Abstract Method ทอยใน Interface Class
คลาสไดอะแกรม (CLASS DIAGRAM)เปนแผนภาพตามมาตรฐานในการสรางแบบจ าลองเชงวตถภาษายเอมแอล (UML; Unified Modelling Language) ใชแสดงใหเหนโครงสรางของออบเจกต หรอคลาส
Object “สเหลยม”
Attribute▪ ชอสเหลยม : ชนดขอความ▪ ความกวาง : ชนดเลขทศนยม▪ ความยาว : ชนดเลขทศนยม▪ พนท : ชนดเลขทศนยม
Methods▪ เมธอดส าหรบใหออบเจกตสเหลยมใชก าหนดชอ, ความ
กวาง และความยาว▪ เมธอดใชส าหรบค านวณหาคาพนทของรปสเหลยมและ
แสดงผลออกทางจอภาพ
A
B
Rectangle
name : Stringwidth : doublelength: doublearea :doublesetName(n:String)setWidth(w:double)setLength(l:double)printArea()
Attribute▪ ชอสเหลยม : ชนดขอความ▪ ความกวาง : ชนดเลขทศนยม▪ ความยาว : ชนดเลขทศนยม▪ พนท : ชนดเลขทศนยมMethods▪ เมธอดส าหรบใหออบเจกต
สเหลยมใชก าหนดชอ, ความกวาง และความยาว
▪ เมธอดใชส าหรบค านวณหาคาพนทของรปสเหลยมและแสดงผลออกทางจอภาพ
การสรางคลาสและออบเจกต
การสรางคลาส
[AccessModifier] class Name
{
Members
}
public /packageคยเวรดใชส าหรบการสรางคลาส
ชอคลาส
▪ Attribute/Data_Member▪ Method_Member
เกรนน า Access Modifier และการใชงาน
Access Modifier คอ ระดบในการเขาถง Class, Attribute หรอMethod ในภาษาเชงวตถ ม 4 ระดบ
Access Modifier Class Attribute Method
public ✓ ✓ ✓
protected ✓ ✓
package ✓ ✓ ✓
private ✓ ✓
public ▪ เปนการประกาศระดบการเขาถงทเขมงวดนอยทสด▪ สญลกษณทใชในคลาสไดอะแกรม ไดแก +
protected ▪ เปนการประกาศระดบการเขาถงทเกยวของกบเรองการสบทอด
(Inheritance) และคลาสทอยในแพคเกจเดยวกน▪ สญลกษณทใชในคลาสไดอะแกรม ไดแก #
package ▪ เปนระดบการเขาถงเรมตน (Default) ในภาษาจาวา Class,
Attribute หรอ Method ทไมไดระบ Access Modifier ใดๆ ไวภาษาจาวาจะก าหนด Access Modifier ใหเปนแบบ package ทนท
▪ คลาสทอยตางแพคเกจกนจะไมสามารถเรยกใชงานสมาชกของกนและกนได
private ▪ เปนการประกาศระดบการเขาถงทเขมงวดมากทสด Attribute
หรอ Method จะมไวใชเฉพาะภายในคลาสนนเทานน คลาสอนจะไมมสทธใชงาน
▪ สญลกษณทใชในคลาสไดอะแกรม ไดแก -
ตวอยางการใชงานสญลกษณ Access Modifierใน Class Diagram
public Methods
private attributeprotected attribute
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
Rectangle
+ name : String+ width : double+ length: double- area :double+ setName(n:String)+ setWidth(w:double)+ setLength(l:double)+ printArea()
ตวอยางการสรางคลาส เชน
กฎและขอแนะน าในการตงชอ Class
▪ กฎการตงชอคลาสเปนไปตามกฎการตงชอ identify ของภาษาจาวา▪ นยมขนตนดวยตวใหญ▪ หากชอคลาสประกอบดวยค ามากกวา 1 ค า โดยทวไปนยมก าหนดให
ตวอกษรแรกของแตละค าเปนตวใหญ▪ ชอคลาสควรเปนค านาม
การสราง Attribute
public class ClassName {
}
Attribute1
Attribute2
Attribute3
[AccessModifier] dataType Name;
public/ protected/ package/ private
ชนดของแอทรบวต▪byte/ short/ int/ long ▪double/ float▪Boolean▪char String
ชอแอทรบวต
Method
Rectangle
+ name : String+ width : double+ length: double- area :double+ setName(n:String)+ setWidth(w:double)+ setLength(l:double)+ printArea()
ตวอยางเชน
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
กฎและขอแนะน าในการตงชอ Attributes
▪ ชอเปนไปตาม กฎการตงชอ identify ของภาษาจาวา▪ นยมขนตนดวยตวเลก▪ หากชอแอตทรบวตประกอบดวยค ามากกวา 1 ค า โดยทวไปนยม
ก าหนดใหตวอกษรตวแรกของแตละค า (ยกเวนค าแรก) เปนตวใหญ▪ ชอแอตทรบวตควรเปนค านาม
การสราง Method
public class ClassName {
}
Attribute1
Method1
Method2
Method3
[AccessModifier] returnType Name(arguments){
statement;return (data);
}
public/ protected/ package/ private
Data type in Java หรอระบเปนคยเวรด void กรณไมมการสงคนคากลบ ชอเมธอด
ตวแปรพารามเตอรใชในการรบขอมลเขาเมธอด
คยเวรดทใชส าหรบการสงคนคากลบของเมธอด
Rectangle
+ name : String+ width : double+ length: double- area :double
+ setName(n:String)+ setWidth(w:double)+ setLength(l:double)+ printArea()
ตวอยางเชน
กฎและขอแนะน าในการตงชอ Attributes
▪ ตงชอเปนไปตาม กฎการตงชอ identifier ของภาษาจาวา▪ นยมขนตนดวยตวเลก▪ หากชอเมธอดประกอบดวยค ามากกวา 1 ค า โดยทวไปนยมก าหนดให
ตวอกษรตวแรกของแตละค า (ยกเวนค าแรก) เปนตวใหญ▪ ชอเมธอดควรก าหนดใหเปนค ากรยา
แผนภาพแสดงความสมพนธการสรางออบเจกตจากคลาส
หรอ
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
การสราง Object
ประกาศตวแปรออบเจค(Object Declaration)
ชอคลาส ชอตวแปรออบเจค;
สรางออบเจค
(Object Creation) ชอตวแปรออบเจค = new ชอคลาส(อารกวเมนต);
คยเวรดทใชส าหรบการสรางออบเจกต
ClassName objectName ;objectName = new ClassName();
รปแบบ 1
ClassName objectName = new ClassName(); รปแบบ 2
ClassName objectName1, objectName2 = new ClassName(); รปแบบ 3
รปแบบการเขยนประกาศและสรางออบเจกต
RectangleA:Rectangle
B:Rectangle
ตวอยางเชน
การใชงาน Attribute และ Method
การใชงานกระท าผานตวแปรออบเจกตทสรางขนมาจากคลาสโดยออบเจกตจะสามารถเรยกใชงานแอทรบวตและเมธอด ตวทAccess Modifier ทไมถกก าหนดใหเปน private ไดเทานน
public class ClassName {
}
Attribute1
Attribute2
Method1
Method2
รปแบบการใชงาน Attribute
ObjecName . ชอแอทรบวต
ชอออบเจกต ชอแอทรบวต
จด
ObjecName . ชอแอทรบวต = คาทตองการจดเกบในแอทรบวต
คาขอมล
เครองหมาย =
▪ กรณแสดงคาทจดเกบในแอทรบวต
▪ กรณจดเกบคาในแอทรบวต
การใชงาน Method
ObjecName . ชอเมธอด(อารกวเมนต)
ชอออบเจกต ชอแอทรบวต
จด ขอมลทออบเจกตตองสงเขาไปในเมธอด
Rectangle
A:Rectangle
name = “A”width = 4.0length = 5.0
Instance ofตวอยางเชน
ออบเจกต A เรยกใชงานเมธอด printArea()
พมพคา width ทออบเจกต A ท าการจดเกบ
เราจะไมสามารถเขยนใหออบเจกต A เรยกใชงานแอทรบวต area แบบนได
A.area = 20.0;
เนองจาก area ถกประกาศใหเปนแบบ private
การเรยกใชงานแอทรบวตทเปนแบบ private จะตองท าผานเมธอดทคลาสมให
A.setArea(20.0);
ขนตอนการออกแบบคลาส
1.
สรางแนวคดใหกบวตถ
2.
สรางตนแบบของวตถ
3.
สรางวตถจากตนแบบ
Definite
➢Attribute’s object
➢Method’s object
Create
➢ClassCreate
➢Object
➢Use Attribute and Method
ตวอยางเชน จงออกแบบคลาสของโปรแกรมใชส าหรบค านวณหาพนทและเสนรอบวงของรปวงกลม
1. สรางแนวคดใหกบวตถ
✓ Object คอ .....
✓ Attribute’s object ?
✓Method’s object ?
2. สรางคลาสโปรแกรม
เขยนเปน Class Diagram
3. สรางออบเจกตและเรยกใชงานแอทรบวตและเมธอดในคลาส
Q & A