Op werkdagen voor 23:00 besteld, morgen in huis Gratis verzending vanaf €20

Object-Oriented Thought Process, The

E-book Engels 2019 9780135182123
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

Object-oriented programming (OOP) is the foundation of modern programming languages, including C++, Java, C#, Visual Basic .NET, Ruby, Objective-C, and Swift. Objects also form the basis for many web technologies such as JavaScript, Python, and PHP.

It is of vital importance to learn the fundamental concepts of object orientation before starting to use object-oriented development environments. OOP promotes good design practices, code portability, and reuse–but it requires a shift in thinking to be fully understood. Programmers new to OOP should resist the temptation to jump directly into a particular programming language or a modeling language, and instead first take the time to learn what author Matt Weisfeld calls “the object-oriented thought process.”

Written by a developer for developers who want to improve their understanding of object-oriented technologies, The Object-Oriented Thought Process provides a solutions-oriented approach to object-oriented programming. Readers will learn to understand the proper uses of inheritance and composition, the difference between aggregation and association, and the important distinction between interfaces and implementations.

While programming technologies have been changing and evolving over the years, object-oriented concepts remain a constant–no matter what the platform. This revised edition focuses on the OOP technologies that have survived the past 20 years and remain at its core, with new and expanded coverage of design patterns, avoiding dependencies, and the SOLID principles to help make software designs understandable, flexible, and maintainable.

 

Specificaties

ISBN13:9780135182123
Taal:Engels
Bindwijze:e-book

Lezersrecensies

Wees de eerste die een lezersrecensie schrijft!

Inhoudsopgave

<p style="margin:0px;">Introduction 1</p> <p style="margin:0px;">Chapter 1 Introduction to Object-Oriented Concepts 5</p> <p style="margin:0px;">The Fundamental Concepts 5</p> <p style="margin:0px;">Objects and Legacy Systems 6</p> <p style="margin:0px;">Procedural Versus OO Programming 7</p> <p style="margin:0px;">Moving from Procedural to Object-Oriented Development 11</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Procedural Programming 11</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; OO Programming 11</p> <p style="margin:0px;">What Exactly Is an Object? 12</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Object Data 12</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Object Behaviors 13</p> <p style="margin:0px;">What Exactly Is a Class? 16</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Creating Objects 17</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Attributes 18</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Methods 19</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Messages 19</p> <p style="margin:0px;">Using Class Diagrams as a Visual Tool 19</p> <p style="margin:0px;">Encapsulation and Data Hiding 20</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Interfaces 20</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Implementations 21</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; A Real-World Example of the Interface/Implementation Paradigm 21</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; A Model of the Interface/Implementation Paradigm 22</p> <p style="margin:0px;">Inheritance 23</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Superclasses and Subclasses 24</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Abstraction 25</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Is-a Relationships 26</p> <p style="margin:0px;">Polymorphism 27</p> <p style="margin:0px;">Composition 30</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Abstraction 30</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Has-a Relationships 31</p> <p style="margin:0px;">Conclusion 31</p> <p style="margin:0px;">Chapter 2 How to Think in Terms of Objects 33</p> <p style="margin:0px;">Knowing the Difference Between the Interface and the</p> <p style="margin:0px;">Implementation 34</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; The Interface 36</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; The Implementation 36</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; An Interface/Implementation Example 36</p> <p style="margin:0px;">Using Abstract Thinking When Designing Interfaces 41</p> <p style="margin:0px;">Providing the Absolute Minimal User Interface Possible 42</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Determining the Users 43</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Object Behavior 44</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Environmental Constraints 44</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Identifying the Public Interfaces 44</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Identifying the Implementation 45</p> <p style="margin:0px;">Conclusion 46</p> <p style="margin:0px;">References 46</p> <p style="margin:0px;">Chapter 3 More Object-Oriented Concepts 47</p> <p style="margin:0px;">Constructors 47</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; When Is a Constructor Called? 48</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; What’s Inside a Constructor? 48</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; The Default Constructor 48</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Using Multiple Constructors 49</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; The Design of Constructors 53</p> <p style="margin:0px;">Error Handling 54</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Ignoring the Problem 54</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Checking for Problems and Aborting the Application 54</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Checking for Problems and Attempting to Recover 54</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Throwing an Exception 55</p> <p style="margin:0px;">The Importance of Scope 57</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Local Attributes 58</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Object Attributes 59</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Class Attributes 61</p> <p style="margin:0px;">Operator Overloading 62</p> <p style="margin:0px;">Multiple Inheritance 63</p> <p style="margin:0px;">Object Operations 63</p> <p style="margin:0px;">Conclusion 65</p> <p style="margin:0px;">References 65</p> <p style="margin:0px;">Chapter 4 The Anatomy of a Class 67</p> <p style="margin:0px;">The Name of the Class 67</p> <p style="margin:0px;">Comments 69</p> <p style="margin:0px;">Attributes 69</p> <p style="margin:0px;">Constructors 71</p> <p style="margin:0px;">Accessors 73</p> <p style="margin:0px;">Public Interface Methods 75</p> <p style="margin:0px;">Private Implementation Methods 76</p> <p style="margin:0px;">Conclusion 76</p> <p style="margin:0px;">References 76</p> <p style="margin:0px;">Chapter 5 Class Design Guidelines 77</p> <p style="margin:0px;">Modeling Real-World Systems 77</p> <p style="margin:0px;">Identifying the Public Interfaces 78</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; The Minimum Public Interface 78</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Hiding the Implementation 79</p> <p style="margin:0px;">Designing Robust Constructors (and Perhaps Destructors) 80</p> <p style="margin:0px;">Designing Error Handling into a Class 81</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Documenting a Class and Using Comments 81</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Building Objects with the Intent to Cooperate 82</p> <p style="margin:0px;">Designing with Reuse in Mind 82</p> <p style="margin:0px;">Designing with Extensibility in Mind 83</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Making Names Descriptive 83</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Abstracting Out Nonportable Code 84</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Providing a Way to Copy and Compare Objects 84</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Keeping the Scope as Small as Possible 84</p> <p style="margin:0px;">Designing with Maintainability in Mind 86</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Using Iteration in the Development Process 86</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Testing the Interface 86</p> <p style="margin:0px;">Using Object Persistence 88</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Serializing and Marshaling Objects 89</p> <p style="margin:0px;">Conclusion 90</p> <p style="margin:0px;">References 90</p> <p style="margin:0px;">Chapter 6 Designing with Objects 91</p> <p style="margin:0px;">Design Guidelines 91</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Performing the Proper Analysis 95</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Developing a Statement of Work 95</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Gathering the Requirements 95</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Developing a System Prototype 96</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Identifying the Classes 96</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Determining the Responsibilities of Each Class 96</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Determining How the Classes Collaborate with Each Other 96</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Creating a Class Model to Describe the System 96</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Prototyping the User Interface in Code 97</p> <p style="margin:0px;">Object Wrappers 97</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Structured Code 98</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Wrapping Structured Code 99</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Wrapping Nonportable Code 101</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Wrapping Existing Classes 101</p> <p style="margin:0px;">Conclusion 102</p> <p style="margin:0px;">References 103</p> <p style="margin:0px;">Chapter 7 Mastering Inheritance and Composition 105</p> <p style="margin:0px;">Reusing Objects 105</p> <p style="margin:0px;">Inheritance 106</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Generalization and Specialization 109</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Design Decisions 110</p> <p style="margin:0px;">Composition 112</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Representing Composition with UML 113</p> <p style="margin:0px;">Why Encapsulation Is Fundamental to OO 115</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; How Inheritance Weakens Encapsulation 115</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; A Detailed Example of Polymorphism 117</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Object Responsibility 118</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Abstract Classes, Virtual Methods, and Protocols 121</p> <p style="margin:0px;">Conclusion 123</p> <p style="margin:0px;">References 123</p> <p style="margin:0px;">Chapter 8 Frameworks and Reuse: Designing with Interfaces and Abstract Classes 125</p> <p style="margin:0px;">Code: To Reuse or Not to Reuse? 125</p> <p style="margin:0px;">What Is a Framework? 126</p> <p style="margin:0px;">What Is a Contract? 128</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Abstract Classes 128</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Interfaces 131</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Tying It All Together 133</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; The Compiler Proof 135</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Making a Contract 136</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; System Plug-in Points 138</p> <p style="margin:0px;">An E-Business Example 139</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; An E-Business Problem 139</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; The Non-Reuse Approach 139</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; An E-Business Solution 141</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; The UML Object Model 142</p> <p style="margin:0px;">Conclusion 146</p> <p style="margin:0px;">References 146</p> <p style="margin:0px;">Chapter 9 Building Objects and Object-Oriented Design 147</p> <p style="margin:0px;">Composition Relationships 148</p> <p style="margin:0px;">Building in Phases 149</p> <p style="margin:0px;">Types of Composition 151</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Aggregations 151</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Associations 152</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Using Associations and Aggregations Together 153</p> <p style="margin:0px;">Avoiding Dependencies 154</p> <p style="margin:0px;">Cardinality 155</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Multiple Object Associations 157</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Optional Associations 158</p> <p style="margin:0px;">Tying It All Together: An Example 159</p> <p style="margin:0px;">Conclusion 160</p> <p style="margin:0px;">References 160</p> <p style="margin:0px;">Chapter 10 Design Patterns 161</p> <p style="margin:0px;">Why Design Patterns? 162</p> <p style="margin:0px;">Smalltalk’s Model/View/Controller 163</p> <p style="margin:0px;">Types of Design Patterns 164</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Creational Patterns 165</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Structural Patterns 169</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Behavioral Patterns 171</p> <p style="margin:0px;">Antipatterns 173</p> <p style="margin:0px;">Conclusion 174</p> <p style="margin:0px;">References 174</p> <p style="margin:0px;">Chapter 11 Avoiding Dependencies and Highly Coupled Classes 175</p> <p style="margin:0px;">Composition versus Inheritance and Dependency Injection 177</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; 1) Inheritance 177</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; 2) Composition 179</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; Dependency Injection 182</p> <p style="margin:0px;">Conclusion 185</p> <p style="margin:0px;">References 185</p> <p style="margin:0px;">Chapter 12 The SOLID Principles of Object-Oriented Design 187</p> <p style="margin:0px;">The SOLID Principles of Object-Oriented Design 188</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; 1) SRP: Single Responsibility Principle 188</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; 2) OCP: Open/Close Principle 192</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; 3) LSP: Liskov Substitution Principle 194</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; 4) IPS: Interface Segregation Principle 197</p> <p style="margin:0px;">&nbsp;&nbsp;&nbsp; 5) DIP: Dependency Inversion Principle 198</p> <p style="margin:0px;">Conclusion 204</p> <p style="margin:0px;">References 204</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;">9780135181966&nbsp;&nbsp; TOC&nbsp;&nbsp; 3/12/2019</p> <p style="margin:0px;">&nbsp;</p>

Managementboek Top 100

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Object-Oriented Thought Process, The