งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Object Oriented Development with UML

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Object Oriented Development with UML"— ใบสำเนางานนำเสนอ:

1 Object Oriented Development with UML
11/24/2018 Object Oriented Development with UML 11-12, November 2006 At Sipa Chiangmai Interaction Diagram โดย รศ. รังสิต ศิริรังษี อ. สายัณห์ อุ่นนันกาศ

2 Collaboration Diagram
11/24/2018 State Daigram Implementation Diagram Activity Diagram Statechart Diagram UMLDiagram Package Diagram Static Structure Diagram Usecase Diagram Class Diagram Use case Class Diagram Component Diagram Scenerio Interaction Diagram DePloyment Diagram Collaboration Diagram Sequence Diagram

3 11/24/2018 Static & Dynamic View คลาสไดอาแกรมนำเสนอโครงสร้างของระบบแบบ static ในรูปของคลาส โดยมีความสัมพันธ์ประเภท Dependency, Generalization/Specialization, Whole/Part, และ Association ชื่อของความสัมพันธ์ที่กำหนดไว้จะไม่ใช่ลักษณะการทำงาน จึงไม่ได้เป็นการนำเสนอที่เป็น dynamic แต่เป็นมุมมองแบบ static ดังนั้นจึงไม่ได้แสดงวิธีการทำงานไว้ภายในคลาสไดอาแกรม มุมมองแบบ staticของระบบจึงเป็นเพียงรูปร่างหน้าตาของระบบแบบหนึ่งเท่านั้น

4 11/24/2018 Dynamic View มุมมองแบบไดนามิคโดยปกติจะได้จากการรวมกันระหว่างมุมมองของผู้ใช้ (Use Case) และมุมมองของนักพัฒนา เพื่อนำไปใช้ในการตรวจสอบความต้องการของระบบ ไดอาแกรมที่สนับสนุนการทำงานแบบไดนามิคจะถูกเรียกว่า Interaction Diagram — เป็นพฤติกรรมที่ประกอบไปด้วยกลุ่มของแมสเสจที่มีการแลกเปลี่ยนกันระหว่างออปเจคเพื่อทำงานให้สำเร็จ

5 11/24/2018 Interactions - Basics เป็นกลุ่มของไดอาแกรมที่แสดงพฤติกรรมการทำงานแบบไดนามิคภายในระบบเชิงวัตถุ แสดงการควบคุมการไหลภายในการทำงานของแบบจำลอง แสดงวิธีการที่มีการรับส่งแมสเสจในช่วงเวลาหนึ่ง เน้นไปที่ความสัมพันธ์แบบมีโครงสร้างระหว่างออปเจคที่มีการปฏิสัมพันธ์ระหว่างกัน การทำงานแบบไดนามิคของ UML จะนำเสนอผ่านไดอาแกรมแบบปฏิสัมพันธ์ซึ่งมีดังต่อไปนี้ : Sequence Diagram Collaboration Diagram

6 Interaction Diagram Sequence diagram
11/24/2018 Interaction Diagram Sequence diagram เน้นไปที่ time ordering ของการรับและส่งแมสเสจ แสดงให้เห็นถึง lifeline ของออปเจค Collaboration diagram เน้นไปที่ structural organization. มีปัจจัยที่ง่ายต่อการสร้างแบบจำลองที่มีการ interactions แบบซับซ้อน ไดอาแกรมเหล่านี้ช่วยเพิ่มความเข้าใจในวิธีการทำงานของระบบ และช่วยในการกำหนดภาระหน้าที่ให้แก่คลาส หมายเหตุ: ทั้งสองไดอาแกรมไม่ใช่การนำเสนอการทำงานของคลาส

7 Interaction Diagrams Sequence Diagram Collaboration Diagram x y y z
11/24/2018 Interaction Diagrams Sequence Diagram Collaboration Diagram x y y z 1.1: a 1.2: c a x y b 1.1.1: b c z

8 11/24/2018 Sequence Diagram Sequence Diagrams ช่วยในการกำหนดรายละเอียดของ responsibilities รวมไปถึงการกำหนดวิธีการที่ออปเจคในระบบใช้ในการติดต่อระหว่างกัน ในบางกรณีอาจมีความจำเป็นต้องกำหนดการทำงานภายในระบบก่อนที่จะทำการออกแบบคลาสไดอาแกรม ข้อควรระวังประการหนึ่งในการสร้าง Sequence ไดอาแกรมก็คือ ในหนึ่งไดอาแกรมไม่ควรกำหนดจำนวน Use case มากกว่าหนึ่ง ทั้งนี้เนื่องจากจะทำให้ไดอาแกรมมีความซับซ้อนมากและไม่สามารถที่จะแสดงการโต้ตอบระหว่างออปเจคได้อย่างชัดเจนนั่นเอง

9 สัญลักษณ์ที่ใช้ใน Sequence ไดอาแกรม
11/24/2018 สัญลักษณ์ที่ใช้ใน Sequence ไดอาแกรม การนำเสนอชื่อของออปเจค: รูปแบบ: [instanceName][:className] ชื่อคลาสจะต้องเป็นชื่อเดียวกับชื่อของคลาสที่ปรากฏอยู่ในคลาสไดอาแกรม ชื่อของออปเจคจะถูกกำหนดไว้ เพื่อป้องกันความสับสนในกรณีที่มีการเรียกใช้งานสำหรับหลาย ๆ ออปเจคจากคลาสเดียวกัน สัญลักษณ์ Life-Line ใช้สำหรับการนำเสนอช่วงชีวิตของออปเจคระหว่างการปฏิสัมพันธ์กัน myBirthdy :Date

10 11/24/2018 Messages การปฏิสัมพันธ์ระหว่างสองออปเจคจะสามารถทำได้ในรูปของแมสเสจที่ส่งจากออปเจคหนึ่งไปยังออปเจคอื่น ๆ ใน UML สัญลักษณ์ของแมสเสจจะถูกแทนที่ด้วยเส้นตรงที่ประกอบไปด้วยหัวลูกศรที่แสดงทิศทางในการปฏิสัมพันธ์กันระหว่างสองออปเจค แมสเสจจะถูกกำกับไว้ด้วยชื่อของแมสเสจเสมอ อาร์กิวเมนต์และกลไกควบคุม (conditions, iteration) สามารถกำหนดร่วมไว้กับชื่อของแมสเสจได้

11 Messages and Methods Message
11/24/2018 Message เป็นการแจ้งให้ออปเจคในส่วนที่เป็น receiver ทราบว่ามีความต้องการเรียกใช้เมธอดที่เกี่ยวข้องกับออปเจคนั้น ๆ คล้ายกับการเรียกใช้ฟังก์ชัน แต่จะเฉพาะเจาะจงไปที่ตัวออปเจคโดยตรง Method เป็นวิธีการทำงานของออปเจคที่เกี่ยวข้องกับแมสเสจที่ถูกระบุ คล้ายกับฟังก์ชัน แต่จะถือเป็นส่วนหนึ่งของออปเจค

12 Arrow Label guard-condition, sequence-expression,
11/24/2018 Arrow Label guard-condition, sequence-expression, return-value := message-name argument-list [ x < 0 ] C3.1: res := getLocation (fig) guard sequence number Examples: move (5, 7) 3.7.4: move (5, 7) 3.7 [ z > 0 ]: move (5, 7) condition 3.7 *[1..5]: move (5, 7) iteration

13 สัญลักษณ์ที่ใช้ใน Sequence ไดอาแกรม
11/24/2018 สัญลักษณ์ที่ใช้ใน Sequence ไดอาแกรม Activation เป็นสัญลักษณ์รูปสี่เหลี่ยมผืนผ้าที่นำเสนอช่วงเวลาที่ออปเจคใช้ทำงาน activation ซึ่งจะเป็นการนำเสนอ flow of control ภายในเมธอดของ receiver เมื่อแมสเสจมีผลทำให้เกิดการสร้างออปเจคใหม่เกิดขึ้น activation แรกจะเป็นการนำเสนอ logic ของคอนสรัคเตอร์ Activation Bar

14 UML Message Notation ชนิดของ messages
11/24/2018 UML Message Notation ชนิดของ messages simple : Sender/Receiver จะถูกส่งผ่านออกไปโดยไม่มีรายละเอียดประกอบ โดยไม่มีการคาดหวังว่าจะมีการส่ง message กลับคืนมา แมสเสจแบบซิงโครนัส (Synchronous) ใช้สำหรับการส่งแมสเสจที่จำเป็นต้องรอจนกว่าการทำงานของแมสเสจจะสิ้นสุดลง เช่น ในกรณีของการเรียกฟังก์ชันการทำงานย่อย แมสเสจแบบนี้จะใช้สัญลักษณ์หัวลูกศรทึบแทนการนำเสนอ

15 UML Message Notation ชนิดของ messages
11/24/2018 UML Message Notation ชนิดของ messages แมสเสจแบบอะซิงโครนัส (Asynchronous) ใช้ในกรณีที่การส่งแมสเสจไปยังออปเจคเพื่อร้องขอบริการอย่างใดอย่างหนึ่ง โดยไม่จำเป็นต้องรอการตอบสนองแต่อย่างใด สัญลักษณ์ที่ใช้จะได้แก่ลูกศรที่มีหัวครึ่งเดียว (half-stick arrowhead) แมสเสจแบบคืนค่า (Return) เป็นแมสเสจที่ใช้สำหรับแสดงการตอบสนองการทำงานจากแมสเสจ สัญลักษณ์ที่ใช้จะเป็นลูกศรเส้นประ

16 Type Of Messages object 1 object2 object3 Simple Message
11/24/2018 Type Of Messages object 1 object2 object3 Simple Message Return Message Asynchronous Recursive Syncrhonous

17 ขั้นตอนการสร้าง Sequence Diagram
11/24/2018 ขั้นตอนการสร้าง Sequence Diagram ขั้นตอนแรกจะเป็นการกำหนด external หรือ internal entity ในกรณีที่เป็นแบบ internal กระบวนการติดต่อกันอาจเริ่มต้นจาก actor โดยตรงและจะถูกกำหนดให้เป็น initiator โดยอัตโนมัติ ในกรณีที่เป็นแบบ external อาจจะอยู่ในรูปของระบบอื่น ๆ เป็นต้น ขั้นตอนต่อไปจะเป็นการระบุออปเจคและคลาสที่ถูกนำเสนอการทำงานผ่านแกนในแนวนอน (horizontal axis) เข้ากับช่วงเวลาที่ถูกนำเสนอตามแกนในแนวตั้ง (vertical axis) จะถูกแสดงไว้ในรูปของเส้นแนวตั้งเป็นช่วง ๆ Actor ObjectA : Message/ operation()

18 ขั้นตอนการสร้าง Sequence Diagram
11/24/2018 ขั้นตอนการสร้าง Sequence Diagram ดังนั้นแมสเสจที่ปรากฏอยู่ในส่วนบนของไดอาแกรมจะเกิดขึ้นก่อนแมสเสจที่ปรากฏอยู่ในในระดับถัดลงมาเสมอ ส่วนแมสเสจที่อยู่ล่างสุดจะเป็นการส่งแมสเสจที่เกิดขึ้นในลำดับสุดท้ายของ Use case โดยปกติแล้วแมสเสจจะถูกแสดงด้วยสัญลักษณ์ลูกศร ที่ลากเชื่อมต่อกับ “lifelines” ของออปเจค เพื่อแสดงทิศทางจากการส่งและรับแมสเสจตามแกนแนวนอน :ObjectA :ObjectB operation() Activation Bar Life Line

19 ขั้นตอนการสร้าง Sequence Diagram
11/24/2018 ขั้นตอนการสร้าง Sequence Diagram สัญลักษณ์ลูกศรจะมีจุดเริ่มต้นจากออปเจคที่ทำหน้าที่เป็น sender ไปสิ้นสุดที่ออปเจคที่ทำหน้าที่เป็น receiver ลูกศรเหล่านี้จะใช้สำหรับการนำเสนอการทำงาน โดยการเรียกใช้งานโดยปกติจะเริ่มต้นจากซ้ายไปขวา การส่งและรับแมสเสจอาจเกิดขึ้นภายในตัวออปเจคเองสัญลักษณ์ลูกศรอาจจะเริ่มต้นและสิ้นสุดลงภายในออปเจคเดียวกันได้ :ObjectB

20 Synchronous Messages กลไกควบคุมโดยปกติจะทำได้โดยใช้ operation call.
11/24/2018 Synchronous Messages กลไกควบคุมโดยปกติจะทำได้โดยใช้ operation call. การทำงานที่ใช้จัดการกับแมสเสจจะต้องเสร็จสิ้นสมบูรณ์ก่อนที่จะกลับไปสู่ caller :A :B doYouUnderstand() return (optional) Caller Blocked yes

21 11/24/2018 Return Values การกำหนดค่าที่คืนมากจากการทำงานของออปเจค โดยปกติจะถูกนำเสนอโดยใช้สัญลักษณ์ลูกศรเส้นประเสมอ อย่าใช้สัญลักษณ์การคืนค่ากับการทำงานที่เห็นได้ชัดว่ามีการคืนค่าจากการทำงาน เช่น getTotal() :ObjectA :ObjectB operation()

22 Conditional Behaviors
11/24/2018 Conditional Behaviors guard condition จะระบุไว้ในเครื่องหมายก้ามปู สามารถนำเสนอได้ในแต่ละ message message จะถูกส่งเมื่อ guard condition ที่ถูกกำหนดไว้เป็นจริง เงื่อนไขสามารถใช้ในรูปของ branches. เพื่อป้องกันไม่ให้ไดอาแกรมซับซ้อนเกินไปในกรณีที่ที่มีหลาย ๆ เงื่อนไขพร้อมกัน อาจจำเป็นต้องแยกไดอาแกรมออกไปอีกต่างหาก นั่นคือจะมีลักษณะคล้ายกับการแยกไดอาแกรม use case ที่ใช้ความสัมพันธ์แบบ extends นั่นเอง พึงระลึกไว้เสมอว่า interaction ไดอาแกรมจะมีลักษณะแบบ simplicity

23 Conditional Behaviors
11/24/2018 Conditional Behaviors guard condition จะระบุไว้ในเครื่องหมายก้ามปู สามารถนำเสนอได้ในแต่ละ message โดย message จะถูกส่งเมื่อ guard condition ที่ถูกกำหนดไว้เป็นจริง การกำหนดเงื่อนไขใน Sequence Diagram รูปแบบ: ‘[‘ expression ’]’ message-label แมสเสจจะถูกส่งออกไปได้ต่อเมื่อเงื่อนไขที่กำหนดไว้เป็นจริง ตัวอย่างเช่น: Teller Account [Balance >0] deposit

24 Control information การทำงานแบบวนซ้ำ (Iteration)
11/24/2018 Control information การทำงานแบบวนซ้ำ (Iteration) รูปแบบ: * [ ‘[‘ expression ‘]’ ] message-label แมสเสจจะถูกส่งออกไปหลายครั้ง และมีความเป็นไปได้ที่จะมีออปเจคในการรับค่าหลาย ๆ ออปเจค Searcher Database *[value.notFound()] search

25 Control Information (Cont.)
11/24/2018 Control Information (Cont.) กลไกควบคุมของ sequence diagrams จะดำเนินการได้เฉพาะการทำงานที่เป็นทางเลือกแบบง่าย ๆ พึงระลึกไว้เสมอว่า interaction ไดอาแกรมจะมีลักษณะแบบ simplicity ดังนั้นไม่ควรใช้ sequence diagrams สำหรับการนำเสนอการทำงานที่มีรายละเอียดของอัลกอลิทึมส์ (การทำงานลักษณะดังกล่าวสามารถนำเสนอได้ดีกว่าโดยใช้ activity diagrams หรือ state-charts)

26 member: LibraryMember
11/24/2018 A Sequence Diagram X-Axis (objects) member: LibraryMember book:Book :Book Copy Object borrow(book) Life Line ok = mayBorrow() Y-Axis (time) message Activation box [ok] borrow(member) setTaken(member) condition

27 Association Customer & Account
11/24/2018 Association Customer & Account ความสัมพันธ์ที่มีลักษณะเป็นแบบโครงสร้างจะระบุโดยออปเจคของคลาสหนึ่งที่ถูก connected ไปยังออปเจคของคลาสที่สอง ซึ่งอาจเป็นคลาสเดียวกันได้

28 การออกแบบ Account class Account { private double balance;
11/24/2018 การออกแบบ Account class Account { private double balance; public Account() { balance = 0; } public Account(double initialBalance) { balance = initialBalance; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount ) { balance = balance - amount; public double getBalance() { return balance; } public String toString() { return Double.toString(balance);

29 การออกแบบ Customer class Customer { private Account account;
11/24/2018 การออกแบบ Customer class Customer { private Account account; private String name; public Customer(String aName) { name = aName; account = new Account(0); } public String getName() { return name; } public Account getAccount() { return account; } public void addToAccount(double amt) { account.deposit(amt); public String toString() { return name + account;

30 การออกแบบ Customer public class Test {
11/24/2018 การออกแบบ Customer public class Test { public static void main(String args[]) { Customer joe = new Customer("Joeseph Smith"); joe.addToAccount(1000); joe.getAccount().withdraw(500); //joe.withdraw(100); System.out.println(joe); }

31 11/24/2018 Sequence Diagram

32 Collaboration Diagram
11/24/2018 Collaboration Diagram

33 What is a collaboration?
11/24/2018 What is a collaboration? Collaboration: เป็นการแสดง roles ของกลุ่ม instances ที่ใช้ในการทำงานหนึ่ง ๆ ที่เกิดขึ้นภายใน use case Interaction:เป็นการติดต่อกันระหว่าง instances ตาม roles ที่กำหนดภายใน collaboration Collaboration Role role name Class Actor

34 Collaboration Diagrams
11/24/2018 Collaboration Diagrams Collaboration ไดอาแกรมจะใช้สำหรับแสดงการ interaction ที่เกิดขึ้นระหว่างออปเจค โดยแสดงให้เห็นถึงการมีส่วนร่วมของออปเจคในการ interaction โดยใช้สัญลักษณ์แสดงการ links ที่เกิดขึ้นระหว่างกัน โดยมีการส่งและรับแมสเสจระหว่างกันนั่นเอง link จะเป็นการแสดงความร่วมมือระหว่างกัน เน้นไปที่การแสดง role ของออปเจคแทนที่จะเป็นเรื่องของเวลา Collaboration จะเป็นการแสดงวิธีการทำงานภายใน use case หรือ operation จะถูก realized โดยกลุ่มของคลาสและ associations ที่ใช้กำหนดบทบาทและใช้งานเฉพาะอย่าง collaboration จะกำหนดการ interaction

35 Collaboration Diagrams
11/24/2018 Collaboration Diagrams เน้นไปที่โครงสร้างการจัดองค์กรของออปเจคที่มีการรับและส่งแมสเสจระหว่างกัน ใช้สำหรับ Captures ส่วนที่เป็น dynamic behavior (message-oriented) จุดประสงค์ในการใช้งาน ใช้เป็นแบบจำลองสำหรับ flow of control แสดงการมีส่วนร่วมระหว่างโครงสร้างออปเจคและกลไกควบคุม การนำเสนอข้อมูลจะคล้ายกับ sequence ไดอาแกรม แต่จะแตกต่างกันตรงที่เน้นไปที่ความสัมพันธ์แบบ static ของ class model มีลักษณะใกล้เคียงกับ Sequence ไดอาแกรม ดังนั้นใน tool บางแบบสามารถสร้าง Collaboration จาก Sequence ไดอาแกรมได้อัตโนมัติ

36 11/24/2018 Interactions - Links เป็นสัญลักษณ์ที่ใช้แสดงการเชื่อมต่อระหว่างออปเจคโดยการส่งแมสเสจระหว่างกัน เพื่อแสดงให้เห็นว่าคลาสมีความสัมพันธ์กันแบบ association หรือ dependency. Class Diagram Person + setCom( s : Salary ) + assign( d : Department ) 1..* * Company employee employer anonymous object Object Diagram message assign( development ) p : Person : Company link named object

37 Interactions - Messages
11/24/2018 Interactions - Messages Message — เป็นการแสดงการติดต่อกันระหว่างออปเจคที่นำข้อมูลส่งไปพร้อมกับคาดว่าจะมีกิจกรรมเกิดขึ้นอย่างแน่นอน เป็นเส้นลูกศรปรากฏอยู่ใกล้ ๆ link ชื่อของการทำงานจะต้องกำหนดไว้ที่เป้าหมาย message sequence number 1.1 : getLastCheckpoint( ) 1 : getPositionAtTime( t ) t : AirTrafficPlanner p : FlightPlan link object

38 สัญลักษณ์ของ Collaboration ไดอาแกรม
11/24/2018 สัญลักษณ์ของ Collaboration ไดอาแกรม สองออปเจคจากคลาสเดียวกันสามารถ collaborate กันได้ เช่นในกรณีของการ transfer funds จาก account A ไปยัง account B: สัญลักษณ์ลูกศรจะนำเสนอ control flow ไม่ใช่ information flow ซึ่งจะต้องมีหัวลูกศรสองทาง เช่น Input และ Output โดย One implicit (in not necessary) และ another explicit (out) accountA: BankAccount depositFunds(out NewTotal) transfer()

39 สัญลักษณ์ของ Collaboration ไดอาแกรม
11/24/2018 สัญลักษณ์ของ Collaboration ไดอาแกรม ในแต่ละ link ระหว่างสองออปเจคสามารถนำเสนอได้มากกว่าหนึ่งแมสเสจ หมายเลขลำดับการทำงานสามารถนำมาใช้ในกรณีที่การส่งแมสเสจไม่ชัดเจน anAirCraft: AirCraft leftFlap: Flap setAngle(landingA, outAF) fixAngel(outFF) land() anAirCraft: AirCraft leftFlap: Flap 1: setAngle(landingA, outAF) 2: fixAngel(outFF) land()

40 11/24/2018 Conditional Control การกำหนดเงื่อนไขสามารถทำได้เช่นเดียวกับ Sequence Diagram เช่น [AF = OK] anAirCraft: AirCraft leftFlap: Flap 1: setAngle(landingA, outAF) AF=Ok 2: fixAngel(outFF) land()

41 Example: Create order – class diagram
11/24/2018 Example: Create order – class diagram Order Number Total NoOfProd Catalog Products : ArrayList Category ProdLine SalesAssistant product Events: Create Order: Catalog lookup find product details by prodNo Products are stored in ArrayList

42 Sequence diagram 11/24/2018 SalesAssistant : : product : Catalog
theOrder : Order initialize( ) getProduct(prodNo : Integer) find(prodNo : Integer) change( ) addToArray( ) close( ) calcTotal( ) display( )

43 Collaboration Diagram
11/24/2018 Collaboration Diagram 1.2. addToArray( ) theOrder : Order 1. initialize( ) 2. close( ) SalesAssistant : 3. calcTotal( ) 4. display( ) SalesAssistant 1.1. getProduct(prodNo : Integer) find(prodNo : Integer) change( ) : Catalog : product

44 Example: Create order – class diagram
11/24/2018 Example: Create order – class diagram Order Number Total NoOfProd Catalog Products : ArrayList Category ProdLine initialize() calcTotal() getProduct(prodNo : Integer) : Integer display() SalesAssistant addToArray() close() product Events: Create Order: Catalog lookup find product details by prodNo Products are stored in ArrayList find(prodNo : Integer) : Boolean change()

45 Modeling Different Levels of Abstraction
11/24/2018 Modeling Different Levels of Abstraction Use Case Order Clerk Place Order Interaction Diagram at a High Level of Abstraction : Order Taker : Order : Order Clerk Fulfillment submitOrder placeOrder acknowledgeOrder

46 Modeling Different Levels of Abstraction
11/24/2018 Modeling Different Levels of Abstraction Use Case Order Clerk Place Order Interaction Diagram at a Low Level of Abstraction : Order Taker : CreditCard : Order : Billing Agent : Order Clerk Agen Fulfillment submitOrder processCard placeOrder triggerBill acknowledgeOrder

47 Sequence Diagram objects Time lifeline Focus of control
11/24/2018 Sequence Diagram objects : Order Taker : CreditCard : Order : Billing Agent : Order Clerk Agen Fulfillment submitOrder processCard {process card < 1 minutes} Can you do this with Rose? Time placeOrder triggerBill acknowledgeOrder lifeline Focus of control This marks the end of the object’s life. This doesn’t show up in Rational Rose

48 Collaboration Diagram
11/24/2018 Collaboration Diagram Object : Order Fulfillment 5: acknowledgeOrder 4: triggerBill : Order Clerk 3: placeOrder 1: submitOrder : Billing Agent Link 2: processCard : Order : CreditCard Taker Agen Message


ดาวน์โหลด ppt Object Oriented Development with UML

งานนำเสนอที่คล้ายกัน


Ads by Google