สอนครั้งที่ 4 cpe4235...

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

Upload: -

Post on 21-Jul-2015

353 views

Category:

Technology


2 download

TRANSCRIPT

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

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

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

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

ถาคดแลวไมไดท า เทากบไมไดคดเสนบางๆ ระหวางความจรงกบความฝน

คอ “การลงมอท า”

CPE4235

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

ทบทวน

CPE4235

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

• class, abstract class, interface• object• attribute• method

• this, static• package , import• OOP

• Encapsulation• Inheritance• Polymorphism

CPE4235

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

Annotation, Wrapper Class, Enum Type and Unit Test

CPE4235

4

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

เนอหา

• Annotation• Java Reflection• Enum Type• Wrapper Class• Unit Test

CPE4235

enum

@

test

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

CPE4235

Annotation

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

CPE4235

เราอาจจะเคยเหน

@Override@Entity@Table@Column@Autowired@....

อนนแหละทเขาเรยกวา Annotation

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

CPE4235

Annotation คอ Configuration บน Java Source Codeมไวส าหรบเกบ Meta Data ของสงทถกประกาศไว

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

CPE4235

เชน

@Entity@Table(name=“os_user”)public class User implements UserDetails {

@Id@Column(length = 50)private String username;@Overridepublic String getUsername( ){ return username; }

}

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

CPE4235

จากตวอยาง

เราใช Annotation ในการอธบาย / เกบ configuration ของ class field และ method

วา class นน field นน หรอ method นนเปนอะไร ม meta data อะไรถกนยามไวบาง

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

CPE4235

Annotation เรมมการใชครงแรกใน Java 5

ปญหาทท าใหตองม Annotation คอปกต เวลาทเราจะเกบ configuration อะไรสกอยาง เรามกจะเกบลงใน xml file

ทวา เมอระบบ หรอ code มขนาดใหญขน กท าใหการอาน config จาก xml มความล าบาก และวนวายยงขน

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

CPE4235

เขาจงไดคดคน Annotation ขนมา เพอเอา configuration มาเกบลงใน Java Source Code เลย

เพอลดความยงยาก และความซบซอนในการอาน xml

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

CPE4235

Annotation จะม @ น าหนา เชน @Override

สามารถใชไดกบทง • class, interface• field (attribute) • method• package• parameter• constructor• …

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

CPE4235

เราสามารถสราง Annotation ขนมาใชงานเองไดโดยการประกาศ interface ทม @ น าหนา ดงน

เชน เราจะสราง @Column (name = “”, pattern = “”)

public @interface Column {

}

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

CPE4235

จากนน ก าหนดวาจะใหใช @Column บนอะไรไดบางเอาไปใชทจดไหนของ Java source code(class, field, method, …) ดวย @Taget

@Taget(ElementType.FIELD)public @interface Column {

}

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

CPE4235

ถาหลายอนเราจะใช @Target(value = { … }) เชน

@Target(value = {ElementType.FIELD, ElementType.METHOD

}) public @interface Column {

}

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

CPE4235

@Taget ElementType สามารถเปนไปได 8 คา ดงน

• TYPE – Class, interface (annotation ), or enum declaration • FIELD - Field declaration (includes enum constants) • METHOD - Method declaration• PARAMETER - Parameter declaration• CONSTRUCTOR - Constructor declaration• LOCAL_VARIABLE - Local variable declaration• ANNOTATION_TYPE - Annotation type declaration• PACKAGE - Package declaration

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

CPE4235

จากนน ก าหนดวา Annotation นจะถกใชงานหรอมองเหนในระดบใด ดวย @Retention

@Retention(RetentionPolicy.RUNTIME)@Taget(ElementType.FIELD)public @interface Column {

}

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

CPE4235

ถกใชงานหรอมองเหนในระดบใด หมายถงAnnotation นนเอาไวใชท าอะไร เมอไร (ณ ชวงเวลาใด)

เชน

เปน Annotation ส าหรบตรวจสอบขอมลตอน Compile timeหรอเปน Annotation เอาไวประมวลผลขอมลตอน Run timeหรอเปน Annotation ทเอาไวใชเฉพาะใน Source code เทานนเปนตน

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

CPE4235

@Retention RetentionPolicy สามารถเปนไปได 3 คา ดงน

• SOURCE – ใชไดในระดบ Source code เทานน ไมสามารถท างานทเวลา Compile time และ Run time ได

• CLASS – ใชไดในระดบ Source code และ Compile time แตไมเหนตอน Run time

• RUNTIME – ใชไดทง Source Code, Compile time และ Run time

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

CPE4235

จากนน ก าหนด method ของ @Column (name = “”, pattern = “”)

@Retention(RetentionPolicy.RUNTIME)@Taget(ElementType.FIELD)public @interface Column {

String name( );String pattern ( );

}

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

CPE4235

เราสามารถก าหนดคา default ได ดวย “default” keyword

@Retention(RetentionPolicy.RUNTIME)@Taget(ElementType.FIELD)public @interface Column {

String name( ) default “”;String pattern ( ) default “dd/MM/yyyy”;

}

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

CPE4235

Java Reflection

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

CPE4235

Reflection = เงาสะทอน

เวลาทเราสองกระจกใส เรากจะเหนเงาสะทอนของตวเองเราจะรวาหนาตาตวเองเปนยงไง ปาก คว จมก ตา หของเราเปนยงไง

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

CPE4235

Java Reflection กเหมอนกนเปนสงทสะทอนถง Class นนๆ วามหนาตาเปนยงไง

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

CPE4235

Java Reflection

เปนวธการเขยนโปรแกรมเพอดหนาตาของ class (****)วา class นนๆ หนาตาเปนยงไง

เปนการดหนาตาแบบ dynamic คอใชการเขยนโปรแกรมเพอตรวจเชคหนาตาใหเอง

*** รวมทง interface, annotatoin, enum ….

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

CPE4235

เชน

• เราอยากรวา class นน มชอวาอะไร• อยากรวา class นนมชอเตมวาอะไร (ชอ + package) • อยากรวา class นนม Annotation อะไรบาง• อยากรวา class นน extends มาจาก class อะไร• อยากรวา class นน implements interface อะไรบาง• อยากรวา class นนม method อะไรบาง• อยากร...

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

CPE4235

เชน

• อยากเรยก method ของ class นนแบบ dynamic• อยาก set คาลง method แบบ dynamic• อยากดง (get) คาจาก method แบบ dynamic• …

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

CPE4235

เราอยากรวา class นน มชอวาอะไร

package com.pamarin.chapter4;import java.io.Serializable;public class Staff implements Serializable {

public static void main(String[] args) {//StaffSystem.out.println(Staff.class.getSimpleName());

}}

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

CPE4235

อยากรวา class นนมชอเตมวาอะไร (ชอ + package)

package com.pamarin.chapter4;import java.io.Serializable;public class Staff implements Serializable {

public static void main(String[] args) {// com.pamarin.chapter4 .StaffSystem.out.println(Staff.class.getName());

}}

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

CPE4235

อยากรวา class นน extends มาจาก class อะไร

package com.pamarin.chapter4;import java.io.Serializable;public class Staff implements Serializable {

public static void main(String[] args) {// java.lang.ObjectSystem.out.println(Staff.class.getSuperclass().getName());

}}

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

CPE4235

อยากรวา class นน implements interface อะไรบาง

package com.pamarin.chapter4;import java.io.Serializable;public class Staff implements Serializable {

public static void main(String[] args) {// java.io.Serializablefor(Class clazz : Staff.class.getInterfaces()){

System.out.println(clazz.getName());}

}

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

CPE4235

อยากรวา class นนม method อะไรบาง

package com.pamarin.chapter4;import java.io.Serializable;import java.lang.reflect.Method;public class Staff implements Serializable {

public static void main(String[] args) {// mainfor(Method method : Staff.class.getDeclaredMethods()){

System.out.println(method.getName());}

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

CPE4235

Get คาจาก method

public class Reflect {public static void main(String[] args) throws Exception {

Reflect reflect = new Reflect();Method method = reflect.getClass().getMethod("getName");System.out.println("name --> " + method.invoke(reflect));

}

public String getName(){ return "reflection"; }}

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

CPE4235

Set คาลง method

public class Reflect {public static void main(String[] args) throws Exception {

Reflect reflect = new Reflect();Method method = reflect.getClass()

.getMethod("setName", String.class);method.invoke(reflect, "reflect");

}public void setName(String name){

System.out.println("set --> " + name); //set --> reflect}

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

CPE4235

เมอเรารหนาตาของมนแลวเราเอามาใชท าอะไร?

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

CPE4235

การเขยนโปรแกรมบางอยาง เราอาจจะไมทราบลวงหนา วาเราตองเขยน code ใหท างานกบ class field หรอ method อะไรบาง

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

CPE4235

เราตองการเขยนโปรแกรมเผออนาคตอยากใหโปรแกรมมนตรวจสอบใหเองโดยอตโนมต

ไมวาเราจะสงขอมลอะไรเขาไปกตาม

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

CPE4235

เชน การเขยนโปรแกรม เพอแปลงขอมลจาก java class ไปเปน database table ทเราไมรวา โปรแกรมเมอรจะก าหนด field database เปนอะไรบาง เรากใช java reflection ชวยตรวจสอบให

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

CPE4235

หรอเราตองการเขยนโปรแกรมเพอแปลงขอมลจาก excel ไปเปน java object

เราไมรวาผใชจะก าหนดหว excel มาเปนอะไรบางและเราจะตองสราง class อะไรเพอรองรบ excel นน

เรากใช java reflection เพอชวยในการตรวจสอบ และแปลงใหเปนตน

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

CPE4235

มาดตวอยางจรงๆ กนดกวาจากโปรเจคน

https://github.com/jittagornp/excel-object-mapping

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

CPE4235

Enum Type (Enumeration)

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

CPE4235

เวลาทเราเขยนโปรแกรมการก าหนดคาตวแปร จะตองเปนไปตาม Type หรอชนดขอมล นนๆ เชน

int – จะมคาเปน 0, 1, 2, 3boolean – จะมคาเปน true, falsechar – จะมคาเปน ‘A’, ‘B’, ‘C’, ‘D’

เปนตน

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

CPE4235

ตอนเขยนโปรแกรม กเลยมกจะเจอ เงอนไขลกษณะน

int condition = …if(condition == 1){

…} else if (condition == 2){

…} else if (condition == 3){

…} else if …

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

CPE4235

หรอแบบน

char condition = …if(condition == ‘S’){

…} else if (condition == ‘M’){

…} else if (condition == ‘T’){

…} else if …

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

CPE4235

Code มนไมคอยจะสอความหมายเทาไหรนะ

1 คออะไร ? ‘S’ คออะไร ?2 คออะไร ? ‘M’ คออะไร ?3 คออะไร ? ‘T’ คออะไร ?

เสยเวลาอาน + ไลด code

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

CPE4235

บางครง เรากตองการคาตวแปรทมนสอความหมายมากกวาท primitive data type จะใหได

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

CPE4235

เขากเลยแกปญหา โดยการใช String เพอใหมนมความหมายของ code มากกวาเดม

ดงน

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

CPE4235

แก code ใหม

String condition = …if(“SUNDAY”.equals(condition)){

…} else if (“MONDAY”. equals(condition)){

…} else if (“TUESDAY”. equals(condition)){

…} else if …

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

CPE4235

ดแลวงายขน รทนทวา code ตองการสอความหมายวาอยางไร

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

CPE4235

แต!

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

CPE4235

มนกยงเปนปญหาอย ด

ปญหาอะไรหรอ?

แลวถาสมมตวาเราพมพ ค าวา TUESDAY ผดละจะเกดอะไรขน

แนนอน มนไมมทางเขาเงอนไข นนแนๆเพราะเราสะเพรา พมพผดเอง (Bug Programmer)

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

CPE4235

เขากเลยแกปญหาใหมอกท ดวยการก าหนดเปน static final

public class Days {public static final String SUNDAY = “SUNDAY”;…

}

if(Days.SUNDAY.equals(condition)){

}

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

CPE4235

มนก OK ขนนะ work เลยแหละแตมนตดอยอยางนง

ตวแปร Days.SUNDAY มนไมม พฤตกรรม (method) ทเราตองการ เพราะวามนเปน String เราใชไดแค method ทเปนของ String เทานน

เอาไงดละ? มนไมครบตามทเราตองการอะ

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

CPE4235

ทางออก คอ Enum Type

เราจะเปนคนก าหนดชนดขอมลขนมาใชงานเองขอมลทมคาเปน• SUNDAY • MONDAY• TUESDAY• …

เปนตวขอมลจรงๆ เลย ไมใช String นะ

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

CPE4235

การประกาศ enum

public eum Days { //ม 7 คาทเปนไปไดSUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY

}

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

CPE4235

ตอนนเราม enum Days มาใชงานเองละ ลองแก code เดมใหม

Days condition = …if(condition == Days.SUNDAY){

…} else if (condition == Days.MONDAY){

…} else if (condition == Days.TUESDAY){

…} else if …

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

CPE4235

สอความหมาย เหมอนทใช String

และทส าคญ คอไมมทางพมพผดดวยเพราะถาพมพผด Code จะ Compile ไมผานบวกกบมพฤตกรรม (method) ในตว

Work โคตร!!!

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

CPE4235

เราสามารถก าหนด Attribute และ Method ให enum ได ดงน

public eum YesNo{YES(“ใช”),NO(“ไมใช”);private final String description;private YesNo(String desc){

description = desc;}public String getDescription(){ return description; }

}

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

CPE4235

วธใช

YesNo answer = …if(answer == YesNo.YES){

…}

System.out.println(YesNo.YES.getDescription()); //ใชSystem.out.println(YesNo.NO.getDescription()); //ไมใช

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

CPE4235

เราจะใช enum กตอเมอ

เราตองการก าหนด Type เฉพาะขนมาเองเราตองการคาทมนสอความหมาย มากกวา 0, 1, A, B, C

และเรากตองการความมนใจ วาเราจะไมพมพผด(มคาถกตอง) + มพฤตกรรม (method) ในตว

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

CPE4235

Wrapper Class

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

CPE4235

OOP = การเขยนโปรแกรมเชงวตถ

แตขอมลบางอยางทมอย กลบไมเปนวตถ

หมายถงอะไร ?

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

CPE4235

Primitive Data type ยงไงละ ทไมเปนวตถ

int, float, double, char, boolean, byte, short, long

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

CPE4235

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

เราไมสามารถใช Primitive Data Type มาด าเนนการได

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

CPE4235

เชน

การจดเกบขอมลลงใน Listท Java อนญาตเฉพาะขอมลทเปนวตถเทานน

แลวเราจะท ายงไงละ ถาเราอยากเกบขอมลตวเลขแตตวเลขไมใชวตถ

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

CPE4235

ดวยปญหาดงกลาว เขาจงคดหาทางแก ท าไมเราไมท าให Primitive มนเปนวตถซะละ

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

CPE4235

ม int กใหม Integer ทเปน class (วตถ) ของ int อกท หรอ ม float กม Float เปน class (วตถ) ของ float เชนกน

Integer กบ Float เราเรยกมนวา Wrapper Class

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

CPE4235

Wrapper Class ในทนหมายถง

class ทท าหนาทเปนตวหอหม Primitive Data Type

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

CPE4235

int Integerbyte Byteshort Shortlong Longfloat Floatdouble Doublechar Characterboolean Boolean

ฝงซายคอ primitive ฝงขวาคอ Wrapper class ของ primitive นนๆ

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

CPE4235

int number = 5; float number = 2.0F; boolean success = true;

กลายเปน

Integer number = new Interger(5);Float number = new Float(2.0F); Boolean success = new Boolean(true); หรอBoolean success = Boolean.TRUE;

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

CPE4235

Autoboxing vs Autounboxing

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

CPE4235

Autoboxing

เราสามารถแปลงคาจาก Primitive data type ไปเปน Wrapper class ของ ค Primitive นนไดโดยอตโนมต เชน

int number = 5; //ซงปกตจะเปน Integer numb = new Integer(number); //เราเรยกวา Boxing

เราสามารถเขยนแบบนไดInteger numb = number; //Autoboxing

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

CPE4235

Autounboxing

เราสามารถแปลงคาจาก Wrapper class ไปเปน Primitive data type ของ ค Wrapper class นนไดโดยอตโนมตเชนกน เชน

Integer numb = new Integer(5); //ซงปกตจะเปน int number = numb.intValue(); //เราเรยกวา Unboxing

เราสามารถเขยนแบบนไดint number = numb; //Autounboxing

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

CPE4235

แลวแบบนละไดมย ?

Integer numberObject = null;int nuber = numberObejct;

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

CPE4235

แลวแบบนละไดมย ?

Integer numberObject = null;int nuber = numberObejct;

ค าตอบคอไมได เพราะ int เปน null ไมได (int ไมใช Reference data type)

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

CPE4235

การทดสอบทางซอฟตแวร(Software Testing)

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

CPE4235

Software Testing เปนกระบวนการเพอชวยใหซอฟตแวรทพฒนา ม

• ความถกตอง• ความสมบรณ• ความปลอดภย และ• มคณภาพทด

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

CPE4235

Software Testing

เปนกระบวนการทดลองใช Software อยางมแนวทางโดยใชความรทางดานเทคนค (Technical)

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

CPE4235

เพอใหสามารถระบหรอคนหาความผดพลาด(Error) ของ Software ทอาจจะซอนอยใหปรากฏออกมา

และ สามารถระบถงแนวทางการเกดปญหา พรอมสมมตฐานของความผดพลาดทเกดขนได

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

CPE4235

แนวทางการทดสอบ

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

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

CPE4235

แนวทางการทดสอบ

“ค าถาม” หมายถง เหตการณ (Event) หรอวธการทจะกระท ากบตว Software

เชน ถารบ input แบบนเขาไปแลว จะไดผลลพธเปนแบบนหรอไม

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

CPE4235

แนวทางการทดสอบ

“ค าตอบ” หมายถง ผลลพธของ Software ตอค าถามทเกดขน (ตรงตามทคาดหวงไวหรอไม)

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

CPE4235

คณภาพของซอฟตแวรทสามารถทดสอบได ไดแก

• reliability - ความนาเชอถอ• efficiency - ประสทธภาพ• portability - ความสามารถในการเคลอนยาย• maintainability - ความสามารถในการดแลรกษา• compatibility - ความสามารถเขากนได• usability - สามารถใชไดงายเขาใจไดงาย

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

CPE4235

รปแบบการทดสอบ

• Unit Test • Integration Test • System Test• Acceptant Test • Usability test

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

CPE4235

Unit Test

เปนการทดสอบหนวยทเลกทสด (unit) เปนการทดสอบฟงกชนการท างาน เพอยนยนวาฟงกชนนนท างานไดถกตอง ตามทเราคาดหวงไวหรอไม

เปนการทดสอบโดย Programmer ทเขยน Code นนๆ

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

CPE4235

Integration Test

เปนการทดสอบการเชอมตอสวนยอยๆ (Unit, Component หรอ Module) ทน ามาประกอบกน ใหได Software ทสมบรณ

เชน ModuleA เรยกใชงาน ModuleBหรอ Service หนงเรยกใชงานอก Service หนง ในระบบเดยวกน

ตย. การทดสอบการเชอมตอฐานขอมล หรอ Email

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

CPE4235

System Test

เปนการทดสอบการเชอมตอหรอตดตอสอสารกนระหวาง Software หรอระบบ (System) อนๆ

เชน เรามระบบ 2 ระบบทตองการใหท างานรวมกน หรอคยกน

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

CPE4235

Acceptant Test

เปนการทดสอบโดยผใช (End user) หรอโดยลกคา เพอดวาSoftware ท างานถกตองตามความตองการ (Requirement) หรอไม

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

CPE4235

Usability Test (User Experience Test)

เปนการทดสอบการใชงาน Software โดยผเชยวชาญสวนตอประสานกบผใช (UI/UX) วาใชงานไดงาย เขาใจไดงาย หรอไม

หรอเรยกอกอยางวาเปนการทดสอบประสบการณการใชงาน

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

CPE4235

Unit Test

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

CPE4235

Unit Test

• เปนการทดสอบหนวยทเลกทสด (unit) • เปนการทดสอบฟงกชนการท างาน เพอยนยนวาฟงกชนนน

ท างานไดถกตอง ตามทเราคาดหวงไวหรอไม

เปนการทดสอบโดย Programmer ทเขยน Code นนๆ

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

CPE4235

ในภาษา Java ม Framework ทชวยใหเราท าการทดสอบระดบUnit Test ทดงๆ และใชงานกนมากทสดคอJUnit และ TestNG

วนนเราจะใช JUnit กน

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

CPE4235

JUnit

คอ เครองมอทใชในการท า Unit Test ส าหรบภาษา Javaพฒนาโดย Kent Beck และ Erich Gamma

ตอนนกลายเปนมาตรฐานการท า Unit Test ของ Java ไปแลวIDE ดงๆ หลายตวไดผนวก JUnit เขามาตงแตตอนทท าการตดตง เชน Netbeans

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

CPE4235

หนาตาของ JUnit (เปน Java class ธรรมดาๆ ทม @Test)

import org.junit.Test;public class MyTest {

@Testpublic void test() {

//เขยน test code ตรงน (วาอยาก test อะไร)}

}

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

CPE4235

Method ทม @Test อยขางบน คอ method ทตองการทดสอบจากนไปขอเรยกวา Test Method หรอ Test Case

ซง Test Method (@Test) สามารถมกตวกได โดยปกตทกตวจะอสระจากกน คอ test ใคร test มน(Test ไมเปนล าดบ)

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

CPE4235

ตองการ Test วา 2 + 3 เทากบ 5 จรงหรอไม ?

import org.junit.Test;import static org.junit.Assert.*;public class MyTest {

@Testpublic void test() {

assertEquals(2 + 3, 5);}

}

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

CPE4235

Netbeans กด Ctrl + F6 หรอ คลกขวาแลวเลอก Test Fileเพอ run test

ถาไมม Exceptionแสดงวา Test ส าเรจ

แตถามแสดงวาTest ลมเหลว

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

CPE4235

ตองการ Test วา String ทรบเขามาเปนค าวา “Hello” จรงหรอไม

import org.junit.Test;import static org.junit.Assert.*;public class MyTest {

private boolean isHello(String str){ return “Hello”.equals(str); } @Testpublic void test() {

assertTrue(isHello(“Hello”));}

}

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

CPE4235

Assert method (เมธอทยนยน)

แนวทางการทดสอบ คอทดสอบใหตรงตามเปาหมายทเราคาดหวงไว

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

CPE4235

Assert method (เมธอทยนยน)

จากตวอยางเมอก เราคาดหวงไววา 2 + 3 มนจะเทากบ 5เรากเขยน 2 + 3 และ 5 ลงไปใน test method (@Test)

จากนนเรากใช method ตวนงในการยนยนวา input และสงทเราคดไวมนจะตรงกน method นนเราเรยกวา assert methodซงเราใช assertEquals ยนยนการเทากน

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

CPE4235

Assert method (เมธอทยนยน)

มหลายตว ขนอย กบวาเราคาดหวงอะไรไว จาก input ทเราปอนเขาไป

เราอยากรอะไรเกยวกบ input นน กใช assert method นน

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

CPE4235

Assert method (เมธอทยนยน)

Assert method ค าอธบาย

assertTrue(boolean c) ยนยนวา boolean ทสงเขาไป มคาเปนจรง

assertFalse(boolean c) ยนยนวา boolean ทสงเขาไป มคาเปนเทจ

assertEquals(Object o1, Object o2) ยนยนวา input 2 ตวมคาเทากน

assertNull(Object o) ยนยนวา input ทรบเขาไปตองเปน null

assertNotNull(Object o) ยนยนวา input ทรบเขาไปตองไมเปน null

assertSame(Object o1, Object o2) ยนยนวา input 2 ตวเปนตวเดยวกน

assertNotSame(Object o1, Object o2) ยนยนวา input 2 ตวไมเปนตวเดยวกน

… อนๆ อกมากมาย ตอนนยงไมจ าเปน (แตสามารถไปศกษาเพมเตมเองได)

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

CPE4235

JUnit Life Cycle

ในการ run Test 1 ครง JUnit จะม Life Cycle เปนของตวเองซงเอาไว setup คา clear คา ตางๆของการ Test

แตเอาไวกอน เดยวสอนทหลงตอนนเอาใหคลองเรอง assert method กอน

ถาใครอยากรกอนกสามารถไปเรยนรดวยตนเองกอนไดครบเรอง JUnit Life Cycle (คาบนยงไมเนน)

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

CPE4235

TDD Test Driven Development

ขบเคลอนการพฒนาดวยการเขยน Test

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

CPE4235

Test Driven Development (TDD)

เปนรปแบบการพฒนา Software ทเราจะตองสราง Test ขนมากอน แลวจงคอยเรมเขยน Code ในภายหลง

เปนการตกรอบ Logic Code ดวย Testกอนทจะเรมเขยน Code จรงๆ

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

CPE4235

หลกการเขยน TDD

1. เขยน code ให fail2. แกใหผาน3. Refactor หรอท า

code ใหสวยงาม4. กลบไปขอ 1 ใหม

จนกวา code จะ สมบรณแบบ

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

CPE4235

เราไมรวาจะเขยน code ยงไง ?แตเรารวา สง input เขาไปแลวได Output อะไรกลบมา

Codeinput output

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

CPE4235

@Testpublic void test1(){

int result = add(10, 20);assertEquals(30, result);

}

เรายงไมรวา ขางใน add เขยนยงไง แตเรารวา ถาสง 10 และ 20 เขาไป มนจะตองไดผลลพธเปน 30

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

CPE4235

run test ดวาผานมย

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

CPE4235

run test ดวาผานมย

แนนอนมนไมผานอยแลว เพราะยงไมม method add

งนกเขยน method add ขนมาซะ

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

CPE4235

@Testpublic void test1(){

int result = add(10, 20);assertEquals(30, result);

}

private int add(int number1, int number2){return 30;

}

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

CPE4235

run test ดวาผานมย

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

CPE4235

run test ดวาผานมย

ผาน เพราะมน return 30 ตามทเราคาดหวงไว

ลองเพม test อกสกกรณ ให number1 = 100และ number2 = 200

และคาดหวงวามนจะ return 300

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

CPE4235

@Testpublic void test2(){

int result = add(100, 200);assertEquals(300, result);

}

private int add(int number1, int number2){return 30;

}

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

CPE4235

run test ดวาผานมย

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

CPE4235

run test ดวาผานมย

ไมผาน

เพราะมน return 30

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

CPE4235

แลวถาเรา return เปน 300 ละ

Test นผาน (300)แต Test กอนหนานนจะพง (เพราะมนตองการ 30)

แสดงวา function การท างานของ add ทเราเขยนไวไมถกละ

นจงเปนวธการตกรอบการเขยน code อยางนงงนแก add ใหม

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

CPE4235

@Testpublic void test2(){

int result = add(100, 200);assertEquals(300, result);

}

private int add(int number1, int number2){return number1 + number2; //*********

}

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

CPE4235

run test ดวาผานมย

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

CPE4235

run test ดวาผานมย

ผานและผานทง 2 กรณคอ

@Testpublic void test(){

assertEquals(30, add(10, 20));assertEquals(300, add(100, 200));

}

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

CPE4235

Work!

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

CPE4235

โจทยประยกตใชความรตงแตเรมตน

จนถงวนน

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

CPE4235

สมมตบรษทไปรบงานเกยวกบการประเมนคณภาพมาเปนการประเมนคณภาพการรกษาของโรงพยาบาลทวประเทศ วาแตละโรงพยาบาล มการรกษาทไดมาตรฐานหรอไม

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

CPE4235

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

• ขอมลผปวยใน (IP : Inner Patient) และ• ขอมลผปวยนอก (OP : Outer Patient)

***** ผปวยในคอคนทนอน รพ.ผปวยนอก คอคนทมาหาหมอในแตละวน

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

CPE4235

ขอมลทสงเขามาจะเปนขอมลการใชยาในแตละครง ของผปวยคนหนง - รายคน หรอ ราย PID (รหสประจ าตวประชาชน)

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

CPE4235

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

เหลอ field ขอมล ดงน

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

CPE4235

ขอมลผปวยใน (IP)

• hcode – รหสโรงพยาบาล• pid – รหสประจ าตวประชาชนของผปวย• drugName – ชอยาทผปวยไดรบ• visitDate – วนทเขารบการรกษา เปน Date• qty – จ านวนยาทไดรบ (เปนตวเลข เชน 100 qty)• unit - หนวยยา เชน vials, gram, tab เปนตน

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

CPE4235

• role1 – คะแนน ของเกณฑ ประเมนท 1• role2 – คะแนน ของเกณฑ ประเมนท 2• role3 – คะแนน ของเกณฑ ประเมนท 3• role4 – คะแนน ของเกณฑ ประเมนท 4• role5 – คะแนน ของเกณฑ ประเมนท 5

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

CPE4235

ขอมลผปวยนอก (OP)

• hcode – รหสโรงพยาบาล• pid – รหสประจ าตวประชาชนของผปวย• drugName – ชอยาทผปวยไดรบ• visitDate – วนทเขารบการรกษา เปน Date• qty – จ านวนยาทไดรบ (เปนตวเลข เชน 100 qty)• unit - หนวยยา เชน vials, gram, tab เปนตน

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

CPE4235

• role1 – คะแนน ของเกณฑ ประเมนท 1• role2 – คะแนน ของเกณฑ ประเมนท 2• role3 – คะแนน ของเกณฑ ประเมนท 3• role4 – คะแนน ของเกณฑ ประเมนท 4• role5 – คะแนน ของเกณฑ ประเมนท 5• role6 – คะแนน ของเกณฑ ประเมนท 6• role7 – คะแนน ของเกณฑ ประเมนท 7

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

CPE4235

ขอมลทง 2 ประเภทมความเหมอนกนยกเวนจ านวนของเกณฑการประเมนทตางกน

IP ม 5 ขอOP ม 7 ขอ

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

CPE4235

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

ผปวยใน (IP)

hcode Pid drugName visitDate qty unit role1 role2 role3 role4 role5

1234 00001 peginterferon 01/10/2555 100 gram Y Y N N Y

1234 00002 peginterferon 09/10/2555 50 gram Y Y Y Y Y

1234 00003 peginterferon 13/02/2555 150 gram Y Y N Y N

1234 00004 peginterferon 06/07/2556 25 gram Y N Y Y N

1234 00005 peginterferon 01/02/2555 100 gram N Y N N Y

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

CPE4235

และ

ผปวยนอก (OP)

hcode Pid drugName visitDate qty unit role1 role2 role3 role4 role5 role6 role7

1234 00011 peginterferon 01/10/2555 100 gram Y Y Y Y Y Y Y

1234 00012 peginterferon 09/10/2555 50 gram Y N N N Y Y Y

1234 00013 peginterferon 13/02/2555 150 gram Y Y Y Y Y Y Y

1234 00014 peginterferon 06/07/2556 25 gram Y Y N Y Y Y Y

1234 00015 peginterferon 01/02/2555 100 gram N N Y Y Y Y Y

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

CPE4235

ขอไหนตอบ Y (YES) ใหคดเปน 1 คะแนนขอไหนตอบ N (NO) ใหคดเปน 0 คะแนน

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

CPE4235

ขอมลน เปนเพยงขอมลสมมตซงจรงๆ แลวอาจมเกณฑการเมนมากกวาน (20 - 30 ขอ)และเกณฑการประเมนอาจจะไมใชตวเลข

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

CPE4235

จากนนโปรแกรมเมอรทม A โยนงานตอไปใหโปรแกรมเมอรทม B ท าการเขยนโปรแกรม หาคาผลรวม (Sum) และคาเฉลย (Average)เพอแสดงผลขอมลใหผใชเหน ดงน

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

CPE4235

ใหเขยนโปรแกรม เพอท าการหาผลรวมของขอมลแตละเกณฑ(ทก pid ใน hcode นนรวมกน)

role 1 มผลรวม (Sum) เทาไหรrole 2 มผลรวม (Sum) เทาไหร…และrole 1 มคาเฉลย (Average) เทาไหรrole 2 มคาเฉลย (Average) เทาไหร…

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

CPE4235

และหาวา ทกเกณของคนๆ นนรวมกน (ราย pid)มผลรวม (Sum) เปนเทาไหร และคาเฉลย (Average) เปนเทาไหร

Sum = role1 + role2 + role3 + … + role6 + role7Average = Sum / 7 (7 หมายถง ม 7 เกณฑ)

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

CPE4235

ตวอยาง

hcode Pid drugName visitDate qty unit role1 role2 role3 role4 role5 sum avg

1234 00001 peginterferon 01/10/2555 100 gram 1 1 0 0 1 3 0.6

1234 00002 peginterferon 09/10/2555 50 gram 1 1 1 1 1 5 1

1234 00003 peginterferon 13/02/2555 150 gram 1 1 0 1 0 3 0.6

1234 00004 peginterferon 06/07/2556 25 gram 1 0 1 1 0 3 0.6

1234 00005 peginterferon 01/02/2555 100 gram 0 1 0 0 1 2 0.4

4 4 2 3 3 16 3.2

0.8 0.8 0.4 0.6 0.6 3.2 0.64

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

CPE4235

ขอก าหนดของการเขยนโปรแกรม

ใชความรทงหมดทเรยนมา เพอแกปญหานขอมลชดหลายตว เกบขอมลลงใน Array กอนเรายงไมไดเรยน Collection Framework ยงไมตองใชแตถาใครรแลว จะใชกได ไมหาม

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

CPE4235

ขอบคณ

Software Testing จาก www.wikiwand.com/th/การทดสอบซอฟตแวร