목차
CONTENTS
Preface ... xix
1 Introduction to Computers, the Internet and the Web ... 1
   1.1 Introduction ... 2
   1.2 What Is a Computer? ... 4
   1.3 Computer Organization ... 5
   1.4 Evolution of Operating Systems ... 6
   1.5 Personal, Distributed and Client/Server Computing ... 6
   1.6 Machine Languages, Assembly Languages and High-Level Languages ... 7
   1.7 History of C++ ... 8
   1.8 History of Java ... 9
   1.9 Java Class Libraries ... 9
   1.10 FORTRAN, COBOL, Pascal and Ada ... 11
   1.11 BASIC, Visual Basic, Visual C++, C and. NET ... 11
   1.12 The Internet and the World Wide Web ... 12
   1.13 Basics of a Typical Java Environment ... 13
   1.14 General Notes about Java and This Book ... 16
   1.15 Thinking About Objects : Introduction to Object Technology and the Unified Modeling Language ... 18
   1.16 Discovering Design Patterns : Introduction ... 22
2 Introduction to Java Applications ... 32
   2.1 Introduction ... 33
   2.2 A First Program in Java : Printing a Line of Text ... 33
   2.3 Modifying Our First Java Program ... 40
   2.4 Displaying Text in a Dialog Box ... 42
   2.5 Another Java Application : Adding Integers ... 47
   2.6 Memory Concepts ... 53
   2.7 Arithmetic ... 54
   2.8 Decision Making : Equality and Relational Operators ... 58
   2.9 (Optional Case Study) Thinking About Objects : Examining the Problem Statement ... 64
3 Introduction to Java Applets ... 82
   3.1 Introduction ... 83
   3.2 Sample Applets from the Java 2 Software Development Kit ... 83
   3.3 Simple Java Applet : Drawing a String ... 89
   3.4 Drawing Strings and Lines ... 98
   3.5 Adding Floating - Point Numbers ... 100
   3.6 Java Applet Internet and World Wide Web Resources ... 107
   3.7 (Optional Case Study) Thinking About Objects : Identifying the Classes in a Problem Statement ... 108
4 Control Statements : Part 1 ... 119
   4.1 Introduction ... 120
   4.2 Algorithms ... 120
   4.3 Pseudocode ... 121
   4.4 Control Structures ... 121
   4.5 if Single-Selection Statement ... 124
   4.6 if...else Selection Statement ... 126
   4.7 Wh i1e Repetition Statement ... 130
   4.8 Formulating Algorithms : Case Study 1(Counter-Controlled Repetition) ... 132
   4.9 Formulating Algorithms with Top - Down, Stepwise Refinement : Case Study 2(Sentinel-Controlled Repetition) ... 136
   4.10 Formulating Algorithms with Top - Down, Stepwise Refinement : Case Study 3(Nested Control Structures) ... 144
   4.11 Compound Assignment Operators ... 149
   4.12 Increment and Decrement Operators ... 149
   4.13 Primitive Types ... 152
   4.14 (Optional Case Study) Thinking About Objects : Identifying Class Attributes ... 154
5 Control Statements : Part 2 ... 168
   5.1 Introduction ... 169
   5.2 Essentials of Counter - Controlled Repetition ... 169
   5.3 for Repetition Statement ... 171
   5.4 Examples Using the for Statement ... 176
   5.5 do...while Repetition Statement ... 181
   5.6 switch Multiple-Selection Statement ... 183
   5.7 break and continue Statements ... 188
   5.8 Labeled break and continue Statements ... 190
   5.9 Logical Operators ... 193
   5.10 Structured Programming Summary ... 199
   5.11 (Optional Case Study) Thinking About Objects : Identifying Objects' States and Activities ... 204
6 Methods ... 216
   6.1 Introduction ... 217
   6.2 Program Modules in Java ... 217
   6.3 Math-Class Methods ... 219
   6.4 Method Declarations ... 221
   6.5 Argument Promotion ... 227
   6.6 Java API Packages ... 228
   6.7 Random-Number Generation ... 230
   6.8 Example : A Game of Chance ... 234
   6.9 Scope of Declarations ... 242
   6.10 Methods of Class JApplet ... 246
   6.11 Method Overloading ... 247
   6.12 Recursion ... 250
   6.13 Example Using Recursion : The Fibonacci Series ... 253
   6.14 Recursion vs. Iteration ... 258
   6.15 (Optional Case Study) Thinking About Objects : Identifying Class Operations ... 260
7 Arrays ... 279
   7.1 Introduction ... 280
   7.2 Arrays ... 280
   7.3 Declaring and Creating Arrays ... 282
   7.4 Examples Using Arrays ... 283
   7.5 References and Reference Parameters ... 293
   7.6 Passing Arrays to Methods ... 294
   7.7 Sorting Arrays ... 296
   7.8 Searching Arrays : Linear Search and Binary Search ... 299
   7.9 Multidimensional Arrays ... 306
   7.10 (Optional Case Study) Thinking About Objects : Collaboration Among Objects ... 314
8 Object-Based Programming ... 341
   8.1 Introduction ... 342
   8.2 Implementing a Time Abstract Data Type with a Class ... 343
   8.3 Class Scope ... 351
   8.4 Controlling Access to Members ... 351
   8.5 Referring to the Current Object's Members with this ... 352
   8.6 Initializing Class Objects : Constructors ... 354
   8.7 Using Overloaded Constructors ... 355
   8.8 Using Set and Get Methods ... 360
   8.9 Composition ... 368
   8.10 Garbage Collection ... 371
   8.11 Static Class Members ... 372
   8.12 Final Instance Variables ... 377
   8.13 Creating Packages ... 379
   8.14 Package Access ... 384
   8.15 Software Reusability ... 386
   8.16 Data Abstraction and Encapsulation ... 387
   8.17 (Optional Case Study) Thinking About Objects : Starting to Program the Classes for the Elevator Simulation ... 389
9 Object-Oriented Programming : Inheritance ... 400
   9.1 Introduction ... 401
   9.2 Superclasses and Subclasses ... 402
   9.3 protected Members ... 404
   9.4 Relationship between Superclasses and Subclasses ... 405
   9.5 Case Study : Three-Level Inheritance Hierarchy ... 424
   9.6 Constructors and Finalizers in Subclasses ... 427
   9.7 Software Engineering with Inheritance ... 432
10 Object-Oriented Programming : Polymorphism ... 437
   10.1 Introduction ... 438
   10.2 Relationships Among Objects in an Inheritance Hierarchy ... 439
      10.2.1 Invoking Superclass Methods from Subclass Objects ... 440
      10.2.2 Using Superclass References with Subclass-Type Variables ... 441
      10.2.3 Subclass Method Calls via Superclass-Type Variables ... 442
   10.3 Polymorphism Examples ... 445
   10.4 Abstract Classes and Methods ... 446
   10.5 Case Study : Inheriting Interface and Implementation ... 448
   10.6 final Methods and Classes ... 456
   10.7 Case Study : Payroll System Using Polymorphism ... 457
   10.8 Case Study : Creating and Using Interfaces ... 467
   10.9 Nested Classes ... 472
   10.10 Type-Wrapper Classes for Primitive Types ... 485
   10.11 (Optional Case Study) Thinking About Objects : Incorporating Inheritance into the Elevator Simulation ... 485
   10.12 (Optional) Discovering Design Patterns : Introducing Creational, Structural and Behavioral Design Patterns ... 492
      10.12.1 Creational Design Patterns ... 493
      10.12.2 Structural Design Patterns ... 496
      10.12.3 Behavioral Design Patterns ... 496
      10.12.4 Conclusion ... 498
      10.12.5 Internet and World-Wide-Web Resources ... 499
11 Strings and Characters ... 505
   11.1 Introduction ... 506
   11.2 Fundamentals of Characters and Strings ... 507
   11.3 Class String ... 507
      11.3.1 String Constructors ... 507
      11.3.2 String Methods length, charAt and getChars ... 509
      11.3.3 Comparing Strings ... 511
      11.3.4 Locating Characters and Substrings in Strings ... 515
      11.3.5 Extracting Substrings from Strings ... 518
      11.3.6 Concatenating Strings ... 519
      11.3.7 Miscellaneous String Methods ... 519
      11.3.8 String Method valueOf ... 521
   11.4 Class StringBuffer ... 523
      11.4.1 StringBuffer Constructors ... 523
      11.4.2 StringBuffer Methods Iength, capacity, setLength and ensureCapacity ... 524
      11.4.3 StringBuffer Methods charAt, setCharAt, getChars and reverse ... 525
      11.4.4 StringBuffer append Methods ... 527
      11.4.5 StringBuffer Insertion and Deletion Methods ... 529
   11.5 Class Character ... 530
   11.6 Class StringTokenizer ... 537
   11.7 Card Shuffling and Dealing Simulation ... 539
   11.8 Regular Expressions, Class Pattern and Class Matcher ... 543
   11.9 (Optional Case Study) Thinking About Objects : Event Handling ... 553
12 Graphics and Java2D ... 569
   12.1 Introduction ... 570
   12.2 Graphics Contexts and Graphics Objects ... 572
   12.3 Color Control ... 573
   12.4 Font Control ... 580
   12.5 Drawing Lines, Rectangles and Ovals ... 585
   12.6 Drawing Arcs ... 589
   12.7 Drawing Polygons and Polylines ... 591
   12.8 Java2D API ... 594
   12.9 (Optional Case Study) Thinking About Objects : Designing Interfaces with the UML ... 601
13 Graphical User Interface Components : Part 1 ... 611
   13.1 Introduction ... 612
   13.2 Overview of Swing Components ... 613
   13.3 JLabel ... 616
   13.4 Event Handling ... 619
   13.5 Textfields ... 620
   13.6 How Event Handling Works ... 625
   13.7 JButton ... 626
   13.8 JCheckBox and JRadi oButton ... 629
   13.9 JComboBox ... 634
   13.10 JList ... 637
   13.11 Multiple-Selection Lists ... 639
   13.12 Mouse Event Handling ... 642
   13.13 Adapter Classes ... 646
   13.14 Key Event Handling ... 651
   13.15 Layout Managers ... 654
      13.15.1 FlowLayout ... 655
      13.15.2 BorderLayout ... 658
      13.15.3 GridLayout ... 661
   13.16 Panels ... 663
   13.17 (Optional Case Study) Thinking About Objects : Use Cases ... 664
14 Graphical User Interface Components : Part 2 ... 677
   14.1 Introduction ... 678
   14.2 JTextArea ... 679
   14.3 Creating a Customized Subclass of JPanel ... 682
   14.4 JPanel Subclass that Handles Its Own Events ... 686
   14.5 JSlider ... 691
   14.6 Windows : Additional Notes ... 695
   14.7 Using Menus with Frames ... 696
   14.8 JPopupMenu ... 704
   14.9 Pluggable Look-and-Feel ... 707
   14.10 JDesktopPane and JInternalFrame ... 711
   14.11 JTabbedPane ... 715
   14.12 Layout Managers : BoxLayout and GridBagLayout ... 717
   14.13 (Optional Case Study) Thinking About Objects : Model-View- Controller ... 729
   14.14 (Optional) Discovering Design Patterns : Design Patterns Used in Packages java. awt and javax. swing ... 738
      14.14.1 Creational Design Patterns ... 738
      14.14.2 Structural Design Patterns ... 739
      14.14.3 Behavioral Design Patterns ... 741
      14.14.4 Conclusion ... 744
15 Exception Handling ... 751
   15.1 Introduction ... 752
   15.2 Exception-Handling Overview ... 753
   15.3 Exception- Handling Example : Divide by Zero ... 756
   15.4 Java Exception Hierarchy ... 760
   15.5 Rethrowing an Exception ... 762
   15.6 final1y Clause ... 762
   15.7 Stack Unwinding ... 766
   15.8 printStackTrace, getStackTrace and getMessage ... 767
   15.9 Chained Exceptions ... 770
   15.10 Declaring New Exception Types ... 772
   15.11 Constructors and Exception Handling ... 773
16 Multithreading ... 778
   16.1 Introduction ... 779
   16.2 Thread States : Life Cycle of a Thread ... 781
   16.3 Thread Priorities and Thread Scheduling ... 783
   16.4 Creating and Executing Threads ... 785
   16.5 Thread Synchronization ... 787
   16.6 Producer/Consumer Relationship without Synchronization ... 789
   16.7 Producer/Consumer Relationship with Synchronization ... 795
   16.8 Producer/Consumer Relationship : Circular Buffer ... 802
   16.9 Daemon Threads ... 814
   16.10 Runnable Interface ... 814
   16.11 (Optional Case Study) Thinking About Objects : Multithreading ... 820
   16.12 (Optional) Discovering Design Patterns : Concurrent Design Patterns ... 824
17 Files and Streams ... 833
   17.1 Introduction ... 834
   17.2 Data Hierarchy ... 835
   17.3 Files and Streams ... 837
   17.4 Class File ... 840
   17.5 Creating a Sequential-Access File ... 846
   17.6 Reading Data from a Sequential-Access File ... 857
   17.7 Updating Sequential-Access Files ... 869
   17.8 Random-Access Files ... 869
   17.9 Creating a Random-Access File ... 870
   17.10 Writing Data Randomly to a Random-Access File ... 875
   17.11 Reading Data Sequentially from a Random-Access File ... 880
   17.12 Case Study : A Transaction- Proce s sing Program ... 885
   17.13 New I/O APIs for the Java Platform ... 897
18 Networking ... 914
   18.1 Introduction ... 915
   18.2 Manipulating URLs ... 917
   18.3 Reading a File on a Web Server ... 922
   18.4 Establishing a Simple Server Using Stream Sockets ... 925
   18.5 Establishing a Simple Client Using Stream Sockets ... 927
   18.6 Client/Server Interaction with Stream Socket Connections ... 927
   18.7 Connectionless Client/Server Interaction with Datagrams ... 940
   18.8 Client/Server Tic-Tac-Toe Using a Multithreaded Server ... 947
   18.9 Security and the Network ... 961
   18.10 DeitelMessenger Chat Server and Client ... 962
      18.10.1 DeitelMessengerServer and Supporting Classes ... 962
      18.10.2 DeitelMessenger Client and Supporting Classes ... 972
   18.11 NIO Networking Overview ... 990
   18.12 (Optional) Discovering Design Patterns : Design Patterns Used in Packages java.io and java.net ... 1002
      18.12.1 Creational Design Patterns ... 1002
      18.12.2 Structural Design Patterns ... 1003
      18.12.3 Architectural Patterns ... 1004
      18.12.4 Conclusion ... 1006
19 Multimedia : Images, Animation and Audio ... 1014
   19.1 Introduction ... 1015
   19.2 Loading, Displaying and Scaling Images ... 1016
   19.3 Animating a Series of Images ... 1019
   19.4 Image Maps ... 1022
   19.5 Loading and Playing Audio Clips ... 1025
   19.6 Internet and World Wide Web Resources ... 1028
   19.7 (Optional Case Study) Thinking About Objects : Animation and Sound in the View ... 1030
20 Data Structures ... 1048
   20.1 Introduction ... 1049
   20.2 Self- Referential Classes ... 1050
   20.3 Dynamic Memory Allocation ... 1050
   20.4 Linked Lists ... 1051
   20.5 Stacks ... 1061
   20.6 Queues ... 1066
   20.7 Trees ... 1069
21 Java Utilities Package and Bit Manipulation ... 1098
   21.1 Introduction ... 1099
   21.2 Vector Class and Enumeration Interface ... 1099
   21.3 Stack Class of Package java.util ... 1103
   21.4 Hashtable Class ... 1106
   21.5 Properties Class ... 1110
   21.6 Bit Manipulation and the Bitwise Operators ... 1117
   21.7 BitSet Class ... 1131
22 Collections ... 1140
   22.1 Introduction ... 1141
   22.2 Collections Overview ... 1142
   22.3 Class Arrays ... 1142
   22.4 Interface Collection and Class Collections ... 1147
   22.5 Lists ... 1147
   22.6 Algorithms ... 1154
      22.6.1 Algorithm sort ... 1154
      22.6.2 Algorithm shuffle ... 1158
      22.6.3 Algorithms reverse, fill, copy, max and min ... 1160
      22.6.4 Algorithm binarySearch ... 1162
   22.7 Sets ... 1164
   22.8 Maps ... 1167
   22.9 Synchronization Wrappers ... 1170
   22.10 Unmodifiable Wrappers ... 1170
   22.11 Abstract Implementations ... 1171
   22.12 (Optional) Discovering Design Patterns : Design Patterns Used in Package java.util ... 1171
      22.12.1 Creational Design Patterns ... 1171
      22.12.2 Behavioral Design Patterns ... 1172
      22.12.3 Conclusion ... 1172
23 Java Database Connectivity with JDBC™ ... 1178
   23.1 Introduction ... 1179
   23.2 Relational Databases ... 1180
   23.3 Relational Database Overview : The books Database ... 1181
   23.4 SQL ... 1185
      23.4.1 Basic SELECT Query ... 1185
      23.4.2 WHERE Clause ... 1187
      23.4.3 ORDER BY Clause ... 1188
      23.4.4 Merging Data from Multiple Tables : INNER JOIN ... 1191
      23.4.5 INSERT Statement ... 1192
      23.4.6 UPDATE Statement ... 1193
      23.4.7 DELETE Statement ... 1193
   23.5 Creating Database books in Cloudscape ... 1194
   23.6 Manipulating Databases with JDBC ... 1195
      23.6.1 Connecting to and Querying a Database ... 1195
      23.6.2 Querying the books Database ... 1201
   23.7 Stored Procedures ... 1212
   23.8 Internet and World Wide Web Resources ... 1212
24 Servlets ... 1220
   24.1 Introduction ... 1221
   24.2 Servlet Overview and Architecture ... 1223
      24.2.1 Interface Servlet and the Servlet Life Cycle ... 1224
      24.2.2 HttpServlet Class ... 1226
      24.2.3 HttpServletRequest Interface ... 1227
      24.2.4 HttpServletResponse Interface ... 1228
   24.3 Handling HTTP get Requests ... 1229
      24.3.1 Setting Up the Apache Tomcat Server ... 1233
      24.3.2 Deploying a Web Application ... 1235
   24.4 Handling HTTP get Requests Containing Data ... 1239
   24.5 Handling HTTP post Requests ... 1242
   24.6 Redirecting Requests to Other Resources ... 1245
   24.7 Multi-Tier Applications : Using JDBC from a Servlet ... 1249
   24.8 Internet and World Wide Web Resources ... 1255
25 JavaServer Pages(JSP) ... 1261
   25.1 Introduction ... 1262
   25.2 JavaServer Pages Overview ... 1262
   25.3 First JavaServer Page Example ... 1263
   25.4 Implicit Objects ... 1266
   25.5 Scripting ... 1267
      25.5.1 Scripting Components ... 1267
      25.5.2 Scripting Example ... 1269
   25.6 Standard Actions ... 1271
      25.6.1 <jsp : include> Action ... 1272
      25.6.2 <jsp : forward> Action ... 1277
      25.6.3 <jsp : useBean> Action ... 1281
   25.7 Directives ... 1285
      25.7.1 page Directive ... 1286
      25.7.2 include Directive ... 1288
   25.8 Case Study : Guest Book ... 1290
   25.9 Internet and World Wide Web Resources ... 1301
A Operator Precedence Chart ... 1307
B ASCII Character Set ... 1309
C Number Systems ... 1310
   C.1 Introduction ... 1311
   C.2 Abbreviating Binary Numbers as Octal Numbers and Hexadecimal Numbers ... 1314
   C.3 Converting Octal Numbers and Hexadecimal Numbers to Binary Numbers ... 1315
   C.4 Converting from Binary, Octal or Hexadecimal to Decimal ... 1315
   C.5 Converting from Decimal to Binary, Octal or Hexadecimal ... 1316
   C.6 Negative Binary Numbers : Two's Complement Notation ... 1318
D Elevator Events and Listener Interfaces ... 1323
   D.1 Introduction ... 1323
   D.2 Events ... 1323
   D.3 Listeners ... 1327
   D.4 Artifacts Revisited ... 1330
E Elevator Model ... 1332
   E.1 Introduction ... 1332
   E.2 Class ElevatorSimulation ... 1332
   E.3 Classes Location and Floor ... 1340
   E.4 Classes Door and ElevatorDoor ... 1343
   E.5 Class Button ... 1347
   E.6 Class ElevatorShaft ... 1349
   E.7 Classes Light and Bell ... 1356
   E.8 Class Elevator ... 1360
   E.9 Class Person ... 1368
   E.10 Artifacts Revisited ... 1375
   E.11 Conclusion ... 1375
F Elevator View(on CD) ... 1377
   F.1 Introduction ... 1377
   F.2 Class Objects ... 1394
   F.3 Class Constants ... 1396
   F.4 Class Constructor ... 1397
   F.5 Event Handling ... 1398
      F.5.1 ElevatorMoveEvent types ... 1398
      F.5.2 PersonMoveEvent types ... 1399
      F.5.3 DoorEvent types ... 1400
      F.5.4 ButtonEvent types ... 1401
      F.5.5 BellEvent types ... 1401
      F.5.6 LightEvent types ... 1401
   F.6 Artifacts Revisited ... 1401
   F.7 Conclusion ... 1402
G Unicodes ... 1403
   G.1 Introduction ... 1404
   G.2 Unicode Transformation Formats ... 1405
   G.3 Characters and Glyphs ... 1406
   G.4 Advantages/Disadvantages of Unicode ... 1407
   G.5 Unicode Consortium's Web Site ... 1407
   G.6 Using Unicode ... 1408
   G.7 Character Ranges ... 1411
Bibliography ... 1415
Index ... 1418
닫기