وبلاگ بلیان

Agile Java: Crafting Code with Test-Driven Development (TM): Crafting Code with Test-Driven Development

معرفی کتاب «Agile Java: Crafting Code with Test-Driven Development (TM): Crafting Code with Test-Driven Development» نوشتهٔ Langr, Jeff، منتشرشده توسط نشر Prentice Hall PTR در سال 2005. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Agile Java: Crafting Code with Test-Driven Development (TM): Crafting Code with Test-Driven Development» در دستهٔ بدون دسته‌بندی قرار دارد.

Shows how Java and TDD integrate throughout the entire development lifecycle, helping you leverage efficient development techniques. This work also shows how to translate oral requirements into practical tests, and then how to use those tests to create reliable, high-performance Java code that solves real problems. Cover......Page 1 Contents......Page 10 About the Author......Page 20 Foreword......Page 22 Acknowledgments......Page 24 Introduction......Page 26 Who Is This Book For?......Page 28 What This Book Is Not......Page 29 How to Use This Book......Page 30 Conventions Used in This Book......Page 31 What Is “Agile?”......Page 34 What Is Java?......Page 36 What Is an Object?......Page 38 What Are Classes?......Page 39 Why UML?......Page 41 What Is Inheritance?......Page 42 Why Test-Driven Development?......Page 43 Software You’ll Need......Page 46 Does It Work?......Page 51 Executing Hello World......Page 52 Still Stuck?......Page 53 Testing......Page 56 Design......Page 57 A Simple Test......Page 58 JUnit......Page 60 Adding a Test......Page 62 Creating a Student......Page 64 Creating the Student Class......Page 65 Constructors......Page 66 Local Variables......Page 67 Returning a Value from a Method......Page 69 Assertions......Page 71 Instance Variables......Page 74 Summarizing the Test......Page 77 Refactoring......Page 78 this......Page 80 private......Page 82 Naming Conventions......Page 84 Whitespace......Page 86 Exercises......Page 87 CourseSession......Page 88 int......Page 90 Initialization......Page 93 Default Constructors......Page 94 Suites......Page 95 The SDK and java.util.ArrayList......Page 96 Adding Objects......Page 98 Incremental Refactoring......Page 100 Objects in Memory......Page 101 Packages and the import Statement......Page 103 The Default Package and the package Statement......Page 104 The setup Method......Page 106 More Refactoring......Page 108 Class Constants......Page 109 Overload Constructors......Page 111 Deprecation Warnings......Page 116 Refactoring......Page 117 Creating Dates with Calendar......Page 120 Comments......Page 121 Javadoc Comments......Page 122 Exercises......Page 125 Characters and Strings......Page 128 Strings......Page 131 StringBuilder......Page 132 System Properties......Page 134 Looping Through All Students......Page 135 Single-Responsibility Principle......Page 137 Refactoring......Page 140 System.out......Page 143 Using System.out......Page 144 Refactoring......Page 145 Package Structure......Page 146 Access Modifiers......Page 147 Using Ant......Page 153 Exercises......Page 156 Class Methods......Page 158 Class Variables......Page 162 Operating on Class Variables with Class Methods......Page 163 Static Import......Page 166 Incrementing......Page 169 Factory Methods......Page 170 Static Dangers......Page 172 Using Statics: Various Notes......Page 173 Jeff’s Rule of Statics......Page 174 Booleans......Page 175 Tests as Documentation......Page 179 More on Initialization......Page 182 Exceptions......Page 183 Revisiting Primitive-Type Field Initialization......Page 184 Exercises......Page 185 Sorting: Preparation......Page 188 Sorting: Collections.sort......Page 189 CourseReportTest......Page 190 Interfaces......Page 191 Why Interfaces......Page 193 Implementing Comparable......Page 194 Sorting on Department and Number......Page 196 The if Statement......Page 197 Floating-Point Numbers......Page 198 Testing Grades......Page 200 Refactoring......Page 203 Enums......Page 204 Polymorphism......Page 206 Using Interface References......Page 212 Exercises......Page 214 The switch Statement......Page 220 Case Labels Are Just Labels......Page 221 Maps......Page 224 Inheritance......Page 226 Abstract Classes......Page 229 Extending Methods......Page 231 Refactoring......Page 232 Enhancing the Grade Enum......Page 234 Summer Course Sessions......Page 235 Calling Superclass Constructors......Page 236 Refactoring......Page 240 More on Constructors......Page 243 The Principle of Subcontracting......Page 245 Exercises......Page 253 Lesson 7: Legacy Elements......Page 256 Breaking Up a Student’s Name......Page 257 The while Loop......Page 259 Comparing Java Loops......Page 265 Refactoring......Page 266 Looping Control Statements......Page 267 The Ternary Operator......Page 270 Legacy Collections......Page 271 Iterators......Page 272 Iterators and the for-each Loop......Page 274 Casting......Page 275 Wrapper Classes......Page 277 Arrays......Page 280 Refactoring......Page 289 Exercises......Page 291 Lesson 8: Exceptions and Logging......Page 294 Exceptions......Page 295 Dealing With Exceptions......Page 297 Checked Exceptions......Page 298 Exception Hierarchy......Page 300 Creating Your Own Exception Type......Page 301 Checked Exceptions vs. Unchecked Exceptions......Page 303 Messages......Page 304 Catching Multiple Exceptions......Page 305 Rethrowing Exceptions......Page 307 The finally Block......Page 310 Refactoring......Page 312 Logging......Page 315 Logging in Java......Page 316 Testing Logging......Page 319 Logging to Files......Page 323 Testing Philosophy for Logging......Page 325 Logging Levels......Page 327 Logging Hierarchies......Page 329 Exercises......Page 330 Logical Operators......Page 336 Hash Tables......Page 338 Courses......Page 340 Refactoring Session......Page 342 Equality......Page 348 The Contract for Equality......Page 351 Apples and Oranges......Page 352 Collections and Equality......Page 354 Hash Tables......Page 355 Collisions......Page 357 An Ideal Hash Algorithm......Page 358 A Final Note on hashCode......Page 360 More on Using HashMaps......Page 362 Additional Hash Tables and Set Implementations......Page 366 toString......Page 368 Strings and Equality......Page 370 Exercises......Page 371 Lesson 10: Mathematics......Page 374 BigDecimal......Page 375 More on Primitive Numerics......Page 378 Integer Math......Page 379 Numeric Casting......Page 380 Expression Evaluation Order......Page 381 NaN......Page 382 Infinity......Page 383 Numeric Overflow......Page 384 Bit Manipulation......Page 385 Java.lang.Math......Page 393 Numeric Wrapper Classes......Page 395 Random Numbers......Page 396 Exercises......Page 400 Organization......Page 404 Character Streams......Page 405 Writing to a File......Page 410 Java.io.File......Page 413 Byte Streams and Conversion......Page 414 A Student User Interface......Page 415 Testing the Application......Page 418 Data Streams......Page 420 CourseCatalog......Page 421 Object Streams......Page 424 Random Access Files......Page 432 The Student Directory......Page 433 sis.db.DataFileTest......Page 435 Static Nested Classes and Inner Classes......Page 437 sis.db.DataFile......Page 438 sis.db.KeyFileTest......Page 441 sis.db.KeyFile......Page 443 sis.util.IOUtilTest......Page 444 sis.util.IOUtil......Page 445 sis.util.TestUtil......Page 446 Exercises......Page 447 Mock Objects Revisited......Page 450 The Jim Bob ACH Interface......Page 452 The Mock Class......Page 454 The Account Class Implementation......Page 456 Anonymous Inner Classes......Page 458 Adapters......Page 460 Accessing Variables from the Enclosing Class......Page 462 Tradeoffs......Page 464 Reflection......Page 465 Using JUnit Code......Page 466 The Class Class......Page 467 Building the Suite......Page 469 Class Modifiers......Page 471 Dynamic Proxy......Page 473 A Secure Account Class......Page 474 Building the Secure Account Solution......Page 476 The SecureProxy Class......Page 481 Exercises......Page 484 Lesson 13: Mulithreading......Page 486 Search Server......Page 487 The Search Class......Page 488 Less Dependent Testing......Page 491 The Server......Page 495 Waiting in the Test......Page 497 Creating and Running Threads......Page 498 Cooperative and Preemptive Multitasking......Page 502 Synchronization......Page 503 Creating Threads with Runnable......Page 505 Synchronized......Page 506 Synchronized Collections......Page 507 BlockingQueue......Page 508 Stopping Threads......Page 510 Wait/Notify......Page 511 Additional Notes on wait and notify......Page 516 Locks and Conditions......Page 517 Thread Priorities......Page 519 ThreadLocal......Page 520 The Timer Class......Page 524 Thread Miscellany......Page 526 Exercises......Page 531 Parameterized Types......Page 534 Collection Framework......Page 535 Creating Parameterized Types......Page 536 Erasure......Page 539 Upper Bounds......Page 541 Wildcards......Page 543 Implications of Using Wildcards......Page 545 Wildcard Capture......Page 547 Super......Page 548 Additional Bounds......Page 550 Raw Types......Page 551 Checked Collections......Page 553 Arrays......Page 555 Additional Limitations......Page 556 Final Notes......Page 557 Exercises......Page 558 Assertions......Page 560 Annotations......Page 562 Building a Testing Tool......Page 563 TestRunnerTest......Page 564 TestRunner......Page 565 The @TestMethod Annotation......Page 568 Retention......Page 570 Annotation Targets......Page 571 Modifying TestRunner......Page 573 Single-Value Annotations......Page 575 A TestRunner User Interface Class......Page 577 Array Parameters......Page 578 Multiple Parameter Annotations......Page 580 Default Values......Page 582 Additional Return Types and Complex Annotation Types......Page 583 Package Annotations......Page 584 Additional Notes on Annotations......Page 586 Exercises......Page 587 Additional Lesson I: Swing, Part 1......Page 590 Swing......Page 591 Getting Started......Page 592 Swing Application Design......Page 596 Panels......Page 597 Refactoring......Page 601 More Widgets......Page 605 Refactoring......Page 608 Button Clicks and ActionListeners......Page 611 List Models......Page 613 The Application......Page 616 Layout......Page 619 GridBagLayout......Page 627 Moving Forward......Page 631 Additional Lesson II: Swing, Part 2......Page 632 Miscellaneous Aesthetics......Page 633 Feel......Page 637 Tables......Page 660 Feedback......Page 665 Responsiveness......Page 672 Remaining Tasks......Page 675 Final Notes......Page 676 JARs......Page 678 Regular Expressions......Page 681 Cloning and Covariance......Page 687 JDBC......Page 689 Internationalization......Page 698 Call by Reference versus Call by Value......Page 706 Java Periphery......Page 708 What Else Is There?......Page 718 A......Page 726 C......Page 727 D......Page 729 F......Page 730 I......Page 731 M......Page 732 N......Page 733 P......Page 734 R......Page 735 S......Page 736 U......Page 738 W......Page 739 Appendix B: Java Operator Precedence Rules......Page 740 IDEA......Page 742 The Hello Project......Page 743 Running Tests......Page 749 Taking Advantage of IDEA......Page 754 Agile Java References......Page 758 A......Page 760 B......Page 761 C......Page 762 D......Page 764 F......Page 765 H......Page 766 I......Page 767 J......Page 768 L......Page 769 M......Page 770 O......Page 771 P......Page 772 R......Page 773 S......Page 774 T......Page 775 V......Page 776 Z......Page 777

Master Java 5.0 and TDD Together: Build More Robust, Professional Software

Master Java 5.0, object-oriented design, and Test-Driven Development (TDD) by learning them together. Agile Java weaves all three into a single coherent approach to building professional, robust software systems. Jeff Langr shows exactly how Java and TDD integrate throughout the entire development lifecycle, helping you leverage today's fastest, most efficient development techniques from the very outset.

Langr writes for every programmer, even those with little or no experience with Java, object-oriented development, or agile methods. He shows how to translate oral requirements into practical tests, and then how to use those tests to create reliable, high-performance Java code that solves real problems. Agile Java doesn't just teach the core features of the Java language: it presents coded test examples for each of them. This TDD-centered approach doesn't just lead to better code: it provides powerful feedback that will help you learn Java far more rapidly. The use of TDD as a learning mechanism is a landmark departure from conventional teaching techniques.

  • Presents an expert overview of TDD and agile programming techniques from the Java developer's perspective
  • Brings together practical best practices for Java, TDD, and OO design
  • Walks through setting up Java 5.0 and writing your first program
  • Covers all the basics, including strings, packages, and more
  • Simplifies object-oriented concepts, including classes, interfaces, polymorphism, and inheritance
  • Contains detailed chapters on exceptions and logging, math, I/O, reflection, multithreading, and Swing
  • Offers seamlessly-integrated explanations of Java 5.0's key innovations, from generics to annotations
  • Shows how TDD impacts system design, and vice versa
  • Complements any agile or traditional methodology, including Extreme Programming (XP)
Master Java 5.0 and TDD Together: Build More Robust, Professional Software Master Java 5.0, object-oriented design, and Test-Driven Development (TDD) by learning them together. Agile Java weaves all three into a single coherent approach to building professional, robust software systems. Jeff Langr shows exactly how Java and TDD integrate throughout the entire development lifecycle, helping you leverage today's fastest, most efficient development techniques from the very outset. Langr writes for every programmer, even those with little or no experience with Java, object-oriented development, or agile methods. He shows how to translate oral requirements into practical tests, and then how to use those tests to create reliable, high-performance Java code that solves real problems. Agile Java doesn't just teach the core features of the Java language: it presents coded test examples for each of them. This TDD-centered approach doesn't just lead to better code: it provides powerful feedback that will help you learn Java far more rapidly. The use of TDD as a learning mechanism is a landmark departure from conventional teaching techniques. Presents an expert overview of TDD and agile programming techniques from the Java developer's perspective Brings together practical best practices for Java, TDD, and OO design Walks through setting up Java 5.0 and writing your first program Covers all the basics, including strings, packages, and more Simplifies object-oriented concepts, including classes, interfaces, polymorphism, and inheritance Contains detailed chapters on exceptions and logging, math, I/O, reflection, multithreading, and Swing Offers seamlessly-integrated explanations of Java 5.0's key innovations, from generics to annotations Shows how TDD impacts system design, and vice versa Complements any agile or traditional methodology, including Extreme Programming (XP) © Copyright Pearson Education. All rights reserved Agile Java is a valuable tutorial and reference. It introduces the Java languagewith no assumptions about a developer's background in Java, object-orienteddevelopment, or TDD. The book will also retain significant value as acookbook that readers will turn to time and again to learn how to approachTDD with respect to various language features.Teh author stresses the importance of TDD by showing coded tests for everyJava feature taught. A programmer learning with this book will understand howto translate oral requirements into tests, and tests into working code. Readersalso learn how TDD impacts the design of the system, and vice versa. In short,anyone who wants to understand what it takes to build a professional, robustsoftware system using Java will want this book. Agile Java will be ideally timedto coincide with Sun's forthcoming release of Java 5 (J2SE 1.5).
دانلود کتاب Agile Java: Crafting Code with Test-Driven Development (TM): Crafting Code with Test-Driven Development