Tài liệu Mô hình đại số quan hệ của hệ thống hướng đối tượng. potx

10 447 0
Tài liệu Mô hình đại số quan hệ của hệ thống hướng đối tượng. potx

Đang tải... (xem toàn văn)

Thông tin tài liệu

Ta . p ch´ı Tin ho . c v`a Diˆe ` u khiˆe ’ n ho . c, T.21, S.3 (2005), 261—270 M ˆ O H ` INH DA . I S ˆ O ´ QUAN H ˆ E . CU ’ A H ˆ E . TH ˆ O ´ NG HU . ´ O . NG D ˆ O ´ I TU . O . . NG NGUY ˆ E ˜ N MA . NH D ´ U . C 1 , NGUY ˆ E ˜ N V ˘ AN VY . 2 , D ˘ A . NG V ˘ AN D ´ U . C 3 1 Khoa To´an, Tru . `o . ng Da . i ho . c Su . pha . m - Da . i ho . c Th´ai Nguyˆen 2 Tru . `o . ng Da . i ho . c Cˆong nghˆe . - Da . i ho . c Quˆo ´ c gia H`a Nˆo . i 3 Viˆe . n Cˆong nghˆe . thˆong tin Abstract. This article presents semantics of object oriented system with classes, visibility, dynamic binding and recursive methods. The class declarations and commands are served as designs in terms of pre- and post conditions; the relations of components in system This approach shows clearer relations of components in object oriented system, possibility of using tools and cheecking method to improve the refinement for further development of systems. The algebraical laws are expanded for design specification of object oriented programs. T´om t˘a ´ t. B`ai b´ao tr`ınh b`ay ng˜u . ngh˜ıa cu ’ a hˆe . thˆo ´ ng hu . ´o . ng dˆo ´ i tu . o . . ng v´o . i c´ac l´o . p, t´ınh tru . . c quan, liˆen kˆe ´ t dˆo . ng v`a c´ac phu . o . ng th´u . c dˆe . quy. C´ac khai b´ao l´o . p v`a c´ac lˆe . nh nhu . l`a c´ac thiˆe ´ t kˆe ´ du . . a trˆen tiˆe ` n diˆe ` u kiˆe . n, hˆa . u diˆe ` u kiˆe . n v`a c´ac mˆo ´ i quan hˆe . cu ’ a c´ac th`anh phˆa ` n trong hˆe . thˆo ´ ng C´ach tiˆe ´ p cˆa . n n`ay s˜e cho thˆa ´ y r˜o r`ang mˆo ´ i quan hˆe . cu ’ a c´ac th`anh phˆa ` n trong hˆe . thˆo ´ ng hu . ´o . ng dˆo ´ i tu . o . . ng, v`a c´ac kha ’ n˘ang su . ’ du . ng c´ac cˆong cu . v`a c´ach th´u . c kiˆe ’ m tra dˆe ’ ca ’ i tiˆe ´ n d˘a . c ta ’ hˆe . thˆo ´ ng du . o . . c ph´at triˆe ’ n sau n`ay. Nh`o . d´o c´ac luˆa . t da . i sˆo ´ d˜a du . o . . c ph´at triˆe ’ n ´ap du . ng cho viˆe . c d˘a . c ta ’ chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng. 1. GI ´ O . I THI ˆ E . U Thiˆe ´ t kˆe ´ v`a ph´at triˆe ’ n hˆe . thˆo ´ ng phˆa ` n mˆe ` m v´o . i ngˆon ng˜u . hu . ´o . ng dˆo ´ i tu . o . . ng l`a rˆa ´ t ph´u . c ta . p [1, 5]. Nhiˆe ` u nh`a nghiˆen c´u . u chı ’ ra su . . cˆa ` n thiˆe ´ t ph´at triˆe ’ n cˆong cu . h`ınh th´u . c h´oa l`am nˆe ` n ta ’ ng cho viˆe . c ph´at triˆe ’ n phˆa ` n mˆe ` m hu . ´o . ng dˆo ´ i tu . o . . ng. B`ai b´ao n`ay s˜e t`ım hiˆe ’ u c´ach th´u . c lˆa . p tr`ınh du . . a trˆen l´y thuyˆe ´ t cu ’ a Hoare v`a He [2], d`ung v`ao viˆe . c xˆay du . . ng mˆo . t c´ach d´ung d˘a ´ n c´ac chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng. L´y thuyˆe ´ t lˆa . p tr`ınh du . o . . c vˆa . n du . ng dˆe ’ tr`ınh b`ay ng˜u . ngh˜ıa cu ’ a ngˆon ng˜u . lˆa . p tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng v´o . i c´ac l´o . p, t´ınh r˜o r`ang, liˆen kˆe ´ t dˆo . ng, c´ac phu . o . ng th´u . c dˆe . quy v`a t´ınh dˆe . quy. Dˆe ’ cho do . n gia ’ n, nh˜u . ng g`ı liˆen quan dˆe ´ n c´ac di . nh ngh˜ıa biˆe ´ n, tham chiˆe ´ u t´o . i c´ac kiˆe ’ u du . o . . c bo ’ qua ([2, 6]). O . ’ dˆay, viˆe . c khai b´ao l´o . p v`a c´ac lˆe . nh xem nhu . l`a c´ac thiˆe ´ t kˆe ´ . V´o . i c´ach tiˆe ´ p cˆa . n n`ay, c´ac lˆe . nh biˆe ’ u thi . quan hˆe . nhi . phˆan thˆong qua tra . ng th´ai cu ’ a c´ac biˆe ´ n, c´ac dˆo ´ i tu . o . . ng v`a c´ac l´o . p. C´ac biˆe ´ n cu ’ a c´ac kiˆe ’ u d˜u . liˆe . u nguyˆen thu ’ y vˆa ˜ n nhˆa . n c´ac gi´a tri . tu . o . ng ´u . ng v´o . i kiˆe ’ u cu ’ a ch´ung. Trong khi d´o, tra . ng th´ai c´ac dˆo ´ i tu . o . . ng du . o . . c biˆe ’ u diˆe ˜ n b˘a ` ng bˆo . c´ac gi´a tri . cu ’ a thuˆo . c t´ınh v´o . i t´ınh dˆe . quy. Phu . o . ng th´u . c du . o . . c coi nhu . l`a thiˆe ´ t kˆe ´ v´o . i tˆa . p c´ac tham sˆo ´ , bˆo . l´o . p. Tra . ng th´ai bao gˆo ` m thˆong tin mˆoi tru . `o . ng cˆa ` n thiˆe ´ t dˆe ’ hˆo ˜ tro . . cho viˆe . c kiˆe ’ m tra t´ınh x´ac di . nh d´ung(well definedness) cu ’ a d˘a . c ta ’ . Trong tru . `o . ng ho . . p chung, chu . o . ng tr`ınh du . o . . c mˆo h`ınh h´oa b˘a ` ng thiˆe ´ t kˆe ´ c´o da . ng WF ⇒ D. O . ’ dˆay, WF thiˆe ´ t lˆa . p t´ınh x´ac di . nh d´ung cu ’ a chu . o . ng tr`ınh 262 NGUY ˆ E ˜ N MA . NH D ´ U . C, NGUY ˆ E ˜ N V ˘ AN VY . , D ˘ A . NG V ˘ AN D ´ U . C v`a thiˆe ´ t kˆe ´ D d´ong vai tr`o nhu . d˘a . c ta ’ h`anh vi cu ’ a n´o. H`anh vi n`ay kˆe ´ t ho . . p kiˆe ’ u dˆo . ng v`a co . cˆa ´ u kiˆe ’ m tra v´o . i ng˜u . ngh˜ıa r˜o r`ang hu . ´o . ng d˘a . c ta ’ truyˆe ` n thˆo ´ ng. Thˆong qua c´ac th`anh phˆa ` n dˆe ’ chı ’ r˜o t´ınh chˆa ´ t cu ’ a l´o . p v`a ´y ngh˜ıa c´ac phu . o . ng th´u . c cu ’ a ch´ung. C˜ung nhu . c´ac lˆe . nh, khai b´ao c´ac l´o . p biˆe ’ u thi . quan hˆe . nhi . phˆan thˆong qua c´ac tra . ng th´ai. Mˆo ˜ i khai b´ao cung cˆa ´ p c´ac thˆong tin ng˜u . ca ’ nh vˆe ` cˆa ´ u tr´uc cu ’ a l´o . p v`a quan hˆe . cu ’ a ch´ung v´o . i nh˜u . ng l´o . p kh´ac. Trong b`ai b´ao n`ay, ch´ung tˆoi du . a ra mˆo . t c´ach xˆay du . . ng d˘a . c ta ’ lˆogic c´ac chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng nhu . l`a su . . mo . ’ rˆo . ng cu ’ a c´ac chuˆa ’ n lˆogic trong [2]. Tru . ´o . c hˆe ´ t x´et mˆo h`ınh t´ınh to´an cu ’ a hˆe . thˆo ´ ng. 2. M ˆ O H ` INH T ´ INH TO ´ AN Mˆo . t chu . o . ng tr`ınh lˆe . nh du . o . . c x´ac di . nh b˘a ` ng c˘a . p (α, P ) , trong d´o: • α biˆe ’ u thi . tˆa . p c´ac biˆe ´ n d˜a biˆe ´ t trong chu . o . ng tr`ınh. • P l`a tˆa . p to´an tu . ’ x´ac di . nh quan hˆe . gi˜u . a c´ac gi´a tri . kho . ’ i ta . o cu ’ a c´ac biˆe ´ n trong chu . o . ng tr`ınh v`a c´ac gi´a tri . kˆe ´ t th´uc cu ’ a n´o v`a c´o da . ng p(x)  R(x, x  ) , cu . thˆe ’ ho . n nhu . sau: p(x)  R(x, x) df ok ∧ p(x) ⇒ ok  ∧ R(x, x  ), trong d´o, p(x) du . o . . c go . i l`a tiˆe ` n diˆe ` u kiˆe . n v`a pha ’ i c´o gi´a tri . true tru . ´o . c khi chu . o . ng tr`ınh b˘a ´ t dˆa ` u. R(x, x  ) go . i l`a hˆa . u diˆe ` u kiˆe . n nhˆa . n du . o . . c sau khi chu . o . ng tr`ınh kˆe ´ t th´uc. x v`a x  biˆe ’ u diˆe ˜ n gi´a tri . kho . ’ i dˆa ` u v`a kˆe ´ t th´uc cu ’ a biˆe ´ n x trong chu . o . ng tr`ınh. ok v`a ok  l`a c´ac biˆe ´ n lˆogic mˆo ta ’ tra . ng th´ai h`anh vi ban dˆa ` u v`a cuˆo ´ i cu ’ a chu . o . ng tr`ınh: nˆe ´ u chu . o . ng tr`ınh du . o . . c k´ıch hoa . t ho . . p th´u . c ok l`a true, nˆe ´ u viˆe . c thu . . c hiˆe . n chu . o . ng tr`ınh cuˆo ´ i c`ung th`anh cˆong ok  l`a true. Ngu . o . . c la . i ch´ung l`a false. K´y hiˆe . u df du . o . . c hiˆe ’ u l`a “ du . o . . c di . nh ngh˜ıa”. Dˆe ’ h`ınh th´u . c h´oa h`anh vi cu ’ a chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng, mˆo h`ınh t´ınh to´an trong b`ai n`ay c´o c´ac d˘a . c tru . ng nhu . sau dˆay: 1. Mˆo . t chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng hoa . t dˆo . ng khˆong chı ’ v´o . i c´ac biˆe ´ n (chung v`a di . a phu . o . ng) m`a c`on ca ’ c´ac dˆo ´ i tu . o . . ng. Dˆe ’ da ’ m ba ’ o truy cˆa . p c´ac biˆe ´ n, mˆo h`ınh cˆa ` n thˆem tˆa . p c´ac biˆe ´ n thuˆo . c t´ınh bˆo ’ sung v`ao tˆa . p c´ac biˆe ´ n chung v`a riˆeng d˜a biˆe ´ t trong chu . o . ng tr`ınh. 2. Do cˆa ´ u tr´uc cu ’ a l´o . p con, mˆo . t dˆo ´ i tu . o . . ng c´o thˆe ’ n˘a ` m trong l´o . p con bˆa ´ t k`y cu ’ a mˆo . t tˆo ’ ch´u . c du . o . . c khai b´ao. Nhu . o . ’ kˆe ´ t qua ’ , h`anh vi cu ’ a phu . o . ng th´u . c d´o s˜e phu . thuˆo . c v`ao kiˆe ’ u hiˆe . n ta . i cu ’ a n´o. Dˆe ’ hˆo ˜ tro . . co . cˆa ´ u liˆen kˆe ´ t dˆo . ng cu ’ a phu . o . ng th´u . c go . i, mˆo h`ınh s˜e lu . u gi˜u . vˆe ´ t cu ’ a kiˆe ’ u dˆo . ng cho mˆo ˜ i dˆo ´ i tu . o . . ng. Kha ’ n˘ang n`ay l`a ph`u ho . . p v´o . i c´ac biˆe ’ u th´u . c v`a c´ac lˆe . nh trong pha . m vi m`a mˆo ˜ i biˆe ´ n ´u . ng v´o . i mˆo . t ba ’ n ghi ho . . p th´u . c. 3. C˜ung nhu . trong c´ac ngˆon ng˜u . lˆe . nh, mˆo . t tra . ng th´ai cu ’ a biˆe ´ n l`a gi´a tri . du . o . . c ta . o ra ta . i mˆo . t th`o . i diˆe ’ m. Mˆo . t dˆo ´ i tu . o . . ng c´o thˆe ’ ch´u . a nhiˆe ` u thuˆo . c t´ınh cu ’ a n´o, v`a gi´a tri . c´ac thuˆo . c t´ınh thu . `o . ng du . o . . c biˆe ’ u diˆe ˜ n bo . ’ i bˆo . h˜u . u ha . n l`a c´ac mˆa ’ u tin cu ’ a kiˆe ’ u hiˆe . n ta . i cu ’ a dˆo ´ i tu . o . . ng v`a nh˜u . ng gi´a tri . cu ’ a c´ac thuˆo . c t´ınh d´o (c´o t´ınh dˆe . quy). V`ı chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng du . o . . c biˆe ’ u diˆe ˜ n bo . ’ i quan hˆe . hai ngˆoi (α, P ), α l`a tˆa . p c´ac biˆe ´ n mˆo ta ’ mˆoi tru . `o . ng trong d´o chu . o . ng tr`ınh du . o . . c thi h`anh, α c´o thˆe ’ du . o . . c chia 3 phˆa ` n nhu . sau: 1. Phˆa ` n th´u . nhˆa ´ t cung cˆa ´ p c´ac thˆong tin ng˜u . ca ’ nh l´o . p v`a c´ac quan hˆe . cu ’ a ch´ung: • cname: Tˆa . p c´ac l´o . p d˜a du . o . . c khai b´ao. • superclass: H`am bˆo . phˆa . n m`a ´anh xa . t`u . l´o . p t´o . i l´o . p cha cu ’ a n´o, t´u . c l`a superclass(M ) = N, v´o . i N l`a l´o . p cha cu ’ a l´o . p M. N du . o . . c go . i l`a l´o . p cha cu ’ a M, nˆe ´ u tˆo ` n ta . i ho . h˜u . u ha . n M ˆ O H ` INH DA . I S ˆ O ´ QUAN H ˆ E . CU ’ A H ˆ E . TH ˆ O ´ NG HU . ´ O . NG D ˆ O ´ I TU . O . . NG 263 {N i |0  i  n} sao cho l´o . p M = N 0 v`a N = N n v`a superclass(N i ) = N i+1 v´o . i mo . i 0  i < n. 2. Phˆa ` n th´u . 2 mˆo ta ’ chi tiˆe ´ t cˆa ´ u tr´uc cu ’ a mˆo ˜ i l´o . p: v´o . i mˆo ˜ i l´o . p N ∈ cname, n´o bao gˆo ` m: • attribute( N ): tˆa . p c´ac thuˆo . c t´ınh (du . o . . c khai b´ao ho˘a . c kˆe ´ th`u . a) cu ’ a l´o . p N {a 1 : U 1 , c 1 , , a m : U m , c m } trong d´o U i v`a c i d´ong vai tr`o l`a kiˆe ’ u v`a gi´a tri . kho . ’ i dˆa ` u cu ’ a thuˆo . c t´ınh ai trong l´o . p N , v`a s˜e tham chiˆe ´ u bo . ’ i c´ac h`am type( N.a i ) v`a initial (N.a i ) (s˜e du . o . . c tha ’ o luˆa . n sau). • meth( N ): Tˆa . p c´ac phu . o . ng th´u . c du . o . . c khai b´ao ho˘a . c kˆe ´ th`u . a bo . ’ i N : {m 1 → (x 1 : T 1,1 , y 1 : T 1,2 , z 1 : T 1,3 , D 1 ), m k → (x k : T k,1 , y k : T k,2 , z k : T k,3 , D k )} trong d´o, phu . o . ng th´u . c m i c´o x i , y i v`a z i tu . o . ng ´u . ng l`a gi´a tri . , kˆe ´ t qua ’ v`a gi´a tri . tham sˆo ´ kˆe ´ t qua ’ . H`anh vi cu ’ a phu . o . ng th´u . c m i du . o . . c biˆe ’ u diˆe ˜ n bo . ’ i thiˆe ´ t kˆe ´ D i . 3. Phˆa ` n th´u . 3 nhˆa . n biˆe ´ t c´ac biˆe ´ n m`a ch´ung su . ’ du . ng du . o . . c bo . ’ i chu . o . ng tr`ınh: • alphabet: Tˆa . p c´ac biˆe ´ n chung d˜a biˆe ´ t trong chu . o . ng tr`ınh: {x 1 : T 1 , , x n : T n }. O . ’ dˆay T i biˆe ’ u diˆe ˜ n kiˆe ’ u cu ’ a biˆe ´ n x i , c´o thˆe ’ l`a mˆo . t trong sˆo ´ kiˆe ’ u d˜u . liˆe . u do . n gia ’ n (Boolean: B, sˆo ´ nguyˆen: int, sˆo ´ thu . . c: R , xˆau: string), ho˘a . c tˆen l´o . p v`a du . o . . c tham chiˆe ´ u bo . ’ i h`am type( x i ). • locvar: Tˆa . p c´ac biˆe ´ n di . a phu . o . ng trong pha . m vi {v 1 : T 1 , , v m : T m }. • visibleattr: Tˆa . p c´ac thuˆo . c t´ınh tu . `o . ng minh trong l´o . p hiˆe . n ta . i, t´u . c l`a tˆa ´ t ca ’ thuˆo . c t´ınh d˜a du . o . . c khai b´ao thuˆo . c miˆe ` n private, protected v`a public ( d˜a khai b´ao ho˘a . c kˆe ´ th`u . a) cu ’ a l´o . p. Dˆe ’ thuˆa . n lo . . i, ch´ung ta th`u . a nhˆa . n c´o 4 tˆa . p tˆen kh´ac nhau: tˆen biˆe ´ n, tˆen l´o . p, tˆen thuˆo . c t´ınh v`a tˆen phu . o . ng th´u . c. Tra . ng th´ai mˆo h`ınh liˆen kˆe ´ t c´ac biˆe ´ n trong c´ac tˆa . p alphabet v`a locvar v´o . i c´ac gi´a tri . hiˆe . n th`o . i cu ’ a ch´ung. Nˆe ´ u biˆe ´ n l`a dˆo ´ i tu . o . . ng th`ı gi´a tri . cu ’ a n´o s˜e l`a mˆo . t bˆo . gi´a tri . cu ’ a c´ac thuˆo . c t´ınh v´o . i kiˆe ’ u hiˆe . n ta . i: {myclass → M} ∪ {a → value | a ∈ attribue(M )}. 3. BI ˆ E ’ U TH ´ U . C Mˆo . t biˆe ’ u th´u . c c´o thˆe ’ c´o mˆo . t trong c´ac da . ng nhu . sau [2, 3]: e ::= x | null | new N | e is N | (N)e | e.a | (e; a : f) | f(e) | self. Dˆe ’ x´ac di . nh t´ınh ho . . p lˆe . cu ’ a biˆe ’ u th´u . c e , ta du . a ra x´ac nhˆa . n D(e) , n´o l`a d´ung trong tru . `o . ng ho . . p m`a biˆe ’ u th´u . c e c´o thˆe ’ du . o . . c di . nh gi´a th`anh cˆong. Mˆo . t biˆe ´ n x du . o . . c go . i l`a x´ac di . nh d´ung nˆe ´ u n´o d˜a biˆe ´ t trong chu . o . ng tr`ınh. D(x) df x ∈ (alphabet ∪ locvar). K´y hiˆe . u null biˆe ’ u diˆe ˜ n mˆo . t dˆo ´ i tu . o . . ng x´ac di . nh d´ung. D(null) df true, type(null) df NULL, o . ’ dˆay NULL l`a tˆen l´o . p d˘a . c biˆe . t. Ta quy u . ´o . c r˘a ` ng NULL  N v´o . i mo . i N ∈ cname. Biˆe ’ u th´u . c newN l`a x´ac di . nh d´ung nˆe ´ u l´o . p N d˜a du . o . . c khai b´ao. D(newN) df N ∈ cname. N´o chı ’ ra mˆo . t dˆo ´ i tu . o . . ng m´o . i cu ’ a l´o . p N d˜a du . o . . c ta . o ra. type(newN) df N, newN df {myclass → N} ∪ U {a ∈ attribute (N)) | a → initial(N.a)}. 264 NGUY ˆ E ˜ N MA . NH D ´ U . C, NGUY ˆ E ˜ N V ˘ AN VY . , D ˘ A . NG V ˘ AN D ´ U . C Kiˆe ’ u thu . ’ nghiˆe . m (test) e is N l`a biˆe ’ u th´u . c (lˆogic) x´ac di . nh d´ung khi N d˜a du . o . . c khai b´ao v`a e l`a dˆo ´ i tu . o . . ng x´ac di . nh d´ung D(e is N ) df (N ∈ cname) ∧ D(e) ∧ (type(e) ∈ cname), type(e is N ) df B Gi´a tri . cu ’ a biˆe ’ u th´u . c du . o . . c x´ac di . nh r˜o b˘a ` ng gi´a tri . cu ’ a e l`a dˆo ´ i tu . o . . ng cu ’ a l´o . p N hay khˆong. (e is N ) df (e = null) ∧ (e(myclass)  N). Kiˆe ’ u t´ınh gˆo . p (cast) (N)e b˘a ` ng e nˆe ´ u n´o l`a dˆo ´ i tu . o . . ng kh´ac null trong l´o . p con cu ’ a N D((N)e) df D(e is N) ∧ (e = null) ∧ (e(myclass)  N), (N)e df e. Kiˆe ’ u cu ’ a (N)e l`a l´o . p N : type((N )e) df N. Thuˆo . c t´ınh lu . . a cho . n e.a l`a x´ac di . nh d´ung khi e l`a dˆo ´ i tu . o . . ng kh´ac null, v`a l`a thuˆo . c t´ınh hiˆe ’ n nhiˆen t`u . l´o . p hiˆe . n ta . i D(e.a) df D(e) ∧ (type(e) ∈ cname) ∧ (e = null) ∧ (e(myclass).a) ∈ visibleattr, e.a df e(a), type(e.a) df type(e(myclass).a). Thuˆo . c t´ınh cˆa . p nhˆa . t (e; a : f) l`a x´ac di . nh d´ung v´o . i diˆe ` u kiˆe . n l`a e.a l`a hiˆe ’ n hiˆe . n v`a kiˆe ’ u cu ’ a f l`a kiˆe ’ u con cu ’ a e.a D(e; a : f) df D(e.a) ∧ D(f) ∧ (type(f)  type(e(myclass).a)). Kiˆe ’ u cu ’ a (e; a : f) l`a l´o . p cu ’ a e, v`a gi´a tri . cu ’ a n´o c´o thˆe ’ thu nhˆa . n du . o . . c t`u . gi´a tri . cu ’ a e b˘a ` ng c´ach thay dˆo ’ i gi´a tri . cu ’ a thuˆo . c t´ınh a cho gi´a tri . cu ’ a f type(e; a : f) df type(e), (e; a : f) df e ⊕ {a → f }. V´ı du . sau x´ac di . nh d´ung cu ’ a biˆe ’ u th´u . c c`ai d˘a . t: D(e and f ) df D(e) ∧ (type(e) = B) ∧ D(f ) ∧ (type(f ) = B). Biˆe ´ n self c´o thˆe ’ chı ’ du . o . . c tham kha ’ o trong di . nh ngh˜ıa cu ’ a c´ac phu . o . ng th´u . c, v`a du . o . . c coi nhu . l`a biˆe ´ n di . a phu . o . ng trong mˆo h`ınh cu ’ a ch´ung tˆoi: D(self) df self ∈ locvar. 4. C ´ AC L ˆ E . NH Phˆa ` n n`ay xem x´et c´ac lˆe . nh hˆo ˜ tro . . viˆe . c xˆay du . . ng chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng tiˆeu biˆe ’ u [3]. c ::= |skip | chaos | c  b  c | cΠc | c; c | b ∗ c | varx : T | endx | le := e | o.m(e). O . ’ dˆay b l`a biˆe ’ u th´u . c lˆogic, c l`a lˆe . nh, e l`a mˆo . t biˆe ’ u th´u . c, le l`a c´o thˆe ’ xuˆa ´ t hiˆe . n o . ’ vˆe ´ tr´ai cu ’ a ph´ep g´an v`a c´o da . ng le ::= x|le.a v´o . i x l`a biˆe ´ n do . n c`on a l`a thuˆo . c t´ınh cu ’ a dˆo ´ i tu . o . . ng. skip (bo ’ qua): skip khˆong l`am g`ı, v`a cuˆo ´ i c`ung l`a th`anh cˆong: skip df ∅ : (true  true). chaos (khˆong x´ac di . nh): chaos h`anh vi cu ’ a n´o khˆong x´ac di . nh tru . ´o . c du . o . . c: chaos df ∅ : (false  true). conditional (diˆe ` u kiˆe . n): Cho P v`a Q l`a c´ac thiˆe ´ t kˆe ´ . P  b  Q chu . o . ng tr`ınh thu . . c hiˆe . n P nˆe ´ u gi´a tri . b l`a true, ngu . o . . c la . i thu . . c hiˆe . n Q. M ˆ O H ` INH DA . I S ˆ O ´ QUAN H ˆ E . CU ’ A H ˆ E . TH ˆ O ´ NG HU . ´ O . NG D ˆ O ´ I TU . O . . NG 265 P  b  Q df (D(b) ∧ type(b) = B) → (P ∧ b ∨ Q ∧ ¬b). Cho {P i | 1  i  n} l`a mˆo . t ho . cu ’ a thiˆe ´ t kˆe ´ . Su . . luˆan phiˆen if {(b i → P i ) | 1  i  n}fi, v´o . i viˆe . c cho . n P i dˆe ’ thu . . c hiˆe . n nˆe ´ u b i l`a true. Khi mo . i b i l`a false th`ı khˆong x´ac di . nh (chaos). non-determinism (khˆong tiˆe ` n di . nh): Cho P v`a Q l`a c´ac thiˆe ´ t kˆe ´ . K´y hiˆe . u P ΠQ biˆe ’ u diˆe ˜ n cho chu . o . ng tr`ınh du . o . . c thu . . c hiˆe . n P ho˘a . c Q, nhu . ng s˜e khˆong du . o . . c cho . n tru . ´o . c: P ΠQ df P V Q. composition (cˆa ´ u th`anh): Cho P v`a Q l`a c´ac thiˆe ´ t kˆe ´ , th`anh phˆa ` n cˆa ´ u tr´uc cu ’ a ch´ung: P ; Q , mˆo ta ’ chu . o . ng tr`ınh c´o thˆe ’ du . o . . c thu . . c hiˆe . n P tru . ´o . c, khi P kˆe ´ t th´uc th`ı Q s˜e b˘a ´ t dˆa ` u, tra . ng th´ai kˆe ´ t th´uc cu ’ a P l`a ph`u ho . . p cho tra . ng th´ai b˘a ´ t dˆa ` u cu ’ a Q. P (s, s  ); Q(s, s  ) df ∃m • P (s, m) ∧ Q(m, s  ). iteration (l˘a . p): Cho P l`a mˆo . t thiˆe ´ t kˆe ´ , b l`a mˆo . t diˆe ` u kiˆe . n, k´y hiˆe . u b ∗ P : ngh˜ıa l`a P du . o . . c thu . . c hiˆe . n ch`u . ng n`ao b c`on l`a true tru . ´o . c mˆo ˜ i lˆa ` n l˘a . p: b ∗ P df µX • (P ; X)  b  skip. assignment (g´an): Lˆe . nh g´an c´o da . ng le := e, o . ’ dˆay le l`a mˆo . t trong c´ac da . ng sau dˆay: biˆe ´ n x cu ’ a chu . o . ng tr`ınh, thuˆo . c t´ınh le.a cu ’ a dˆo ´ i tu . o . . ng le, dˆo ´ i tu . o . . ng v´o . i kiˆe ’ u khuˆon mˆa ˜ u (N)le. Khai b´ao biˆe ´ n: Mˆo . t c´ach h`ınh th´u . c, viˆe . c khai b´ao v`a kˆe ´ t th´uc khai b´ao biˆe ´ n v du . o . . c x´ac di . nh bo . ’ i: var v : T df v ∈ (alphabet ∪ locvar) ⇒ locvar : (true  locvar  = locvar ∪ {v : T }, end v df v ∈ locvar ⇒ locvar : (true  locvar  = {v}  locvar), o . ’ dˆay {v}  locvar biˆe ’ u diˆe ˜ n tˆa . p locvar sau khi d˜a loa . i bo ’ biˆe ´ n v. Diˆe ` u d´o gia ’ i th´ıch r˘a ` ng: nh˜u . ng r`ang buˆo . c trong tˆa . p locvar khˆong cho ph´ep di . nh ngh˜ıa la . i biˆe ´ n trong pha . m vi cu ’ a n´o. Method call (phu . o . ng th´u . c go . i): Cho v, r v`a vr l`a danh s´ach c´ac biˆe ’ u th´u . c. Chu . o . ng tr`ınh O.m(v, r, vr) g´an c´ac tham biˆe ´ n hiˆe . n ta . i v v`a vr c´ac gi´a tri . ch´ınh th´u . c v`a gi´a tri . tham biˆe ´ n kˆe ´ t qua ’ trong phu . o . ng th´u . c m cu ’ a dˆo ´ i tu . o . . ng O v`a sau d´o thu . . c hiˆe . n c´ac lˆe . nh trong phˆa ` n thˆan cu ’ a phu . o . ng th´u . c m. Sau khi n´o kˆe ´ t th´uc, c´ac gi´a tri . kˆe ´ t qua ’ v`a gi´a tri . tham sˆo ´ kˆe ´ t qua ’ cu ’ a m du . o . . c tra ’ la . i cho c´ac tham biˆe ´ n hiˆe . n ta . i l`a v v`a vr. O.m(v, r, vr) df (D(O) ∧ type(O) ∈ cname ∧ m ∈ meth(O(myclass))) ⇒ if{(O(myclass) = N →       var self : N, x, T 1, y : T2, z : T 3; self, x, z := O, v, r, vr; N.m O, v, r, vr := self, y, z; end self, x, y, z;       N  type(O) ∧ m ∈ meth(N)}fi. O . ’ dˆay: • x, y v`a z l`a gi´a tri . , kˆe ´ t qua ’ v`a gi´a tri . tham biˆe ´ n kˆe ´ t qua ’ trong phu . o . ng th´u . c m cu ’ a l´o . p O(myclass); T 1, T 2 v`a T 3 l`a c´ac kiˆe ’ u cu ’ a ch´ung; N.m d´ong vai tr`o thiˆe ´ t kˆe ´ liˆen kˆe ´ t v´o . i phu . o . ng th´u . c m cu ’ a l´o . p N. • self gi´a tri . tham sˆo ´ kˆe ´ t qua ’ tu . `o . ng minh du . o . . c su . ’ du . ng quy cho dˆo ´ i tu . o . . ng c´o phu . o . ng th´u . c hoa . t dˆo . ng hiˆe . n ta . i r`ang buˆo . c v´o . i dˆo ´ i tu . o . . ng O. 266 NGUY ˆ E ˜ N MA . NH D ´ U . C, NGUY ˆ E ˜ N V ˘ AN VY . , D ˘ A . NG V ˘ AN D ´ U . C 5. KHAI B ´ AO L ´ O . P 5.1. Khai b´ao l´o . p Bank name address withdraw(ID, amount) getBalance(ID, res) newAcount(name, amount) Account aID: int balance: int withdraw(amount) getBalance() CA withdraw(amount) SA withdraw(amount) Bank name address withdraw(ID, amount) getBalance(ID, res) newAcount(name, amount) Bank name address withdraw(ID, amount) getBalance(ID, res) newAcount(name, amount) Account aID: int balance: int withdraw(amount) getBalance() Account aID: int balance: int withdraw(amount) getBalance() CA withdraw(amount) CA withdraw(amount) SA withdraw(amount) SA withdraw(amount) H`ınh 1. Hˆe . thˆo ´ ng Bank Trong phˆa ` n n`ay s˜e xem x´et chi tiˆe ´ t viˆe . c khai b´ao l´o . p, t´ınh x´ac di . nh d´ung cu ’ a ch´ung [2]. Mˆo . t chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng c´o thˆe ’ du . o . . c chı ’ ra bo . ’ i da . ng cdecls •P. N´o b˘a ´ t dˆa ` u b˘a ` ng phˆa ` n khai b´ao mˆo . t sˆo ´ l´o . p tiˆe ´ p sau l`a khˆo ´ i lˆe . nh P biˆe ’ u diˆe ˜ n phu . o . ng th´u . c main cu ’ a chu . o . ng tr`ınh. Viˆe . c khai b´ao l´o . p cdecls c´o thˆe ’ theo ngˆon ng˜u . tu . . a Java nhu . sau: [private] class N [extends M ] pri : t 1 : T 1 , , t i : T i ; pro: u 1 : U 1 , , u j : U j ; pub: v 1 : V 1 , , v k : V k ; meth: m 1 (x 11 : T 11 , y 12 : T 12 , z 13 : T 13 ){P 1 }; m  (x 1 : T 1 , y 2 : T 2 , z 3 : T 3 ){P  }; end N O . ’ dˆay, N l`a tˆen l´o . p du . o . . c khai b´ao v`a M l`a l´o . p cha cu ’ a n´o. Nˆe ´ u khˆong c´o private th`ı l´o . p N du . o . . c khai b´ao ngˆa ` m di . nh kiˆe ’ u public. Phˆa ` n pri di . nh ngh˜ıa c´ac c´ac thuˆo . c t´ınh riˆeng (private) cu ’ a l´o . p N. Phˆa ` n pro di . nh ngh˜ıa c´ac thuˆo . c t´ınh du . o . . c ba ’ o vˆe . (protected) cu ’ a N . Phˆa ` n pub di . nh ngh˜ıa c´ac thuˆo . c t´ınh chung (public) cho l´o . p N. Phˆa ` n meth khai b´ao c´ac phu . o . ng th´u . c cu ’ a l´o . p N, trong d´o m 1 , m 2 , , m  l`a c´ac phu . o . ng th´u . c, o . ’ dˆay (x i1 : T i1 ), (y i2 : T i2 ), (z i3 : T i3 ) v`a p i biˆe ’ u diˆe ˜ n gi´a tri . , kˆe ´ t qua ’ , gi´a tri . tham biˆe ´ n kˆe ´ t qua ’ v`a phˆa ` n thˆan cu ’ a phu . o . ng th´u . c m i . V´ı du . : X´et hˆe . thˆo ´ ng Bank do . n gia ’ n du . o . . c minh ho . a bo . ’ i biˆe ’ u dˆo ` l´o . p UML [7] trong h`ınh v˜e 1. Account l`a l´o . p a ’ o c´o hai l´o . p con l`a Current Account (CA) v`a Saving Account (SA). Viˆe . c khai b´ao l´o . p Account du . o . . c chı ’ ra bo . ’ i declAccount nhu . sau: class Account pro: aID: int, balance: int; meth: getBalance(0, b : int, 0) { b := balance }; withdraw(x : int, 0, 0) { balance  x  balance’ = balance - x}; M ˆ O H ` INH DA . I S ˆ O ´ QUAN H ˆ E . CU ’ A H ˆ E . TH ˆ O ´ NG HU . ´ O . NG D ˆ O ´ I TU . O . . NG 267 end Account Viˆe . c khai b´ao declCA cu ’ a CA nhu . sau: class CA extends Account meth: withdraw(x: int, 0, 0) { balance := balance - x}; end CA Viˆe . c khai b´ao declSA cu ’ a SA nhu . sau: class SA extends Account meth: withdraw(x: int, 0, 0) { skip  (balance < x) (balance := balance -x)}; end SA Viˆe . c khai b´ao declBank cu ’ a Bank nhu . sau: class Bank pri: name: string, address: string, ac: Account, y: Account, A: set(Account) meth: getBalance(aID: int, b: int, 0) {skip  (∃!ac ∈ A)  ac.aID = aID  if { y.aID = aID → y. getBalance(b)|y ∈ A}f i}; withdraw(aID: int, x: int, 0) {skip  (∃!ac ∈ A)  ac.aID = aID  if {y.aID = aIDy.withdraw (x)|y ∈ A}f i}; newAccount(a: int b: boolean, 0) { var x : Account; (x := new CA(a); )  b  (x := new SA(a); ) A := A ∪ {x}}; end Bank Viˆe . c khai b´ao l´o . p cdecl go . i l`a x´ac di . nh d´ung, du . o . . c chı ’ ra bo . ’ i WD(cdecl) khi tho ’ a m˜an c´ac diˆe ` u kiˆe . n sau dˆay [2, 3]: a) N v`a M l`a kh´ac biˆe . t. b) Tˆen c´ac thuˆo . c t´ınh l`a kh´ac nhau. c) Nh˜u . ng gi´a tri . kho . ’ i dˆa ` u cu ’ a c´ac thuˆo . c t´ınh trong ch´ung ph`u ho . . p v´o . i c´ac kiˆe ’ u d˜u . liˆe . u tu . o . ng ´u . ng. d) Tˆen cu ’ a c´ac phu . o . ng th´u . c l`a kh´ac nhau. e) C´ac tham sˆo ´ cu ’ a mo . i phu . o . ng th´u . c l`a kh´ac nhau. Su . . khai b´ao l´o . p cdecl dˆe ’ bˆo ’ sung thˆong tin cˆa ´ u tr´uc cu ’ a l´o . p N v`ao tra . ng th´ai tiˆe ´ p theo v`a vai tr`o cu ’ a n´o du . o . . c thu nhˆa . n bo . ’ i thiˆe ´ t kˆe ´ . cdecl df W D(cdecl)          alphabet  = alphabet ∧ cname  = {N } ∧ superclass  = {N → M } ∧ pri’ = {N → {t 1 : T 1 , c 1 , , (t i : T i , c i )} ∧ pro  = {N → {u 1 : U 1 , d 1 , , u j : U j , d j }} ∧ pub  = {N → {v 1 : V 1 , e 1 , , v k : V k , e k }} ∧ meth  = {N → {(m 1 → (x 11 : T 11 , y 12 : T 12 , z 13 : T 13 , p 1 ), , (m  → (x 1 : T 1 , y 2 : T 2 , z 3 : T 3 , p  )}}         O . ’ dˆay c´ac biˆe ´ n lˆogic pri, pro, pub d˜a du . o . . c gi´o . i thiˆe . u o . ’ c´ac thuˆo . c t´ınh d˜a khai b´ao cu ’ a l´o . p N, t`u . c´ac tˆa . p gi´a tri . cu ’ a attribute(N) thu nhˆa . n du . o . . c ho`an to`an quan hˆe . v´o . i l´o . p cha trong sˆo ´ c´ac l´o . p d˜a khai b´ao. H`anh vi dˆo . ng cu ’ a c´ac phu . o . ng th´u . c c´o thˆe ’ khˆong du . o . . c h`ınh th´u . c h´oa tru . ´o . c khi quan hˆe . phu . thuˆo . c gi˜u . a c´ac l´o . p theo l´y thuyˆe ´ t. Nhu . kˆe ´ t qua ’ , biˆe ´ n lˆogic meth(N ) liˆen kˆe ´ t mˆo ˜ i phu . o . ng th´u . c m i t´o . i thˆan p i cu ’ a n´o d´ung ho . n l`a ´y ngh˜ıa cu ’ a n´o, diˆe ` u d´o s˜e du . o . . c t´ınh to´an o . ’ cuˆo ´ i phˆa ` n khai b´ao. 268 NGUY ˆ E ˜ N MA . NH D ´ U . C, NGUY ˆ E ˜ N V ˘ AN VY . , D ˘ A . NG V ˘ AN D ´ U . C Tiˆe ´ p tu . c v´ı du . trˆen: Dˆe ˜ r`ang thˆa ´ y r˘a ` ng ca ’ declAccount v`a declCA dˆe ` u l`a x´ac di . nh d´ung d˘a ´ n. Ng˜u . ngh˜ıa cu ’ a declAccount du . o . . c chı ’ ra bo . ’ i thiˆe ´ t kˆe ´ sau: declAccount = true    cname  = {Account} ∧ pro  = {Account → {aID : int, balance : int}} ∧ meth  = {Account → {getBalance → (0, b : int, 0, b := balance), withdraw → (x : int, 0, 0, balance  x  balance − x)}}   Ng˜u . ngh˜ıa cu ’ a declCA l`a nhu . sau: declCA = true    cname  = {CA} ∧ superclass  = {CA → Account} ∧ meth  = {Account → {withdraw → (x : int, 0, 0, balance := balance − x)}}   Ng˜u . ngh˜ıa cu ’ a declSA l`a nhu . sau:   cname  = {SA} ∧ superclass  = {SA → Account} ∧ declSA = true  meth  = {Account → {withdraw → (x : int, 0, 0, skip  (balance < x)  balance := balance − x}; }}   5.2. Th`anh phˆa ` n cˆa ´ u tr´uc cu ’ a l´o . p Sau dˆay ta xem x´et th`anh phˆa ` n cˆa ´ u tr´uc cu ’ a l´o . p khai b´ao c˜ung nhu . quan hˆe . cu ’ a c´ac th`anh phˆa ` n d´o v´o . i nhau. Phˆa ` n khai b´ao cdecls cu ’ a chu . o . ng tr`ınh l`a su . . cˆa ´ u th`anh cu ’ a mˆo . t sˆo ´ l´o . p: cdecls ≡ cdecl 1 ; cdecl 2 ; ; cdecl k Th`anh phˆa ` n cˆa ´ u tr´uc l´o . p khai b´ao do . n gia ’ n l`a thˆem v`ao nˆo . i dung cho mˆoi tru . `o . ng hiˆe . n ta . i α d˜a ph´at sinh bo . ’ i c´ac th`anh phˆa ` n cu ’ a l´o . p khai b´ao d˜a cung cˆa ´ p m`a khˆong pha ’ i di . nh ngh˜ıa la . i l´o . p trong pha . m vi cu ’ a n´o. N´o c´o thˆe ’ du . o . . c x´ac di . nh bo . ’ i kˆe ´ t ho . . p song song nhu . sau [2]: (cdecl1; cdecl2) df cdecl1 M cdecl2. O . ’ dˆay X(m, m  ) M Y (m, m  ) du . o . . c cho bo . ’ i th`anh cˆong th´u . c: (X(m, m  1 ) ∧ Y (m, m  2 )); M(m 1 , m 2 , m  ) v`a thiˆe ´ t kˆe ´ M kˆe ´ t ho . . p v´o . i c´ac da . i lu . o . . ng ra m1 v`a m2 cu ’ a X v`a Y t´o . i da . i lu . o . . ng ra m cu ’ a cˆa ´ u tr´uc song song du . o . . c x´ac di . nh bo . ’ i: (cname1 ∩ cname2 = ∅)            alphabet  = alphabet1 ∪ alphabet2 ∧ cname  = cname1 ∪ cname2 ∧ superclass  = superclass1 ∩ superclass2 ∧ pri  = pri 1 ∪ pri 2 ∧ pro  = pro 1 ∪ pro 2 ∧ pub  = pub 1 ∪ pub 2 ∧ meth  = meth1 ∪ meth2           V´ı du . : Tiˆe ´ p tu . c v´ı du . o . ’ trˆen, ta thˆa ´ y r˘a ` ng khˆong c´o viˆe . c khai b´ao la . i l´o . p trong phˆa ` n khai b´ao cu ’ a hˆe . thˆo ´ ng Bank. Tru . ´o . c hˆe ´ t, ta t´ınh declAccount v`a declCA: M ˆ O H ` INH DA . I S ˆ O ´ QUAN H ˆ E . CU ’ A H ˆ E . TH ˆ O ´ NG HU . ´ O . NG D ˆ O ´ I TU . O . . NG 269 declAccount; declCA = true        cname  = {Account, CA} ∧ superclass  = {CA → Account} ∧ pro  = {Account{aID : int, balance : int}} ∧ meth  = {Account{getBalance(0, b : int, 0, b := balance)}, withdraw → (x : int, 0, 0, b ≥ x  balance  := balance − x)}, CA → {withdraw → (x : int, 0, 0, balance := balance − x)}}       Viˆe . c t´ınh khai b´ao khai b´ao declSA cu ’ a SA ho`an to`an tu . o . ng tu . . nhu . trˆen, t`u . d´o ta s˜e t´ınh declAccount; declCA; declSA nhu . sau: declAccount; declCA; declSA = true          cname  = {Account, CA, SA} ∧ superclass  = {CA → Account, SA → Account} ∧ pro  = {Account{aID : int, balance : int}} ∧ meth  = {Account → {getBalance → (0, b : int, 0, b := balance), withdraw → (x : int, 0, 0, b ≥ x  balance  := balance − x)}, CA → {withdraw → (x : int, 0, 0, balance := balance − x)} SA → {withdraw → (x : int, 0, 0, skip  (balance < x)  balance := balance − x)}}         Tiˆe ´ p tu . c ta t´ınh du . o . . c declAccount; declCA; declSA; declsBank nhu . sau: declAccount; declCA; declSA; declsBank = true                             cname  = {Account, CA, SABank} ∧ superclass  = {CA → Account, SA → Account} ∧ pri  = {Bank → cname : string, address : string, A : set(Account)} ∧ pro  = {Account → {aID : int, balance : int}} ∧ meth  = {Account → {getBalance → (0, b : int, 0, b := balance), withdraw → (x : int, 0, 0, bx  balance  := balance − x)}, CA → {withdraw → (x : int, 0, 0, balance := balance − x)} SA → {withdraw → (x : int, 0, 0, skip  (balancex)  balance := balance − x)}, Bank → {getBalance → (aID : int, b : int, 0{skip  (∃!ac ∈ A)  ac.aID = aID  if{y.aID = aID → y.getBalance(b)|y ∈ A}f i)}, withdraw → {(aID : int, x : int, 0, {skip  (∃!ac ∈ A)  ac.aID = aID  if{y.aID = aID → y.withdraw(x)|y ∈ A}f i)}, newAccount → {(a : int, b : Boolean, 0, var x : Account; x := new CA(a)  b  x := new SA(a); A := A ∪ {x} endx)}; }                            T`u . mˆo h`ınh tu . o . ng tu . . nhu . trˆen, He Jifeng v`a c´ac cˆo . ng su . . d˜a c´o nh˜u . ng ca ’ i tiˆe ´ n t´ınh to´an cho cho hˆe . thˆo ´ ng dˆo ´ i tu . o . . ng rCOS cu ’ a ho . [4]. 6. M ˆ O . T S ˆ O ´ K ˆ E ´ T QUA ’ Trˆen dˆay, ch´ung tˆoi d˜a tr`ınh b`ay ng˜u . ngh˜ıa c´ac quan hˆe . da . i sˆo ´ cho d˘a . c ta ’ hˆe . thˆo ´ ng hu . ´o . ng dˆo ´ i tu . o . . ng, v`a d˜a xem x´et to´an tu . ’ chu . o . ng tr`ınh trong ngˆon ng˜u . hu . ´o . ng dˆo ´ i tu . o . . ng l`a mˆo . t c´ach mˆo ta ’ ch´ınh x´ac giˆo ´ ng nhu . ba ’ n sao trong ngˆon ng˜u . lˆe . nh. Do d´o hˆa ` u hˆe ´ t c´ac luˆa . t da . i sˆo ´ d˜a du . o . . c ph´at triˆe ’ n cu ’ a ngˆon ng˜u . lˆenh dˆe ˜ d`ang du . o . . c ´ap du . ng trong viˆe . c thiˆe ´ t kˆe ´ c´ac 270 NGUY ˆ E ˜ N MA . NH D ´ U . C, NGUY ˆ E ˜ N V ˘ AN VY . , D ˘ A . NG V ˘ AN D ´ U . C chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng. V´ı du . nhu . diˆe ` u kiˆe . n, t´ınh khˆong tiˆe ` n di . nh v`a tr`ınh tu . . trong hˆe . thˆo ´ ng l`a c´ac dˆo ´ i tu . o . . ng giˆo ´ ng nhu . c´ac luˆa . t co . ba ’ n du . o . . c thiˆe ´ t kˆe ´ cho c´ac ngˆon ng˜u . lˆe . nh. 7. NH ˆ A . N X ´ ET V ` A K ˆ E ´ T LU ˆ A . N Mˆo h`ınh quan hˆe . da . i sˆo ´ du . o . . c ph´at triˆe ’ n du . . a v`ao mˆo . t ngˆon ng˜u . hu . ´o . ng dˆo ´ i tu . o . . ng. Viˆe . c xu . ’ l´y kˆe ´ t ho . . p kiˆe ’ u dˆo . ng v`a kiˆe ’ m tra tra . ng th´ai v´o . i ng˜u . ngh˜ıa giˆo ´ ng nhu . hu . ´o . ng d˘a . c ta ’ truyˆe ` n thˆo ´ ng. C´ac to´an tu . ’ chu . o . ng tr`ınh du . o . . c xu . ’ l´y ch´ınh x´ac nhu . l`a ba ’ n sao trong ngˆon ng˜u . r`ang buˆo . c. Do d´o, hˆa ` u hˆe ´ t c´ac luˆa . t da . i sˆo ´ du . o . . c ph´at triˆe ’ n cho ngˆon ng˜u . lˆe . nh vˆa ˜ n c´o thˆe ’ ´ap du . ng du . o . . c cho d˘a . c ta ’ thiˆe ´ t kˆe ´ chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng. C´ac co . so . ’ t´ınh to´an cho hˆe . thˆo ´ ng hu . ´o . ng dˆo ´ i tu . o . . ng trong b`ai n`ay c˜ung c´o thˆe ’ du . o . . c su . ’ du . ng dˆe ’ h`ınh th´u . c h´oa liˆen kˆe ´ t c´ac mˆo h`ınh ca su . ’ du . ng (use case) v`a mˆo h`ınh l´o . p trong UML. N´o c˜ung c´o thˆe ’ su . ’ du . ng nhu . l`a co . so . ’ cho viˆe . c ca ’ i tiˆe ´ n t´ınh to´an cho tiˆe ´ n tr`ınh ph´at triˆe ’ n cu ’ a chu . o . ng tr`ınh hu . ´o . ng dˆo ´ i tu . o . . ng. C´ac d˘a . c ta ’ trong ngˆon ng˜u . n`ay dˆe ˜ d`ang du . o . . c viˆe ´ t v`a hiˆe ’ u tu . o . ng tu . . nhu . ngˆon ng˜u . Java ho˘a . c C ++ , v`a ´y ngh˜ıa l`a ho`an to`an du . . a trˆen c´ach tiˆe ´ p cˆa . n tra . ng th´ai d˜a du . o . . c thiˆe ´ t lˆa . p d´ung. T ` AI LI ˆ E . U THAM KHA ’ O [1] Booch, G., Rumbaugh, J. and Jacobson, I., The Unified Modeling Language User Guide , Addison-Wesley, 1999. [2] C.A.R. Hoare and He Jifeng, Unifing Theories of Programming , Prentice Hall, 1998. [3] He Jifeng, Zhiming Liu and Li Xiaohan, A Relational Model for Object-Oriented Pro- gramming, “Technical report UNU/IIST No.231, UNU/IIST: International Institute for software technology”, the United Nations University, Macau, May 2001. [4] He Jifeng, Li Xiaohan and Zhiming Liu, rCOS: Refinement Caclculus for Object Sys- tems, Technical report UNU/IIST No.322, UNU/IIST: International Institute for soft- ware technology, the United Nations University, Macau, May 2005. [5] Ivar Jacopson, Gray Booch and James Rumbaugh, The Unified Software Development Process , Addision-Wesley, 2000. [6] P. America, F.de Boer, Reasoning about dynamically evolving process structures, For- mal Aspect of Computing (6) (1994) 269—316. [7] Rational Rose Corp., Rational Rose 2002, http://www.rational.com/uml/. Nhˆa . n b`ai ng`ay 29 - 7 - 2005 . c´ac mˆo ´ i quan hˆe . cu ’ a c´ac th`anh phˆa ` n trong hˆe . thˆo ´ ng C´ach tiˆe ´ p cˆa . n n`ay s˜e cho thˆa ´ y r˜o r`ang mˆo ´ i quan hˆe . cu ’ a. hˆe . thˆo ´ ng hu . ´o . ng dˆo ´ i tu . o . . ng v´o . i c´ac l´o . p, t´ınh tru . . c quan, liˆen kˆe ´ t dˆo . ng v`a c´ac phu . o . ng th´u . c dˆe . quy. C´ac

Ngày đăng: 27/02/2014, 07:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan