ООПИС Конспект(слайды) лекций 2007
.pdf5
•-# +$) (# )# & ' ' * & '$"$%-'$'- $) #( #' )
•-# # 6 #$) # % +(
•3 # '$# % 78 9:9 +$ $# %
; : : < & ) ('$(
•= #(-# ($) & '$"$
>5 & '$?@@>5 ?
•A$' '$& #$#$# % 0 + # ( '$ >> 8 9:78??
18.06.2007
!" #$% & '$'# ($) '$# *
' "$* $+($
&' ,"$ -' ./ ' * $# 0'#1
2 ' '#$1 3
•3 +$ $# ' & # ' #-'$
# # * +4'$" './ *# '
$+($" &' ,$# 0'# +4'$
( *
B '$' '$& |
|
B '$' '$& |
|
|
|
1
C$+($
:: ;D:9 '- $' )# *$'$" & ./ #-'$
# 6'# %"$' ($& #$)$' )# ' +4'$E$1
FG ; :HI FJI 8 9 F@ :HK9I F D : K :HI FL 9M D :I
FNK 7K9 :HO : 8 PI
•A QRQ + # 6 '$ $+($+$).
$ $& +/'$( % KD; "
•A QSQ O / /'## % K 7:9 :9 "
•A QOQ O $% K G :9
T$# 0'# '$
•+/' (6 '
( '$#'$' ' #$6' '$# 0'# ' '-( ( E ' '#$' (
#-'$ $* E ' '#$"$'#'
'$ $# 0'# ' , , " + +/'#
' , 1
•T$# 0'# '$& ) ('$ $%
$( , " #'$' '#'# ' #
E ' '#$'
($#' E ' '#$'
T&' ,
7K9 : 78 O E$' " & '$' %
-E ' & +4'$&
$'+ # . * '#$" 6'$'$*
($ $(&$) ( ' +4'$"$6 '
E ' & ## 1
FG ; :HI 8 9 F K 9:9 O : I FNK 7K9 :HO : 8 PI
& '$@
F 9 : 78I 8 9 @ :HK9 F D : K :HI FL 9M D :OG D9I
T$# 0'# '$
18.06.2007
T$# 0'# '-(
•T$# 0'# '$9K98 98 H 9 : 78 U K
•T$# 0'# ' , , 7 : 78 9 : 78 U K
•T$# 0'# ' + +/'# 989 V : 78 9 : 78 U K
•T$# 0'# ' ' , 9 V : 78 9 : 78 U K
T$# 0'# '$
•O (- $+ # 6'#$($ $ $*$+($&' , % O$6# O
'#$W
•!"# O O '#$ -'$& )$) #'$%
0 + # '% & ' (./'% & '$, W
•#$!% O $+($O '#$($+$) 6 '# &$+($O$6# W
•!&'($) O $ $'$+($&' , O
$6#$#$6$). O '#$" ' + # + +4 '# #'& '$'## #' W
•$*!" O ( '$" 6$O '#$(- $($6#'# '
O$6# ( & 6 #$6' *$' "
& '$& #$' )# #X , * ' +$# & '$1
•+ ,
2
18.06.2007
|
T$# 0'# ' , , |
|
Y ,$) |
|
|
3 X$ |
• $'$ $('$# 6 . |
|
|
|
• |
3 " # +4'$# # #,' , , " |
|
|
#'$ $# 0'# '-( |
|
|
|
|
-# & ' '$) +4'$(&&( +4'$# |
|
|
|
|
|
|
( '' #,'[ |
• |
Y , |
|
|
|
• |
= # # #,' , ,-# |
• |
Z$) |
|
|
|
|
& '$ $) & (.$($( ( ## * |
|
|
|
|
# & ' " *E0O$+ ,( O ' ' "$ |
||
• |
3 X$ |
|
|
|
|
|
|
|
|
|
+4 %$' # ' " &$( &$ |
||
• |
|
|
|
|
|
|
3 O , , |
|
|
|
|
& " X$1 |
|
|
|
|
|
|
|
|
B ' X$ |
|
|
3 O , , |
|
|
T$# 0'# ' ' , |
|
|
• |
Z , , '-( ( |
|
• |
''$'$'-( |
|
|
|
, ,$ -'-'$'$) %$ |
|
|
#' )$(6 '" ' # |
|
|
|
|
|
|
& '$'$+ % #'$(. (/#$)" |
|
|
|
|
|
|
.6 ./(. '+ 6'$'$# * 6$'% |
|
|
|
|
|
|
( ' (/#$1 |
class Order ... |
|
|
|
|
• |
T$# 0'# '$& Q6$)O,' 'Q |
|
|
|
|
|
|
|
public OrderLine getLineItem(Product aProduct); |
|
|
|
|
|
|
public void addLineItem(Number amount, Product forProduct); |
|
|
|
|
|
|
|
|
|
|
|
|
|
3
18.06.2007
T$# 0'# ' ' , |
T$# 0'# ' & , |
T$# 0'# ' & , |
•\$# % (6 %$# 0'# ' ,
•A$./ ' 6$]#'$'^
# *$#($,'
•\$#' ($ $(&$)$'$,' "$1 '1 (# 6$ -'# ' ,' (# 6$ -.$' '
$# ' 6$
T$# 0'# ' + +/'# |
|
T$# 0'# ' + +/'# |
|
2 ' '#$1 5#$' X'% |
• T$# 0'# ' + +/'# < $# 0'# ' '-( + '' |
|
|
|
-. / _8:9 M 9 # '$# + |
+/ E ' '#$ $' ' & ' |
|
|
|
&' , %" & ) (' % &', X , # |
+ '' 6$# &', )# E ' '#$ |
|
|
|
( ( " & '$' * & #'#$ |
6' # &$ |
|
|
|
|
|
|
|
|
|
4
18.06.2007
T$# 0'# ' ' ,
•0 / `9 V : 78 # '$
' #$6' '$# 0'# ' '-(
X$" &$# # *
& '$#$ $" ( % #$('$' & #'# '
•A' #$6' ' , O E$#'6$' #''
'-( + +/'# '$).
B '$## %
B '$## % K 9: V9
& ' # # 6'# + # 6'#$"
$% ''$# + '' #'X ## %
X )# % & '$1
B '$## % |
2 ' '#$1 T+4'$ |
+4'$ |
•T+4'$7;a9 : '$ $' )# E ' &
•T# ''$' +$'## ' # '$# ' # 6'#$+($1
5
|
18.06.2007 |
2$#
•% 6' " ( ) ! ( #," 4 # / ! * 04 * !(- #,5 " ( 4 ,$
•' 7 % 6' # ! #," # " 1 #$
•8 % 6' # " 0# " #,1 0$
•6 % 9 7 #," *+ ! " ( " ( 4 ! , *4- " #$
! " #
$
•%& '
" ( ) ! ( " # *+ ! #
) " # ! , " ,#-!(-*+ ! # . *, #," *+ !
# !/ 0 ,1
# #$
2$3
•4 # 4 ( # 1 / 0 ( ! *+ ! # 5 ! 4 # # 5 ! 4 4 #- #," " 4-
/ *,$
: # |
: |
|
•; < 6 # . # ! 5 # ! ) 4 *
" #$
•0 # " # * 0 5-= 5 #," " ( 0 ! 5 # 1 /
4 *+ ! # #$
•> ' ? 0 # " # * 0 5-= " ! = " ( 0 ! 5 # 1 /
4 *+ ! # #$
1
|
18.06.2007 |
3 # |
|
: |
|
: , " |
|
|
|
|
|
2
|
|
|
|
|
|
• |
|
|
|
|
– |
|
|
|
– ! " # $ ! %&& |
|
|
– # ! # $$ '()( |
|
|
|
|
|
|
|
• |
|
|
|
|
– ! |
|
|
|
! $ * + |
|
|
|
– ,-./0123. |
|
|
|
– 45627(82 9(8237: |
|
|
|
|
|
T * U |
|
|
|
V Q W " |
|||
• M ;16-/. <(2217.6 2>711 8(21/37-16 |
|
|
|
• |
X$" |
|||
|
|
|
• |
|
||||
|
|
|
|
|
|
|
Y ! !$! " U |
|
|
Creational |
Structural |
Behavioral |
|||||
|
|
|
|
|
||||
|
|
|
|
|
|
|
• X* Q$ $ |
|
|
Abstract Factory |
Adapter |
Chain of |
Observer |
||||
|
|
|
|
|
||||
|
|
|
Responsibility |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Builder |
Bridge |
Command |
State |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Factory Method |
Composite |
Interpreter |
Strategy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Prototype |
Decorator |
Iterator |
Template Method |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Singleton |
Facade |
Mediator |
Visitor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Flyweight |
Memento |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Proxy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;16-/. <(2217.6
•;16-/. <(2217.6 5: =7-8> ?(@@( A-8>(7B C10@ A(0D> '3>.63. (.B '3>. E0-66-B16 F.3G. (6 H?(./ 3I JK 37 H?L9K
•M D(2217.6 %71(2-3.(0 ,27N82N7(0 O1>()-37(0
•P Q
–83.2730 2>1 83.627N82-3. 3I 35R1826
–871(21 37/(.-S1B 8300182-3.6 3I 35R1826
–B-)-B1 716D3.6-5-0-2-16 (@3./ 35R1826 I37 512217 1.8(D6N0(2-3. (.B 1(6-17 @3B-I-8(2-3.
$Z
V Q
•[$Z #$ $ $#$
$ \ ] !$# $\
^$$\
$
_$
•T Q$ $"$ ^$#$
] #
$Z
[$"
•$ $] $" * $ +$!+$ $+$ \ W ^ `
•\ W$#$ $ ^
]$" "$ $`
•$ $] Z *! "$
$#$ $ $+W \ ^ `
•\$" ! ^
$" \ Z #$
+
$Z
class AbstractFactory
AbstractFactory
+ CreateProductA()
+ CreateProductB()
AbstractProductA |
Client |
ProductA2 |
ProductA1 |
|
ConcreteFactory1 |
|
ConcreteFactory2 |
|
|
|
AbstractProductB |
+ |
CreateProductA() |
+ |
CreateProductA() |
+ |
CreateProductB() |
+ |
CreateProductB() |
ProductB2 |
ProductB1 |
X Q
V Q
•a ! Q !$$ $" "
b $! * " !+
Q !$!
_$
• c Q # b $$
|
X Q |
|
X Q |
|
|
|
||||||
[$" |
|
|
|
|
|
|
|
|
|
V Q |
||
• |
] " b * |
|
|
|
|
|
|
|
|
|
• |
! ! Z #$* |
|
$$*$! #$` |
|
|
|
|
|
|
|
|
|
|
$$Z #$!* * # ] + |
|
|
|
class Singleton |
|
|
|
||||||
• |
$# b ]$U "$ |
|
|
|
|
|
|
|
|
|
|
` |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
Singleton |
|
|
|
|
||||
|
! ]$d$ |
|
|
|
- |
singletonData |
|
|
|
• |
$Q$ $!+ !$$ $ |
|
|
|
|
|
- |
uniqueInstance |
|
|
|
||||
|
!] " ]$" "$ |
|
|
|
+ GetSingletonData() |
|
|
|
|
$ $Z #$ |
||
|
|
|
|
+ Instance() |
|
|
|
|
||||
|
$U b d Z |
|
|
|
|
return uniqueInstance |
|
|
|
|
|
|
|
|
|
|
+ SingletonOperation() |
|
|
|
_$ |
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
$* |
|
|
|
|
|
|
|
|
|
• |
Z #$^ ! |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
[$"
•$ $Z #$ $!W$!+W *
$$ $`
•$ $$# !
#$"$ $$+W
$ $Z #$`
•$" $" \$!W$!+W \
$$Q " \ Z #$ ! ] \$$] *
^ ]$ $" Z #$ \ W * "$*$$
|
|
|
class Adapter |
|
|
Client |
Target |
Adaptee |
|
+ Request() |
+ SpecificRequest() |
|
|
-adaptee |
Adapter
+Request()
adaptee->SpecificRequest()
$
V Q
•X$+ *
Q !$ ]$" $
" !*
_$
• e ^
$ |
$ |
|
|
class Bridge |
|
|
|
|
Abstraction |
-imp |
Implementor |
Client |
+ Operation() |
+ |
Operati onImp() |
|
imp->Operation(); |
|
|
RefinedAbstraction |
ConcreteImplementorA |
|
ConcreteImplementorB |
+ OperationImp() |
|
+ OperationImp() |
|
|
|
V Q
•f Q$^ !
$
_$
•X $" ^$]
$$
M