Sep
22
2008

Design Question Walkthrough

โพสนี้จะนำเอาคำถามจากวิชา Software Specification and Design (219341) มาเฉลยกันนะครับ ใครมีอะไรสงสัย หรือว่าจะพูดคุยกันตามสะบาย

ตัวข้อสอบ Final Exam ของวิชานี้จะมีทั้งหมด 8 ข้อเขียน บังคับทำประมาณ 2 ข้อ และให้เลือกทำอีก 3 ข้อ อย่างไรก็ตามเราคาดหวังอย่างยิ่งที่จะเห็นโจทย์เหล่านี้อีกทีในห้องสอบ

Thank you to Dr. James Edward Brucker giving us knowledge…

1.) โจทย์กล่าวว่า ถ้าเกิดต้องมีการสร้าง Object หลายตัวที่แตกต่างกันขึ้นอยู่กับผู้ใช้โปรแกรม เราจะออกแบบระบบอย่างไรให้โปรแกรมทำงานได้โดยไม่ต้องเจาะจงชนิดของ Object ที่ส่ง

a) ทางออกง่ายๆคือการใช้ “Prototype Pattern” เท่านี้ระบบก็ไม่จำเป็นที่จะต้องรู้ชนิด Obj ที่แน่นอน

b) Client หรือตัวระบบจะทำงานผ่าน Prototype Object โดยที่ไม่จำเป็นต้องทราบแน่ชัดว่า จริงๆแล้วตัว Object นั้นเป็น instance ของ Class ไหน

นอกจากนี้หลักการของ “Prototype Pattern” นั้นยังคงมีหัวใจของหลักการ Polymorphism และ Protect Variation อยู่ด้วย เนื่องจากหลักการของ Prototype Pattern คือการซ่อนข้อมูลชนิดของ Obj ที่แท้จริง (Data Hiding) และยังทำให้ระบบยืดหยุ่น (Polymorphism)

2) หอสมุดนั้นมีการเก็บหนังสือเล่มเดียวกันไว้หลายฉบับ อย่างเช่นหนังสือ Harry Potter I อาจจะมี 10 เล่มเป็นต้น โดยที่ทุกเล่มมีข้อมูลเหมือนๆกันคือ ชื่อ คนเขียน วันพิมพ์ ISBN แต่แต่ละฉบับนั้นมีข้อมูลแยกเป็นของตัวเองคือ Barcode, Status 

a) เราไม่ควรให้ Obj ใดๆนั้นมี Properties ทั้งหมดของหนังสือหนึ่งเล่ม (เช่น Class HarryPotter1 มีตัวแปล ชื่อ คนเขียน วันพิมพ์ ISBN, Barcode และ Status) เพราะว่าจะมีการเก็บข้อมูลซ้ำๆเต็มไปหมด และถ้าหากเกิดการเปลี่ยนแปลง ข้อมูลอาจจะเกิดพิดพลาดได้ง่าย (Data Redundancy) นอกจากนี้ยังใช้พื้นที่ในการเก็บข้อมูลอย่างสิ้นเปลืองอีกด้วย

b) ทางออกคือใช้  ”Abstract-Occurrence “Pattern” โดยที่ว่า Abstract ทำหน้าที่เหมือนกับ BookDescriptor คอยให้คำจัดความ และข้อมูลของหนังสือทุกเล่ม แต่ตัว Occurrence นั้นเป็นเหมือนกับตัวหนังสือแต่ละเล่มเลย โดยที่จะมีข้อมูลประจำอยู่เช่น barcode หรือสถานะภาพ (ถูกยืมอยู่หรือไม่) 

c) อันนี้แบบคร่าวๆ อาจจะไม่ถูกต้องตามกฏของ UML

3) มีคลาสไว้ติดต่อผ่านทาง Network จะทำอย่างไรให้สามารถมี Obj ของ Class นี้เพียงอันเดียว และจะป้องกันไม่ให้คลาสอื่นยุ่งกับ Constructor ของคลาสนี้ได้อย่างไร

a) ใช้ “Singleton Pattern” แค่นี้ก็จะมีได้แค่ Obj เดียวเท่านั้น

b) เปลี่ยน Constructor เป็น Private

c) แก้ไขโค้ดตามนี้

import java.net.*;
import java.io.*;

class DataConection {

private final String SERVER = “www.cpe.ku.ac.th”;
private final int PORT = 1111;
private Socket socket;

private DataConnector() {
if(socket == null)
{try{

socket = new Socket(SERVER,PORT);

} catch (Exception e) {};}

else return socket;
}

*** The rest of class omitted

 

Written by admin in: Uncategorized | Tags:

11 Comments »

  • Khemmy

    ขอบคุณมากค่ะต่าย

    Comment | September 22, 2008
  • Embre

    แต้ง หลาย ๆ ต่าย ^^

    Comment | September 22, 2008
  • MOMO

    Thx ค้าบบบบบบบบบบบบบบบบบ

    Comment | September 22, 2008
  • เอาโจทย์มาจากไหนอะ

    Comment | September 22, 2008
  • giffary

    ขอบคุณมากครับ

    Comment | September 22, 2008
  • По моему мнению Вы не правы. Я уверен. Предлагаю это обсудить. Пишите мне в PM, пообщаемся….

    Thank you to Dr. James Edward Brucker giving us knowledge…
    1…..

    Trackback | April 12, 2010
  • Pillspot.org. Canadian Health&Care.Special Internet Prices.No prescription online pharmacy.Pillspot.org. Herbal-supplements@buy.online” rel=”nofollow”>.…

    Categories: Skin Care.Weight Loss.Pain Relief.Antidepressants.Stomach.Antidiabetic.Blood Pressure/Heart.Mens Health.Vitamins/Herbal Supplements.Eye Care.Mental HealthWomens Health.Antiviral.Antibiotics.Anxiety/Sleep Aid.Stop SmokingAnti-allergic/A…

    Trackback | June 26, 2010
  • Hinges http://d180vsqe8tz.AWESOMEBABYCLOTHES.INFO/tag/Armoire Hinges hinges/ : hinges…

    Armoire…

    Trackback | August 29, 2010
  • Does http://lmotorcycle6lm3vjr.02JEEPPARTS.US/tag/How+Your+Run+motorcycle+Does/ : Your…

    motorcycle…

    Trackback | August 29, 2010
  • 6233 http://rnokiarbcatt.ACEHARDWAREE.INFO/tag/3g+nokia+6233/ : 3g…

    nokia…

    Trackback | August 30, 2010
  • r2

    Massage http://umessagesy5zb.APTAUTOPARTS.INFO/tag/r2+Massage+Chair/ : Massage…

    Massage…

    Trackback | August 30, 2010

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress | Aeros Theme | TheBuckmaker.com WordPress Themes