184
CPE4235 การวิเคราะห์และโปรแกรมเชิงวัตถุ จิตกร พิทักษ์เมธากุล Java Web Developer @Geniustree Co.,Ltd i am programmer.”

สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

  • Upload
    -

  • View
    300

  • Download
    1

Embed Size (px)

Citation preview

Page 1: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235 การวเคราะหและโปรแกรมเชงวตถ

จตกร พทกษเมธากลJava Web Developer @Geniustree Co.,Ltd“i am programmer.”

Page 2: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

การเดนทางหมนล ตองเรมตนทกาวแรกเสมอ

CPE4235

Page 3: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

ทบทวน

CPE4235

Page 4: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

• Data type• Primitive (byte, short, int, long, …) • Reference

• String (pool, immutable)• Array

• if else, switch case• ++variable, variable++• for, while, do while• break, continue

CPE4235

Page 5: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

OOP(Object Oriented Programming)การเขยนโปรแกรมเชงวตถ

CPE4235

3

Page 6: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

เนอหา

• Class• Object• Package• Interface• Abstract class

CPE4235

interface

class

package

Page 7: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

OOP คออะไร ?

Page 8: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

OOP (Object Oriented Programming)

เปนวธการเขยนโปรแกรม โดยมององคประกอบทงหมดของโปรแกรมเปนเชงวตถ (object)

Page 9: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

object

object

object

objectobject

Page 10: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

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

“Object คยกบ Object”

Page 11: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

นแหละ OOP concept!

Page 12: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Java เขยนโปรแกรมกนแบบนแหละ คยกนดวย Object

Page 13: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

หวดด Object 2

หวดด Object 1

ปใหมนไปเทยวไหนหรอ Object 1

เราวาเราจะขนเหนออะ Object2

นายจะไปกะเราอะปาวววววว

Object 1 Object 2

Page 14: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

วาวววว

ปาว

ทเราบอกจะขนเหนออะ

Object 1 Object 2

นายจะไปเชยงใหมหรอ Object 1

เหนอสกลนคร Object2

Page 15: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

......

Object 1 Object 2

สา.................

“บงกาฬ”

Page 16: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

แลว นกศกษาละ ไปเทยวไหนกน?ปใหมน

Page 17: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ตอมาคอคณสมบตหรอหลกเกณฑทจะน าไปสการเปน OOP

มอย 3 อยางดวยกนคอ1. การหอหม (Encapsulation)2. การสบทอด (Inheritance) และ3. การพองรปหรอการมไดหลากหลายรปแบบ (Polymorphism)

Page 18: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

แตกอนทจะอธบายทง 3 องคประกอบ เรามาท าความรจกกบพนฐานอนๆ กนกอน

กอนทจะไป OOP

Page 19: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

การเขยนโปรแกรมดวยภาษา javacode หรอ logic ตางๆ จะถกเขยนไวในสงทเรยกวา

“class”

Page 20: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class

Page 21: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

แลวตกลง class มนคออะไร ?

Page 22: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เหนคนเรยน OOP ใครๆ กพดถงแต “class” กน

Page 23: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เราเขยนกนมาแลว

public class HelloWorld {

// code อยในน

}

class { block }

Page 24: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เราเขยนกนมาแลว

public class HelloWorld {

public static void main (String [] args) {System.out.println(“Hello World.”);

}}

Page 25: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class

• คอสวนทใชในการเขยน code• คอตนแบบ แมแบบ แมพมพ (Blueprint) ทจะน าไปสราง

เปน object• คอสวนทก าหนดคณสมบต (Attribute) และพฤตกรรม

(Behavior) ของ object

Page 26: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class คอสวนทใชในการเขยน code

Page 27: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class EmailValidator {

public void validate() {//logic

}}

Page 28: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class EmailValidator {

public void validate() {//logic

}} CODE

Page 29: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class คอตนแบบ แมแบบ แมพมพ (Blueprint) ทจะน าไปสรางเปน object

Page 30: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Page 31: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class คอคอสวนทก าหนดคณสมบต (Attribute) และพฤตกรรม (Behavior) ของ object

Page 32: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Behavior

class

Attribute

Page 33: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ถาเราเขยน class นกฮก

เรากก าหนดคณสมบต หรอพฤตกรรมของนกฮกลงไปใน class

วานกฮก มลกษณะอยางไรมพฤตกรรมเปนอยางไร

Page 34: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ถาเราเขยน class pokemon

เรากก าหนดคณสมบต หรอพฤตกรรมของ pokemon ลงไปใน class

วา pokemon มลกษณะอยางไรมพฤตกรรมเปนอยางไร

Page 35: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235 พกะจ (Class)

คณสมบต (Attribute)เปนโปเกมอนจ าพวกหน มรปรางเตย เลก หนากลม เปนโปเกมอนรปแบบไฟฟา

พฤตกรรม (Behavior)ปลอยพลงกระแสไฟฟาทมความรนแรงหลากหลายผานทางแกมสแดงและหาง

Page 36: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ไวยากรณ (Syntax) ในการประกาศ class ของภาษา java

class ClassName {

//code

}

Page 37: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ไวยากรณ (Syntax) ในการประกาศ class ของภาษา java

class ClassName {

//code

}

Scope

Page 38: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ไวยากรณ (Syntax) ในการประกาศ class ของภาษา java

class ClassName {

String attribute; void behavior() { }

}

Page 39: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ไวยากรณ (Syntax) ในการประกาศ class ของภาษา java

class ClassName {

String attribute; //data type เปนอะไรกไดvoid behavior() { } //อาจม return type และ parameter

}

Page 40: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ไวยากรณ (Syntax) ในการประกาศ class ของภาษา java

class ClassName {

int attribute; String behavior(int x){ return x; }

}

Page 41: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

• คณสมบต (Attribute) คอ field ขอมล• พฤตกรรม (Behavior) คอ method หรอ function การท างาน

Page 42: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

วตถ (Object)

Page 43: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Object

• คอสงทถกสราง/หลอออกมาจาก Class• คอสวนทถกถายทอดคณสมบตหรอพฤตกรรมของ Class

Page 44: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Class เปนแบบไหน Object กเปนแบบนน

เชนเรานยาม class สงโต ไวยงไง Object ทถกสรางมาจาก class สงโต กเปนแบบนน

Page 45: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235 Class สงโต

Page 46: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235 มนควรทจะเปนแบบน

Page 47: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235 ไมใชแบบน

Page 48: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class คอการประกาศหรอนยาม

object คอสงทถกสรางมาจากสงทนยามไว

“ตองเหมอนกนเดะ”

Page 49: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ไวยากรณ (Syntax) ในการสราง object จาก class

class Lion {

}

Lion simba = new Lion();

Page 50: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เราใช keyword “new”ในการสรางหรอหลอ object มาจาก class นนๆ

Lion simba = new Lion();

Page 51: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

บางครงเรากเรยก object ทถกสรางมาจาก class วา“instance”

Lion simba = new Lion();

Page 52: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ทก object ทถกสรางจากค าสง new จะอสระจากกน คอจองพนทหนวยความจ าคนละต าแหนง ไมมความเกยวของกน

object

object

object

Page 53: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Lion simba = new Lion();

object

simba

Memory

Page 54: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Lion simba = new Lion();simba = new Lion();

object

simba

Memory

object

Page 55: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class หนงๆ สามารถสราง instance ขนมาก instance กไดขนอย กบ Memory ของเครองและการก าหนด Heap (Memory) วาก าหนดไวเทาไหร

Page 56: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Heap

Page 57: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Heap

คอพนทหนวยความจ า (Memory) ท JVM ใชส าหรบเกบคาทเปน Dynamic เชน

instance หรอ ตวแปรตางๆ ทถกจองในระหวางทโปรแกรมก าลงท างาน จะถกน ามาเกบไวใน Memory ทเรยกวา Heap

Page 58: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Heap

object

objectobject

object

Page 59: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Heap มโอกาสทจะเตม ขนอย กบการ config JVM ของเรา วาจะใหโปรแกรมเราจะใช Memory สงสดเทาไหร

มฉะนน จะเกด OutOfMemoryError

Page 60: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เมอ Heap ใกลเตม หรอในขณะนน instance ทอยใน Heap ไมไดถกใชงาน จะเกดการเกบกวาดคนหนวยความจ าสระบบ เรยกวา Garbage Collection

Page 61: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

การเกบกวาดคนหนวยความจ า (Garbage Collection)

Page 62: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เมอเราท าการสราง instance ดวยค าสง newจะเกดการจองพนทหนวยความจ าขนมา 1 ชด

Object obj = new Object( );

objobject

Page 63: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Object ทสรางขนมา จะไมมทางสญหาย หรอถกลบออกจากหนวยความจ า ถายงม ตวแปรใดตวแปรหนงอางถง Object (หนวยความจ าต าแหนง) นนอย

Object obj = new Object( );

objobject

Page 64: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

แตถาเปนแบบน

Object obj = new Object( );obj = new Object( );obj = new Object( );

objobject

object

object

Page 65: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

แตถาเปนแบบน

Object obj = new Object( );obj = new Object( );obj = new Object( );

objobject

object

object

Garbage

Page 66: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

คอจะม Garbage Collector มาคอยท าหนาท check อยตลอดเวลา วา memory ต าแหนงไหนทไมถก reference ถงมนกถกจะ Garbage ทงทนท

object

variable

Memory

object

garbage

Page 67: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

นแหละ Garbage Collection

คอจะม Garbage Collection คอยท าการตรวจสอบหนวยความจ าอยตลอดเวลา วาหนวยความจ าต าแหนงใด ทไมถกอางถง

มนจะคนหนวยความจ าต าแหนงนสระบบทนท

Page 68: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

คณสมบต (Attribute)

Page 69: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

คณสมบต (Attribute) หรอ Field ขอมล

คอขอมลทถกเกบไวใน class หรอ objectเปนสงทระบวา object นนมลกษณะเปนอยางไร

Page 70: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เชนสเขยว, สแดง, ขนาด 20 กรม, เปนแพทยอายรกรรม, อาย 14 ป,เพศชาย, บตรหมดอายวนท 31/12/2014 เปนตน

อนนแหละ ทเขาเรยกวาคณสมบตของ objectหรอขอมลของ object

Page 71: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class User{private String username;private String password;private String email;private String image;private String url;

}

การก าหนดคณลกษณะของ object

Page 72: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เมธอท (Method : พฤตกรรม)

Page 73: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Method

ถามองในมมมองภาษา functional programming มนกคอ function นนเอง

ถามองในมมมองของ OOP มนกคอ function เหมอนกน แตมนเปน function ของ class หรอ object

Page 74: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Method ตางจาก function ธรรมดาๆ อยางไร

การเขยน/เรยกใชงาน Method ใดๆ จะตองเขยน/เรยกผาน class / object เทานนเราไมสามารถเรยก / เขยน method โดยปราศจาก class / object ได

Page 75: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public void run( ){

}

run( );

เขยนแบบนไมได

Page 76: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class Car{public void run( ){

}}

Car car = new Car();car.run( );

ตองเขยนแบบน

Page 77: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class Car{public void run( ){}

public void start( ){run( );

}}

แตเราสามารถเรยกแบบนได

Page 78: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

toString

Page 79: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

toString เปน default method ของ ทก objectถาเราไมเรยก method ใดๆ ของ objectmethod toString จะถกเรยกแทนเสมอ เชน

public class Address {public String toString(){ return “my home”; }

} Address addr = new Address();System.out.println(addr); //my home

Page 80: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

this

Page 81: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

this เปน keyword ในภาษา java

ใชส าหรบอางถงสมาชกภายใน object นนๆ

Object นะ ไมใช class

Page 82: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class Message {private String msg;public Message(String msg){

this.msg = msg;}public String toString(){

return this.msg;}

}

Page 83: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Message obj1 = new Message(“Hello”);System.out.println(obj1); //Hello

Message obj2 = new Message(“World”);System.out.println(obj2); //World

Page 84: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Constructor

Page 85: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Constructor คอ Method ทมชอเหมอน class

ซงจะท างานตอนทท าการสราง instance หรอ new Object() เสมอ

Page 86: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

1 class สามารถม constructor ไดหลาย constructor

ในขณะทท าการ new Object() สามารถม constructor ถกเรยกไดเพยง 1 constructor เทานน

Page 87: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class User{private String username;public User( ){

this(null);}

public User(String username){this.username = username;

}}

Page 88: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

User user1 = new User();

User user2 = new User(“admin”);

Page 89: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

interface

Page 90: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Interface

เปนขอก าหนดหรอ specification ของ class วาclass นนจะตองมพฤตกรรมอะไรบาง

Page 91: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public interface SearchService {

String MESSAGE_PATTERN = “%XXX%”;

Item searchByName(String name);

}

Page 92: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

คณสมบต หรอ attribute ของ interface จะเปน public static final …. เสมอ

จากตวอยาง เมอก จรงๆ แลว

MESSAGE_PATTERN เปน

public static final String MESSAGE_PATTERN = “%XXX%”;

Page 93: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

method ของ interface จะเปน abstract method

คอไมมพฤตกรรม (ไมม { … }) ทก method

……

Item searchByName(String name);

……

Page 94: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Implementation

คอ class ทท าตาม spec interface ทถกก าหนดไว

ใช keyword “implements” ในการท าตาม spec นนๆ

Page 95: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

spec หรอ พฤตกรรมทงหมด ทถกประกาศไวใน interface จะตองมใน implementation ท implements interface นนๆ มา

public class SearchServiceImpl implements SearchService {

public item searchByName(String name){

}}

Page 96: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

interface ประกาศไวก method

implementation จะตองม method ครบตามทประกาศไวใน interface เสมอ

เกนได แตหามขาด

Page 97: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Abstract class

Page 98: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Abstract class

เปนกง class กง interface คอมพฤตกรรมครงหนงเปน classอกครงเหมอน interface

Page 99: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

โดยปกตจะใชเปน Template class / method คอเปน class ส าเรจรป แลวให class อน extends เพอสบทอดพฤตกรรมบางอยาง

แตกมบาง method (พฤตกรรม) ทตองการให implement เอง

Page 100: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public abstract AbstractReportCtrl {

protected abstract String getReportFileName();

public void exportReport(){…

}}

Page 101: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public Report1Ctrl extends AbstractReportCtrl {

protected String getReportFileName(){return “report1.jasper”;

}}

Page 102: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public Report2Ctrl extends AbstractReportCtrl {

protected String getReportFileName(){return “report2.jasper”;

}}

Page 103: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

hashCode() and equals()

Page 104: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

hashCode()

เปน method ทท าหนาทในการ hash คาสมาชก (attribute) ของ instance ดวย has algorithm เพอใหไดคาทแตกตางกนออกมา

เพอใหสามารถเขาถง (access) ขอมล / คนหา instance นนๆ ไดเรวขน แทนทจะตองคาหาขอมลตงแต 1 – N

เชนการคนหาขอมลใน HashMap หรอ HashTable

Page 105: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

equals()

equals เปน method ทใชในการเปรยบเทยบวา object 2 object เทากนหรอไม

Page 106: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

object ไมสามารถใช == ได เพราะ object เปน Reference Data Type

object 2 objects ถกจองบนพนทหนวยความจ าทแตกตางกนจงไมมทางเทากน (==)

การทเราจะ check วาทง 2 object เทากนหรอไม เราจะตองใช method equals()

Page 107: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

package

Page 108: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

package com.omsalung.incom;

public class IncomItem {

}

Page 109: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

package

คอสวนทเอาไวจดหมวดหมของ classทเราคดวาควรอยในหมวดหมเดยวกน

Page 110: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ถาเรามองในมมมอง physicalpackage กคอ folder เชน com/omsalung/service/impl

แตพอเรามาเขยนเปนภาษา java จะเปนcom.omsalung.service.impl

Page 111: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ปกต การตงชอ package มกจะเปนการตงชอยอนกลบของชอเวบไซต ชอองกรค หรอชอระบบทเราก าลงท าการพฒนนา เชน

https://developer.facebook.com จะตงชอ package เปนcom.facebook.developer

http://na5cent.blotspot.com จะตงชอ pagkage เปนcom.blogspot.na5cent

Page 112: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

โดยทวไป จะใชตวพมพเลกทงหมด

Page 113: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

import

Page 114: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

package com.omsalung.incom;import org.springframework.util.StringUtils;

public class IncomItem {

}

Page 115: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

import

ความหมายตรงตว หมายถง “น าเขา”น าเขาสมาชกอนๆ ของ package ทถกเขยนไวแลว

Page 116: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

รปแบบการ import

• Package Member• Entire Package• Static import

Page 117: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Package Member

คอการ import สมาชกภายใน package ทละตวๆ เชน

import java.io.File;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.annotation.PostConstruct;

Page 118: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Entire Package

คอการ import สมาชกทงหมดภายใน package นน จะใชสญลกษณ * เชน

import java.io.File;import java.util.*;import javax.annotation.PostConstruct;

Page 119: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Static import

คอการ import static method ของ class นนๆท าใหเราสามารถเรยกใชงาน static method ไดเลยโดยไมตองเรยกผาน class

import static org.springframework.StringUtils.hasText;

if(StringUtils.hasText(str)) { } if(hasText(str)) { }

Page 120: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Page 121: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Page 122: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

static

Page 123: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

static

เปน keyword หนงใน ภาษา java ทใชส าหรบระบถงสงทใช keyword staticวาเปนสมาชกของ class

class นะไมใช objectตองแยกใหออก

Page 124: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ตองแยกใหออก ระหวาง class กบ object

class = แมพมพobject = รปหลอ ทมาจากแมพมพ

Page 125: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ถาค าวา static หมายถงสงทบงบอกวาเปนสมาชก classหรอสมาชกของแมพมพ

แนนอน มนตองมตวเดยว (แมพมพเดยว)นนคอ ทก object reference ถง static ตวเดยวกน

Page 126: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class

static

Page 127: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class

static

object

objectobject

Page 128: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ถา static มการเปลยนแปลง

object ทก object กจะไดคา static เดยวกนทงหมด

Page 129: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

static สามารถเปนไดทง variable และ method

Page 130: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class Item {public static int sequence = 1;public static void increaseSequence(){

sequence = sequence + 1;} public void printSequence(){

System.out.println(sequence);}

}

Page 131: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Item item1 = new Item();Item item2 = new Item();Item item3 = new Item();

item1. printSequence(); //1item2. printSequence(); //1Item. increaseSequence(); item3. printSequence(); //2item1. printSequence(); //2item2. printSequence(); //2

Page 132: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

จงท าบางสงในวนน ทคณจะตองขอบคณตวเอง

ในวนขางหนา

Page 133: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

คณสมบตของ OOP

• การหอหม (Encapsulation)• การสบทอด (Inheritance)• การมไดหลากหลายรปแบบ (Polymorphism)

Page 134: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Encapsulation

เปนวธการก าหนดการเขาถงขอมลภายใน class หรอ objectวาจะให class ภายนอก สามารถเขาถงสงทอยภายใน class หรอ object ไดมากนอยเพยงใด

Page 135: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ซงประกอบไปดวย Access Modifier 3 ตว คอ

• public• private• protected

Page 136: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public

อนญาตให class ทก class method ทก methodไมวาจะอยทใดกตาม

สามารถ access สงทถกประกาศ (define) เปน public ไดทงหมด

Page 137: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class X

Page 138: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class X

class A

class B

class C

class Eclass F

class D

Page 139: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

private

อนญาตใหเฉพาะสมาชกทอยภายใน class หรอ object นนๆ สามารถ access ไดเทานน

ขางนอก class หรอ object ขางนอกaccess สงๆ นนไมไดเดดขาด

Page 140: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class X

Page 141: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class X

class A

class B

class C

class Eclass F

class D

ภายนอก access ไมได

Page 142: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

protected

อนญาตใหเฉพาะสมาชกภายใน class หรอclass ทสบทอดคณสมบตจาก class นน (class ลก) หรอclass ทอยใน package เดยวกน

สามารถ access สงทอยภายในได

Page 143: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class X

Page 144: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class X

class A

class B

class C

class Eclass F

class D

ภายนอก access ไมไดpackage เดยวกน หรอ extends มา access ได

class Z

packageextends

Page 145: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Inheritance

คอการสบทอดคณสมบต และพฤตกรรมของ classเรยกอกอยางหนงวาการ extends

Page 146: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

สงมชวต

สตว มนษย

เสอ

เสอชตาห เสอโครง

สบทอด

สบทอด

สบทอด สบทอด

สบทอด

Page 147: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

นยามของเสอ หรอ class เสอคออะไร

• ล าตวสเหลอง ลายพาดด า• มหนวด คลายแมว แตตวใหญกวา• เปนสตวกนเนอ

• ดราย• ลาเหยอ• ค าราม

Page 148: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

สบทอด สบทอด

สบทอด

เสอโครง เสอดาว เสอชตาห

เสอ

Page 149: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Code

class Tiger {

public void roar(){ //ค ารามSystem.out.println(“Tiger is roaring.”);

}

}

Page 150: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Code

class Cheetah extends Tiger{

}

Tiger tiger = new Cheetah();tiger.roar(); // Tiger is roaring.

Page 151: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Code

class Bengal extends Tiger{

}

Tiger tiger = new Bengal();tiger.roar(); // Tiger is roaring.

Page 152: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Inheritance

มหลกเกณฑดงตอไปน 1. class หนงๆ สามารถสบทอดพฤตกรรมจาก class ใดๆ ได

เพยง 1 class เทานน2. การสบทอดใช keyword extends ซงจะตองเปน class

เทานน (รวม abstract class) ไมสามารถสบทอด interface ได

3. class ทท าการสบทอด เราเรยกวาคลาสลก (child class)สวน class ทถกสบทอดเราเรยกวาคลาสแม (parent class)

Page 153: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

4. ถาเราไมตองการให class อนๆ ท าการสบทอด class นนไดใหเราใช keyword final ไวกอน keyword class

public final class MyClass {//ไมม class ไหนสามารถสบทอด class นได

}

Page 154: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

5. class ลกสามารถเรยกใชงาน สมาชก (attribute หรอ method) public หรอ protected ใดๆ ของ class แมได โดยการใช keyword superclass Tiger{

protected String name = "tiger";}public class Bengal extends Tiger{

public void roar(){System.out.println(super.name); //tiger

}}

Page 155: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

class A {A(){ System.out.println(“class A”); }

}class B extends A {

B(){ System.out.println(“class B”); }}class C extends B {

C(){ System.out.println(“class C”); }}C object = new C();

Page 156: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

แสดงผลค าวา อะไรบาง?

Page 157: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ค าตอบ คอ แสดงผลวา

class Aclass Bclass C

ท าไม?

Page 158: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เพราะกอนทจะท าการเรยก constructor ของ class ลก

มนจะเรยก constructor ของ class แม กอนเสมออออออ

Page 159: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

Polymorphism (การพองรป หรอการมไดหลากหลายรปแบบ)

เปนเทคนคการเขยน code ครงเดยว แลวสามารถรองรบพฤตกรรมการท างาน ไดอยางหลากหลาย

เปนเรองทโปรแกรมเมอรมอใหมสบสนทสด

Page 160: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

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

Page 161: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

รปแรกทผมจะใหพวกคณวาดใหคอ รปวงกลม

Page 162: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

circle

Page 163: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

สงทพวกคณจะท าคออะไร?

แนนอน เขยน class วาดรปวงกลมขนมาจากนน กวาด หรอเรยกใชมนซะ!

Page 164: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class Circle {

public void draw() {System.out.println(“circle”);

}}

Circle circle = new Circle();circle.draw();

Page 165: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ตอมา ผมตองการใหพวกคณวาดรปสเหลยมเพมเขาไปอก

สงทตองท ากคอ เขยน class วาดรปสเหลยมขนมา แลวกวาดมนซะ

เหมอนเดม

Page 166: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

circle

Rectangle

Page 167: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

public class Rectangle {

public void draw() {System.out.println(“rectangle”);

}}

Page 168: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

แตตอนน เราม 2 ปม เพราะฉะนน เราตอง

if else เลอกปมใดปมหนง

Page 169: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

if(button.clicked == 1){Circle circle = new Circle();circle.draw();

} else {Rectangle rec = new Rectangle();rec.draw();

}

Page 170: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ตอมา ผมโลภมาก อยากใหคณวาดใหอก 5 รปคอ

• รปดาว • รปสามเหลยม • รปหกเหลยม • รปแปดเหลยม และ• รปวงร

Page 171: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

circle

Rectangle

...

...

...

...

Page 172: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

คณกจะท าเหมอนเดม คอเพม class วาดรปตางๆแลวก if else 6 7 อน

Page 173: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ค าถาม

แลวถามนมการเพมรปทรงตางๆ เขามาเรอยๆ ละ

Page 174: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

แนนอน

การเขยนโปรแกรม แบบน เรมจะไม work ละ

เพราะฉะนน เรามาใชหลก Polymorphism กนดกวา

Page 175: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

สราง abstract class รปทรง (Shape) ขนมา

public abstract class Shape {

public abstract void draw();}

Page 176: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ให class อน extends Shape

public class Circle extends Shape {

@Overridepublic void draw(){

System.out.print(“circle”);}

}

Page 177: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

ให class อน extends Shape

public class Rectangle extends Shape {

@Overridepublic void draw(){

System.out.print(“rectangle”);}

}

Page 178: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

เขยน code ส าหรบวาด Shape (ยงไมรวา Shape อะไร)

public class Drawing {

public void draw(Shape shape){shape.draw();

}}

Page 179: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

circle

Rectangle

...

...

...

...

Page 180: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

circle

Rectangle

...

...

...

...

Page 181: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

จะวาดรปอะไร กโยน instance ของ class นนเขาไปใน method draw ของ class Drawing เลย ดงน

Drawing dw = new Drawing();dw.draw(new Circle());dw.draw(new Rectangle());dw.draw(new Eclipse());

Page 182: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

method draw ของ class Drawing ท าหนาทแควาดแตมนไมรวาจะใหวาดอะไร

เราจะใหมนวาดอะไร เรากสงมนเขาไปจากขางนอกผาน ซง class นนตอง extends Shape

public void draw (Shape shape) { }

Page 183: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

นแหละ Polymorphismmethod draw รองรบรปทรงไดอยางหลากหลายdraw รองรบ class อะไรกได ท extends class Shape

public void draw (Shape shape) { }

Page 184: สอนครั้งที่ 3 cpe4235 (การวิเคราะห์และโปรแกรมเชิงวัตถุ) / 2557

CPE4235

จบวนนไมมการบานใหพกผอนปใหม