Index *1180 722,733,734,792,862,907,1100, ACE Consortium 79 +189.1180 1101,1176,1193 Ace file198,200,201,393,1146 =448 advanced topics 148-159 Ace,see Ace file,Lace 588.1186 148 internal view 786-792 'Class (Ada 95)1094 complete example specification active object 957-960 139 incompatible with inheritance A consistency 155 959-960 formal description 129-141 active process 1123 genericity 131-132,318 a posteriori scheme for handling ActiveX 8,67,955 goals 122-129 abnormal cases 800-801 specifying axioms 135-137 actors model 1033 a priori scheme for handling abnormal specifying the functions 132-135 actual generic parameter,see actual cases 798-800 specifying types 130-131 under parameter obstacles 799-800 abstracted module,see under module actual reclamation 302 Abbott,Russell J.744 abstracting 860,930 actual,see under argument,parameter ABCL/1999,1034 abstraction Ada46,53,56,61,84,89,90,99,100 abnormal case 411-438,797-801, elevating the level 861 176,209,211,225,265,269,270, 1089-1091 for GUI(Graphical User Interface) 285,315,392,410,415-416,443, a posteriori scheme 800-801 1068-1071 447,507,510,564,587,588,616, a priori scheme 798-800 how to find 716,876,892,897,980,1104,1106, abnormal case style for exceptions see also finding under class 1108,1130,1137,1161,1167-1188 1091 how to find abstractions 699-704, adding classes 1098 Abrial,Jean-Raymond xi,100,160, 754 by default,means 1983 version of 330 in methodology rules 669 the language;see also Ada 95 absolute negative rule 667 varieties of class abstraction 860 concurrency mechanism 980 versus precision 905-906 context and history 1079-1080 absolute positive rule 666-667 versus specialization 858-859 exception handling 410,415-416. abstract abstraction function 230,375,756 438.1088-1091 data type,see abstract data type access control 1047 exception rule 1090 machine 792 access,see uniform access genericity 587-588 object,see under object precondition,see under accessor function 135 towards an object-oriented version 1096 precondition accommodate 625,629 Ada95443,564,566,1080,1092- side effect 757 accommodation 625,629 1096,1097,1131,1137,1161 state 756-758 ACCOUNT 329.1046 assessment 1094-1095 syntax tree 115,1038 Ada951093 example 1092-1094 abstract (Ada 95)1093 account,see bank account object-oriented mechanisms 1092- abstract data type 18,121-162,166, Accounts (Ada 95)1093 1094 171,172,173,174,216,229,231, ACC0UNT1491,513 add 762 318.338,352,373-377,399,500, ACCOUNT2491,492,513 add vertex 627,633
Index * 1180 + 189, 1180 := 448 588, 1186 'Class (Ada 95) 1094 A a posteriori scheme for handling abnormal cases 800–801 a priori scheme for handling abnormal cases 798–800 obstacles 799–800 Abbott, Russell J. 744 ABCL/1 999, 1034 abnormal case 411–438, 797–801, 1089–1091 a posteriori scheme 800–801 a priori scheme 798–800 abnormal case style for exceptions 1091 Abrial, Jean-Raymond xi, 100, 160, 330 absolute negative rule 667 absolute positive rule 666–667 abstract data type, see abstract data type machine 792 object, see under object precondition, see under precondition side effect 757 state 756–758 syntax tree 115, 1038 abstract (Ada 95) 1093 abstract data type 18, 121–162, 166, 171, 172, 173, 174, 216, 229, 231, 318, 338, 352, 373–377, 399, 500, 722, 733, 734, 792, 862, 907, 1100, 1101, 1176, 1193 advanced topics 148–159 and abstract machines 792 and analysis 907 and assertions 373–377 and classes 142–147, 373–377 and information hiding 144–145 applications beyond software 147– 148 complete example specification 139 consistency 155 formal description 129–141 genericity 131–132, 318 goals 122–129 specifying axioms 135–137 specifying the functions 132–135 specifying types 130–131 abstracted module, see under module abstracting 860, 930 abstraction elevating the level 861 for GUI (Graphical User Interface) 1068–1071 how to find see also finding under class how to find abstractions 699–704, 754 in methodology rules 669 varieties of class abstraction 860 versus precision 905–906 versus specialization 858–859 abstraction function 230, 375, 756 access control 1047 access, see uniform access accessor function 135 accommodate 625, 629 accommodation 625, 629 ACCOUNT 329, 1046 Ada 95 1093 account, see bank account Accounts (Ada 95) 1093 ACCOUNT1 491, 513 ACCOUNT2 491, 492, 513 ACE Consortium 79 Ace file 198, 200, 201, 393, 1146 Ace, see Ace file, Lace Acrobat, see under Adobe action 848 ACTIONABLE 1040 activate (Simula) 1124 active data structure 774–796 internal view 786–792 active object 957–960 incompatible with inheritance 959–960 active process 1123 ActiveX 8, 67, 955 actors model 1033 actual generic parameter, see actual under parameter actual reclamation 302 actual, see under argument, parameter Ada 46, 53, 56, 61, 84, 89, 90, 99, 100, 176, 209, 211, 225, 265, 269, 270, 285, 315, 392, 410, 415–416, 443, 447, 507, 510, 564, 587, 588, 616, 716, 876, 892, 897, 980, 1104, 1106, 1108, 1130, 1137, 1161, 1167–1188 adding classes 1098 by default, means 1983 version of the language; see also Ada 95 concurrency mechanism 980 context and history 1079–1080 exception handling 410, 415–416, 438, 1088–1091 exception rule 1090 genericity 587–588 towards an object-oriented version 1096 Ada 95 443, 564, 566, 1080, 1092– 1096, 1097, 1131, 1137, 1161 assessment 1094–1095 example 1092–1094 object-oriented mechanisms 1092– 1094 add 762 add_vertex 627, 633
1226 INDEX address 1039 tasks 903-904 polymorphic 637 ADJ group 160 traditional analysis methods 906 ideal number of arguments for a Adobe xiv TV station programming example feature 764-770 Acrobat 108 907-913 in out (in non-0-0 approaches) Acrobat Reader xiv analytical modeling 1122 765 adopt 311 ancestor464,500,1193 passing 444-446 adopting an object 311 anchor 601-602 see also attachment ADT,abbreviation for"abstract data artificial 1179-1187 polymorphic 637 type";see under that term. anchor1179,1181 see also operand,option Advanced Curriculum principle 936 anchor (construct not retained)631 term used for routines(see also advertizer 912 anchor-equivalent 603,631 parameter)322 to a command,see under command advisory rule 667-668,823 anchored declaration 598-604,618, aer755,782 629,630-633,1177,1178 to a once routine 651 a static mechanism 604 type redefinition 621-641 Agammemnon 269 aggregation 258,907 and covariance 630-633 Ariane 4410 and once functions 652-653 Ariane 5 389,410 Agha,Gul 1033,1034 rules 603 Aristotle 843,864,866 Aho,Alfred V.20,100,745 when not to use 603-604 ARITHMETIC 180 airline reservation system 676 Anchoring approach to the covariance Amold,Kcn222,939,1137,1139 airplane 521-522 issue630-633,639,642 array87,325-328,372-373,470-472 AIRPLANE 521,831 and 454 as object 325-326 A1gol49,64,211,396,447,876,897, between assertion clauses 337 properties 326 1080,1102,1107,1114,1126,1138 and then454,570,578 slice 383 without further qualification, Andromaque 671 static (Fortran,Pascal)45 means Algol 60;see also the next animals,distinguishing from plants two-dimensional 330 two entries 841 ARRAY325,330,348,372,441, Algol W64,353,455 anomaly,see under inheritance 470,530.540,583,584,844,882 A1gol6861,211 anorexia 314 1165,1188 alias 440 ANSI(American National Standards array down 123 aliasing 265-270,277 nstitute)1079,1097,1102,1107, ARRAY TABLE 504 in software and elsewhere 268-269 1131 array_up 123 semantics 266-267 ANSWER 688,694 ARRAYED 846 all-or-nothing garbage collection 306- antonomasia 269 ARRAYED LIST 1165 307 AWY580-582,590,592,976,1044, ARRAYED QUEUE 1188 Alpha 1152 1187 ARRAYED STACK 530,539,540, Alphard 99,1079 APL754,876 837,844,845,846 AltaVista 78,1060 applet 956 ARRAYED TABLE 831 Amako,Katsuya 922 application 1064 ARRAY2 330 America,Pierre 642,1034 as a class690-693,1076 arsonist 201-202 AMPHIBIOUS VEHICLE 522 APPL1CAT10N688,689,690,690- artificial anchor,see artificial under analysis217,271,506,725,732-733, 692,694,734 anchor 903-922,936,941,1162,1198 application builder 1065,1066,1072. ASC1847,850,851 and the software process 906 1073,1075,1076 as negotiation 906 assembly 197,198 cass732-733 application developer 1064,1066, automatic process 200,1146 1067,1068,1070,1071,1072,1073, contribution of object technology assembly language 1099 1076 907 assertion23,334,337-410,569-580, describing business rules 913 applicative 145,159,351-353 617,779-780,899,907,917,930, domain analysis 947 ArchiText 715 1193 goals 903-906 argument444-446,651,764-770 and abstract data types 373-377 methods 917-919 actual89,184,261,444-446 and analysis 907,917 requirements on an analysis method definition 444 and encapsulation 779-780 and process 904-905 formal261,444-446,637 and generalization 930 role in education 936,941 definition 444 and inheritance 569-580
1226 INDEX address 1039 ADJ group 160 Adobe xiv Acrobat 108 Acrobat Reader xiv adopt 311 adopting an object 311 ADT, abbreviation for “abstract data type”; see under that term. Advanced Curriculum principle 936 advertizer 912 advisory rule 667–668, 823 after 755, 782 Agammemnon 269 aggregation 258, 907 Agha, Gul 1033, 1034 Aho, Alfred V. 20, 100, 745 airline reservation system 676 airplane 521–522 AIRPLANE 521, 831 Algol 49, 64, 211, 396, 447, 876, 897, 1080, 1102, 1107, 1114, 1126, 1138 without further qualification, means Algol 60; see also the next two entries Algol W 64, 353, 455 Algol 68 61, 211 alias 440 aliasing 265–270, 277 in software and elsewhere 268–269 semantics 266–267 all-or-nothing garbage collection 306– 307 Alpha 1152 Alphard 99, 1079 AltaVista 78, 1060 Amako, Katsuya 922 America, Pierre 642, 1034 AMPHIBIOUS_VEHICLE 522 analysis 217, 271, 506, 725, 732–733, 903–922, 936, 941, 1162, 1198 and the software process 906 as negotiation 906 class 732–733 contribution of object technology 907 describing business rules 913 domain analysis 947 goals 903–906 methods 917–919 requirements on an analysis method and process 904–905 role in education 936, 941 tasks 903–904 traditional analysis methods 906 TV station programming example 907–913 analytical modeling 1122 ancestor 464, 500, 1193 anchor 601–602 artificial 1179–1187 anchor 1179, 1181 anchor (construct not retained) 631 anchor-equivalent 603, 631 anchored declaration 598–604, 618, 629, 630–633, 1177, 1178 a static mechanism 604 and covariance 630–633 and once functions 652–653 rules 603 when not to use 603–604 Anchoring approach to the covariance issue 630–633, 639, 642 and 454 between assertion clauses 337 and then 454, 570, 578 Andromaque 671 animals, distinguishing from plants 841 anomaly, see under inheritance anorexia 314 ANSI (American National Standards Institute) 1079, 1097, 1102, 1107, 1131 ANSWER 688, 694 antonomasia 269 ANY 580–582, 590, 592, 976, 1044, 1187 APL 754, 876 applet 956 application 1064 as a class 690–693, 1076 APPLICATION 688, 689, 690, 690– 692, 694, 734 application builder 1065, 1066, 1072, 1073, 1075, 1076 application developer 1064, 1066, 1067, 1068, 1070, 1071, 1072, 1073, 1076 applicative 145, 159, 351–353 ArchiText 715 argument 444–446, 651, 764–770 actual 89, 184, 261, 444–446 definition 444 formal 261, 444–446, 637 definition 444 polymorphic 637 ideal number of arguments for a feature 764–770 in out (in non-O-O approaches) 765 passing 444–446 see also attachment polymorphic 637 see also operand, option term used for routines (see also parameter) 322 to a command, see under command to a once routine 651 type redefinition 621–641 Ariane 4 410 Ariane 5 389, 410 Aristotle 843, 864, 866 ARITHMETIC 180 Arnold, Ken 222, 939, 1137, 1139 array 87, 325–328, 372–373, 470–472 as object 325–326 properties 326 slice 383 static (Fortran, Pascal) 45 two-dimensional 330 ARRAY 325, 330, 348, 372, 441, 470, 530, 540, 583, 584, 844, 882, 1165, 1188 array_down 123 ARRAY_TABLE 504 array_up 123 ARRAYED 846 ARRAYED_LIST 1165 ARRAYED_QUEUE 1188 ARRAYED_STACK 530, 539, 540, 837, 844, 845, 846 ARRAYED_TABLE 831 ARRAY2 330 arsonist 201–202 artificial anchor, see artificial under anchor ASCII 847, 850, 851 assembly 197, 198 automatic process 200, 1146 assembly language 1099 assertion 23, 334, 337–410, 569–580, 617, 779–780, 899, 907, 917, 930, 1193 and abstract data types 373–377 and analysis 907, 917 and encapsulation 779–780 and generalization 930 and inheritance 569–580
INDEX 1227 and redeclaration 481-482,570- constant203,644-645,884-885 Bauhin,Caspar 864 580 default value,see under BBC(British Broadcasting expressive power 399-403 initialization Corporation)315 for documentation 389-392 exporting 205-208 BCPL1106.1111 for writing correct software 389 in relational databases 1048 in C,C++etc.334 no precondition 579 be versus have 812-814 instruction 378-380 once?660 see also is-a relation monitoring at run time 392-399 redefined from function 491-492, Beck,Kent 740 not a control structure 346-347 579 Beethoven,Ludwig van 1141,1143 not for input checking 345-346 versus function 204 before 782 style rules 899 Austin Mini 811 behavior class 72,503-504,688,772, using a comment 399 AUTHORS 1048,1049 850,961,1002,1004,1010,1021, using in practice 389-398 automatic update 31 1029,1030,1031,1193 Assertion Argument rule 997 available 184,191,447 Bell Labs,see AT&T Bell Assertion Evaluation rule 402 available 299,316 Laboratories Assertion Redeclaration rule 573,578, AVL trees 72 bells and whistles 12 580 Avotins,Jon 1160 Ben-Ari,Mordechai 1033,1034 Assertion Violation rule 346 asset 521-522 axioms of an abstract data type 135- Bench1148-1149 137 Berkeley,see California Museum of ASSET 521 Paleontology assignment 448 B Bert,Didier xi,100,330 see also attachment Bertino,Elisa 1061 assignment attempt 29,478,591-595, B-tree 82 Beta1137,1139 617,1068,1134,1193 B.O.N.,see Business Object Notation Bezault,Eric 674,1160 rationale 591-592 Bachelard,Gaston 672-673 BI LINKABLE597,624,625,797, semantic specification 593-594 1165,1166 using properly 594-595 back782,790 Backslash 645,653 bibliography 1203-1224 associated state 692 Bielak,Richard 277,807,1034,1061 association 907 Backus,John 1102 Association Dijonnaise des BAG 857 Big Bang 194-196 Big Green Button 695 Tapeventres 161 Baillon,Henri 843 Association of Simula Users 732 balance 369,1046 Biggerstaff,Ted J.99 asynchronous call 966,1193 balance enquiry 980 binary distribution 79 AT&T Bell Laboratories 12,328,802, Balter,R.1034 binary search 380-381 1106,1132,1135 Bancilhon,Francois 1061 binary search tree 85,92,1188 Atkinson,Colin 1034 bandwidth 48 binary tree 1188 BINARY FILE 1174 Atkinson,M.1061 bank account56,364,368,369,472, BINARY SEARCH TREE 1188 attachment242-244,261-265,280, 491,492,513,1046,1047 444 BANK ACCOUNT 364,368,370 BINARY TREE97,604,1007,1188 and equality 264-265 baritone 1143 BINARY TREEI 1008 copy attachment 262-263 base class,see under class binding definition 262 Base libraries351,357,456,543,555, dynamic29,63,85,480-482,570- hybrid263-264,412,445 710,796,802,1146,1149,1150, 577,1071,1174,1175,1195 polymorphic 467-470 1152,1157,1165-1166 and assertions 570-580 reference attachment 262-263 Basic1099,1106 and efficiency 507-515 source 262 and interactive applications target 262 Basic Construct of object-oriented 1071 computation 183,611-612 attempt,see assignment attempt implementation 482 attribute 173-176,1193 basic triangle of computation 101- 103,964 overhead 509 adding or removing attributes to inC++1133 classes of persistent objects basic type,see basic under type static509-515,1202 1045-1046 basic store 1038 as optimization 509-515,1147 and postconditions 579 batch version of a system 108-109 static and dynamic binding in C++ client privileges 206-208 Baudoin,Claude 35,934,937 513-515
INDEX 1227 and redeclaration 481–482, 570– 580 expressive power 399–403 for documentation 389–392 for writing correct software 389 in C, C++ etc. 334 instruction 378–380 monitoring at run time 392–399 not a control structure 346–347 not for input checking 345–346 style rules 899 using a comment 399 using in practice 389–398 Assertion Argument rule 997 Assertion Evaluation rule 402 Assertion Redeclaration rule 573, 578, 580 Assertion Violation rule 346 asset 521–522 ASSET 521 assignment 448 see also attachment assignment attempt 29, 478, 591–595, 617, 1068, 1134, 1193 rationale 591–592 semantic specification 593–594 using properly 594–595 associated_state 692 association 907 Association Dijonnaise des Tapeventres 161 Association of Simula Users 732 asynchronous call 966, 1193 AT&T Bell Laboratories 12, 328, 802, 1106, 1132, 1135 Atkinson, Colin 1034 Atkinson, M. 1061 attachment 242–244, 261–265, 280, 444 and equality 264–265 copy attachment 262–263 definition 262 hybrid 263–264, 412, 445 polymorphic 467–470 reference attachment 262–263 source 262 target 262 attempt, see assignment attempt attribute 173–176, 1193 adding or removing attributes to classes of persistent objects 1045–1046 and postconditions 579 client privileges 206–208 constant 203, 644–645, 884–885 default value, see under initialization exporting 205–208 in relational databases 1048 no precondition 579 once? 660 redefined from function 491–492, 579 versus function 204 Austin Mini 811 AUTHORS 1048, 1049 automatic update 31 available 184, 191, 447 available 299, 316 AVL trees 72 Avotins, Jon 1160 axioms of an abstract data type 135– 137 B B-tree 82 B.O.N., see Business Object Notation Bachelard, Gaston 672–673 back 782, 790 Backslash 645, 653 Backus, John 1102 BAG 857 Baillon, Henri 843 balance 369, 1046 balance_enquiry 980 Balter, R. 1034 Bancilhon, François 1061 bandwidth 48 bank account 56, 364, 368, 369, 472, 491, 492, 513, 1046, 1047 BANK_ACCOUNT 364, 368, 370 baritone 1143 base class, see under class Base libraries 351, 357, 456, 543, 555, 710, 796, 802, 1146, 1149, 1150, 1152, 1157, 1165–1166 Basic 1099, 1106 Basic Construct of object-oriented computation 183, 611–612 basic triangle of computation 101– 103, 964 basic type, see basic under type basic_store 1038 batch version of a system 108–109 Baudoin, Claude 35, 934, 937 Bauhin, Caspar 864 BBC (British Broadcasting Corporation) 315 BCPL 1106, 1111 be versus have 812–814 see also is-a relation Beck, Kent 740 Beethoven, Ludwig van 1141, 1143 before 782 behavior class 72, 503–504, 688, 772, 850, 961, 1002, 1004, 1010, 1021, 1029, 1030, 1031, 1193 Bell Labs, see AT&T Bell Laboratories bells and whistles 12 Ben-Ari, Mordechai 1033, 1034 Bench 1148–1149 Berkeley, see California Museum of Paleontology Bert, Didier xi, 100, 330 Bertino, Elisa 1061 Beta 1137, 1139 Bezault, Éric 674, 1160 BI_LINKABLE 597, 624, 625, 797, 1165, 1166 bibliography 1203–1224 Bielak, Richard 277, 807, 1034, 1061 Big Bang 194–196 Big Green Button 695 Biggerstaff, Ted J. 99 binary distribution 79 binary search 380–381 binary search tree 85, 92, 1188 binary tree 1188 BINARY_FILE 1174 BINARY_SEARCH_TREE 1188 BINARY_TREE 97, 604, 1007, 1188 BINARY_TREE1 1008 binding dynamic 29, 63, 85, 480–482, 570– 577, 1071, 1174, 1175, 1195 and assertions 570–580 and efficiency 507–515 and interactive applications 1071 implementation 482 overhead 509 in C++ 1133 static 509–515, 1202 as optimization 509–515, 1147 static and dynamic binding in C++ 513–515
1228 INDEX versus typing 619-621 browser 1153 Obfuscated 876 BIRD627,841.843 browsing32,1156-1159 object-oriented extensions 1131- Birtwistle,Graham M.35,1138 Bruce,Kim B.629,642 1137,1138 block (Simula)1123 Bruno,John 1034 structure type 1109 block structure 49-50,281,282 bubble 1150 C++35,46,56,100,208,209,211, blocking (in short forms)996 Budde,Reinhardt 642 239,278,294,295,305,306,310, 334,443,444,513-515,548,566, blocking object 996 buffer990-992,1021-1022 585,616,620,628,668,670,742, Bobrow,Daniel G.1139 BUFFER 980,981 876,1050,1056,1057,1099,1106, body BUFFER ACCESS 1021 1107,1132-1135,1136,1144,1161, of class in Simula 1118 BUFFER MANAGER (Ada)1091 1167 Boehm,Barry W.19,20,878 Buffon,Georges-Louis Leclerc, and memory management 294, boldface 900 Comte de 843,865 295,305,306,310 boldface italics 900 bug18,409 and novariance 628 BON,see Business Object Notation Build graphical application builder assessment 1135 Booch,Grady744,918,922,1097, 1076,1149,1150,1160 binding policy 513-515 1135 bulimia 314 complexity 1134-1135 book221-222,277 Bull 1079 concurrency 1033 Bookman font 901 Burstall,Rod M.160 Obfuscated 876 BOOS1048.1049 Business Card principle 990,1020, wrapping legacy C++code 1144 BOOKI 221 CABIN BUTTON 1017 1031,1035,1036 BOOK2 223 business card scheme 974,975,984, cache or recently accessed objects 1056 BOOK3 226 989,990,993,996,1002,1011 Business Object Notation 271,464, CAD-CAM(computer-aided design B0 OLEAN171,220,644,1172 517,914,919-922,930,1150 and manufacturing of engineering BOOLEAN MATRICES (Ada)1180 products)1051,1054 BOOLEAN MATRIX 1179 business rule 913 calculator 522 BOOLEAN RING 1179 for a TV station 913 BUTLER 1005 California Museum of Paleontology BOOLEAN RING ELEMENT 1180 (Berkeley)864,865,868 booting procedure 197 button533,1071,1074 cal24,183-184,447-448 Borges,Jorge-Luis 18,672 BUTTON 511,1017 asynchronous 966,1193 Borland211,515,1130,1143 buttonhole 533-534 callingobject-oriented mechanisms Borland Pascal 1101,1131,1137 Buxton,John M.99 from C and other languages 1144 boundary cases 353 bytecode956,1136,1145,1147,1149 chain 418 bounded queue,see bounded under dual semantics under concurrency queue C 966 BOUNDED ARITY TREE 604 external 311,439-444 BOUNDED BUFFER 967,968, C49,56,61,89,176,211,225,230, and garbage collection 311 265,266,269,270,278,282,285, function 453 986,992,993,994,996,1022,1031 306,315,327,328,333,334,386, optimizing 208-209 BOUNDED LIST 710 439,441,442,443,447,507,509, qualified 186-187,447 BOUNDED OUEUE 992,994, 510,670,714,716,737,742,753, separate 967 1031 758.876,877,891,956,1056,1065, synchronous 966,1202 BOUNDED STACK 576 1067,1106-1111,1130,1131-1137, target 184 Boussard,Jean-Claude 948 1144,1146,1161 unqualified 186-187,447 Bouy,Reynald 1160 and exceptions 414-415 callback 440,505 BOX 857 and memory management 295 Campbell,Roy H.1033 Box symbol(Ada)1083 calling object-oriented mechanisms can-act-as-a relation 497 B0Y623,634 from C 1144 Cancel button 1074 Brachman,Ronald J.517 compilation 1146 Cannon,H.I.1139 Brandon,D.H.878 efficiency 510 emulating object technology Canonical Reduction rule 158 Breu,Ruth and Michael 863 1106-1111,1112 Capability Maturity Model 55 Bright,Walter 515,670 history1106-1107 capacity 710,882 Britannicus 1135 need for comments 891 CAR 810
1228 INDEX versus typing 619–621 BIRD 627, 841, 843 Birtwistle, Graham M. 35, 1138 block (Simula) 1123 block structure 49–50, 281, 282 blocking (in short forms) 996 blocking object 996 Bobrow, Daniel G. 1139 body of class in Simula 1118 Boehm, Barry W. 19, 20, 878 boldface 900 boldface italics 900 BON, see Business Object Notation Booch, Grady 744, 918, 922, 1097, 1135 book 221–222, 277 Bookman font 901 BOOKS 1048, 1049 BOOK1 221 BOOK2 223 BOOK3 226 BOOLEAN 171, 220, 644, 1172 BOOLEAN_MATRICES (Ada) 1180 BOOLEAN_MATRIX 1179 BOOLEAN_RING 1179 BOOLEAN_RING_ELEMENT 1180 booting procedure 197 Borges, Jorge-Luis 18, 672 Borland 211, 515, 1130, 1143 Borland Pascal 1101, 1131, 1137 boundary cases 353 bounded queue, see bounded under queue BOUNDED_ARITY_TREE 604 BOUNDED_BUFFER 967, 968, 986, 992, 993, 994, 996, 1022, 1031 BOUNDED_LIST 710 BOUNDED_QUEUE 992, 994, 1031 BOUNDED_STACK 576 Boussard, Jean-Claude 948 Bouy, Reynald 1160 BOX 857 Box symbol (Ada) 1083 BOY 623, 634 Brachman, Ronald J. 517 Brandon, D.H. 878 Breu, Ruth and Michael 863 Bright, Walter 515, 670 Britannicus 1135 browser 1153 browsing 32, 1156–1159 Bruce, Kim B. 629, 642 Bruno, John 1034 bubble 1150 Budde, Reinhardt 642 buffer 990–992, 1021–1022 BUFFER 980, 981 BUFFER_ACCESS 1021 BUFFER_MANAGER (Ada) 1091 Buffon, Georges-Louis Leclerc, Comte de 843, 865 bug 18, 409 Build graphical application builder 1076, 1149, 1150, 1160 bulimia 314 Bull 1079 Burstall, Rod M. 160 Business Card principle 990, 1020, 1031, 1035, 1036 business card scheme 974, 975, 984, 989, 990, 993, 996, 1002, 1011 Business Object Notation 271, 464, 517, 914, 919–922, 930, 1150 business rule 913 for a TV station 913 BUTLER 1005 button 533, 1071, 1074 BUTTON 511, 1017 buttonhole 533–534 Buxton, John M. 99 bytecode 956, 1136, 1145, 1147, 1149 C C 49, 56, 61, 89, 176, 211, 225, 230, 265, 266, 269, 270, 278, 282, 285, 306, 315, 327, 328, 333, 334, 386, 439, 441, 442, 443, 447, 507, 509, 510, 670, 714, 716, 737, 742, 753, 758, 876, 877, 891, 956, 1056, 1065, 1067, 1106–1111, 1130, 1131–1137, 1144, 1146, 1161 and exceptions 414–415 and memory management 295 calling object-oriented mechanisms from C 1144 compilation 1146 efficiency 510 emulating object technology 1106–1111, 1112 history 1106–1107 need for comments 891 Obfuscated 876 object-oriented extensions 1131– 1137, 1138 structure type 1109 C++ 35, 46, 56, 100, 208, 209, 211, 239, 278, 294, 295, 305, 306, 310, 334, 443, 444, 513–515, 548, 566, 585, 616, 620, 628, 668, 670, 742, 876, 1050, 1056, 1057, 1099, 1106, 1107, 1132–1135, 1136, 1144, 1161, 1167 and memory management 294, 295, 305, 306, 310 and novariance 628 assessment 1135 binding policy 513–515 complexity 1134–1135 concurrency 1033 Obfuscated 876 wrapping legacy C++ code 1144 CABIN_BUTTON 1017 cache or recently accessed objects 1056 CAD-CAM (computer-aided design and manufacturing of engineering products) 1051, 1054 calculator 522 California Museum of Paleontology (Berkeley) 864, 865, 868 call 24, 183–184, 447–448 asynchronous 966, 1193 calling object-oriented mechanisms from C and other languages 1144 chain 418 dual semantics under concurrency 966 external 311, 439–444 and garbage collection 311 function 453 optimizing 208–209 qualified 186–187, 447 separate 967 synchronous 966, 1202 target 184 unqualified 186–187, 447 callback 440, 505 Campbell, Roy H. 1033 can-act-as-a relation 497 Cancel button 1074 Cannon, H. I. 1139 Canonical Reduction rule 158 Capability Maturity Model 55 capacity 710, 882 CAR 810
INDEX 1229 car metaphor for software 672 Changing Availability or Type 638 general heuristics 731-740 CAR OWNER 810.845.863 CHARACTER171,220,565,644 the general method 741-743 Cardelli,Luca 629,641,642 characteristic function 139 through reuse 740-741 Camegie-Mellon University 1079 cheating clients 572 flat form,see flat form Caromel,Denis 987,1033 check 378-380 generating,see generator Carriero,Nicholas 1033 check instruction 378-380,452 generic320-325,1197 Carroll,Martin 328 Check instruction 432 how big?770-774 implementation 733-734 cartesian product 133,134,149,150, checking input values 345-346 deferred 734 160,1052 Chen,Peter P.S.120 indexing clause 78 cartesian ready 760 Cheshire Cat 733 interface 747-808,1197 Case analysis and design workbench choice 686 documenting 804 711,805,1150 choose initial 691 recommended style 752-754 Case instruction 449 CHORUS 1034 invariant,see class invariant CASE tools 271 CII-Honeywell Bull 1079 is a new class necessary?721-723 case,see letter case CIRCLE329,467,483,826,838, missing important classes 723-724 Cassandra 671 858,886 modeling external objects 732-733 cast306,618.620,628,668.670, CIRCULAR LIST 710 name as class descriptor 1043 1133 CITY497,729 naming 879 Castagna,Giuseppe 629,642 cladistics 865,866-868 nesting,see nesting casual approach,see under memory cladogram 867 no-command 729-730 management Clark,David 939 obsolete 802-803 CAT(Changing Availability or Type) clash,see name clash parameterized,same as generic 638 class23,165-216,1194 passive 776-779 catalog of graphical abstractions 1066 abstract,same as deferred reason for rejecting classes 726- abstracting 860 731 catcall 636-638 abstraction 860 rejecting inadequate classes 725 definition 638 analysis 732-733 role169-170 Catcall approach to the covariance root,see root class issue 639,642 as module and type 170,185 set 196 Catcall type rule 637,639 avoiding useless classes 720-721 simple example 172-177 base class,see under type categories ofobject orientation criteria basic conventions 177-181 single routine 728 22 size770-774 behavior.see behavior class Cattell,R.G.1061 categories 731-732 definition 771 CCS(Communicating Concurrent consistency 771-773 flat 771 Systems)1033 correctness,see correctness of a immediate 771 CD-ROM accompanying this book class incremental 771 viii,xiv,1043,1076,1165 deferred30,142,143-144,165, small 714-715 Cecil library 1144 482-494,500-506,518.686-688 specification 1201 11741188,1195 the ideal class 730-731 CELL526,604,607 definition 486 universal 580-582 Cepage 715 role143-144,500-506 validity,see class validity Ceres 269 definition 142 versioning 1054 Ceyx1131,1139 descriptor,see class descriptor versus record 150-151 CGI script 1152 design 734-735 versus type 324-325 chain do not confuse with object 165- wrapper,see wrapper call chain,see chain under call 169,216 class descriptor CHAIN 567 does not“perform”something for C implementation of object- oriented concepts 1110-1111 challenger999,1000,1027,1031 726-727 effective142,143,165,1195 for schema evolution in persistent Chambers,Craig 215,1139 definition 486 object structures 1043 change in software development 81- expanded 256 Class Elicitation principle 725 82 factoring 860 class invariant 118,146,363-410, change or redo dilemma 59 finding 117 413,465,570,579,647,784,785 change,rule of 814-816 finding the classes 719-746,754 952,982-983,999,1022-1024,1194
INDEX 1229 car metaphor for software 672 CAR_OWNER 810, 845, 863 Cardelli, Luca 629, 641, 642 Carnegie-Mellon University 1079 Caromel, Denis 987, 1033 Carriero, Nicholas 1033 Carroll, Martin 328 cartesian product 133, 134, 149, 150, 160, 1052 cartesian_ready 760 Case analysis and design workbench 711, 805, 1150 Case instruction 449 CASE tools 271 case, see letter case Cassandra 671 cast 306, 618, 620, 628, 668, 670, 1133 Castagna, Giuseppe 629, 642 casual approach, see under memory management CAT (Changing Availability or Type) 638 catalog of graphical abstractions 1066 catcall 636–638 definition 638 Catcall approach to the covariance issue 639, 642 Catcall type rule 637, 639 categories of object orientation criteria 22 Cattell, R.G. 1061 CCS (Communicating Concurrent Systems) 1033 CD-ROM accompanying this book viii, xiv, 1043, 1076, 1165 Cecil library 1144 CELL 526, 604, 607 Cépage 715 Ceres 269 Ceyx 1131, 1139 CGI script 1152 chain call chain, see chain under call CHAIN 567 challenger 999, 1000, 1027, 1031 Chambers, Craig 215, 1139 change in software development 81– 82 change or redo dilemma 59 change, rule of 814–816 Changing Availability or Type 638 CHARACTER 171, 220, 565, 644 characteristic function 139 cheating clients 572 check 378–380 check instruction 378–380, 452 Check_instruction 432 checking input values 345–346 Chen, Peter P.S. 120 Cheshire Cat 733 choice 686 choose_initial 691 CHORUS 1034 CII-Honeywell Bull 1079 CIRCLE 329, 467, 483, 826, 838, 858, 886 CIRCULAR_LIST 710 CITY 497, 729 cladistics 865, 866–868 cladogram 867 Clark, David 939 clash, see name clash class 23, 165–216, 1194 abstract, same as deferred abstracting 860 abstraction 860 analysis 732–733 as module and type 170, 185 avoiding useless classes 720–721 base class, see under type basic conventions 177–181 behavior, see behavior class categories 731–732 consistency 771–773 correctness, see correctness of a class deferred 30, 142, 143–144, 165, 482–494, 500–506, 518, 686–688, 1174–1188, 1195 definition 486 role 143–144, 500–506 definition 142 descriptor, see class descriptor design 734–735 do not confuse with object 165– 169, 216 does not “perform” something 726–727 effective 142, 143, 165, 1195 definition 486 expanded 256 factoring 860 finding 117 finding the classes 719–746, 754 general heuristics 731–740 the general method 741–743 through reuse 740–741 flat form, see flat form generating, see generator generic 320–325, 1197 how big? 770–774 implementation 733–734 deferred 734 indexing clause 78 interface 747–808, 1197 documenting 804 recommended style 752–754 invariant, see class invariant is a new class necessary? 721–723 missing important classes 723–724 modeling external objects 732–733 name as class descriptor 1043 naming 879 nesting, see nesting no-command 729–730 obsolete 802–803 parameterized, same as generic passive 776–779 reason for rejecting classes 726– 731 rejecting inadequate classes 725 role 169–170 root, see root class set 196 simple example 172–177 single routine 728 size 770–774 definition 771 flat 771 immediate 771 incremental 771 small 714–715 specification 1201 the ideal class 730–731 universal 580–582 validity, see class validity versioning 1054 versus record 150–151 versus type 324–325 wrapper, see wrapper class descriptor for C implementation of objectoriented concepts 1110–1111 for schema evolution in persistent object structures 1043 Class Elicitation principle 725 class invariant 118, 146, 363–410, 413, 465, 570, 579, 647, 784, 785, 952, 982–983, 999, 1022–1024, 1194
1230 INDEX and creation procedures 371 in the Business Object Notation Common Lisp 1131 and Design by Contract 368-369 920 communication 977,979-980 and generalization 930 subcluster 923 and inheritance 465,570 comp.object Usenet newsgroup 35, cluster (Lace)198,199 and manifest constants 647 674 Cluster Model ofthe software lifecycle and reference semantics 403-406 comp.risks,see Risks forum 926-928 implementation invariant 376- Coad,Peter 167,917,922 compaction 313 377,409,532,756 COMPANY 913 role in software engineering 367 Coad-Yourdon method 917 violations 409 Cobol165,442,737,742,876,1099, COMPANY PLANE 521 1107 COMPARABLE523,590,727,831, when it must be preserved,when 832,1176,1177,1178.1183,1185 not366-367 COBOL 1079 1186 C1 ass Tool1153,1154,1156,1159 Codd,E.F.1048,1061 Cohen,Bernard 945,948 comparing objects,see equality under class validity 627 object Class-ADT Consistency property 375 Cohen,Jacques 316 comparing references 244 class-valid 627,636 cohesion 64 Class invariant 432 collect now 308,314 compatibility 8,16,115,443-444 class_name 433 COLLECTION 857 compatible 913 classes preparatoires 941 collection,see garbage collection compilation technology 1144-1148 challenges 1144-1145 classification collection_off 308,312,314 premature 728-729 see also assembly collection on 308 speed 31,618 classification,see taxonomy Collins,Allen G.868 classwide operation (Ada 95)1094 Compilist 897 color,use in software texts 901,1152 complementary formalisms 920 CLEAR 330 column Clemenceau,Georges 932 in relational databases 1048 completeness clickable,clickability 1158-1159 comb-like structure 892,894 of a garbage collector 305 of a specification 153-159 client51,118,119,175,182-183, command135,699-718.748,987, persistence,see closure under 785-786,907,1194 1073 persistence and analysis 907 arguments 707-708 sufficient 156-159 being honest with clients 573 as a class 699-700 COMPLEX647,760,858,1186 cheating clients 572 button 751 definition 182 composite 529,716 complex number 408,518 dynamic 572 creating a command object 703- component manufacturer 297 independence 861 704 component,see reusable software privileges on an attribute 206-208 executing 707 component versus inheritance 812-817 remembering 702-703 component-level approach to memory client-server953,968,1039,1056, COMMAND71,699,714,721,724, management 297-301 1149,1151,1152 731,734 composability 42-43,48,50,54 cloe245,247,274,275,276,303, command-query separation 748-764, composite 582.584.880.976 1029 command,see under command defined in terms of copy 247 Command-Query Separation principle figure,see under figure cloning,see under object 751,759 object,see under object CLOS1131,1139 COMMAND_INSTANCE 709 COMPOSITE COMMAND 716 close1174,1175 comment 890-891 COMPOSITE_FIGURE 528,1071 CLOSED FIGURE 483 as assertion 399 header,see header comment Compostela 152 closure for modules,why needed 57 non-header 890-891 compromise in the software process see also persistence closure,system COMMERCIAL 911,913 906 closure commercial for a TV station 911-912 computation clouds and precipice 905-906 COMMON (Fortran)48,656,736, ingredients 101-103 CLU46,90,99,100,806,1081 742,1102-1104 computational reflection 1130 cluster24,210,920,923-924,925, garbage 48,736 ComputerWorld 14,1136 926-928,1194 common block,see COMMON computing time 1123 CLU 1081 (Fortran) concrete state 756-758
1230 INDEX and creation procedures 371 and Design by Contract 368–369 and generalization 930 and inheritance 465, 570 and manifest constants 647 and reference semantics 403–406 implementation invariant 376– 377, 409, 532, 756 role in software engineering 367 violations 409 when it must be preserved, when not 366–367 Class Tool 1153, 1154, 1156, 1159 class validity 627 Class-ADT Consistency property 375 class-valid 627, 636 Class_invariant 432 class_name 433 classes préparatoires 941 classification premature 728–729 classification, see taxonomy classwide operation (Ada 95) 1094 CLEAR 330 Clemenceau, Georges 932 clickable, clickability 1158–1159 client 51, 118, 119, 175, 182–183, 785–786, 907, 1194 and analysis 907 being honest with clients 573 cheating clients 572 definition 182 dynamic 572 independence 861 privileges on an attribute 206–208 versus inheritance 812–817 client-server 953, 968, 1039, 1056, 1149, 1151, 1152 clone 245, 247, 274, 275, 276, 303, 582, 584, 880, 976 defined in terms of copy 247 cloning, see under object CLOS 1131, 1139 close 1174, 1175 CLOSED_ FIGURE 483 closure for modules, why needed 57 see also persistence closure, system closure clouds and precipice 905–906 CLU 46, 90, 99, 100, 806, 1081 cluster 24, 210, 920, 923–924, 925, 926–928, 1194 CLU 1081 in the Business Object Notation 920 subcluster 923 cluster (Lace) 198, 199 Cluster Model of the software lifecycle 926–928 Coad, Peter 167, 917, 922 Coad-Yourdon method 917 Cobol 165, 442, 737, 742, 876, 1099, 1107 COBOL 1079 Codd, E.F. 1048, 1061 Cohen, Bernard 945, 948 Cohen, Jacques 316 cohesion 64 collect_now 308, 314 COLLECTION 857 collection, see garbage collection collection_off 308, 312, 314 collection_on 308 Collins, Allen G. 868 color, use in software texts 901, 1152 column in relational databases 1048 comb-like structure 892, 894 command 135, 699–718, 748, 987, 1073 arguments 707–708 as a class 699–700 button 751 composite 529, 716 creating a command object 703– 704 executing 707 remembering 702–703 COMMAND 71, 699, 714, 721, 724, 731, 734 command-query separation 748–764, 1029 Command-Query Separation principle 751, 759 COMMAND_INSTANCE 709 comment 890–891 as assertion 399 header, see header comment non-header 890–891 COMMERCIAL 911, 913 commercial for a TV station 911–912 COMMON (Fortran) 48, 656, 736, 742, 1102–1104 garbage 48, 736 common block, see COMMON (Fortran) Common Lisp 1131 communication 977, 979–980 comp.object Usenet newsgroup 35, 674 comp.risks, see Risks forum compaction 313 COMPANY 913 COMPANY_PLANE 521 COMPARABLE 523, 590, 727, 831, 832, 1176, 1177, 1178, 1183, 1185, 1186 comparing objects, see equality under object comparing references 244 compatibility 8, 16, 115, 443–444 compatible 913 compilation technology 1144–1148 challenges 1144–1145 see also assembly speed 31, 618 Compilist 897 complementary formalisms 920 completeness of a garbage collector 305 of a specification 153–159 persistence, see closure under persistence sufficient 156–159 COMPLEX 647, 760, 858, 1186 complex number 408, 518 component manufacturer 297 component, see reusable software component component-level approach to memory management 297–301 composability 42–43, 48, 50, 54 composite command, see under command figure, see under figure object, see under object COMPOSITE_COMMAND 716 COMPOSITE_FIGURE 528, 1071 Compostela 152 compromise in the software process 906 computation ingredients 101–103 computational reflection 1130 ComputerWorld 14, 1136 computing time 1123 concrete state 756–758
INDEX 1231 concurrency102,951-1036,1056- of analysis models using different control structure style for exceptions 1057,1059-1060,1091-1092,1118 views 920 1091 1121 static-dynamic types 475 CONTROLLER (Simula)1120 and inheritance 959-960,1121- Const value 650 convenience inheritance 824 1122 constant452-453,643-660,884-886, examples 1003-1022 convenience,see marriage of 1081 convenience in Ada980,1098 attribute,see constant under in object-oriented databases 1056- Cook,William R.642 attribute 1057 coordinates in GUI(Graphical User how to use645-646,884-886 intra-application 954 Interface)systems 1070 library mechanisms 972-973, initialization 656-657 copy 1027,1030 manifest452-453,646-647,885 attachment,see under attachment multi-layer architecture 970 and class types 646-647 c0py247,274,275,276,582,583, proof rule 1022-1024 of a basic type 643-645 584 semantic specification 1026-1027 of a class type 646-648 copying,see under object summary of mechanism 951-952, of string type 653-654,657 CORBA8,955,970 1025-1027 symbolic,see constant under CORBA 2 955 summary of the mechanism 1025- attribute 1027 where to put declarations 886 coroutine1012-1014,1030,1036, syntax specification 1025 1118-1126,1139,1140 constant inheritance,see under facility validity constraints 997,1025- inheritance example 1119-1121 1026 Simula1118-1126,1139,1140 Constantine,Larry 120 validity rules 973-976 COROUTINE 1013 CONCURRENCY 998,1000,1001, constrained genericity,see under COROUTINE CONTROLLER 1019,1027,1030 genericity 1014 Concurrency Control File 971-972 constructor(C++)1133 correc1681,682,686 concurrent 1194 constructor function(abstract data correct ADT expression 154 accesses to an object 982-983, type)135 correct mismatch 1044,1045,1046 1031 consumer,see under reuse;see also correction,see under persistence precondition paradox 995,1036 client correctness4-5,16,52,331,332, see also concurrency,concurrent CONTAINER 857 369-373,389,427-430 engineering container data structure 471,472,496, a relative notion 333-334 concurrent engineering 924-925 587,1194 and exceptions 427-430 conditional correctness,conditional content-based search tool 1060 conditional 4-5,52,401 proof,see conditional under context(in graphical systems)1072- of a class 369-373 correctness 1076 partial 337 conditional critical region,see total 337 Context-Event-Command-State conditional under critical region versus efficiency 394-398 model of interactive graphical conditional instruction 448-449 applications 1073-1076,1150 correctness formula 334-335,369 configuration management 66,1042 continuity44-45,47,48,50,51,54, Correctness property 333 see also versioning under class, 56,65,103 cosmetics 875-879 object CONFIRMATION 692 contour model of programming Cosi fan tutte 1000 languages 315 comt777,882 Conflicting Assignments To Actual 446 contract341-342,1194 COUNTABLE_SEQUENCE 755 see also Design by Contract coupling 64 conformance469,474,591,598,616, CONTRACT EMPLOYEE 853 weak 48 1194 covariance 621-642,1194 conforms to 582,640 contracting 919 Anchoring approach 630-633, conjugate 600 in BON 919 639,642 CONS (Lisp)282 see also Design by Contract Catcall approach 636-638,639, consistency contravariance 624,625,626,628, 642 in naming features and classes 1194 Global approach 633-636,639 883-884 control(for graphical applications) Cox,Brad.J34,80,100,119,672 of a library 69 1066,1067 715,1112,1131,1138 of an abstract data type 155 control structure 346-347 CPU965,1014
INDEX 1231 concurrency 102, 951–1036, 1056– 1057, 1059–1060, 1091–1092, 1118– 1121 and inheritance 959–960, 1121– 1122 examples 1003–1022 in Ada 980, 1098 in object-oriented databases 1056– 1057 intra-application 954 library mechanisms 972–973, 1027, 1030 multi-layer architecture 970 proof rule 1022–1024 semantic specification 1026–1027 summary of mechanism 951–952, 1025–1027 summary of the mechanism 1025– 1027 syntax specification 1025 validity constraints 997, 1025– 1026 validity rules 973–976 CONCURRENCY 998, 1000, 1001, 1019, 1027, 1030 Concurrency Control File 971–972 concurrent 1194 accesses to an object 982–983, 1031 precondition paradox 995, 1036 see also concurrency, concurrent engineering concurrent engineering 924–925 conditional correctness, conditional proof, see conditional under correctness conditional critical region, see conditional under critical region conditional instruction 448–449 configuration management 66, 1042 see also versioning under class, object CONFIRMATION 692 Conflicting Assignments To Actual 446 conformance 469, 474, 591, 598, 616, 1194 conforms_to 582, 640 conjugate 600 CONS (Lisp) 282 consistency in naming features and classes 883–884 of a library 69 of an abstract data type 155 of analysis models using different views 920 static-dynamic types 475 Const_value 650 constant 452–453, 643–660, 884–886, 1081 attribute, see constant under attribute how to use 645–646, 884–886 initialization 656–657 manifest 452–453, 646–647, 885 and class types 646–647 of a basic type 643–645 of a class type 646–648 of string type 653–654, 657 symbolic, see constant under attribute where to put declarations 886 constant inheritance, see under facility inheritance Constantine, Larry 120 constrained genericity, see under genericity constructor (C++) 1133 constructor function (abstract data type) 135 consumer, see under reuse; see also client CONTAINER 857 container data structure 471, 472, 496, 587, 1194 content-based search tool 1060 context (in graphical systems) 1072– 1076 Context-Event-Command-State model of interactive graphical applications 1073–1076, 1150 continuity 44–45, 47, 48, 50, 51, 54, 56, 65, 103 contour model of programming languages 315 contract 341–342, 1194 see also Design by Contract CONTRACT_EMPLOYEE 853 contracting 919 in BON 919 see also Design by Contract contravariance 624, 625, 626, 628, 1194 control (for graphical applications) 1066, 1067 control structure 346–347 control structure style for exceptions 1091 CONTROLLER (Simula) 1120 convenience inheritance 824 convenience, see marriage of convenience Cook, William R. 642 coordinates in GUI (Graphical User Interface) systems 1070 copy attachment, see under attachment copy 247, 274, 275, 276, 582, 583, 584 copying, see under object CORBA 8, 955, 970 CORBA 2 955 coroutine 1012–1014, 1030, 1036, 1118–1126, 1139, 1140 example 1119–1121 Simula 1118–1126, 1139, 1140 COROUTINE 1013 COROUTINE_CONTROLLER 1014 correct 681, 682, 686 correct ADT expression 154 correct_mismatch 1044, 1045, 1046 correction, see under persistence correctness 4–5, 16, 52, 331, 332, 369–373, 389, 427–430 a relative notion 333–334 and exceptions 427–430 conditional 4–5, 52, 401 of a class 369–373 partial 337 total 337 versus efficiency 394–398 correctness formula 334–335, 369 Correctness property 333 cosmetics 875–879 Così fan tutte 1000 count 777, 882 COUNTABLE_SEQUENCE 755 coupling 64 weak 48 covariance 621–642, 1194 Anchoring approach 630–633, 639, 642 Catcall approach 636–638, 639, 642 Global approach 633–636, 639 Cox, Brad J. 34, 80, 100, 119, 672, 715, 1112, 1131, 1138 CPU 965, 1014
1232 INDEX CRC cards 740 D dead object,see unreachable under creation231-236,236-239,279-316, object 518,752 Dahl,Olc-Johan35,745,1114,1138 deadlock989-990,1004,1031,1035 and inheritance 465-467.479- Daigakuin 941 debug 452 480,518 Dami,Laurent 642 debug instruction 452 and overloading 239 Darwin,Charles 843,860,865,866 debugging392-398,1153-1159 by a function 752 Data Division (Cobol)737,742 decentralization 7,498,643 call236-239 instruction 232-239,448 data sharing 50 declaration effect 233,237 data structure,see active data structure, anchored,see anchored declaration container data structure,polymorphic syntax 203 multiple creation procedures 236- 239 data structure decomposability 40-41,47,48,50,54 patterns 316 data transmission 684 decomposition polymorphic 479-480 database32,1047-1062,1198 functional 103-114,197 three modes 280-291 engine 1053 object-based 114-115 why explicit 235-236 locking1047,1054,1055,1057, deduction versus induction 859-860 Creation Inheritance rule 466 1061 deep operations,see cloning under object creation procedure 196,236-239,371, avoiding locks in Matisse 1056 430,647 in Versant 1057 deep_clone 248,276 and class invariants 371 optimistic,see optimistic lock- deep_equal 248,276 and exceptions 430 ing deep_import 976,977,1035 using a parent's creation procedure long transaction,see long under default values,see under initialization 539-540 transaction default rescue 430,1044 creativity 878-879 object-oriented 1037,1050-1062, defect 347 1152 creator 135 advanced concepts 1058-1060 defensive programming 343-345, Cristian,Flaviu 438 1195 an oxymoron?1058-1060 criteria of object orientation 21-36 engine 1053 de ferred 484.486 critical region 978,979,980,984,990 examples of object-oriented da- Deferred Class No-Instantation rule conditional 978,990 487 tabase management systems cryptography 953 1055-1057 deferred class,see under class CSP(Communicating Sequential fundamental concepts 1050- deferred feature,see under feature Processes)979,980,1033,1091- 1055 define (C)266 1092 threshold model 1053 definitions (full list)1189 cuckoo 859 quey1049,1055,1057 Dekleva,Sasha M.20 Cunningham,Ward 740 in object-oriented database man- Delphi211,515,1130,1143 Current181,446.452,453,602 agement systems 1055 delta (in the Business Object role185-186 in Versant 1057 Notation)920 Current as anchor 602 relational 1037,1048-1053 demand 1000 current demo 927 definition 1048 demanding style for preconditions limitations 1051-1053 354-357 current instance,see under instance Curry,Gael A.99 operations 1048-1049 DeMarco,Tom 120 used with object-oriented soft- Demeter 269 currying 215,1076 ware1050-1053,1152 Law,see Law of Demeter curs0r461,462,488.489,490,504, when not applicable 1051-1053 Department of Defense,see US 752,754,755,756,759,774796 transaction,see transaction Department of Defense custom_independent store 1040 using unstructured information in dependency analysis for compilation customer,is always wrong 336,343, lieu of databases 1060 1146 347,353,393,428.572 DATABASE 968 dependent 250,1146 Cuvier,Georges 864,865 DATE 910 direct 250 Cybele 269 Date,Chris J.1048,1061 deposits_is1364,368,1046 cycles,first and second(France)941 De Cindio,Fiorella 948 Deramat,Frederic 1160 cyclic structures under reference De Moel,Joost 1160 DeRemer,Franklin D.20 counting 303-304 dead code removal 1147 derivation,see generic derivation
1232 INDEX CRC cards 740 creation 231–236, 236–239, 279–316, 518, 752 and inheritance 465–467, 479– 480, 518 and overloading 239 by a function 752 call 236–239 instruction 232–239, 448 effect 233, 237 multiple creation procedures 236– 239 patterns 316 polymorphic 479–480 three modes 280–291 why explicit 235–236 Creation Inheritance rule 466 creation procedure 196, 236–239, 371, 430, 647 and class invariants 371 and exceptions 430 using a parent’s creation procedure 539–540 creativity 878–879 creator 135 Cristian, Flaviu 438 criteria of object orientation 21–36 critical region 978, 979, 980, 984, 990 conditional 978, 990 cryptography 953 CSP (Communicating Sequential Processes) 979, 980, 1033, 1091– 1092 cuckoo 859 Cunningham, Ward 740 Current 181, 446, 452, 453, 602 role 185–186 Current as anchor 602 current demo 927 current instance, see under instance Curry, Gael A. 99 currying 215, 1076 cursor 461, 462, 488, 489, 490, 504, 752, 754, 755, 756, 759, 774–796 custom_independent_store 1040 customer, is always wrong 336, 343, 347, 353, 393, 428, 572 Cuvier, Georges 864, 865 Cybele 269 cycles, first and second (France) 941 cyclic structures under reference counting 303–304 D Dahl, Ole-Johan 35, 745, 1114, 1138 Daigakuin 941 Dami, Laurent 642 Darwin, Charles 843, 860, 865, 866 Data Division (Cobol) 737, 742 data sharing 50 data structure, see active data structure, container data structure, polymorphic data structure data transmission 684 database 32, 1047–1062, 1198 engine 1053 locking 1047, 1054, 1055, 1057, 1061 avoiding locks in Matisse 1056 in Versant 1057 optimistic, see optimistic locking long transaction, see long under transaction object-oriented 1037, 1050–1062, 1152 advanced concepts 1058–1060 an oxymoron? 1058–1060 engine 1053 examples of object-oriented database management systems 1055–1057 fundamental concepts 1050– 1055 threshold model 1053 query 1049, 1055, 1057 in object-oriented database management systems 1055 in Versant 1057 relational 1037, 1048–1053 definition 1048 limitations 1051–1053 operations 1048–1049 used with object-oriented software 1050–1053, 1152 when not applicable 1051–1053 transaction, see transaction using unstructured information in lieu of databases 1060 DATABASE 968 DATE 910 Date, Chris J. 1048, 1061 De Cindio, Fiorella 948 De Moel, Joost 1160 dead code removal 1147 dead object, see unreachable under object deadlock 989–990, 1004, 1031, 1035 debug 452 debug instruction 452 debugging 392–398, 1153–1159 decentralization 7, 498, 643 declaration anchored, see anchored declaration syntax 203 decomposability 40–41, 47, 48, 50, 54 decomposition functional 103–114, 197 object-based 114–115 deduction versus induction 859–860 deep operations, see cloning under object deep_clone 248, 276 deep_equal 248, 276 deep_import 976, 977, 1035 default values, see under initialization default_rescue 430, 1044 defect 347 defensive programming 343–345, 1195 deferred 484, 486 Deferred Class No-Instantation rule 487 deferred class, see under class deferred feature, see under feature define (C) 266 definitions (full list) 1189 Dekleva, Sasha M. 20 Delphi 211, 515, 1130, 1143 delta (in the Business Object Notation) 920 demand 1000 demanding style for preconditions 354–357 DeMarco, Tom 120 Demeter 269 Law, see Law of Demeter Department of Defense, see US Department of Defense dependency analysis for compilation 1146 dependent 250, 1146 direct 250 deposits_list 364, 368, 1046 Deramat, Frédéric 1160 DeRemer, Franklin D. 20 derivation, see generic derivation
INDEX 1233 Dembach,Frederic 1160 Dioscorides of Anazarbus 864 typed 1157 Descartes,Rene 37,43,673 direct instance,see under instance DRAGOON 1034 descendant 464,1195 direct manipulation 1063 DRIVER 544,545 descendant hiding 626-627,835-843 direct mapping 47,54,931 Drix,Philippe 869 and subtype inheritance 835-843 directory 199 duality between actions and objects avoiding 838-839 DIRECTORY 1174 102,146 using839-840,843 dirty read 1056 Dubois,Paul F.xi,642,715,718,765, why needed 837 disciplinary approach 1100,1101, 1034,1112,1160 describing objects and their relations 1108 duel9991000,1031 118 discipline and creativity 878-879 Dufour,Sylvain 1160 design150,506,725,734-735,936. Disciplined Exception Handling Duke,Roger 160 941,1162,1198 principle 417,419,427 Duncan,Thomas 868 class 734-735 DURATION 910 reusability 70-71 Discrimination principle 655 role in education 936,941 D1SK1173,1175 dynamic 1195 aliasing,see aliasing Design by Contract 127,146,331- DISPATCHER 1018 dispenser 127 allocation,see memory 410,411,419,435,569-580,617, display594,681,682,686,688, management 756,805,907,919,941,952,981, 994,1022.1028.1029.1090,1195 1071 binding,see dynamic under binding client 572 and analysis 907,919 display (for a button)555 IP address 1043 and concurrency 952,981,994, display (for composite figures)529 link library,see DLL 1028.1029 DISPLAY ITERATOR 529 typing,see dynamic under typing and inheritance 569-580 dispose310,314,316 Dynamic Binding principle 511 and invariants 368-369 disposing of objects when garbage- DYNAMIC LIBRARY 440 in the Business Object Notation collected 310 DYNAMIC ROUTINE 440 919 distribution formats for reusable middleman 575 role in education 941 software components 79-80 E subcontracting 576 distribution of knowledge 63 design patterns 71-72,100,529,675- Dittrich,Klaus 1061 E CLASS 169 718,735,745,759-764,817,855, divide 762 ease of use 11-12,15,16 871-874,991,1068 DLL (Dynamic Link Library)440 cating car 522 destructor(C++)310 do_if 849 EATING CAR 522 detach(Simula)988,1119 documentation 14-15,18,32,54-55, Eco,Umberto viii,163 detachment 283-284 803-805 economic analogy for object-oriented detection,see under memory and generalization 930 concepts 127 external 14 management,persistence economics of software procurement interface 14 developer 933 76 intemal 14 developer exception,see under economy 14,15,16 see also self-documentation exception system-level 805 ECOOP concurrency workshops 1034 developer_exception code 434 Documentation principle 804 editor724,1066,1074-1075 developer_exception context 435 DoD,see US Department of Defense for graphical abstractions 1066 education,see teaching object developer exception name 434 dogmatism in assessing object development object 1153-1159 orientation 21-22 technology DE7CE602,1173,1174,1184 domain138,377,580 effecting 485,1195 effective diagonal 499,591 domain analysis 947 class,see effective under class diagram,see transition diagram Don't mode me in 1075 effective feature,see under feature Diderot,Denis 121,148 DOOR 720 efficiency9-11,15,16,19,68,208- Dijkstra,Edsger Wybe xi,72,122, DOTTED SEGMENT 829 209,307,327,394-398,482,507- 160,316,347,407,664,665,667 DOUBLE171,220,522 515,548.616,773,1043,1146, 678,750,835,1003,1033,1135, downcasting 1134 1147-1148 1138 drag-and-drop 1156 and dynamic binding 507-515 dining philosophers 1003-1006,1033 see also pick-and-throw and genericity 327
INDEX 1233 Dernbach, Frédéric 1160 Descartes, René 37, 43, 673 descendant 464, 1195 descendant hiding 626–627, 835–843 and subtype inheritance 835–843 avoiding 838–839 using 839–840, 843 why needed 837 describing objects and their relations 118 design 150, 506, 725, 734–735, 936, 941, 1162, 1198 class 734–735 reusability 70–71 role in education 936, 941 Design by Contract 127, 146, 331– 410, 411, 419, 435, 569–580, 617, 756, 805, 907, 919, 941, 952, 981, 994, 1022, 1028, 1029, 1090, 1195 and analysis 907, 919 and concurrency 952, 981, 994, 1028, 1029 and inheritance 569–580 and invariants 368–369 in the Business Object Notation 919 middleman 575 role in education 941 subcontracting 576 design patterns 71–72, 100, 529, 675– 718, 735, 745, 759–764, 817, 855, 871–874, 991, 1068 destructor (C++) 310 detach (Simula) 988, 1119 detachment 283–284 detection, see under memory management, persistence developer 933 developer exception, see under exception developer_exception_code 434 developer_exception_context 435 developer_exception_name 434 development object 1153–1159 DEVICE 602, 1173, 1174, 1184 diagonal 499, 591 diagram, see transition diagram Diderot, Denis 121, 148 Dijkstra, Edsger Wybe xi, 72, 122, 160, 316, 347, 407, 664, 665, 667, 678, 750, 835, 1003, 1033, 1135, 1138 dining philosophers 1003–1006, 1033 Dioscorides of Anazarbus 864 direct instance, see under instance direct manipulation 1063 direct mapping 47, 54, 931 directory 199 DIRECTORY 1174 dirty read 1056 disciplinary approach 1100, 1101, 1108 discipline and creativity 878–879 Disciplined Exception Handling principle 417, 419, 427 Discrimination principle 655 DISK 1173, 1175 DISPATCHER 1018 dispenser 127 display 594, 681, 682, 686, 688, 1071 display (for a button) 555 display (for composite figures) 529 DISPLAY_ITERATOR 529 dispose 310, 314, 316 disposing of objects when garbagecollected 310 distribution formats for reusable software components 79–80 distribution of knowledge 63 Dittrich, Klaus 1061 divide 762 DLL (Dynamic Link Library) 440 do_if 849 documentation 14–15, 18, 32, 54–55, 803–805 and generalization 930 external 14 interface 14 internal 14 see also self-documentation system-level 805 Documentation principle 804 DoD, see US Department of Defense dogmatism in assessing object orientation 21–22 domain 138, 377, 580 domain analysis 947 Don’t mode me in 1075 DOOR 720 DOTTED_SEGMENT 829 DOUBLE 171, 220, 522 downcasting 1134 drag-and-drop 1156 see also pick-and-throw typed 1157 DRAGOON 1034 DRIVER 544, 545 Drix, Philippe 869 duality between actions and objects 102, 146 Dubois, Paul F. xi, 642, 715, 718, 765, 1034, 1112, 1160 duel 999–1000, 1031 Dufour, Sylvain 1160 Duke, Roger 160 Duncan, Thomas 868 DURATION 910 dynamic 1195 aliasing, see aliasing allocation, see memory management binding, see dynamic under binding client 572 IP address 1043 link library, see DLL typing, see dynamic under typing Dynamic Binding principle 511 DYNAMIC_LIBRARY 440 DYNAMIC_ROUTINE 440 E E_CLASS 169 ease of use 11–12, 15, 16 eating car 522 EATING_CAR 522 Eco, Umberto viii, 163 economic analogy for object-oriented concepts 127 economics of software procurement 76 economy 14, 15, 16 ECOOP concurrency workshops 1034 editor 724, 1066, 1074–1075 for graphical abstractions 1066 education, see teaching object technology effecting 485, 1195 effective class, see effective under class effective feature, see under feature efficiency 9–11, 15, 16, 19, 68, 208– 209, 307, 327, 394–398, 482, 507– 515, 548, 616, 773, 1043, 1146, 1147–1148 and dynamic binding 507–515 and genericity 327
1234 INDEX and inheritance 507-515 ENGINEER815,816,853 schema evolution,see under and static typing 616 engineering persistence of garbage collection 307 see forward engineering, see also change in software of repeated inheritance 548 rearchitecturing,reverse development,extendibility of the compilation process 1144- engineering evolutionary taxonomist 866-868 1146 engineering schools(France)941 exception25,241,411-438,801,999, of the environment's generated 1088-1091,1134,1196 code 1144 ENOUIRY ON FLIGHTS 688 versus correctness 394-398 ensure 112,338 abnormal case style 1091 ensure then 578 advanced exception handling 431- egoful design 878 egoless expression 878 enter 802 435 egoless programming 878 entity 1196 as object 436-437 default value,see under basic concepts 411-414 Eiffel 1162 initialization causes 413-414 Einstein,Albert 672 comparison of mechanisms 1089- operations on generic entities 323- electronic collocation 925 1091 324 elevator 720 control structure style 1091 polymorphic 469,488 definition 412 ELEVATOR 720,1016 precise definition 213 developer434-435,1088-1089 elevator system(concurrency entity-relationship 120,737,742 examples 422-427 example)1014-1019,1036 enumerated type handling414-422,1088-1089 Eliens,Anton 34 Ada 1175 history table 420-422 Elinck,Philippe 642 Pascal 660 in Ada415-416,438.1088-1091 ELKS 1150 enumerated type,see unique value in C-Unix 414-415 ELLIPSE483,527,826,838 ENVIR 650 queries 431-433 Ellis Island 538 environment for developing object- raising434-435,1088-1089 Ellis,Margaret 328,668,1138 oriented software 1143-1160 recovering 423-424 EPEE 1034 role 801 Elmasri,Ramez 1061 sources 412-413 else179,448,450 epilogue 1161-1162 elseif 449 eqal246,247,248,265,274,275, taxonomy exception,see exception under taxonomy embedded SQL 1049 276,582,584 exception (Ada)415 EMPLOYEE 853 equality,see under object;see also comparison under reference exception handler 1089 empy777,883 EQUIVALENCE (Fortran)266 exception to methodology rule 668- empty structures 353 669 emu 859 error 347 EXCEPTION CONSTANTS 431 emulation 1099-1112 precise terminology 347-348 EXCEPT7ONS431,998,1000,1001 Encapsulate Repetition 984 esprit de I'escalier 932 encapsulation 53,779-780,1053, Euclid's algorithm 877 execute (for APPLICATION)691 execute (for COMMAND)699 1195 European Space Agency 410,1080 execute (for STATE)687 and assertions 779-780 evaluating candidate decompositions 736 execute_interruptibly 1001,1002 and databases 1053 see also:information hiding;the event execute session 680,688 next three entries. in interactive system 1071-1076 execute state 681,682 encapsulation language 53,1079- handling 1072-1076 execution engine 1147 1098.1099,1106 EVENT 1071 execution of a system 195,234 encapsulation level of object-oriented event list 1123,1124 remote 1147 support 1099 event notice 1123,1124 exists (in the Business Object encapsulation of non-object-oriented event-driven computation 1071-1076, Notation)920 software 441-443 1196 expanded 254 end user109,1064,1065,1071,1074, EVENT_NOTICE 1140 expanded client 259 1075 Everham,Edwin McKay III 842,859, Expanded Client rule 259 ending_time 909,910 863 expanded,see under class,type engine evolution Explicit Interfaces,see under interface execution 1147 in biology859,865,866,867,868 explicitness 876-877 for object-oriented database 1053 of the language 1144 export
1234 INDEX and inheritance 507–515 and static typing 616 of garbage collection 307 of repeated inheritance 548 of the compilation process 1144– 1146 of the environment’s generated code 1144 versus correctness 394–398 egoful design 878 egoless expression 878 egoless programming 878 Eiffel 1162 Einstein, Albert 672 electronic collocation 925 elevator 720 ELEVATOR 720, 1016 elevator system (concurrency example) 1014–1019, 1036 Eliëns, Anton 34 Élinck, Philippe 642 ELKS 1150 ELLIPSE 483, 527, 826, 838 Ellis Island 538 Ellis, Margaret 328, 668, 1138 Elmasri, Ramez 1061 else 179, 448, 450 elseif 449 embedded SQL 1049 EMPLOYEE 853 empty 777, 883 empty structures 353 emu 859 emulation 1099–1112 Encapsulate Repetition 984 encapsulation 53, 779–780, 1053, 1195 and assertions 779–780 and databases 1053 see also: information hiding; the next three entries. encapsulation language 53, 1079– 1098, 1099, 1106 encapsulation level of object-oriented support 1099 encapsulation of non-object-oriented software 441–443 end user 109, 1064, 1065, 1071, 1074, 1075 ending_time 909, 910 engine execution 1147 for object-oriented database 1053 ENGINEER 815, 816, 853 engineering see forward engineering, rearchitecturing, reverse engineering engineering schools (France) 941 ENQUIRY_ON_FLIGHTS 688 ensure 112, 338 ensure then 578 enter 802 entity 1196 default value, see under initialization operations on generic entities 323– 324 polymorphic 469, 488 precise definition 213 entity-relationship 120, 737, 742 enumerated type Ada 1175 Pascal 660 enumerated type, see unique value ENVIR 650 environment for developing objectoriented software 1143–1160 ÉPÉE 1034 epilogue 1161–1162 equal 246, 247, 248, 265, 274, 275, 276, 582, 584 equality, see under object; see also comparison under reference EQUIVALENCE (Fortran) 266 error 347 precise terminology 347–348 esprit de l’escalier 932 Euclid’s algorithm 877 European Space Agency 410, 1080 evaluating candidate decompositions 736 event in interactive system 1071–1076 handling 1072–1076 EVENT 1071 event list 1123, 1124 event notice 1123, 1124 event-driven computation 1071–1076, 1196 EVENT_NOTICE 1140 Everham, Edwin McKay III 842, 859, 863 evolution in biology 859, 865, 866, 867, 868 of the language 1144 schema evolution, see under persistence see also change in software development, extendibility evolutionary taxonomist 866–868 exception 25, 241, 411–438, 801, 999, 1088–1091, 1134, 1196 abnormal case style 1091 advanced exception handling 431– 435 as object 436–437 basic concepts 411–414 causes 413–414 comparison of mechanisms 1089– 1091 control structure style 1091 definition 412 developer 434–435, 1088–1089 examples 422–427 handling 414–422, 1088–1089 history table 420–422 in Ada 415–416, 438, 1088–1091 in C-Unix 414–415 queries 431–433 raising 434–435, 1088–1089 recovering 423–424 role 801 sources 412–413 taxonomy exception, see exception under taxonomy exception (Ada) 415 exception handler 1089 exception to methodology rule 668– 669 EXCEPTION_CONSTANTS 431 EXCEPTIONS 431, 998, 1000, 1001 execute (for APPLICATION) 691 execute (for COMMAND) 699 execute (for STATE) 687 execute_interruptibly 1001, 1002 execute_session 680, 688 execute_state 681, 682 execution engine 1147 execution of a system 195, 234 remote 1147 exists (in the Business Object Notation) 920 expanded 254 expanded client 259 Expanded Client rule 259 expanded, see under class, type Explicit Interfaces, see under interface explicitness 876–877 export