Practical Object-Oriented Design : An Agile Primer Using Ruby (2ND)

個数:

Practical Object-Oriented Design : An Agile Primer Using Ruby (2ND)

  • 在庫がございません。海外の書籍取次会社を通じて出版社等からお取り寄せいたします。
    通常6~9週間ほどで発送の見込みですが、商品によってはさらに時間がかかることもございます。
    重要ご説明事項
    1. 納期遅延や、ご入手不能となる場合がございます。
    2. 複数冊ご注文の場合は、ご注文数量が揃ってからまとめて発送いたします。
    3. 美品のご指定は承りかねます。

    ●3Dセキュア導入とクレジットカードによるお支払いについて

  • 提携先の海外書籍取次会社に在庫がございます。通常約2週間で発送いたします。
    重要ご説明事項
    1. 納期遅延や、ご入手不能となる場合が若干ございます。
    2. 複数冊ご注文の場合は、ご注文数量が揃ってからまとめて発送いたします。
    3. 美品のご指定は承りかねます。

    ●3Dセキュア導入とクレジットカードによるお支払いについて
  • 【入荷遅延について】
    世界情勢の影響により、海外からお取り寄せとなる洋書・洋古書の入荷が、表示している標準的な納期よりも遅延する場合がございます。
    おそれいりますが、あらかじめご了承くださいますようお願い申し上げます。
  • ◆画像の表紙や帯等は実物とは異なる場合があります。
  • ◆ウェブストアでの洋書販売価格は、弊社店舗等での販売価格とは異なります。
    また、洋書販売価格は、ご注文確定時点での日本円価格となります。
    ご注文確定後に、同じ洋書の販売価格が変動しても、それは反映されません。
  • 製本 Paperback:紙装版/ペーパーバック版/ページ数 288 p.
  • 言語 ENG
  • 商品コード 9780134456478
  • DDC分類 005.1

Full Description

The Complete Guide to Writing Maintainable, Manageable, Pleasing, and Powerful Object-Oriented Applications

Object-oriented programming languages exist to help you create beautiful, straightforward applications that are easy to change and simple to extend. Unfortunately, the world is awash with object-oriented (OO) applications that are difficult to understand and expensive to change. Practical Object-Oriented Design, Second Edition, immerses you in an OO mindset and teaches you powerful, real-world, object-oriented design techniques with simple and practical examples.

Sandi Metz demonstrates how to build new applications that can "survive success" and repair existing applications that have become impossible to change. Each technique is illustrated with extended examples in the easy-to-understand Ruby programming language, all downloadable from the companion website, poodr.com. Fully updated for Ruby 2.5, this guide shows how to



Decide what belongs in a single class
Avoid entangling objects that should be kept separate
Define flexible interfaces among objects
Reduce programming overhead costs with duck typing
Successfully apply inheritance
Build objects via composition

Whatever your previous object-oriented experience, this concise guide will help you achieve the superior outcomes you're looking for.

Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

Contents

Introduction xv

Acknowledgments xix

About the Author xxi

Chapter 1: Object-Oriented Design 1

1.1 In Praise of Design 2

1.2 The Tools of Design 4

1.3 The Act of Design 6

1.4 A Brief Introduction to Object-Oriented Programming 10

1.5 Summary 13

Chapter 2: Designing Classes with a Single Responsibility 15

2.1 Deciding What Belongs in a Class 16

2.2 Creating Classes That Have a Single Responsibility 17

2.3 Writing Code That Embraces Change 24

2.4 Finally, the Real Wheel 33

2.5 Summary 35

Chapter 3: Managing Dependencies 37

3.1 Understanding Dependencies 38

3.2 Writing Loosely Coupled Code 41

3.3 Managing Dependency Direction 53

3.4 Summary 59

Chapter 4: Creating Flexible Interfaces 61

4.1 Understanding Interfaces 61

4.2 Defining Interfaces 63

4.3 Finding the Public Interface 65

4.4 Writing Code That Puts Its Best (Inter)Face Forward 77

4.5 The Law of Demeter 80

4.6 Summary 84

Chapter 5: Reducing Costs with Duck Typing 85

5.1 Understanding Duck Typing 85

5.2 Writing Code That Relies on Ducks 95

5.3 Conquering a Fear of Duck Typing 100

5.4 Summary 103

Chapter 6: Acquiring Behavior through Inheritance 105

6.1 Understanding Classical Inheritance 105

6.2 Recognizing Where to Use Inheritance 106

6.3 Misapplying Inheritance 114

6.4 Finding the Abstraction 116

6.5 Managing Coupling between Superclasses and Subclasses 129

6.6 Summary 139

Chapter 7: Sharing Role Behavior with Modules 141

7.1 Understanding Roles 142

7.2 Writing Inheritable Code 158

7.3 Summary 161

Chapter 8: Combining Objects with Composition 163

8.1 Composing a Bicycle of Parts 163

8.2 Composing the Parts Object 168

8.3 Manufacturing Parts 176

8.4 The Composed Bicycle 181

8.5 Deciding between Inheritance and Composition 185

8.6 Summary 191

Chapter 9: Designing Cost-Effective Tests 193

9.1 Intentional Testing 194

9.2 Testing Incoming Messages 202

9.3 Testing Private Methods 215

9.4 Testing Outgoing Messages 217

9.5 Testing Duck Types 221

9.6 Testing Inherited Code 233

9.7 Summary 244

Afterword 245

Index 247

最近チェックした商品