Agile Java: Crafting Code with Test-Driven Development
Jeff Langr
- 出版商: Prentice Hall
- 出版日期: 2005-02-24
- 售價: $2,600
- 貴賓價: 9.5 折 $2,470
- 語言: 英文
- 頁數: 792
- 裝訂: Paperback
- ISBN: 0131482394
- ISBN-13: 9780131482395
-
相關分類:
Java 程式語言、TDD 測試導向開發、Agile Software
無法訂購
買這商品的人也買了...
-
$680$578 -
$550$494 -
$780$624 -
$720$569 -
$650$553 -
$590$466 -
$680$537 -
$480$379 -
$750$593 -
$780$616 -
$680$537 -
$2,500$2,375 -
$650$507 -
$460$363 -
$680$612 -
$520$406 -
$580$452 -
$680$578 -
$620$527 -
$600$540 -
$1,200$1,020 -
$680$578 -
$3,110$2,955 -
$780$616 -
$1,710The C Programming Language, 2/e (IE-Paprback)
相關主題
商品描述
Table of Contents:
About the Author.
Foreword.
Acknowledgments.
Introduction.
Who Is This Book For?
What This Book Is Not
How to Use This Book
Exercises
Conventions Used in This Book
An Agile Overview.
What Is “Agile?”
What Is Java?
Why OO?
What Is an Object?
What Are Classes?
Why UML?
What Is Inheritance?
Why Test-Driven Development?
Setting Up.
Software You’ll Need
Does It Work?
Compiling Hello World
Executing Hello World
Still Stuck?
Lesson 1: Getting Started.
Testing
Design
A Simple Test
JUnit
Adding a Test
Creating a Student
Creating the Student Class
Constructors
Local Variables
Returning a Value from a Method
Assertions
Instance Variables
Summarizing the Test
Refactoring
this
private
Naming Conventions
Whitespace
Exercises
Lesson 2: Java Basics.
CourseSession
Enrolling Students
int
Initialization
Default Constructors
Suites
The SDK and java.util.ArrayList
Adding Objects
Incremental Refactoring
Objects in Memory
Packages and the import Statement
The java.lang Package
The Default Package and the package Statement
The setup Method
More Refactoring
Class Constants
Dates
Overload Constructors
Deprecation Warnings
Refactoring
Creating Dates with Calendar
Comments
Javadoc Comments
Exercises
Lesson 3: Strings and Packages.
Characters and Strings
Strings
StringBuilder
System Properties
Looping Through All Students
Single-Responsibility Principle
Refactoring
System.out
Using System.out
Refactoring
Package Structure
Access Modifiers
Using Ant
Exercises
Lesson 4: Class Methods and Fields.
Class Methods
Class Variables
Operating on Class Variables with Class Methods
Static Import
Incrementing
Factory Methods
Simple Design
Static Dangers
Using Statics: Various Notes
Jeff’s Rule of Statics
Booleans
Tests as Documentation
More on Initialization
Exceptions
Revisiting Primitive-Type Field Initialization
Exercises
Lesson 5: Interfaces and Polymorphism.
Sorting: Preparation
Sorting: Collections.sort
CourseReportTest
Interfaces
Why Interfaces
Implementing Comparable
Sorting on Department and Number
The if Statement
Grading Students
Floating-Point Numbers
Testing Grades
Refactoring
Enums
Polymorphism
Using Interface References
ArrayList and the List Interface
Exercises
Lesson 6: Inheritance.
The switch Statement
Case Labels Are Just Labels
Maps
Inheritance
Abstract Classes
Extending Methods
Refactoring
Enhancing the Grade Enum
Summer Course Sessions
Calling Superclass Constructors
Refactoring
More on Constructors
Inheritance and Polymorphism
The Principle of Subcontracting
Exercises
Lesson 7: Legacy Elements.
Looping Constructs
Breaking Up a Student’s Name
The while Loop
Comparing Java Loops
Refactoring
Looping Control Statements
The Ternary Operator
Legacy Collections
Iterators
Iterators and the for-each Loop
Casting
Wrapper Classes
Arrays
Refactoring
Exercises
Lesson 8: Exceptions and Logging.
Exceptions
Dealing With Exceptions
Checked Exceptions
Exception Hierarchy
Creating Your Own Exception Type
Checked Exceptions vs. Unchecked Exceptions
Messages
Catching Multiple Exceptions
Rethrowing Exceptions
Stack Traces
The finally Block
Refactoring
Logging
Logging in Java
Testing Logging
Logging to Files
Testing Philosophy for Logging
More on FileHandler
Logging Levels
Logging Hierarchies
Additional Notes on Logging
Exercises
Lesson 9: Maps and Equality.
Logical Operators
Short-Circuiting
Hash Tables
Courses
Refactoring Session
Equality
The Contract for Equality
Apples and Oranges
Collections and Equality
Hash Tables
Collisions
An Ideal Hash Algorithm
A Final Note on hashCode
More on Using HashMaps
Additional Hash Tables and Set Implementations
toString
Strings and Equality
Exercises
Lesson 10: Mathematics.
BigDecimal
More on Primitive Numerics
Integer Math
Numeric Casting
Expression Evaluation Order
NaN
Infinity
Numeric Overflow
Bit Manipulation
Java.lang.Math
Numeric Wrapper Classes
Random Numbers
Exercises
Lesson 11: IO.
Organization
Character Streams
Writing to a File
Java.io.File
Byte Streams and Conversion
A Student User Interface
Testing the Application
Data Streams
CourseCatalog
Advanced Streams
Object Streams
Random Access Files
The Student Directory
sis.db.DataFileTest
Static Nested Classes and Inner Classes
sis.db.DataFile
sis.db.KeyFileTest
sis.db.KeyFile
sis.util.IOUtilTest
sis.util.IOUtil
sis.util.TestUtil
Developing the Solution
Exercises
Lesson 12: Reflection and Other Advanced Topics.
Mock Objects Revisited
The Jim Bob ACH Interface
The Mock Class
The Account Class Implementation
Anonymous Inner Classes
Adapters
Accessing Variables from the Enclosing Class
Tradeoffs
Reflection
Using JUnit Code
The Class Class
Building the Suite
Class Modifiers
Dynamic Proxy
A Secure Account Class
Building the Secure Account Solution
The SecureProxy Class
Problems With Reflection
Exercises
Lesson 13: Mulithreading.
Multithreading
Search Server
The Search Class
Less Dependent Testing
The Server
Waiting in the Test
Creating and Running Threads
Cooperative and Preemptive Multitasking
Synchronization
Creating Threads with Runnable
Synchronized
Synchronized Collections
BlockingQueue
Stopping Threads
Wait/Notify
Additional Notes on wait and notify
Locks and Conditions
Thread Priorities
Deadlocks
ThreadLocal
The Timer Class
Thread Miscellany
Summary: Basic Design Principles for Synchronization
Exercises
Lesson 14: Generics.
Parameterized Types
Collection Framework
Multiple Type Parameters
Creating Parameterized Types
Erasure
Upper Bounds
Wildcards
Implications of Using Wildcards
Generic Methods
Wildcard Capture
Super
Additional Bounds
Raw Types
Checked Collections
Arrays
Additional Limitations
Reflection
Final Notes
Exercises
Lesson 15: Assertions and Annotations.
Assertions
The assert Statement vs. JUnit Assert Methods
Annotations
Building a Testing Tool
TestRunnerTest
TestRunner
The @TestMethod Annotation
Retention
Annotation Targets
Skipping Test Methods
Modifying TestRunner
Single-Value Annotations
A TestRunner User Interface Class
Array Parameters
Multiple Parameter Annotations
Default Values
Additional Return Types and Complex Annotation Types
Package Annotations
Compatibility Considerations
Additional Notes on Annotations
Summary
Exercises
Additional Lesson I: Swing, Part 1.
Swing
Getting Started
Swing Application Design
Panels
Refactoring
More Widgets
Refactoring
Button Clicks and ActionListeners
List Models
The Application
Layout
GridBagLayout
Moving Forward
Additional Lesson II: Swing, Part 2.
Miscellaneous Aesthetics
Feel
Tables
Feedback
Responsiveness
Remaining Tasks
Final Notes
Additional Lesson III: Java Miscellany.
JARs
Regular Expressions
Cloning and Covariance
JDBC
Internationalization
Call by Reference versus Call by Value
Java Periphery
What Else Is There?
Appendix A: An Agile Java Glossary.
Appendix B: Java Operator Precedence Rules.
Appendix C: Getting Started with IDEA.
IDEA
The Hello Project
Running Tests
Taking Advantage of IDEA
Agile Java References.
Index.
商品描述(中文翻譯)
目錄:
目錄:
關於作者。
前言。
致謝。
導讀。
這本書適合誰閱讀?
這本書不是什麼?
如何使用這本書?
練習題
本書使用的慣例
敏捷概述。
什麼是「敏捷」?
什麼是 Java?
為什麼要使用物件導向?
什麼是物件?
什麼是類別?
為什麼要使用 UML?
什麼是繼承?
為什麼要使用測試驅動開發?
設定。
需要的軟體
它是否適用?
編譯 Hello World
執行 Hello World
仍然卡住了嗎?
第一課:入門。
測試
設計