Lec7-01 : OOP (Object-Oriented...
Transcript of Lec7-01 : OOP (Object-Oriented...
-
Lec7-01 : OOP(Object-Oriented Programming)
16-01-2563
-
Project งานกลุ่ม• กลุม่ละ 5 คน
• พฒันาระบบ ใชห้ลกัการ OOP ดว้ยภาษา Java + NetBean + MySQL
• Source code หรอืตวัโปรแกรม
• รปูเลม่รายงาน
• ค าน า
• สารบญั
• บทที ่1
• หลกัการและเหตผุล /ทีม่าและความส าคญัของปญัหา
• วตัถปุระสงค์
• ขอบเขต
• แผนการด าเนนิงาน Gantt Chart
• เครือ่งมอืทีใ่ช้
• ประโยชนท์ีค่าดวา่จะไดร้บั
• บทที ่2 Bussiness Rule
• บทที ่3 ผลการด าเนนิงาน
• Class Diagram
• หนา้จอโปรแกรม
• บทที ่4 สรปุ
• บรรณานกุรม
ท ำเป็น Clip Video ลง Youtube- แนะน ำงำน (Introduction)
- ช่ือเรือ่ง- สง่งำน อ. ดร. นฐัพงศ ์สง่เนียม- รูป- เป็นสว่นหนึ่งของรำย วิชำ ..รหสัวิชำ- แนะน ำสำขำ ..คณะ .. ม.- แนะน ำสมำชิกในกลุม่
- อธิบำยงำน (Work)- หลกักำรและเหตผุล- อธิบำยงำนครำ่ว ๆ
- อธิบำย- Code
- สรุป
1.
2.
3.
สง่วนัสดุทา้ยวนัสอบปลายภาค
CD + เลม่รายงาน + Youtube Link
-
ความรู้เบ้ืองตน้ เก่ียวกบั Object Oriented Programming
• ควำมรูเ้บือ้งตน้เก่ียวกบั Class• ควำมรูเ้บือ้งตน้เก่ียวกบั Object• ควำมรูเ้บือ้งตน้กำรสรำ้ง Class ในภำษำจำวำ• ควำมรูเ้บือ้งตน้กำรสรำ้ง Object ในภำษำจำวำ• กำรสรำ้ง เมธอด Method• กำรเรยีกใชง้ำน Method
วิชาทีน่ศ. ควรเรียนก่อน OOAD : Object Oriented Analysis and Design
-
Object Oriented Programmingหลกัการเขยีนโปรแกรมเชงิวตัถ ุตามแนวคดิของ Alan kay ซึง่เป็นบคุคลทีน่ าเสนอหลกัการเชงิวตัถยุคุแรก ๆ ก็ไดใ้หค้วามเห็นวา่
• โปรแกรมเชงิวตัถจุะตอ้งมองทกุสิง่ ทกุอยา่งในเป็นวตัถุ
• ทกุสิง่ใน Program หรอื Software มองใหเ้ป็นวตัถุ
• วตัถ ุคอื สิง่ทีเ่ราสนใจ ทีม่/ีประกอบไปดว้ยลกัษณะ (Attribute) และ พฤตกิรรม (behavior)
• Attribute ลกัษณะทีบ่ง่บอกถงึวัตถนัุน้ ๆ
• Behavior/Function ฟังกช์นั หรอืหนา้ที ่พฤตกิรรม ของวตัถนัุน้ ๆ
• การสบืทอด / การรับทอดมรดก (Inheritance)
• พอลมิอรฟิ์ซมึ (Polymorphism)
• การซอ่นรายละเอยีด / การหอ่หุม้ (Information Hiding / Encapsulation)
-
Object Oriented Programming
O1 O2
O3O4
message
message
message
message
-
ประเภทของ Objectวตัถจุะแบง่ออก เป็น 2 ประเภท คอื
• Tangible Object รปูธรรม
• คน
• สิง่ของ
• สตัว์
• วัตถทุีจั่บตอ้งได ้ รถยนต ์ เครือ่งบนิ อาหาร สนิคา้ กระดาษ โตะ๊ เกา้อี ้ อาจารย ์นักศกึษา ลกูคา้ หลอดไฟ ตูเ้ย็น รถมอเตอรไ์ซต์ ฯลฯ
• Intangible Object นามธรรม
• สิง่ทีม่องไมเ่ห็น ไมส่ามารถจับตอ้งได ้
• กฎระเบยีบ
• กฎเกณฑ์
• ขอ้บงัคบั
• กฎหมาย
• เงนิ เป็นสกลุเงนิ
• ภาษี
• ภาพยนตร ์ ทีห่มายถงึตวัเรือ่ง
• นวนยิาย
• บทละคร บทบาท
• การประมวลผล
ตูเ้ย็นAttribute- ขนาด- สี
- ยีห่อ้- ราคา
Function/Behavior- เปิด- ปิด- ใสอ่าหาร- ท าความเย็น / ปรับอณุหภมูิ
Attribute
Function/Behavior
กฎหมายAttribute
- มาตรา- ชือ่กฎหมาย
Function/Behavior- บงัคบั- แกไ้ข
-
Class & Instance
-
What is a class?
-
Attribute ของคนAttribute
- ช่ือ- นำมสกลุ- อำยุ- สีผิว- แขน- ขำ - ล ำตวั- ฯลฯ
อะไรท่ีบง่บอกวำ่เป็นคนได ้นั่นคือ attribute
-
Behavior ของคนBehavior
- กินได้- นอนได้- เดิน- พดู- รอ้งเพลง- ..บอกช่ือได้- บอกอำยไุด้- ..
สิ่งต่ำง ๆ ควำมสำมำรถตำ่งท่ีคน ท ำได ้ก็คือ Behavior ของคน
-
Attribute
Attribute- จอ
- ย่ีหอ้- แปน้พิมพ์- เมำส์- เคส- ...กวำ้ง- .. นน.- ... สงู- ...สี
-
CarAttribute
- ลอ้- กระจก- ประตู- ย่ีหอ้- ปำ้ยทะเบียน- เงนิ x- กันชน- ไฟ- ตัวถัง- พวงมาลัย- สี- เคร่ืองยนต ์- เบาะ- ฯลฯ
Problem Domain
เรำจะพดูถึงสว่นส ำคญั หรอื ลกัษณะเดน่ของวตัถนุัน้ ๆเน่ืองจำกไม่สำมำรถสนใจทกุสิ่งอย่ำงไดเ้ก่ียวกบัวตัถนุัน้
ดมุลอ้ กำ้นลอ้รถน๊อตหมอ้น ำ้ไมใ่ช่สิ่งท่ีสนใจ จงึไมไ่ดพ้ดูถึงเรยีกวำ่ Problem Domain
-
Behavior CarAttribute
- ลอ้- กระจก- ประตู- ย่ีหอ้- ปำ้ยทะเบียน- เงนิ x- กันชน- ไฟ- ตัวถัง- พวงมาลัย- สี- เคร่ืองยนต ์- เบาะ- ฯลฯ
Function/Behavior- สตำรท์- หยดุ- เลีย้ว- เปิดไฟ-เปิดเพลง- ฯลฯ
- เปิดประตู- เปิดกระจก- เปิดทำ้ยรถ- ฯลฯ
-
Class
• วตัถท่ีุ ลกัษณะ และฟังกช์นั เดียว จดัใหอ้ยูใ่นกลุม่เดียวกนั เรยีก กลุม่ของวตัถเุดียวกนั วำ่ คลำส (class)• คลำส คือ ประเภท ชนิด หรอื กลุม่ของวตัถุ
-
แมว ไมจ่ดัเป็น รถ เพรำะไมมี่ลอ้ ไมมี่พวงมำลยั
บู ไมจ่ดัเป็น รถ เพรำะไมมี่ลอ้ ไมมี่พวงมำลยั
-
CAR , CAT , DOG คนละคลาส
บู คือสนุขัตวัหนึ่ง instance ของ คลำส dog
-
Class Diagram (UML)
ท ำไม ไมร่ะบ ุย่ีหอ้ และ รุน่ ของรถ***ท ำไม ไมพ่ดูถึงท่ีอยู ่หรอื เพศ ของนกัเรียน***Problem Domain
-
MobilePhone
String bandname
Button button
Screen screen
Antenna antenna
Simm simNet
call()
receive()
hangup()
sendSMS()
การสร้างคลาส
• Data member…attributes
• Method member..function/behavior
MobilePhone
- Bandname : String
- bunton : Button
- screen : Screen
- antenna : Antenna
- simNet : Simm
+ call()
+ receive()
+ hangup()
+ sendSMS()
UML : Class diagramJava : Class diagram
-
ตั้งช่ือ Test_Mobile
-
• ใน 1 ไฟล ์สำมำรถมีคลำสไดห้ลำยคลำส
• แตจ่ะมีคลำสหนึ่งท่ี เป็น public class• ซึง่เป็นคลำสท่ีตรงกบัช่ือไฟล์
• Test_Mobile.java
-
Attribute (OO) → Data Member (Java)
Accessibility- Private
+ Public# Protected
MobilePhone
- brandname : String
- button : Button
- screen : Screen
- antenna : Antenna
- simNet : Simm
+ call()
+ receive()
+ hangup()
+ sendSMS()
Data Member
Accessibility/Modifier Type attr_name;
private String brandname;
private String model;
Modifier ค ำประกอบprivatepublicprotected
default
-
Attribute
• PDT: Primitive Data Type
• ADT: Abstract Data Type
IntegralFloating-PointBooleanCharacter
รุน่ Stringย่ีหอ้ Stringรำคำ double
จอภำพ จอปุ่ มกด ปุ่ มซิมเน็ต ซิมเสำสญัญำณ เสำ
ดงันัน้ ตอ้งนิยำมคลำสเหลำ่นีข้ึน้มำเองจอภำพ จอปุ่ มกด ปุ่ มซิมเน็ต ซิมเสำสญัญำณ เสำ
byte → Byteshort → Shortint → Integerlong → Long
Type Wrapper Class
PDT
-
นิยามคลาสเอง
• Button
• Screen
• Antena
• Simnet
-
การสร้าง Behavior(OO)→Method Member(Java)
- Private
+ Public
# Protected
MobilePhone
- brandname : String
- button : Button
- screen : Screen
- antenna : Antenna
- simNet : Simm
+ call()
+ call():boolean
+ receive()
+ hangup()
+ sendSMS()
Accessibility void/return Method_name(parameter list) {
}
Method Member
public void call(String number) {System.out.println(“calling to ..” + number);
}
public boolean call(String number) {System.out.println(“calling to ..” + number);return true;
}
-
Method Member
-
Void method
return method
-
PDT: Primitive Data Type
ADT: Abstract Data Type
-
class
Mobile
Mobile-A SamsungNote9
iPhone XR
object
-
การสรา้งวตัถจุากคลาส ดว้ย keyword new
รปูแบบ class_name a;
a = new class_name();
ตวัอยา่ง Mobile samsung;
samsung = new Mobile();
รปูแบบ class_name a = new class_name();
ตวัอยา่ง Mobile samsung = new Mobile();
1. ประกาศตวัแปรเป็นวัตถขุองคลาสนัน้กอ่น2. สรา้งอนิสแตนซด์ว้ย new
-
การสรา้งวตัถ ุจากคลาส Mobile
new
object
class
Samsung Note9 iPhone XS
-
new
object
class
Samsung Note9 iPhone XS Huawei Y9huawei p20
-
Object Oriented Programming
O3O4
ขาย()
message
message
message
huawei p20
-
การเรยีกใชง้าน void Method
• รปูแบบ• ชือ่วตัถ.ุเมธอด();
• ObjectName.Method();
• ตวัอยา่ง• samsung.call(“0990874433”);
-
การเรยีกใชง้าน Return Method
• จะตอ้งมตีวัแปรมารองรับคา่ทีถ่กู return กลบัมา
• หรอื แสดงคา่ที ่return ในSystem.out.println() ดงัตวัอยา่ง
P.35
-
Call()
sendSMS()
sendLine(“Sticker”)
playFacebook()
Camera()
กำรท ำงำนระหวำ่งวตัถุ
นฐัพงศ ์สง่เนียม iPhone XR.call(“0990874433”)
-
MobilePhone
-
Attribute … Data Member
class Mobile {
//data member
private String BrandName;
}
MobilePhone
- String bandname
Button button
Screen screen
Antenna antenna
Simm simNet
call()
receive()
hangup()
sendSMS()
accessibility
- private+ public# protected
default
-
MobilePhone
- String bandname
Button button
Screen screen
Antenna antenna
Simm simNet
call()
receive()
hangup()
sendSMS()
Button
Aggregateวตัถ ุจะมีแอตทรบิิวทท่ี์เป็นเป็นสว่นประกอบแบบวตัถุ
Aggregation Abstrationการประกอบกันจากวัตถุย่อยๆ เป็นวัตถุใหญ่ขึน้เช่น รถ เกิด ล้อ หลังคา เครื่องยนต ์พวงมาลัย .... ประกอบกันเป็นรถยนต์
-
MobilePhone
Button Simm Screen
Antenna
Optional Component
RequiredComponent
Empty Class
-
ภาษาเชิงวตัถุยอมให ้นิยาม Typeข้ึนใหม่ได ้(Type ของวตัถุ กคื็อ class นัน่เอง)
-
Method ในภาษาจาวา
•มี Return จะส่งผลกลับมายังส่วนเรียกใช้งาน•ไม่มี Return จะมี void น าหน้า
-
การเขียน Method ท่ีไม่มี Return
Accessibility void ….. () {
}
Parameter list มไีดม้ากกวา่ 1หรอืไม่มกีไ็ด ้การสง่ผา่นพารามเิตอร ์ม ี2 วธีิ- pass by value /copy- pass by referece
Modifier void ….. () {
}
public / private / protected
Parameter list มไีดม้ากกวา่ 1หรอืไม่มกีไ็ด้
-
การเขียน Method ท่ีไม่มี Return ที่มี parameter
Accessibility void ….. () {
}
Parameter list มไีดม้ากกว่า 1หรอืไม่มกีไ็ด้
Calling……
-
การเขียน Method ท่ีมีการ Return
accessibiliy Return-Type method-name ( parameter list) {
[ statement ]
return value
}
รูปแบบ
-
Encapsulation หลกัการห่อหุม้
• Data
• กำรจดักำรกบั DataTelevision
- brandName: String- volume : Integer- picture : Picture- chanel : Integer
+ TurnON()+ TurnOff()+ Volumn(int vol)+ Chanel(int ch)+ Setting()
เปิด()
เปิด()
Information Hidingการซ่อนรายละเอยีด
ปรบัเสียง()
+1- 1
-
MobilePhone
- bandname : String
- button : Button
- Screen : Screen
- antenna : Antenna
- simNet : Simm
- price : double
call()
receive()
hangup()
sendSMS()
getBrandname():String
OOVisibility
JavaAccessibilityModifier
+ public- Private# protecteddefault
PDT
ADT
return
-
Getter / Setter Method
• Getter คือ เมธอด ท่ีใชใ้นกำรเรยีกด ู/ คืนคำ่ของ Attribute นัน้ๆ
• Setter คือ เมธอด ท่ีใชใ้นกำรก ำหนดค่ำ ให ้กบั Attribute นัน้
MobilePhone
- bandname : String
- button : Button
- Screen : Screen
- antenna : Antenna
- simNet : Simm
- price : double
call()
receive()
hangup()
sendSMS()
getBrandname():String
setBrandname(String bd)
-
Setter/Getter
• การก าหนดยีห่อ้โทรศพัทม์อืถอื• setBrandName()
• การเรยีกดยูีห่อ้• getBrandName()
-
ผลลพัธ์
-
Attributes พืน้ฐานมักจะถกูก าหนดใหม้ ีmethod ส าหรับ set และ getทกุตวัตามหลักการเชงิวตัถุ
• เราใหท้ างานกบัขอ้มลูผา่น เมธอด
ถา้โทรทศัน ์อยูใ่นระบบรา้นขายอปุกรณ์ไฟฟ้าสิง่ทีเ่ราจะสนใจ คอื ราคา price ดงันัน้โทรทศันจ์ะตอ้งสามารถก าหนดราคาสนิคา้ และเรยีกดรูาคาสนิคา้ได ้ก็จ าเป็นตอ้งจะสรา้งเมธอด getPrice() ,setPrice()
-
Setter เรยีกอกีอยา่งวา่เป็นMutator Method
Getter เรยีกอกีอย่างวา่เป็น
Accessor Method
-
โปรแกรมเชงิวัตถ ุ: ระบบการเรยีนการสอน
สอน , ตดัเกรด
เรยีน , ลงทะเบยีนเรยีน , รักษาสภาพ
อาจารย์
อาจารย ์ดร. นัฐพงศ ์สง่เนียม
นักเรยีน
สมชาย สมหญงิ สมศร ีสมนกึ
ชือ่ต าแหน่งเงนิเดอืน
สอน()ตดัเกรด()
ชือ่เพศรหสัผลการเรยีน
เรยีน()ลงทะเบยีน()สอบ()รักษาสภาพ()
ระบบการเรยีนการสอน
อาจารย ์ดร. นัฐพงศ ์สง่เนยีมอาจารย ์รณกร รัตนธรรมมาอาจารย ์สมชายอาจารย ์สมหญงิ
-
โปรแกรมเชงิวัตถ ุ: ระบบการจองหอ้งพักโรงแรม
จอง เขา้พัก ยกเลกิ
ออกใบจอง บนัทกึการจอง ยกเลกิ
ลกูคา้
นายนัฐพงศ ์สง่เนียม
พนักงาน
ชือ่ทีอ่ยู่เบอรโ์ทร
จอง()ยกเลกิ()เขา้พัก()
...
...
...
...
...()
...()
...()
...()
...()
ระบบการจองหอ้งพักโรงแรม
นาย นัฐพงศ ์สง่เนยีมนาย สมชายนางสาว สมหญงิ
หอ้งพัก
...
...
...
...
...()
...()
...()
...()
...()
เชค็หอ้งพักบอกสถานะ
-
Use case การจองหอ้งพกัโรงแรม
จอง
ลกูคา้
ลกูคา้ทั่วไป สมาชกิ
ยกเลกิจอง
เขา้ระบบ
เขา้พัก
เชค็เอาท์
ตรวจสถานะของหอ้งพัก
พนักงาน
-
การสร้างอินสแตนซ์ instance
•ภำษำจำวำ จะใช ้Keyword new•รูปแบบ
Type / Class var-name;Var-name = new Class()/Type
Type / Class var-name = new Class()/Type
1.
2.
-
การสร้างวตัถุจากคลาส MobilePhone ในรูปแบบต่างๆ
-
หลกัการเชิงวตัถุ จะไม่ยอมใหก้ระท ากบัตวัแปร/ขอ้มูล โดยตรง• ตัวแปร price เป็นแบบ private ไม่
สามารถเข้าถึงจากข้างนอกคลาส MobilePhone ได้
• ถ้าจะเข้าถึงต้อง ผ่านเมธอดที่มีเท่านั้น ถ้าไม่มีก็เข้าไม่ได้
• setPrice()
• getPrice()
-
แบบฝึกหดั
• จงเขียนโปรแกรมเพ่ือสรำ้งคลำสและวตัถ ุตำมรูปนี ้
Student
- Name : String- Tel : String- Address : String- Email : String- BOD : String- GPA : double
+ setName(String n)+ getName() : String+ setAddress(String addr)+ getAddress() : String+ setEmail(String e)+ getEmail():String+ setGPA(double gpa)+ getGPA() : double
Somchai:Student Somying:Student Somboon:Student
Is member ofobjects
class
-
แบบฝึกหดั
• จงเขียนโปรแกรมเพ่ือสรำ้งคลำสและวตัถ ุตำมรูปนี ้
Student
- Name : String- Tel : String- Address : String- Email : String- BOD : String- GPA : double
+ setName(String n)+ getName() : String+ setAddress(String addr)+ getAddress() : String+ setEmail(String e)+ getEmail():String+ setGPA(double gpa)+ getGPA() : double
Somchai:Student Somying:Student Somboon:Student
Is member ofobjects
class
Test_Student
-
แบบฝึกหดั
• จงเขียนโปรแกรมเพ่ือสรำ้งคลำสและวตัถ ุตำมรูปนี ้
Student
- Name : String- Tel : String- Address : String- Email : String- BOD : String- GPA : double
+ setName(String n)+ getName() : String+ setAddress(String addr)+ getAddress() : String+ setEmail(String e)+ getEmail():String+ setGPA(double gpa)+ getGPA() : double
Somchai:Student Somying:Student Somboon:Student
Is member ofobjects
class
SUBJECTAssociation
enroll