         VI 

    -  

    -  (object-oriented technology)  
       .  ,  
     ,      
 .     ,       
   ,     
"  ". ,  ,   
 "-",      
    .     
     ,   , 
   ,  (        )   
 ,           
    .. 
         ,   "" ( 
"-")      . 
,     ,  , 
  ,      
 , ,     .    
  -    ,  
  . 
           
-      ,  
   -  ,   
  -    
   . 

    ,   ,      
    () ,    
  . 


     22 

      -  

    22.1.  

    ,         
 .    (     
) ,         . 
    -    
 ,    .    
       ,    
  - .      
   ,     . 
     , -      
-  .  ,  
  ,   ,      
,    ,     ( 
   ),  ,      
 ,     ,    
. ,     " DEPT" 
(  )    " " ( 
 ),   "  "  
""  "  "  " DEPT",  
     ,   
   .     
"" ""  " "   "  
",  ""  "   "   
""  " DEPT",    "" 
 ( )    .  , 
  -    
 . 
    ,       ,  
-       
      [22.3].     
,           
 . ,    ,  
,   ,  " "  , 
    ,    ( 
    ),  ,  ,  
  .. 
         .    
          
,         .  
,         
 ,         , 
           
.      , 
,      "",    
  

    600	 VI. -  

  ,   ,  
   ..      "" 
     ,     . ,  
   ,          
   . 
    (           
IMS,      .  ,  
  ,       IMS, 
  ""  (   IMS )  
"" .        
 " ,    ",     
    " ,      
,  -".  ,  , 
     70- ,     
 - .) 
        ,      , 
 -       
    .  , ,  
-       
 :      
,   , , , 
     . 
     ,     ,    
      .  
         
,      .     
      - . 
           
-         
   (        
   -   
).       ,   
      
        
- .    , 
 ,   .     
   .      
   .  ,  . 
       :  ,  - 
      ""   
 /  ..,         
    .      
    - ,  
       ,    . 

    22.2.   -  

      ,   (Stonebraker) 
[19.10]       [22.5].    
 ,    .  , 
         
 /,  ,      

     22,   - 	601 

,   X  Y, ..     , 
 . ,      
     (xl,yl)  (2, 2)  
      (. 22.1).   SQL   
    : 

    CREATE TABLE RECTANGLES 
    ( RECTID ... , XI . . ., X2 ... , Yl ... , Y2 ... , ... , UNIQUE ( RECTID 
) , UNIQUE ( XI, X2, Yl, Y2 ) } ; 

       "  ,   
-   (, 1, , 1)" (. 22.2). 

    2 
    1 
    1 
    2 
    (0,1) 
    (0,0) 
    (1,1) 
    
    (1,0) 

    . 22.1.  (1, 2, 1, 2) 

    . 22.2.  (0, 1,0, 1) 

      SQL    " "    : 

    SELECT ... 
    FRCM RECTANGLES 
    WHERE ( XI >=  AND XI <= 1 AND Yl >= 0 AND Yl <= 1 ) 
    
    -      OR ( 2 >=  AND X2 <= 1 AND Y2 >=  
AND Y2 <= 1 ) 
    -      OR ( XI >=  AND XI <= 1 AND Y2 >=  
AND Y2 <= 1 ) 
    -      OR ( 2 >=  AND X2 <= 1 AND Yl >=  
AND Yl <= 1 ) 
    -      OR ( XI <=  AND X2 >= 1 AND Yl <=  
AND Y2 >= 1 ) 
    -     OR ( XI <=  AND X2 >= 1 AND 
Yl >=  AND Yl <= 1 ) 
    -     OR ( XI >=  AND XI <= 1 AND Yl <=  AND 
Y2 >= 1 ) 
    -     OR ( 2 >=  AND X2 <= 1 AND Yl <=  AND 
Y2 >= 1 ) 
    -     OR ( XI <=  AND X2 >= 1 AND Y2 >=  AND 
Y2 <= 1 ) 
    -     
    ,    ,    ,   
  .       
   . 
      ,        
 : 

    SELECT ... 
    FRCM RECTANGLES 
    WHERE ( XI <= 1 AND Yl <= 1 

    -         (1,1) AND    X2 >=  AND 
Y2 >= 0 ) 
    -         (0,0) 

    602  VI. -  

              
     . 
     ,       
       ?  , 
,      "" (  
)  .       
  ,    .  [22.5]  
 ,     ,    
       . 
      ,  ,    " ", 
        
  . 
     ,  ,     
    .  , , 
  , ,  ""  : 
    )   ; 
    )     . 
            
 - . 

    . ""       
 25. 


    22.3. ,    

            
- ,    ,  
,   . ,     ,   
      . ,  
   -     
   (. 22.3). 

    &- 	 	 
    &    	  ( & 
"")    (  "")      

    . 22.3.  -    
  


    .        , 
  ,       
,   . ,  
-  (    
)    ,       
,         (  
 ,   [22.2, 22.10, 22.11, 22.14, 22.16]). 
,      "  ", 
    - . (    
"- "   .)    
      ,   
       . 

     22,   -  603 

         , ,    , 
  ,     ,   
,         
- . ,     
      (, ,  
)    . 

       -  

    :   ? :    ! 
      -    
"   ,  ".     
 ;       (, 3, 42)  
  (, "Mozart", "  ").  
     .  
,       , 
   ,  EMP, DEPT, VEHICLE  ..   
       , 
..        , 
    ,     
, , , ,   .. (  ,  
   -     
,     .   
   .) 

    .     ""    
  ,   ""    .  
  ,    ""    ,    
 ,    , ,     
,      . 

        (,  - 
).     ,   
        .  
,   ""    ,   
 .  ,     
        (,  
- ),     
   (        
).  ,        
, ,       ,  
       
    . 
         ,   
-    ,   ,   
      .     
    . 
        .    
, ..      
,   DEPT,    .  
   ,       
  (""). ,   DEPT   
 HIRE_EMP ( ), FIRE_EMP ( ), CUTJBUDGET 
( )  ..   ,      
   ,     .   
      ,   


    604	 VI, -  

  , ..,  ,  ,   ( 
 )   "  ". 
        ,     
  ,   ,   
  . , ,   ,    
      
,         .  
,    . 
             
   . 
            (  ), 
     .    
   .   -  
        , 
,    ,    .   , 
  -    ""   
,        
 .     . 
             (.. 
    )    .   
,    ,   . . 
,    ,      
,    ,     
 .      , 
 ,     . 
     ,        
  ,    ,  
       .   
      . 
        , ,  ,   
 (    )      
  (  ). ,   , 
    ,   D   
   : 

    D HIRE_EMP   (     ) 

     D         .  
       D.   
        : 

    HIREJMP   (  D,     ) 

       -    
     .  ,     
  (   "=", "<", "+", "-"  ..),  
(   "=", "<", "||" ()  ..)   . 

      

         ,   
          
.   ,   - 
        , 
      -.  
      . 

     22,   - 	505 

    ,       LINESEG. 
   ,      
 ( START)   ( END),       
.          
 (MIDPOINT),  (LENGTH)   (SLOPE).   
         
LINESEG.    START  END    ,  
MIDPOINT, LENGTH  SLOPE  . 
       ,     
   .  ,    
    ,  fo.START,     
START  Is  LINESEG,      
    START, ""  START  Is 
 LINESEG.        
 (   ),    
      . 
      ,       
     ,    
   . , ,   
     START  END.   , 
   , ,       
,     START.   
    ,       . 
    ,  ,       
     .   
     ,       
,    ,   ,    
 (  )  .       
 . 

      

          ("object ID"  
OID).   ("") ,    3,  
, ..      
.  ("")      
 .          
    .    (   
 -   )   ,  
       . 
 ,      .  
       . 
         , ,    
,  -    
    , ..     
    ,    . ,  
    ,   .    
       ? ( 
     [4.5,4.11].) 

    22.4.        

            : DEPT 
()   (). ,     
MONEY ()  JOB ()  ,   CHAR (

    606	 VI. -  

)  .  ,     
DEPT  ,     (   
 ): 

    CREATE OBJECT CLASS DEPT 
    PUBLIC  { DEPTtt	CHAR, 
    DNAME	CHAR, 
    BUDGET	MONEY, 
    MGR	REF ( EMP ), 
    EMPS	REF ( SET ( REF ( EMP )))),., 
    METHODS ( HIRE_EMP	( REF ( EMP ) ) ...  .,., 
    FIRE_EMP	( REF ( EMP ) ) ...  ... , ... ) ... ; 
    CREATE OBJECT CLASS EMP 
    PUBLIC  ( EMP#      CHAR, 
    ENAME     CHAR, 
    SALARY    MONEY, 
    POSITION  REF ( JOB ) ) ... METHODS ( ... ) ... ; 

        . 
    1.            
 ,        
 DEPT.  ,   DEPT   
 MGR,     ( 
   PUBLIC-,      
  PUBLIC),    EMPS,  
  . ,   DEPT   
 MGR,     (REF)   
,    EMPS,      
   . ( ""   
 ,    .)   
       . 
    2.         ,    
  DEPT,      " ".  
    -    
.    ,      
       DEPT.  
       . 
     ,    CREATE OBJECT CLASS  
 (    ) ,    
  . 
     . 22.4        
 DEPT  .   ,      
(  (OID) ),     . 
       (.. ) "001" ( )  
  #. 
       "Smith" (  )   
 ENAME. 
        $50 000 (  MONEY)  
  SALARY. 
          JOB  
  POSITION. 

     22,   - 	607 

             ,   
 ()     ,   (CLASS)  
,    (class-defining object CDO)  
  (       ). 
    .        , 
     . ,  ,    
     ,  ,   
          
  (..        
   ).      
       . 
    
    
    IOID      	*         ENAME	SALARY        POS	TION        CLASS j 
     |         001	Smith	$50 000                 	      I 
     JO	 L_r_l              CDO    
      i  L
    [      DE	PT#       DNAME	BUDGET       MG	*    EMPS    CLASS | 
    | ddd        DO	1              Mktg	$1 000 000       	*             *     
  I 
     L_{__l CDO  DEPT 
    
    
    [-			CLASS  | 
            I 
    
    
    1-- 1	"      I       I 	I  (DID)	r i- J _|    CDO  SET 
(REF) (EMP) 
      

    . 22.4.    DEPT   

       DEPT,     ( 
 (OID) ddd),     . 
         (.. ) "D01" ( )  
  DEPT#. 
         "Mktg" (  )   
 DNAME. 
         $1 000 000 (  MONEY)  
  BUDGET. 
               
  MGR (  ,  
 () ). 
       sss     
SET(REF(EMP))    EMPS,    . 
        ,   (OID) ddd  DEPT 
   ,   (CDO). 
       sss     
    (    ). 
     . 22.4      ,    
 .      - 
    (. 22.5),      
. (. 22.5       .) 

    608  VI. -  

      . 22,5       
   " ".      
 :       ,  
  . ,  , 22.5  , 
  DEPT        001 ( 
,  ,  ,   001   
 ).      ,  
   ,    . 22.4. 

    DEPT: 
    DEPT#:    D01 DNAME:   Mktg 
    BUDGET: MGR:| 
    $1 000 000 
    EMP#:    E001 ENAME:  Smith 
    SALARY:   |   $50 OOP POSITION:   I job I 
    EMPS: 
    EMP#:    E001 ENAME:  Smith 
    SALARY:	$50 000 | 
    POSITION: 
    job 
    
    
    , 22.5.    DEPT        


         ,   
-     
 ,        
   "" (        
  ),     
  . ,   EMPS  
  DEPT     REF(SET(REF(EMP))),    
  SET(EMP).        
 . 
     ,        (, 
   IMS )      
.         
,   ,       
  .  ,      
   --. ,   
       ,   
-  -  ,  ,     
?       ,   ? 
     ,  , ,     
" ",        . 
 ,    . 22.4,     
  . 

     22,   -  609 

    1.    (,  ). 
    2.   " " (,  MONEY),   
   . 
    3.   , ,   " 
" (     ). 
    4.  ,     . 
            , 
 ,  ,  ..  ,  ( 
 - )    . 

    22.5.      

            
    ,     
(      " ").  
 ,        
.       [12.12],  
 .         
 ("").       
-        
 . (       , 
      ,   
     , ,    , 
  .)      . 
    1.  -,  ,  (     23) 
       
  .  ,   
     ,       
         . 
    2.      ,   
  DEPT   DEPT   BUDGET  MGR?    
,       25. 
    3.        , 
 ,  -    
"  CODASYL".  CODASYL   
     (,   IDMS),  
     .   
     ,   
      CODASYL.  
,     ,    
,   ,    CODASYL   
- ,  . 

    22.6. ,    

      -     
,   .  ,    ( 
)  ,        
,      . 
(  , ,       ,  
 -   ""  "" 
       .) 

    610	 VI. -  

         NEW,     
    (     
 ).     ,  
    . 

      :=  NEW   (   '0011,   'Smith1,   $50000,   POS  )   ; 

        POS     
JOB,   NEW       , 
   ,   
      . 
            
()  ,       
 .  ,        
     .   
     . 

    :REATE OBJECT CLASS EMP_COLL_CLASS 
    PUBLIC ( EMP_COLL REF ( SET ( REF ( EMP ) ) ) )  ... ; 
    JU.TiFMPS := EMP_COLL_CLASS NEW ( )  ; 
    MiEMPS ADD  (  E )   ; 

    : 
        EMP_COLL_CLASS      
 EMP_COLL,      
()     . 
      ALLEMPS   ,     
  EMP_COLL_CLASS.       
  ,  ,   ,  
     . 
      ADD      EMP_COLL_CLASS.     
    ,     
 ALLEMPS.       
 ,     ,    
( ).        
EMP_COLL_CLASS,      ALLEMPS. 
       ,  ,   
ALLEMPS     ,      
  ,    001.  ,  
        ! 
    ,         
 , ,  " ",  : 

    PROGRAMMERS   := EMP_COLL_CLASS NEW   (   )   ; PROGRAMMERS ADD   (  E  )  
 ; 
    HIGHLY_PAID   := EMPJTOLL _CLASS NEW   (   )   ; BIGHLY_PAID ADD   (  E  ) 
  ;" 

       SQL- ,    
-      -: 

     TABLE  ( # ... , ENAME ... , SALARY . . . , POSITION ... ) ... ; 

     ,     ,    
   ,      

     22.   - 	511 

 .      SQL-  
          : 

    INSERT INTO  (...) VALUES ( ... ) ; 

     ,       SQL 
  : 
    1.       ,    
 ,  -  . ( 
     .) 
    2.         
        (  ). 
    3.         
          ( 
 ). 
          ,    
  .  ,    
          
 . ,        
PROGRAMMERS ()  HIGHLY_PAID ( ),   
     .    
          
. ,    PROGRAMMERS  HIGHLY_PAID 
    . 

    CREATE VIEW PROGRAMMERS 
    AS SELECT EMP#, ENAME, SALARY, POSITION FROM      EMP WHERE     POSITION = 
'Programmer1 ; 
    CREATE VIEW HIGHLY_PAID 
    AS SELECT EMP#, ENAME, SALARY, POSITION FROM EMP WHERE SALARY >  
,  $75 000 ; 
    
               
   .  ,   ,   
,   ,    . 
      ,      , 
   -     
     (, 
   PL/I).    , 
 - ,      
,       
.  ,   ,    
 ,   ,         
 . ,   PL/I    
 : 

    DCL XYZ ... BASED ;       /* XYZ    */ DCL P 
POINTER ;	/*    */ 
    ALLOCATE XYZ SET (  );    /*    XYZ, */ 
    /*     */ 
     -> XYZ = 3 ;	/*   3  XYZ, */ 
    /*     */ 

        PL/I       
- .  ,    
   ,   ALLOCATE    
  .  ,  ,   
   "- " (  , 
      PL/I)   ,  
,   ,    . 

    612	 VI. -  


    22.7.   

      -      
   (      ). 
 -  " ",  , 
  ,     ,     
. ,      
 (       19)  
 . 
      ,    Y   X,   
 X        ,   
 Y    X (.. " ISA ").    
      X.    
    X   .   
         
 . 
    .       
-,       . 
          , , 
            (  
     X     
)  . 
       ,   RECTANGLE () 
   POLYGON (), ,   , 
   PLANE_FIGURE ( ).   
      : 

    CREATE OBJECT CLASS PLANE__FIGURE PUBLIC ( AREA  ... ) ... METHODS ( 
OVERLAP ... ) ... ; 
    CREATE OBJECT CLASS POLYGON ISA ( PLANE_FIGURE ) PUBLIC ( VERTICES  ... ) 
... METHODS ( COUNT_VERTICES ... ) ... ; 
    CREATE OBJECT CLASS RECTANGLE ISA ( POLYGON ) 
    PUBLIC ( DIAGONAL_LENGTH  ... ) ... METHODS ( TRANSPOSE ... ) ... ; 

      RECTANGLE    . 22.6.  , 
   ,      PLANE_FIGURE  
POLYGON,      RECTANGLE.     
    RECTANGLE,     
      (. 22.7). 

    CLASS | _      _J -- TANGLE CDO 
    | OID U- .	AREA  ..	VERTICES  ..	DIAGONALJ-ENGTH  .. 
    \ 
    
    
    REC 

    . 22.6.   RECTANGLE 

           . 
,   OPAL       ( 
 )   OBJECT.    
OBJECT   BOOLEAN, CHAR, INTEGER, COLLECTION.  

     22,   -  613 

    COLLECTION,   ,    BAG (    
,   ,     ),  BAG 
   SET ( ..). 
    ,     19,  :    
   ,    
      .   
 ""        
,    ""     
""  (  ,      
"" ). 

    . 22.7.   ,   . 22.6 
    
    
    OID	AREA  .. 
    
    	VERTICES  .. 
    
    
    OID	DIAGONALJ.ENGTH  .. 
    
    
    22.8.   

          . 
    1.         
. ,         
 .  ,      
     ,   
"  "   . ,   ,   
  ( )       
 . 
    2.   ,  -   
    (  )    
       
  . (   ,    
         
, ,    ..)      
:      - 
 ? ,       
 : ,   ?    
    (   )   ( 
 )? 
    3.  ,  ,   -  
 (..  ,    )   : 
           , 
       , 
        
    (  ,      
,    ). 

    614  VI. -  


    22.9.  

      ,   - ,  
   RECTANGLES   : 
       (..  ),     
   (   )  
 (   ). 
       ,    , 
         ,     . 
        ,     
 ""      
,           
(, ). 
       , ..     
           
  ,         
.        . 
    (  ),  
     -  .  
   -    ( 
 )    .     
  ,    . 
        ,   
         .  
 ,     ,   
.   ,   ,  
    . 
       ,   ,     ,  
     .     
   ,   () ,  
    ,  " 
",   (,  )  
    . 
        ,   ,  
    - .   
      ,   
  ,    . 
      (        
 19)    . ,   
       . 

    	^ 

    22.1.   ? 
    22.2.    ! 
    22.3. ,   ,    ? 
    22.4.        ! 
    22.5.     .    
     ? 
    22.6.      ? 

     22.   - 	615 

    22.7.   ,  ? 
    22.8.   -  ""?   
 (  )     ? 
    22.9.         ! 
    22.10.      "  
 ". 
    22.11.    . 
    22.12.          SQL ( 
 )   "  ,   
  ".     . 

      

     [22.1-22.3, 22.6, 22.11]     
-      , [22.9, 22.16]  
 - ,  [22.7, 22.8, 22.10, 22.12]  . 
    22.1. Booch G. Object Oriented Design, with Applications. Redwood City, 
Calif Benjamin/Cummings, 1991. 
    22.2. Cattell R.G.G. Object Data Management.  Reading, Mass.: 
Addison-Wesley, 1991. 
          - 
      .    
   ,        - 
  : "     
 ...  [      
 24], ,     ,    
...        
...       
...    ...   
          
...    ...    
        
   ...      ,  
      ...  
   -  ". 
    22.3.  B.J. Object Oriented Programming: An Evolutionary Approach.  
Reading, Mass.: Addison-Wesley, 1986. 
        -   
 ,        
    . 
    22.4. Dahl O.J., Myhrhaug , Nygaard . The SIMULA 67 Common Base 
Language. Pub. S-22.  Oslo, Norway: Norwegian Computing Center, 1970. 
     SIMULA 67      
.          
- .   SIMULA 67   
- . 
    22.5. Date C.J. An Optimization Problem // C.J. Date and Hugh Darwen. 
Relational Database Writings 1989-1991.  Reading, Mass.: Addison-Wesley, 1992. 

    616	 VI. -  

    22.6. Goldberg A., Robson D, Smalltalk-80: The Language and its 
Implementation.  Reading, Mass.: Addison-Wesley, 1983. 
           
 Xerox   ,      
Smalltalk-80.         
 Smalltalk-80,     OPAL   GemStone. 
    22.7. Goodman N. Object Oriented database Systems // InfoDB.  1989.  4, 
 3, .         25. 
    22.8. Goodman N. The Object Database Debate // InfoDB.  1990-91.  5,  
4. Goodman N. The Object Data Model // Ibid.  1991.  6,  1. Goodman N. The 
Object Data Model in Action // Ibid.   2. 
    22.9. Kim  W.,  Lochovsky  F.H.  (eds.)  Object-Oriented Concepts,  
Databases and Applications.  Reading, Mass.: Addison-Wesley, 1989. 
    22.10. King R. My Cat Is Object-Oriented (  [22.9]). 
    22.11. Parsaye ., Chignell M., Koshafian S., Wong H. Intelligent 
Databases.  New York, N.Y.: John Wiley & Sons, 1989. 
    22.12. Stein J., Maier D. Concepts in Object-Oriented Data Management // 
Database Programming & Design,  1988.  1,  4. 
        - , 
   GemStone. 
    22.13. Stonebraker M. Introduction to "New Data Models"; Introduction to 
"Extendibility" // M. Stonebraker. Readings in Database Systems.  San Mateo, 
Calif.: Morgan Kaufmann, 1988. 
        - , 
     ,    
 -    . 
    22.14. Tsichritzis D.C., Nierstrasz O.M. Directions in OO Research 
(  [22.9]). 
             
       - 
: "...     , :  
 ? ...     ,   
 ,          
  .        
  ".  -   
  25 ! 
    22.15. Vossen G. Data Models, Database Languages, and Database Management 
Systems.  Reading, Mass.: Addison-Wesley, 1991. 
    22.16. Zdonik S.B., Maier D. Readings in Object-Oriented Database 
Systems. San Mateo, Calif.: Morgan Kaufmann, 1990. 
        
    22.1.    -  
 ,         
   .    "" 
 ,     . 

     22,   - 	617 

     "     ,  
  ,     ,   
,    " (   
 ). 
     "       " [22.12]. 
     "   ,  ,  
      " [22.16]. 
     "   ,     
" [22.7]. 
     "...,  ,  ...      
 " [22.15]. 
     "...-     . 
  ,     ...  
     ...     
,  ,       ...". 
             . 
    22.5.    . 
           "' [12.8]. 
       -    
  (     ). 
           ,   
,   . 
             ;  
,        ON UPDATE. 
            . 
            (, 
    " ",  
   "" ). 
    22.6.        : 
        (   ,  
    ). 
        (..    ;   
 ,     
 ). 
       (,  ,   
;         
 ). 

    618	 VI. -  

