OOP (Object-Oriented Programming)

Download Report

Transcript OOP (Object-Oriented Programming)

OOP
(Object-Oriented Programming)
การเขียนโปรแกรมเชิง
วัตถุ
TOPIC
 ความหมายของ OOP






Primitive & Reference Type
Scope of variable
Class & Object
Object Concept
Access Modifier
UML Class Diagram
ความหมายของ OOP
OOP คือสไตล์การเขียนโปรแกรม(Paradigm)
ฉะนัน
้ หากผู ้ผลิตซอฟแวร์ทม
ี่ ค
ี วามคิดแบบ non-OOP
จะเลือกผลิตซอฟแวร์ด ้วยภาษาทีส
่ นับสนุน OOP แค่ไหน
ผลลัพธ์ทไี่ ด ้ก ้อคือ ซอฟแวร์ทไี่ ม่เป็ น OOP
ผู ้ผลิตซอฟแวร์ไม่จาเป็ นต ้องผลิตซอฟแวร์ทเี่ ป็ นไปตาม
แนวคิดแบบ OOP
แต่เมือ
่ ได ้ รับรู ้ถึงประโยชน์ของการผลิตซอฟแวร์ตาม
แนวคิดOOPแล ้ว
แน่ใจหรือ ?
ทีจ
่ ะไม่ผลิตซอฟแวร์ตามแนวคิดOOP
Primitive & Reference Type
Primitive Type คือ Type ทีม
่ อ
ี ยูก
่ อ
่ นแล ้ว
่ int , float ,double
เชน
แต่บางครัง้ Type เหล่านีก
้ ้อตอบสนองความต ้องการ
ของเราไม่ได ้
เราจึงจาเป็ นต ้องสร ้างTypeขึน
้ มาเองUserDefineType(UDT)
ซงึ่ Type เหล่านี้ มีลักษณะเป็ น Reference Type
ต ัวอย่างของ Primitive & Reference
Type
Primitive Type Code
Reference Type Code
int a = 5;
int b = 10;
Circle a = new Circle(5);
Circle b = new Circle(20);
a = b;
a = b;
Primitive Type
Reference Type
Memory
Memory
a = 10
5
a
b = 10
b
5
20
Scope of variable
Scope of variable หรือขอบเขตของ ตัวแปร
ตัวแปรโดยสว่ นมากแล ้วจะมีขอบเขตเป็ น
Global variable และ Local variable
Global variable คือตัวแปรทีส
่ ามารถเข ้าถึงได ้
จากทัง้ Class
Local variable คือตัวแปรทีเ่ ข ้าถึงได ้เฉพาะใน
Method
What is Global and Local variable
list
name
langs
myArray
Class & Object
Class คือ code ทีเ่ ขียนขึน
้ เพือ
่ เป็ นเบ ้าหลอม
Object
ถ ้าเราเปรียบ Class ให ้เหมือนกับพิมเขียว
Object ก ้อคือวัตถุทถ
ี่ ก
ู สร ้างขึน
้
ิ้ จากพิมเขียวเดียว
ซงึ่ วัตถุถก
ู สร ้างได ้หลายชน
่ กัน Class ก ้อสามารถสร ้าง Object ได ้หลาย
เชน
Object
ตัวอย่างของ Class & Object
Object
Object
Object
Class
** Object ทีถ
่ ก
ู สร ้างขึน
้ จาก Class เดียวกันไม่จาเป็ นต ้องมีลก
ั ษณะเหมือนกัน
Object Concept
หัวใจสาคัญของ Object คือ
1.State
2.Behavior
3.Identity
State
State หรือ attribute
คือคุณลักษณะ หรือ สถานะของ Object ต่างๆ
มักอยูใ่ นรูปของตัวแปรชนิด Global variable
่ Object รถยนต์ มี state เป็ นสฟ
ี ้า
เชน
**Object หนึง่ สามารถมี State หรือ attribute หลายช
Car มี color,velocity,acceleration เป็ น State
Behavior
Behavior หรือ Method
่
เป็ นความสามารถที่ Object มี เชน
รถยนต์ม ี Method
Drive(),Brake(),turnLeft(),turnRight()
หมายความว่า รถยนต์ สามารถทีจ
่ ะ ขับ,เบรค,เลีย
้ ว
้
ซาย,เลี
ย
้ วขวาได ้
Behavior(Part 2)
Method แบ่งออกได ้ 3 ประเภท
1.Constructor
2.Accessor
3.Mutator
Constructor
Constructor คือ Method ทีท
่ าการสร ้าง หรือกาหนดค่าเริม
่ ต ้นให ้ Object
นัน
้ ๆ
ั เจนคือ
ลักษณะของ Method Constructor ทีส
่ งั เกตได ้ชด
ื่ Method จะตรงกับชอ
ื่ ของ Class นัน
ชอ
้ ๆ และ จะไม่ม ี return Type
่
เชน
Class Person
public Person(string name,string phone){
this.name = name;
this.phone = phone;
}
Class Main
public static void Main(){
Person p1 = new Person(“Exceed”,”026405678”);
}
จากตัวอย่างนี้ p1 จะมี name เป็ น “Exceed” และ phone เป็ น “026405678”
Accessor
Accessor คือ Method ทีท
่ าหน ้าทีใ่ นการ return ค่าต่างๆ
ื่ โดยใชค้ าว่า get เชน
่
มักจะตัง้ ชอ
getName(),getPrice(),getColor()
Mutator
Mutator คือ Method
ทีท
่ าหน ้าทีใ่ นการเปลีย
่ นแปลงค่าของ State หรือ attribute
ื่ Method โดยใชค้ าว่า set เชน
่
มักจะตัง้ ชอ
setName(),setPrice()
Identity
Identity หมายถึง การที่ Object ต่างๆมี
เอกลักษณ์
แม ้ Object นัน
้ ๆ จะถูกสร ้างจาก class เดียวกัน
Object
Color = silver
Price = 10,000,000
ID = งจ1919
Object
Class
Color = silver
Price = 10,000,000
ID = กข1234
Access Modifier
คือการเข ้าถึงข ้อมูล ทัง้ State และ Behavior
 Public คือการเข ้าถึงข ้อมูล ได ้จากทุก Class
 Private คือการยอมให ้เข ้าถึงข ้อมูลเฉพาะภายใน
Class เท่านัน
้
What is state or behavior ?
State
Behavior
UML Class Diagram
UML (Unified Modeling Language)
เมือ
่ กล่าวถึง OOP ก ้อมีความจาเป็ นทีจ
่ ะต ้องกล่าวถึง UML
เนือ
่ งจาก UML สามารถแสดงสว่ นประกอบ ในการสร ้างโปรเจค
ในรูปของ OOP
และเป็ นการชว่ ยให ้ทีมเข ้าใจการแบ่งงาน หรืองานทีไ่ ด ้รับ
มอบหมายได ้ง่ายขึน
้
UML Class Diagram Example
Car
-name:string
-price:int
-color:string
+Car(string:name,int:price,string:color)
+getName():string
+getPrice():int
+getColor():string
/*
Class Name
State
Behavior
+ public
- private
*/
Class Diagram Example(2)