index [faculty.cascadia.edu] · closed for modification, 67 collaborating. see collaborating...
TRANSCRIPT
Special Characters> (greater than operator), 177< (less than operator), 176>= (greater than or equal operator), 177<= (less or than equal operator), 176{ } (braces)
program structure, 18defining scope, 224-225
!= (not equal operator), 176% (remainder), 256, 292–293, 343&& (and operator), 232/* (multi-line comment), 82// (single line comment), 18/** (documentation comment), 83* (asterisk), 400+ (plus sign), 311++ (increment), 242+= (additive assignment operator), 242/ (division), 92, 235, 292== (equal operator), 176– (minus sign), 343= (assignment operator), 19, 176, 177[ ] (brackets), 349|| (or operator), 232. (dot), 14; (semicolon), 14, 15, 20
Aabsolute path, 478abstract class, 640abstract methods, 639, 639–640Abstract Windowing Toolkit (AWT), 92, 92–93abstractions, 3, 3–4
pseudocode, 139raising level, 55–56
AbstractModel method, 702–703
access modifiers, 148accessor method(s), 286, 286–289
implementing, 359–361Accessor Method pattern, 320addresses, reference variables, 404, 404–406algorithms, 116, 766
stepwise refinement. See stepwise refinement2D array, 563–565
aliasing, 406–409, 407dangers of aliases, 407–409
allocating arrays, 5432D arrays, 565–566
ampersand (&), and operator, 232and operator
Boolean, 231Java (&), 232
animation, 317–318anonymous classes, 677, 677–678API (application programming interface), 743architecture, 588, 588–595, 766
creating CRC cards, 591–592developing class diagram, 595developing scenarios, 592identifying classes and methods, 589–590walking through scenarios, 592–595
arguments, 14passing, 401
arrays, 519–575accessing specific elements, 522–524allocation, 543creating, 541–547declaring, 542–543dynamic. See dynamic arrays; partially filled
arrayselements, 521files compared, 540–541finding extreme elements, 533–534index, 521initialization, 544–547
Index
815
Note: page numbers in boldface type indicate key terms.
Index C5743 40143.ps 11/30/06 1:32 PM Page 815
816IN
DEX
multi-dimensional. See multi-dimensionalarrays
partially filled. See partially filled arrayspassing and returning, 547–550patterns, 572–574of primitive types, 558–561processing all elements in, 527–528processing matching elements, 528–529searching for specified elements, 529–532sorted, inserting into, 552–553sorting. See sorting arraysswapping elements, 525–526visualizing, 521–522
ASCII character set, 794–796assertions, 624Assign a Unique ID pattern, 383–384assignment statements, 192
with loops, 191–193asterisk (*)
comments, 83multiplicity, 400
attributes, 4assigning, 651implementing with instance variables, 275–276software objects, 4, 5–6, 13types, 13
avenues, 9AWT (Abstract Windowing Toolkit), 92, 92–93
Bbecker library, 243n, 797–814Big Brothers/Big Sisters, 520blank final, 305blocks, 481
temporary variables, 224, 224–225body of when statements, 174Boole, George, 175nBoolean expressions, 173, 231–238
combining, 231–236De Morgan’s laws, 237evaluating, 175–176, 233–234legal, form of, 232–233negating, 175predicates, 187
short-circuit evaluation, 238simplifying, 236–237
boolean method, 350, 436, 440, 444, 470File class, 479, 480
Boolean operators, 231–232boolean type, 224, 344–345BorderLayout strategy, 683bottom factoring, 248–249, 249bottom-up design, 133bottom-up implementation, 133bounding boxes, 98braces { }, temporary variables, 224–225brackets ([ ]), nesting objects, 349breakpoints, 311buffering, 465bugs, 34. See also debuggingbuilt-in queries, 174–175byte code, 29byte integer type, 338byte streams, 501, 503
CCapek, Karel, 9ncapitalization of identifiers, 81caret (^), compile-time errors, 31Cascading-if pattern, 261cascading-if statements, nesting statements,
227–230, 229case of identifiers, 81cast, 664Catch an Exception pattern, 452char method, 350char type, 345–347Character class, class methods, 372–373character input streams, 501–502character output streams, 502–503character streams, 501checked exceptions, 426, 427–428City method, 797–799class(es), 6, 6–7
abstract, 640anonymous, 677–678assigning methods, 652–653client, 640
Index C5743 40143.ps 11/30/06 1:32 PM Page 816
closed for modification, 67collaborating. See collaborating classesconcrete, 640developing to specified interface, 378–379extending. See extending classesidentifiers, 81identifying, 412–413, 589–590, 648–651immutable, 612–614implementing accessor methods, 359–361implementing command/query pairs, 361–366inner, 735–737modifying versus extending, 305–306multiple, using, 394–398mutable, 612names, 80null values, 398objects versus, 7open for extension, 67passing arguments, 401reimplementing, 396–397relationships, 413returning object references, 401–402setting up relationships between, 493–494single, using, 392–494temporary variables, 401wrapper, 446–447writing, 358–366
class diagrams, 7developing, 595lists, 438–439Robot class, 12–15
class methods, 368–374Character class, 372–373main method, 374Math class, 369–372Test class, 373–374
class relationships, 649–651class variables, 366, 366–368
assigning unique ID numbers, 368guidelines, 368initialization, 791
client(s), 4, 400client class, 640clone method, 665–669
implementing, 666–667
shallow copies versus deep copies, 667–669using, 666
closed for modification, 67closing files, 461, 464code
byte, 29commenting out, 83duplication, putting in helper methods,
608–609packages, 26pseudocode, 138–139quality, writing. See writing quality codesample, 744self-documenting, 188
cohesion, complexity of programs, 615, 618collaborating classes
diagraming, 399–400GUIs, 447–449
collaborators, 591collections, 431–447. See also lists; maps; sets
foreach loops, 437color chooser, 71column(s), formatting numbers, 342–343column-major order, 563combining Boolean expressions, 231–236
error common in, 236operator precedence, 234–235operators, 231
command(s), 4correctness, 86Draw a Picture, 105–106meaning, 86preconditions, 86software objects, 4, 6specification, 86testing, 330–332
command interpreter(s), 486, 486–495implementing, 487–492separating user interface from model, 492–495
Command Interpreter pattern, 510–511Command Invocation pattern, 42command/query pairs, implementing, 361–366comment(s), 81, 81–84
documentation, 83–84
INDEX
817
Index C5743 40143.ps 11/30/06 1:32 PM Page 817
818IN
DEX
multi-line, 82–83single-line, 81–82
commenting out code, 83comparison operators, 176, 176–177compilers, 29compile-time errors, 30, 30–32compiling programs, 29, 29–32
compile-time errors, 30–32without an IDE, 495–496
complexity of programs, 615–621, 766cohesion, 615, 618coupling, 615, 620–621encapsulation, 615, 616–617information hiding, 615, 619
components, GUIs, 37. See also graphical userinterfaces (GUIs)
composition, 400computational science, 768concatenation, 347concept maps, 45, 45–46concrete class, 640console, reading from, 480–481console window, 310constants, 285constraints, 683constructor(s), 13–14
extending classes, 59–62implementing, 70powerful, 610–611
Constructor pattern, 105content pane, 37contract, 623control characters, 466controllers, 449controllers, GUIs, 698–700
building, 709–726event objects, 737–738implementing, 717–719inner classes, 735–737integrating with views, 738–739registering, 719–720variations, 735–740writing and registering controllers, 716–720
correct programs, 584count-down loop(s), 192, 192–193
Count-Down Loop pattern, 204–205Counted Loop pattern, 262Counting pattern, 259coupling, complexity of programs, 615, 620–621CRC, 591
designing cards, 591–592
Ddangling else, 250, 250–251dash (–), data availability methods, 471data, keeping together with processing, 611–612data acquisition methods, 467, 467–471data availability methods, 471, 471–472DateTime class, 394–395De Morgan, Augustus, 237De Morgan’s laws, 237debugger, 311, 311–312debugging, 34
debugger, 311–312printing expressions, 310–311stepwise refinement, 135
declaration statements, 20declaring
arrays, 542–543instance variables, 302
deep copies, 667, 667–669defensive programming, 621–624
assertions, 624design by contract, 622–624exceptions, 621–622
definitions, methods, overriding, 87–89deleting elements in arrays, 553delimiters, 467design by contract, 623detail, 615development cycle, 595, 595–599development process, 586, 586–599
defining requirements, 587–588designing architecture, 588–595iterative development, 595–599
diagraming collaborating classes, 399–400dialog boxes, 503Direction method, 799direction variable, 283–286
Index C5743 40143.ps 11/30/06 1:32 PM Page 818
819IN
DEX
discrete structures, 765Display a Frame pattern, 44displaying images from files, 506–507documentation, 606–607
API, 743becker library, 243n, 797–814external, 84–85Robot class, 26–29
documentation comments, 83, 84–85dot (.), messages, 14double method, 470double type, 338do-while loops, 242–243Draw a Picture command, 105–106drawing using loops, 251–257
loop counter, 252–253nesting selection and repetition, 253–257
dynamic arrays, 551–558combining approaches, 557–558partially filled. See partially filled arraysresizing, 554–557
EE method, 436easy to learn GUIs, 626Eclipse project, 311Edison, Thomas, 34effectiveness of GUIs, 625efficiency of GUIs, 625Eiffel programming language, 623nEither This or That pattern, 202–203elements
of arrays, 521of collections, 431
else-clause, 183encapsulation, 25, 615
complexity of programs, 615, 616–617encoding, 793
Unicode, 794–796engaging interfaces, GUIs, 625enumeration(s) (enumerated types), 355–358, 356Enumeration pattern, 382–383
equal sign (=)equal operator, 176statements, 19
equals method, overriding, 663–665Equals pattern, 688equivalence, 410
testing for, 410–411Equivalence Test pattern, 450–451error(s)
avoiding with stepwise refinement, 134–135checking user input, 481–484compile-time, 30–32debugging. See debuggingintent (logic), 30, 33–34run-time, 30, 32–33testing for, with stepwise refinement, 135user, GUI forgiveness of, 628
error messages, 11error tolerance of GUIs, 626Error-Checked Input pattern, 509–510escape sequences, 346, 346–347, 796evaluating expressions, 175, 175–176evaluation diagrams, 233, 233–234event(s), 716, 716–717event objects, 716, 737–738example programs, 15–25
multiple objects, 24–25program listings, 17–18sending messages, 20setting up initial situation, 19–20situations, 15–16tracing programs, 20–22
exception(s), 424, 424–431checked, 426, 427–428defensive programming, 621–622handling, 426–428propagating, 428–429reading a stack trace, 425–426throwing, 424–425unchecked, 426
Exception class, 424–425exponents, 338expressions, 175
evaluating, 175–176
Index C5743 40143.ps 11/30/06 1:32 PM Page 819
820IN
DEX
Extended Class pattern, 102–103extending classes, 56–78, 59, 100–102
adding services, 62–64form of extended classes, 59implementing constructors, 59–62implementing methods, 64–66implementing objects, 69–73modification versus extension, 67vocabulary, 58–59
extensions, 477external documentation, 84–85extreme elements, finding in arrays, 533–534
Ffactory method(s), 342, 660–661Factory Method pattern, 689fence-post problem, 212–213fields, 460file(s)
arrays compared, 540–541closing, 461, 464displaying images from, 506–507manipulating, 479–480opening, 461, 462–463processing, 463reading, 461–462specifying locations, 478–479structure, 466–472writing, 464–466
File class, 477–480filenames, 477manipulating files, 479–480specifying file locations, 478–479
file formats, 475, 475–477File method, 479filenames, 477final keyword
instance variables, 284–285parameter variables, 300temporary variables, 294
final situation, 16five E’s, 625, 625–626Flasher method, 799–800
Flasher subclass, 76flexibility
choosing implementations, 679–680increasing with interfaces, 669–680
float type, 338floating-point numbers, 338, 338–340flow of control, 62, 62–63FlowLayout strategy, 680–681focus, GUI views, 721fonts, GUI views, 721–725for statements, 239–242
examples, 240–242form, 239–240
foreach loops, 437arrays, 528collections, 437
forgiveness of GUIs for user errors, 628format specifiers, 343format string, 343formatting numbers, 341–343
columnar output, 342–343NumberFormat object, 341–342
frames, 35, 35–37content pane, 37
Ggarbage, 409garbage collection, 409goToNextRow method, 181–183graphical user interfaces (GUIs), 35, 34–39,
697–758adding components, 37–39animation, 317–318, 569–572AWT and Swing, 92–93building and testing models, 705–709building views and controllers, 709–726collaborating classes, 447–449controllers. See controllers, GUIsdesign principles, 626–628designing, 709–710developing classes to specified interface,
378–379
Index C5743 40143.ps 11/30/06 1:32 PM Page 820
821IN
DEX
displaying images from files, 503, 506–507drawing using loops, 251–257extending, 92–102file choosers, 503, 504–506frames, 35–37helper methods, 151–155identifying listeners for components, 741–743implementing, 377–378informing user interface of changes, 379–380invoking methods, 100iterative design, 625–626Java, 374–380laying out components, 711–713layout managers, 680–686learning to use components, 740–747libraries of components, 448making graphical components interactive,
750–756models, views, and controllers, 698–700overriding methods, 97–99painting components, 747–749patterns, 700quality, 624–628repainting, 312–318scaling images, 196–200sequence diagrams, 733–735setting up model and view, 700–705specifying methods, 375–377steps for building, 700views. See views, GUI
graphics, 767GregorianCalendar class, 394GridBagLayout strategy, 683GridLayout strategy, 681–682GUIs. See graphical user interfaces (GUIs)
Hhandling things, 12hanging, 213harvestIntersection method, 179–181Has-a (Composition) pattern, 449–450has-a relationships, 400
hashing, 441helper classes, delegating work to, 614–615helper method(s), 120
declaring parameters, 153GUIs, 151–155making private, 608nesting statements, 227putting duplicated code in, 608–609using parameters, 153–155
Helper Method pattern, 155–156high-fidelity prototypes, 625host name, 460human-computer interaction, 767
Iicons
changing size, 75transparency, 75–76
identifiers, 79, 79–81capitalization, 81
if statements, 169–171flowcharts, 169general from, 173nesting statements, 225–226semantics, 174syntax, 174then-clause, 173while statements compared, 168–174
if-else statements, 183–186else-clause, 183example using, 184–186then-clause, 183
images from files, displaying, 506–507immutable classes, 612, 612–614implementing
constructors, 70objects, extending classes, 69–73services, 70–71
implicit parameters, 63–64, 64indenting programs, 79IndexOf method, 355
Index C5743 40143.ps 11/30/06 1:32 PM Page 821
822IN
DEX
indicesarrays, 521, 560–561strings, 350
infinite loops, 213, 213–214infinite recursion, 88information hiding, complexity of programs,
615, 619information management, 768inheritance, 59, 635–640
abstract classes, 639–640adding new methods, 637–639choosing between interfaces and, 646polymorphism via, 635–640
inheritance hierarchy, 68inherited methods, 87–92
method resolution, 90–92overriding method definitions, 87–89side effects, 92
initial situation, 16setting up, 19–20
initial value, 219initializing
array elements, 544–547class variables, 791instance variables. See initializing instance
variablesobjects, 74parameter variables, 792temporary variables. See initializing temporary
variables2D arrays, 565–566
initializing instance variables, 302–303, 791using parameters, 298–300
initializing temporary variables, 792delaying, 294–295
inner classes, 735, 735–737input, 461input streams, 500insertion point, 466, 721instance(s), 6instance variable(s), 276
accessing, 278–280accessor methods, 286–289declaring, 276–277, 302direction, 284–286
extending classes, 300–305final, blank, 305final keyword, 284–285implementing attributes with, 275–276initializing. See initializing instance variableslifetime, 276maintaining, 303making private, 609–610modifying, 280–282parameter variables compared, 289, 306–307static keyword, 285temporary variables compared, 289, 306–307,
308–310using, 303–304
Instance Variable pattern, 319–320instantiation, 6, 6–7int integer type, 338int method, 350, 436, 440, 444, 470integer(s)
ranges, 338types, 337–338
integer division, 292intelligent systems, 768intent errors, 30, 33–34interaction, 615interfaces, 376, 669–680
choosing between inheritance and, 646flexibility in choosing implementations,
679–680increasing flexibility using, 669–680mixin, 673–674polymorphism via, 643–645sorting in Java library, 673Strategy pattern, 674–679using, 671–674
intersection(s), 9–10factoring out differences, 146–147
Intersection method, 800–802invoking methods, 100IP addresses, 460IPredicate method, 802–804is-a relationships, 400iterative approach, 595–599
Index C5743 40143.ps 11/30/06 1:32 PM Page 822
823IN
DEX
J.jar files, 499–500Java Archive, 499, 499–500Java library, sorting, 539–540, 673Java Program pattern, 40–41Java Tutorial, 744javadoc tool, 84–85JFileChooser, 503, 504–506JFrame object, 36JPanel object, components, 37–39justification, columnar number format, 343
Kkey(s), 431, 530
maps, 431multiple, sorting using, 676–677searching using, 530
keyboard focus, 721keywords, 79, 80
Llayout(s), 680layout managers, 680, 680–686BorderLayout strategy, 683FlowLayout strategy, 680–681GridBagLayout strategy, 683GridLayout strategy, 681–682nesting layout strategies, 684–686SpringLayout strategy, 683
learning, ease of, of GUIs, 626left justification, 343less than operator (<), 176less than or equal operator (<=), 176lexicographic order, 351, 351–352libraries, 495–500
compiling without an IDE, 495–496creating and using a package, 497–499.jar files, 499–500Java, sorting, 539–540, 673
lifetime of instance variables, 276
Light class, 77–78Light method, 804–805Linear Search pattern, 573–574Liskov, Barbara, 645lists, 431, 432–439
adding elements, 433–434class diagrams, 438–439construction, 432–433foreach loops, 437getting, setting, and removing elements,
434–435processing elements, 436–438
local variables. See temporary variable(s)logic errors, 30, 33–34logical negation operator, 175logical operators, 231–232
precedence, 234–235long integer type, 338long method, File class, 480loop(s), 174. See also while loops
assignment statements, 191–193count-down, 192–193do-while, 242–243drawing. See drawing using loopsforeach, 437, 528guidelines on use, 246infinite, 213–214nested, 253repetition, 253–257when statements, 174while-true, 243–246
loop counter, 252–253Loop-and-a-Half pattern, 257–258loop-and-a-half problem, 213, 246low-fidelity prototypes, 625
Mmain method, 704–705
class methods, 374multiple, 335–337
maintainable programs, 586maintaining instance variables, 303mantissa, 338
Index C5743 40143.ps 11/30/06 1:32 PM Page 823
824IN
DEX
maps, 431, 441–445construction, 442–443methods, 443–444processing elements, 444
Mark II computer, 34matching elements, processing in arrays, 528–529Math class, class methods, 369–372memory, 404, 404–406messages, 11, 14
sending, 20method(s), 62
abstract, 639–640ArrayList class, 435–436assigning to classes, 652–653defining, 85–86helper. See helper method(s)implementing, 64–66, 414–423, 653–655inherited. See inherited methodsinvoking, 100keeping short, 607–608names, 81overloading, 298overriding, 97–99, 298, 411, 662–669private, 147–150protected, 147–150signatures, 87specifying with interfaces, 375–377stepwise refinement. See stepwise refinement
method resolution, 90, 90–92Meyer, Bertrand, 623nMiller, George A., 607minus sign (–), format specifier, 343mixin interfaces, 673, 673–674models, 2, 2–9, 448
abstractions, 3–4creating using software objects, 4–7definition, 2GUIs. See models, GUIsoverview, 2–4robots, 7–9separating user interface from, 492–495
models, GUIs, 698–700building and testing, 705–709infrastructure, 701–703setting up, 700–705
Model-View-Controller pattern, 448–449, 700,756–757
monospaced fonts, 722move messages, 11move method, direction, 286moving, 11multi-dimensional arrays, 562–569
allocating and initializing 2D arrays, 565–567arrays of arrays, 566–5692D array algorithms, 563–565
multi-line comments, 82, 82–83multiple keys, sorting using, 676–677multiple objects, 24–25multiple robots, 140–141
with threads, 142–146Multiple Threads pattern, 156–157multiplicity, 400mutable classes, 612
Nname(s). See also identifiers
commands, 86parameters, 300
Named Constant pattern, 318–319naming conventions, 80–81natural language, 138negating predicates, 175, 175–176negations, simplifying, 236–237nested loops, 253
avoiding, 607nesting layout strategies, 684–686nesting statements, 225–230, 226
cascading-if statements, 227–230examples using if and while, 225–226helper methods, 227
net-centric computing, 766newline character, 466not equal operator (!=), 176null, 398null values, 398NumberFormat object, 341–342
Index C5743 40143.ps 11/30/06 1:32 PM Page 824
825IN
DEX
numeric types, 337–344converting between, 340–341floating-point, 338–340formatting numbers, 341–343integer, 337–338shortcuts, 344
numerical methods, 768
Oobject(s)
classes versus, 7event, 737–738identifying, 412–413, 589–590, 648–651initializing, 74instantiation, 6–7multiple, 24–25representing records as, 472–477software. See software objects
object diagrams, 5object equality, 410
testing for, 410–411object identity, 410Object Instantiation pattern, 41–42object references, returning, 401–402object-oriented design methodology, 412–424,
588–595, 647identifying objects and classes, 412–413,
589–590, 648–651identifying services, 414–423, 652–655solving the problem, 423–424, 655–661
object-oriented programming languages, 4Once or Not at All pattern, 201Open File for Input pattern, 508Open File for Output pattern, 508open for extension, 67opening files, 461, 462–463operands, 232operating systems, 766operators, 231
Boolean, 231–232comparison, 176–177logical. See logical operators
precedence, 234–235, 787–792primitive and reference types, 351
or operator, 231organization, 766origin, 9output streams, 500overloading methods, 298overriding methods, 97–99, 298, 411Object class, 662–669toString method, 349
Ppackage(s), 26, 495package statement, 497–499paintComponent method, 312–318painting
GUI components, 747–749repainting, 312–318
@param tag, 83parameter(s), 14, 189–196
assignment statements, 191–193declaring, 153stepwise refinement, 193–196using, 153–155while statements with, 190
parameter variables, 296–300final keyword, 300initializing, 792initializing instance variables using, 298–300instance variables compared, 289, 306–307name conflicts, 300temporary variables compared, 296–298,
306–307Parameterized Method pattern, 158–159Parameterless Command pattern, 105partially filled arrays, 551, 551–554
deleting elements, 553problems, 554sorted, inserting into, 552–553
Pascal, Blaise, 568Pascal’s Triangle, 568
Index C5743 40143.ps 11/30/06 1:32 PM Page 825
826IN
DEX
pathsabsolute, 478relative, 478–479
patterns, 39–44, 102–106Accessor Method, 320Assign a Unique ID, 383–384Cascading-if, 261Catch an Exception, 452Command Interpreter, 510–511Command Invocation, 42Constructor, 103–104Count-Down Loop, 204–205Counted Loop, 262Counting, 259Display a Frame, 44Either This or That, 202–203Enumeration, 382–383Equals, 688Equivalence Test, 450–451Error-Checked Input, 509–510Extended Class, 102–103Factory Method, 689Has-a (Composition), 449–450Helper Method, 155–156Instance Variable, 319–320Java Program, 40–41Linear Search, 573–574Loop-and-a-Half, 257–258Model-View-Controller, 448, 700, 756–757Multiple Threads, 156–157Named Constant, 318–319Object Instantiation, 41–42Once or Not at All, 201Open File for Output, 508Parameterized Method, 158–159Parameterless Command, 105Polymorphic Call, 686–687Predicate, 260–261Process All Elements, 452–453, 573Process File, 508–509Query, 259–260Scale an Image, 205Sequential Execution, 43Simple Predicate, 203–204Strategy, 687
Template Method, 157–158Temporary Variable, 258–259Test Harness, 381Throw an Exception, 451toString, 381–382Zero or More Times, 202
percent sign (%), format specifier, 343pickThing messages, 12picture elements, 36pipe (|), or operator, 232pixels, 36plus operator (+), 311points, 723Polymorphic Call pattern, 686–687polymorphism, 633–690
abstract classes, 639–640adding new methods, 637–639assigning attributes, 651assigning methods to classes, 652–653choosing between interfaces and inheritance, 646class relationships, 649–651examples, 640–642identifying objects and classes, 648–651identifying services, 652–655implementing methods, 653–655interfaces. See interfacesoverriding methods in Object class, 662–669substitution principle, 645–646via inheritance, 635–640via interfaces, 643–645without arrays, 661–662
positionForNextHarvest method, 181postconditions, 623, 623–624precedence, operators, 234–235, 235, 787–792preconditions, 86, 622, 622–624precision, 339predicate(s), 175, 186–188, 589
Boolean expressions, 187negating, 175–176using non-Boolean queries, 188
Predicate pattern, 260–261primary key, 676primitive(s), 132primitive type(s), 337
Index C5743 40143.ps 11/30/06 1:32 PM Page 826
827IN
DEX
primitive type arrays, 558–561double, 558–559indices, 560–561
printing expressions, 310–312System.out object, 310–311
private keyword, 148–150problem solving, 116Process All Elements pattern, 452–453, 573Process File pattern, 508–509processing files, 463processing streams, 501professional issues, 768program(s), 4
compiling, 29–32complexity. See complexity of programscorrect, 584evaluating with users, 598example. See example programsform, 25–26hanging, 213identifiers, 79–81keywords (reserved words), 79, 80maintainable, 586modifying with stepwise refinement, 136–138quality software, 584–586reliability, 584running, 32–34special symbols, 79style, 78–85testable, 586tracing. See tracing programsunderstandability, 585usability, 584
program fragments, 169nprogramming defensively. See defensive
programmingprogramming fundamentals, 765programming languages, 767
Eiffel, 623nobject-oriented, 4
prompt, 85, 481Prompt class, 485prototyping, 625provider streams, 501
pseudocode, 138, 138–139public keyword, 63–64, 148–150putThing method, 178–179
Qquality code, writing. See writing quality codequality software
programmer’s perspective, 585–586user’s perspective, 584
queries, 4, 330–337built-in, 174–175integer, testing, 176–177multiple main methods, 335–337non-Boolean, predicates, 188return statements, 223side effects, 224size, 198–199software objects, 4–5storing results, 222–223String object, 350–352testing commands, 330–332testing queries, 332–335writing, 223–224
Query pattern, 259–260
Rrandom access, 541ranges, integers, 338reading, 461
from console, 480–481files, 461–462records as objects, 472–475
records, 460representing as objects, 472–477
recursion, infinite, 88refactoring, 586, 597reference variables, 403–411, 404
aliases, 406–409garbage collection, 409memory, 404–406testing for equality, 410–411
Index C5743 40143.ps 11/30/06 1:32 PM Page 827
828IN
DEX
refinement, stepwise. See stepwise refinementregistration, controllers, 719, 719–720relative paths, 478, 478–479reliability of programs, 584remainder operator (%), 256, 292, 292–293requirements, 587
defining in development process, 587–588reserved words, 79, 80resizing arrays, 554–557responsibilities, 590responsiveness of GUIs, 626–627return statements, 223right justification, 343roads, 9Roberts, Eric, 243robot(s), services, 10–12Robot class
class diagram, 12–15documentation, 26–29
Robot class diagram, 12–15services, 13, 14–15
Robot constructor, 13–14Robot method, 805–808Robot object, attributes, 13RobotRC method, 808–809RobotSE method, 809–810row-major order, 563running programs, 32–34run-time errors, 30, 32–33
Ssample code, 744sans serif fonts, 722Scale an Image pattern, 205scaling images, 196–200
size queries, 198–199scenarios, 592
choosing, 596developing, 592implementing, 596–597walking through, 592–595
scientific notation, 338scope, temporary variables, 224–225, 225
searching, 530keys, 530for specific elements in arrays, 529–532
secondary key, 676Selection Sort
coding, 536–538overview, 535–536
self-documenting code, 188semantics, 174semicolons (;)
messages, 14, 15statements, 20
sequence diagrams, 733, 733–735Sequential Execution pattern, 43serifs, 722servers, 4, 400services, 4, 13, 14–15, 62–64. See also
command(s); queriesflow of control, 62–63identifying, 414–423, 652–655implementing, 70–71implicit parameters, 63–64public keyword, 64robots, 10–15void keyword, 64
sets, 431, 439–441construction, 439limitations, 441methods, 440processing elements, 440–441
shallow copies, 667, 667–669short integer type, 338short-circuit evaluation, 238shortcuts, numeric types, 344side effects, 92, 224signatures, methods, 87, 298Sim method, 810–811Simple Predicate pattern, 203–204SimpleBot class, testing, 282–283simplifying Boolean expressions, 236–237
De Morgan’s laws, 237negations, 236–237
simulationprogram execution. See tracing programspseudocode, 139
Index C5743 40143.ps 11/30/06 1:32 PM Page 828
829IN
DEX
single-line comments, 81, 81–82sink, 500situations, 15–16
final, 16initial. See initial situation
size of icons, 75size queries, 198–199social issues, 768software engineering, 768software objects, 4
attributes, 4, 5–6, 13class diagrams, 7classes, 6–7commands, 4, 6modeling robots using, 12–15queries, 4–5
Sojourner, 8–9solving problems, 116sorting arrays, 534–540
coding Selection Sort, 536–538without helper methods, 538–539Java library, 539–540Selection Sort overview, 535–536
sorting using Java library, 539–540, 673sound, 429–431source, 500source code, 17, 17–25spaghetti code, 243special symbols, 79specification,
programs, 587commands, 86defining in development process, 587–588
SpringLayout strategy, 683stack traces, 425–426, 426state, 6state change diagrams, 6statement(s), 20. See also specific statementsstatic keyword, instance variables, 285static variables. See class variablesstepwise refinement, 117, 117–138
error avoidance, 134–135future modifications, 136–138helper methods, 120
identifying required services, 118–119parameters, 193–196style, 247testing and debugging, 135understandability of programs, 133–134
Strategy pattern, 674, 674–679, 687anonymous classes, 677–678applications of strategy objects, 678–679Comparator interface, 674–676sorting with multiple keys, 676–677
streams, 500, 500–503byte, 501, 503character input, 501–502character output, 502–503processing, 501provider, 501
street(s), 9Streetlight method, 811–812StreetLight subclass, 76String methodScanner class, 470File class, 479
String type, 347–355Java support, 347–348overriding toString method, 349querying strings, 350–352transforming strings, 352–353
stroke, 200structure of files, 466–472structured programming, 243stubs, 124style, 246–251
positively stated simple expressions, 247–249stepwise refinement, 247visual structure of code, 250–251
styles of fonts, 722subclasses, 58subject, 589substitution principle, 645, 645–646superclasses, 58, 59swapping array elements, 525–526Swing, 92, 92–93syntax, 174
Index C5743 40143.ps 11/30/06 1:32 PM Page 829
830IN
DEX
Ttab stops, 347tags, 83Template Method pattern, 157–158temporary variable(s), 218, 218–225,
290–296, 401boolean type, 224counting Things on an intersection, 219–220delaying initialization, 294–295final keyword, 294initializing. See initializing temporary variablesinstance variables compared, 289, 306–307,
308–310parameter variables compared, 296–298,
306–307scope, 224–225storing results of queries, 222–223tracing code, 221–222writing queries, 223–224
Temporary Variable pattern, 258–259Test class, class methods, 373–374test harness, 330Test Harness pattern, 381test reversal, 247–248testable programs, 586testing
commands, 330–332for equality, 410–411queries, 332–335SimpleBot class, 282–283
then-clause, 173, 183Thing class
extending, 67–78inheritance hierarchy, 68
Thing method, 812–813ThingBag, 13this keyword, 279threads, 100
multiple robots, 142–146Throw an Exception pattern, 451throwing an exception, 424, 424–425tokens, 467top factoring, 249
top-down design, 132. See also stepwiserefinement
toString method, overriding, 349, 662toString pattern, 381–382tracing programs, 20, 20–22
pseudocode, 139temporary variables, 221–222
transparency, icons, 75–76turning, 11turnLeft messages, 112D array(s), 563–565
allocating and initializing, 565–5662D array algorithms, 563–565
printing every element, 563–564summing columns, 565summing every element, 564–565
types, attributes, 13
Uunchecked exceptions, 426understandability, 585
GUIs, 627–628positively stated simple expressions, 247–249stepwise refinement, 133–134
Unicode, 794–796usability of programs, 584use cases. See scenariosuser(s), 480–485
checking input for errors, 481–484error, GUI forgiveness, 628Prompt class, 485reading from console, 480–481
user interfaces. See graphical user interfaces(GUIs)
VV method, 444validation, 56values, maps, 431variable(s), 19, 273–322, 274
class (static). See class variables
Index C5743 40143.ps 11/30/06 1:32 PM Page 830
831IN
DEX
identifiers, 81instance. See instance variable(s)names, 80non-numeric types. See boolean type; char
type; String typenumeric types. See numeric typesreference. See reference variablesselecting, rules of thumb for, 307temporary (local). See temporary variable(s)
variable declarations, 19, 276, 276–277verification, 56views, 449views, GUIs, 698–700
building, 709–726infrastructure, 703–704integrating with controllers, 738–739making graphical components interactive,
750–756multiple views, 726–735painting components, 747–749refining, 721–725setting up, 700–705updating, 713–715view patterns, 725–726
visual computing, 767visualizing arrays, 521–522void keyword, 63–64void method, 436, 440, 444
Wwalk-throughs, 592wall(s), 10Wall method, 814waterfall model, 598when statements, 174
while loops, 212–218avoiding common errors, 212–214four-step process for constructing, 214–218
while statements, 171–173flowcharts, 169general form, 173–174if statements compared, 168–174nesting statements, 225–226using with parameters, 190
while-true loops, 243–246example, 245–246form, 244structured programming, 243
white space, programs, 78–79whitespace, 466working directory, 463working incrementally, 744–747wrapper classes, 446, 446–447writing files, 464, 464–466writing quality code, 606–615
avoiding nested loops, 607delegating work to helper classes, 614–615document classes and methods, 606–607keeping data and processing together, 611–612keeping methods shore, 607–608making helper methods private, 608making instance variables private, 609–610putting duplicated code in helper methods,
608–609writing immutable classes, 612–614writing powerful constructors, 610–611
ZZero or More Times pattern, 202
Index C5743 40143.ps 11/30/06 1:32 PM Page 831
Index C5743 40143.ps 11/30/06 1:32 PM Page 832
Index C5743 40143.ps 11/30/06 1:32 PM Page 833
Index C5743 40143.ps 11/30/06 1:32 PM Page 834
Index C5743 40143.ps 11/30/06 1:32 PM Page 835
Index C5743 40143.ps 11/30/06 1:32 PM Page 836
Index C5743 40143.ps 11/30/06 1:32 PM Page 837
Index C5743 40143.ps 11/30/06 1:32 PM Page 838
Index C5743 40143.ps 11/30/06 1:32 PM Page 839