บทที่ 1 : รู้จัก Class ,Attribute และ Object

Download Report

Transcript บทที่ 1 : รู้จัก Class ,Attribute และ Object

Object-Oriented
Programming
การเขียนโปรแกรมเชิงวัตถุ
Wathinee Duang-onnam
FB : AJ Wathinee
Email: [email protected]
คำอธิบำยรำยวิชำ :
 แนวคิดพืน้ ฐำนเกีย่ วกับกำรออกแบบ และพัฒนำโปรแกรมเชิ ง
วัตถุโครงสร้ ำงของภำษำเชิงวัตถุ
 เช่ น คลำส ออปเจ็ค เมธอด
 อินเตอร์ เฟส
 แพคแกจ
 กำรสื บทอดคลำส
 เอนแคปซูเลชั่น
 และพอริมอร์ ฟิซึม
เอพีไอของภำษำทีใ่ ช้ ในกำรเขียนโปรแกรมเชิงวัตถุ
#
TOOL ที่ใช้
 J2SE
32 bit
http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67windows-i586.exe
64 bit
http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67windows-x64.exe
 eclipse
https://www.eclipse.org/downloads/
#
Encapsulation
การปกป้ องข้อมูล ,การซ่อนข้อมูล
OOP
Concept
Inheritance
กฎของการถ่ายทอด, การนากลับมาใช้ใหม่
Polymorphism การพ้องรู ป
Abstract
ความสามารถในการจัดการโครงสร้างข้อมูลแบบ
เชิงนาม
#
สิ่ งที่จะเรี ยนรู้ใน Week นี้
 Class
 Attribute
 Object
 Method แบบคืนค่า(return type)
(void)  ไว้เรี ยนครั้งต่อไป
และไม่คืนค่า
#
Class
• คลาส (Class) - ประเภทของวัตถุ เป็ นการ
กาหนดว่า วัตถุ จะประกอบไปด้วย ข้อมูล(data)
หรื อคุ ณ สมบั ติ ( property) และ พฤติ ก รรม
(behavior)หรื อการกระทา(method) อะไรบ้าง
ซึ่ ง คลาส (เช่ น มนุ ษย์) เป็ นโครงสร้ างพื้นฐาน
ของการเขียนโปรแกรมเชิงวัตถุ
#
Class diagram
Class
Attribute(Data)
Method
Class Name
AttributeName
MethodName ( )
#
public +
ไม่เขียนหรื อว่าง
protected #
private -
[modifier] class ชื่อClass
{
// Attribute_Member
// Method_Member
}
class คือคียเ์ วิร์ดสาหรับกาหนดคลาส
Class_Name
คือชื่อคลาส
Attribute_Member Data หรื อข้อมูลในคลาส
Method_Member เมธรอดในคลาส
สัญลักษณ์ { }
คือของเขตของคลาส
#
Class Rectangle (สี่ เหลี่ยม)
คุณสมบัติของ Rectangle (Attribute)
- กว้าง
- ยาว
กำรกระทำคือ (method) ไว้ เรียนครั้งต่ อไป
- คานวณพื้นที่
#
การสร้าง Class Rectangle (สี่ เหลี่ยม)
Class สี่ เหลีย่ ม
กว้าง
ยาว
คำนวณหำพืน
้ ที่
()
*** Method คานวณหาพื้นที่ ไว้เรี ยนครั้งต่อไป
#
การนา Class ไปใช้หรื อเรี ยกว่า สร้าง Object
*** ค่าเริ่ มต้น หรื อตั้งต้นของตัวแปร Attribute ประเภท int มีค่าเท่ากับ 0
#
การนา Class ไปใช้หรื อเรี ยกว่า สร้าง Object
*** การกาหนดค่าให้ตวั แปร attribute ผ่าน Object
#
การนา Class ไปใช้หรื อเรี ยกว่า สร้าง Object
#
การนา Class ไปใช้หรื อเรี ยกว่า สร้าง Object
#
Object
• วัตถุ (Object) - โดยมากจะเรี ยกว่า อ็อบเจกต์ คือ ตัวตน
(instance) ของ คลาส ซึ่ งจะเกิดขึ้นระหว่าง run-time โดยแต่ละ
อ็อบเจกต์ จะมีข้อมูลเฉพำะของตัวเอง ทำให้
อ็อบเจกต์ แตละ
อ็อบเจกต์ ของ คลำส ซึง่ ใช้
่
source code เดียวกันมีคุณลักษณะและคุณสมบัติที่แตกต่างกัน
#
การสร้าง Object
instance ของ class
รู ปแบบ
ชื่อคลำส ตัวแปรออบเจ็ค = new ชื่อคลำส();
เช่ น
Rectangle rec =new Rectangle();
#
รู้จักกับ หน่ วยควำมจำแบบสแตก และฮีป
(Stack and Heap Memory)
หน่วยความจาที่ภาษาจาวาเข้าไปใช้งานแบ่งได้ 2ประเภท
คือ
หน่ วยควำมจำแบบสแตก โดยหน่วยความจาแบบสแตก
(Stack Memory) ทาหน้าที่เก็บ Primitive Data type และ
Address of Object
 แต่หน่ วยควำมจำแบบฮีป (Heap Memory) ทาหน้าที่
เก็บวัตถุ
#
Rectangle rec;
rec
null
stack
Heap
#
Rectangle rec;
rec = new Rectangle();
Rectangle
width=0.0
height=0.0
rec 0x02AB257
stack
Heap
#
ข้อแตกต่างระหว่าง Attribute กับตัวแปรอื่นๆ
คือ
• ค่าเริ่ มต้นที่ถูกกาหนดอัตโนมัติ
#
Rectangle rec = new Rectangle();
Rectangle
width=0
height=0
main
{ rec
0x02AB257
stack
Heap
#
สรุป : กำรสร้ ำง Object
 Object ที่สร้างขึ้นจาก class บางครั้งเรี ยกว่า “instanceของ
คลาส”
 ซึ่งเราสามารถสร้างออบเจ็คขึ้นมาจากคลาสหนึ่ง ๆ ได้
มากกว่า 1 Object
 การสร้าง object สามารถทาได้โดยใช้คียเ์ วริ ด new
เช่น
ชื่อคลาส obj=new ชื่อคลาส([อากิวเมนต์]);
#
Rectangle rec1 = new Rectangle();
Rectangle rec2 = new Rectangle();
Rectangle
Width =0
Height =0
Rectangle
main
{
rec2 0x02AB334
rec1 0x02AB257
stack
Width=0
Height =0
Heap
#
กำรเรียกใช้ Attribute ของ Class
รู ปแบบที่ 1
new ชื่อคลาส().ชื่อAttribute;
ตัวอย่าง
new Rectangle().width;
#
new Rectangle().width=3.0;
System.out.println("ค่ ำของ Width คือ"+new Rectangle().width);
new Rectangle()
0.0
width=3.0
Height=0.0
new Rectangle()
main
width =0.0
Height =0.0
{
stack
Heap
กำรเรียกใช้ Attribute ของ Class
รู ปแบบที่ 2 (แนะนำให้ ใช้ วธิ ีนี)้
instance.ชื่อAttribute;
ตัวอย่าง
Rectangle rec=new Rectangle();
rec.width;
#
Rectangle rec=new Rectangle();
System.out.println("ค่ ำของ Width คือ"+rec.width);
rec.width=3.0;
System.out.println("ค่ ำของ Width คือ"+rec.width);
0.0
3.0
=3.0
width =0.0
Heigth =0.0
main
{
rec 0x02AB257
stack
Heap
#
#
Rectangle rec1=new Rectangle();
3.0
rec1.width=3.0;
0.0
System.out.println("ค่ ำของ Width คือ"+rec1.width);
Rectangle rec2=new Rectangle();
System.out.println("ค่ ำของ Width คือ"+rec2.width);
width
heigth
{
main
width =3.0
heigth
rec2 0x02AB247
rec1 0x02AB244
stack
Heap
#
#
ค่าที่กาหนด auto ให้กบั Attribute ทางาน
เมืต่โนมั
อไหร่
 ค่าเริ่ มต้นที่ถูกกาหนดอั
ติ ?????
Constructor ????
#
Garbage Collection
• Object ที่ไม่ถูกใช้งานอีกต่อไปแล้วจะ
กลายเป็ นขยะ (garbage) ค้างอยูใ่ น
หน่วยความจา ดังนั้น Garbage Collection
หรื อ “ตัวกาจัดขยะ” จะทาการเคลียร์พ้ืนที่น้ ี
ให้เป็ นพื้นที่วา่ ง (คืนหน่วยความจาส่ วนนั้นๆ
ให้กบั ระบบ) เพื่อจะได้นาพื้นที่น้ ีกลับมาใช้
งานได้อีก
#
Rectangle rec1 = new Rectangle();
Rectangle rec2 = new Rectangle();
ตัวอย่าง 1
Rectangle
rec2=rec1;
width
height
Rectangle
{
main
width
height
0x02AB257
rec2 0x02AB334
rec1 0x02AB257
stack
Heap
#
Rectangle rec1 = new Rectangle();
Rectangle rec2 = new Rectangle();
ตัวอย่าง2
Rectangle
rec2=null;
width
height
Rectangle
{
main
rec2 0x02AB334
null
rec1 0x02AB257
stack
width
height
Heap
#
ฝึ กปฏิบัติ
- สร้ ำง Class Student
- สร้ ำง Class Car
- สร้ ำง Class Employee
สนใจสร้ ำงเฉพำะ Attribute ก่อน method ไม่
ต้ องสร้ ำง
#