±± ¾© ÁÖ Òµ ´ó ѧ
2012ѧÄꡪ2013ѧÄêµÚ 1 ѧÆÚ Èí¼þ²âÊÔ ÊµÑ鱨¸æÊé
ר Òµ£ºÐÅÏ¢¹ÜÀíÓëÐÅϢϵͳ
ʵÑéÌâÄ¿£º »ùÓÚOCLºÍ״̬ͼµÄÀà²âÊÔ¡¢OATSÀཻ»¥²âÊÔ ÊµÑé»·¾³£º Windows Server 2003¡¢VC6.0 ʵÑéÄ¿µÄ
ÕÆÎÕ»ùÓÚOCLºÍ״̬ͼµÄÀà²âÊÔÒÔ¼°OATSÀཻ»¥²âÊԵķ½·¨¡£
ʵÑéÄÚÈÝ
ʵÑé1£ºÒÔÏÂÊÇStudentÀàOCL˵Ã÷µÄÒ»²¿·Ö£¬Çë¸ù¾Ýÿ¸ö²Ù×÷µÄǰÖÃÌõ¼þºÍºóÖÃÌõ¼þ¹¹Ôì²âÊÔÓÃÀý¡£ÒªÇóдÃ÷²âÊÔÓÃÀýµÄ¹¹ÔìÒÀ¾Ý£¬ÒÔ¼°×îºóµÃµ½µÄ²âÊÔÓÃÀý¡£ Student
xh£¨Ñ§ºÅ£©> 0
age£¨ÄêÁ䣩>= 16 and age <= 40 Student::setAge(age : Int)
Pre: age >= 16 and age <= 40 Post: self.age = age and xh = xh@pre Student::setXh(xh : Int)
Pre: xh > 0
Post: self.xh = xh and age = age@pre
´ð£º
ǰÖÃÌõ¼þÖУ¬¢Ù£ºage >= 16£»¢Ú£ºage <= 40£»Post: self.age = age and xh = xh@pre ºóÖÃÌõ¼þÖУ¬¢Ù£ºself.age = age and xh = xh@pre£»Pre£ºage >= 16 and age <= 40
¹¹Ôì²âÊÔÓÃÀýÈçÏ£º
¢Ù(age >= 16 and age <= 40£¬self.age = age and xh = xh@pre) ¢Ú(not(age >= 16)and age <= 40£¬Exception) ¢Û(age >= 16 and not(age <= 40)£¬Exception)
¢Ü(not (age >= 16)and not(age <= 40)£¬Exception)
ǰÖÃÌõ¼þÖУ¬¢Ù£ºxh > 0£» Post: self.xh = xh and age = age@pre ºóÖÃÌõ¼þÖУ¬¢Ù£ºself.xh = xh and age = age@pre£»Pre£ºxh > 0 ¹¹Ôì²âÊÔÓÃÀýÈçÏ£º
¢Ú (xh > 0£¬self.xh = xh and age = age@pre) ¢Ú (not(xh > 0)£¬Exception)
ʵÑé2£º¿¼²ìÈËÖÀijÎï¼þµÄ¹ý³Ì¡£¼ÙÉèÖÀ³öÈ¥µÄ¾àÀëÓëÈ˵ĸ߶ȡ¢Á¦Á¿ÒÔ¼°Îï¼þµÄÖØÁ¿Óйأ¬²¢ÇÒÈ˵ÄÁ¦Á¿Ö»ÓдóÓÚÎï¼þµÄÖØÁ¿£¬È˲ÅÄÜʰÆðÎï¼þ¡£
¼Ù¶¨ÈËÓÃÀàPeopleÃèÊö£¬°üº¬ÈçÏÂÊôÐÔ£º (1) Height£ºÉí¸ß£¬±ØÐë´óÓÚ0.5Ã×; (2) Might£ºÁ¦Á¿£»
(3) ThingStatus£ºÎï¼þ״̬£¬ÓÐÈýÖÖȡֵ£ºNone£¨ÎÞÎï¼þ£©¡¢Pickedup£¨Ê°Æð
״̬£©¡¢LiftedUp£¨¾ÙÆð״̬£©£»
(4) ThingWeight£ºÎïÖØ£¬Ö»ÓÐThingStatusȡֵ²»ÊÇNoneʱ²ÅÓÐÒâÒ壬²¢ÇÒ
Ó¦´óÓÚ0¡£
¿ÉÒÔÓÃÒÔϼ¸¸ö·½·¨ÃèÊöÈ˵ÄÐÐΪ£º
(1) PickUp£ºÊ°ÆðÎï¼þ£¨ÐèÒýÓÃMight£¬Ö´ÐпÉÄܸıäThingStatus¡¢
ThingWeight£©£»
(2) LiftUp£º¾ÙÆðÎï¼þ£¨Ö´ÐпÉÄܸıäThingStatus£©
(3) Throw£ºÖÀÎï¼þ£¨ÐèÒýÓÃMight¡¢Height¡¢ThingWeight£¬Ö´ÐпÉÄܸıä
ThingStatus£©¡£
PeopleÀàµÄ״̬ת»»Í¼Èçͼ1Ëùʾ¡£ÇëÀûÓÃ״̬ת»»Í¼·¨Éè¼ÆÀà²âÊÔÓÃÀý£¬ÒªÇóÁгö²âÊÔÐòÁУ¬²¢×ö±ØÒª½âÊÍ˵Ã÷¡£
ThrowInitializeS1 PickUpS2LiftUpS3 ͼ1 PeopleÀàµÄ״̬ת»»Í¼
´ð£º
#s1: Initialize ¡¤ Pick Up ¡¤ Lift Up ¡¤ Throw #s2: Initialize ¡¤ Pick Up ¡¤ Lift Up ¡¤ Throw ¡¤Pick Up
ʵÑé3£ºÒ»¸öÃæÏò¶ÔÏóϵͳ°üº¬Ò»¸öclientÀࣨC1£©ºÍËüµÄÒ»¸ö×ÓÀࣨC2£©¡£ÕâЩclientÀàÓÖÓëÒ»¸öserverÀàS1½»»¥£¬Õâ¸öserverÀàÓÐÒ»¸ö×ÓÀàS2¡£Õâ¸öserverÀà°üÀ¨Ò»¸ö·½·¨foo()£¬Ëü°ÑM1µÄÒ»¸öʵÀý×öΪ²ÎÊý£¬M1ÓÐÒ»¸ö×ÓÀàM2¡£
ͼ2 client¡¢server¡¢messageµÄ½»»¥¹ØÏµÍ¼
ÇëʹÓÃÕý½»ÕóÁвâÊÔ·¨£¨OATS£©²âÊÔclientÓëserverÖ®¼äµÄÀཻ»¥¹ØÏµfoo£¬ÒªÇóÁгöÏêϸ²âÊÔ²½Ö裬²¢¸ø³ö×îÖյIJâÊÔÓÃÀý¡£
´ð£º
£¨1£©ÓÐÈý¸ö¶ÀÁ¢µÄ±äÁ¿£¨Factors: client£¬server£¬ºÍÏûÏ¢Àࣩ £» £¨2£©Ã¿¸ö±äÁ¿¿ÉÒÔÈ¡2¸öÖµ£¨Levels£©£»
£¨3£©Ñ¡ÔñL4(23)Õý½»±í¨D¨D±äÁ¿Îª3ÒòËØ£¬ÖµÎª2ˮƽ¡£ £¨4£©°ÑÖµÓ³Éäµ½Õý½»±íÖÐ
OA before mapping factors Run 1 Run 2 Run 3 Run 4 Factor 1 0 0 1 1 Factor 2 0 1 0 1 Factor 3 0 1 1 0 £¨5£©°ÑÒòËØºÍÖµÓ³Éäµ½±íÖУ¬ÎªÊ£ÏµÄˮƽÊýѡȡֵ
OA after mapping factors Test 1 Test 2 Test 3 Test 4
Client C1 C1 C2 C2 Server S1 S2 S1 S2 M M1 M2 M2 M1