Object-Oriented Design Choices
Home > Computing and Information Technology > Information technology: general topics > Object-Oriented Design Choices
Object-Oriented Design Choices

Object-Oriented Design Choices


     0     
5
4
3
2
1



Available


X
About the Book

Do modern programming languages, IDEs, and libraries make coding easy? Maybe, but coding is not design. Large-scale or expensive apps clearly require evaluation of design choices. Still, software design directly impacts code reuse and longevity even for small-scale apps with limited overhead. This text evaluates and contrasts common object-oriented designs. A given problem may have many solutions. A developer may employ different design techniques – composition, inheritance, dependency injection, delegation, etc. – to solve a particular problem. A skilled developer can determine the costs and benefits of different design responses, even amid competing concerns. A responsible developer documents design choices as a contract with the client, delineating external and internal responsibilities. To promote effective software design, this book examines contractual, object-oriented designs for immediate and sustained use as well as code reuse. The intent of identifying design variants is to recognize and manage conflicting goals such as short versus long-term utility, stability versus flexibility, and storage versus computation. Many examples are given to evaluate and contrast different solutions and to compare C# and C++ effects. No one has a crystal ball; however, deliberate design promotes software longevity. With the prominence of legacy OO code, a clear understanding of different object-oriented designs is essential. Design questions abound. Is code reuse better with inheritance or composition? Should composition rely on complete encapsulation? Design choices impact flexibility, efficiency, stability, longevity, and reuse, yet compilers do not enforce design and syntax does not necessarily illustrate design. Through deliberate design, or redesign when refactoring, developers construct sustainable, efficient code.

Table of Contents:
Preface Detailed Book Outline Section I: Stable Type Desig Contractual Design and the Class Construct Encapsulation Explicit Design and Constraints Class (Type) Functionality Constructors Accessors and Mutators Utility and Public Methods Destructors Design as a Contract Error Handling Published Assumptions Invariants Programming by Contract Example Contractual Expectations OO Design Principle Summary Design Exercises Ownership – Abstracted but Tracked The Abstraction of Memory Heap Memory Ownership of Heap Objects Array Allocation Design Intervention Persistent Data Class Design Memory Reclamation C++ Explicit Deallocation Garbage Collection Reference Counting Design: Storage vs Computation OO Design Principle Summary Design Exercise Data Integrity Data Corruption Copying Shallow versus Deep Copying C++ Copying of Internal Heap Memory Unseen Aliasing C# Cloning to Avoid Aliasing Move semantics Handle: C++ Smart Pointers unique_ptr shared_ptr weak_ptr usage OO Design Principle Summary Design Exercises Section II: Strategic Type Coupling Composition Object-oriented Relationships Containment (Holds-A) Composition (Has-A) Modification Replacement Postponed instantiation Echoing an Interface Interfaces for Design Consistency Wrappers and Delegates Dependency Injection Constructor Injection Property (Setter) Injection Method Injection Dependency Injection Costs and Benefits OO Design Principle Summary Design Exercises Inheritance Automate Type Checking Polymorphism Overloading Generics Subtype polymorphism Function inlining Costs and Benefits of Polymorphism Dynamic Binding whoami() type identification Keywords for dynamic binding Heterogeneous Collections Virtual Function table Abstract Classes Inheritance designs OO Design Principle Summary Design Exercises Inheritance vs Composition Constrained Inheritance When Only Composition is Viable When Inheritance Leaks Memory: C++ destructors Inconsistent Access: C++ accessibility and binding Code Reuse Class Design: Has-a or Is-a? Inheritance with and without Composition 5Software Maintainability OO Design Principle Summary Design Exercises Section III: Effective Type Reuse Design Longevity Software Evolution Disassembler Example Virtual Function Table Type Extraction Problematic Type Extension Multiple Inheritance and its Simulation Design difficulties Single inheritance with composition Simulation without inheritance Class Hierarchies Cross-Products OO Design Principle Summary Design Exercises Operator Overloading Operators represent functions Overloading Addition in C++ Client Expectations Operator Overloading in C# Operators Overloaded only in C++ Indexing support I/O via the stream operators Type conversion Transparent access OO Design Principle Summary Design Exercise Appendix A: The Pointer Construct Pointer definition Dereferencing pointers Inappropriate use of pointers Transient versus persistent memory References The this pointer Arrays Summary Appendix B: Design Examples Contractual Design Ownership: C++ class memory management Copying Composition Inheritance Appendix C: Comparative Design Examples Composition versus Inheritance Design longevity Operator overloading Glossary References

About the Author :
Adair Dingle, PhD, is a professor of computer science at Seattle University, Washington, USA whose previous text, Software Essentials: Design and Construction, received the 2015 Alpha Sigma Nu Book Award. Teaching and research interests focus on algorithms and software design including efficient memory management, patterns, refactoring and tools for software development and education.

Review :
"The introduction of object-oriented programming was a pivotal moment in software engineering, leading to a new way of creating systems by modelling their constituents independently and linking them through shared interfaces. Object orientation allows for the creation of more complex systems, better focus on a small subset of components at any given time, and a greater level of component independence; it even facilitates the creation of software product lines. Designing a system using object orientation requires the mastery of several interdependent concepts, such as abstraction, inheritance, composition, and polymorphism. Dingle (Seattle Univ.) provides a cohesive framework for learning object-oriented design from a practical point of view. Concepts are introduced hierarchically, starting from the idea of encapsulation and design as a contract and drilling down to specifics such as virtual function tables and abstract classes. This approach results in an incremental experience of learning object-oriented design that is rarely found in computer science courses, but that is essential for software engineers who wish to harness the power of object-oriented programming languages in practice. Although no book can fully replace hands-on bench experience, this compact guide can ensure that one's practical efforts will be optimally targeted. --L. Benedicenti, University of New Brunswick Review in April 2022 Issue of CHOICE


Best Sellers


Product Details
  • ISBN-13: 9780367820183
  • Publisher: Taylor & Francis Ltd
  • Publisher Imprint: Chapman & Hall/CRC
  • Height: 234 mm
  • No of Pages: 348
  • Width: 156 mm
  • ISBN-10: 0367820188
  • Publisher Date: 19 Jan 2021
  • Binding: Paperback
  • Language: English
  • Weight: 494 gr


Similar Products

Add Photo
Add Photo

Customer Reviews

REVIEWS      0     
Click Here To Be The First to Review this Product
Object-Oriented Design Choices
Taylor & Francis Ltd -
Object-Oriented Design Choices
Writing guidlines
We want to publish your review, so please:
  • keep your review on the product. Review's that defame author's character will be rejected.
  • Keep your review focused on the product.
  • Avoid writing about customer service. contact us instead if you have issue requiring immediate attention.
  • Refrain from mentioning competitors or the specific price you paid for the product.
  • Do not include any personally identifiable information, such as full names.

Object-Oriented Design Choices

Required fields are marked with *

Review Title*
Review
    Add Photo Add up to 6 photos
    Would you recommend this product to a friend?
    Tag this Book Read more
    Does your review contain spoilers?
    What type of reader best describes you?
    I agree to the terms & conditions
    You may receive emails regarding this submission. Any emails will include the ability to opt-out of future communications.

    CUSTOMER RATINGS AND REVIEWS AND QUESTIONS AND ANSWERS TERMS OF USE

    These Terms of Use govern your conduct associated with the Customer Ratings and Reviews and/or Questions and Answers service offered by Bookswagon (the "CRR Service").


    By submitting any content to Bookswagon, you guarantee that:
    • You are the sole author and owner of the intellectual property rights in the content;
    • All "moral rights" that you may have in such content have been voluntarily waived by you;
    • All content that you post is accurate;
    • You are at least 13 years old;
    • Use of the content you supply does not violate these Terms of Use and will not cause injury to any person or entity.
    You further agree that you may not submit any content:
    • That is known by you to be false, inaccurate or misleading;
    • That infringes any third party's copyright, patent, trademark, trade secret or other proprietary rights or rights of publicity or privacy;
    • That violates any law, statute, ordinance or regulation (including, but not limited to, those governing, consumer protection, unfair competition, anti-discrimination or false advertising);
    • That is, or may reasonably be considered to be, defamatory, libelous, hateful, racially or religiously biased or offensive, unlawfully threatening or unlawfully harassing to any individual, partnership or corporation;
    • For which you were compensated or granted any consideration by any unapproved third party;
    • That includes any information that references other websites, addresses, email addresses, contact information or phone numbers;
    • That contains any computer viruses, worms or other potentially damaging computer programs or files.
    You agree to indemnify and hold Bookswagon (and its officers, directors, agents, subsidiaries, joint ventures, employees and third-party service providers, including but not limited to Bazaarvoice, Inc.), harmless from all claims, demands, and damages (actual and consequential) of every kind and nature, known and unknown including reasonable attorneys' fees, arising out of a breach of your representations and warranties set forth above, or your violation of any law or the rights of a third party.


    For any content that you submit, you grant Bookswagon a perpetual, irrevocable, royalty-free, transferable right and license to use, copy, modify, delete in its entirety, adapt, publish, translate, create derivative works from and/or sell, transfer, and/or distribute such content and/or incorporate such content into any form, medium or technology throughout the world without compensation to you. Additionally,  Bookswagon may transfer or share any personal information that you submit with its third-party service providers, including but not limited to Bazaarvoice, Inc. in accordance with  Privacy Policy


    All content that you submit may be used at Bookswagon's sole discretion. Bookswagon reserves the right to change, condense, withhold publication, remove or delete any content on Bookswagon's website that Bookswagon deems, in its sole discretion, to violate the content guidelines or any other provision of these Terms of Use.  Bookswagon does not guarantee that you will have any recourse through Bookswagon to edit or delete any content you have submitted. Ratings and written comments are generally posted within two to four business days. However, Bookswagon reserves the right to remove or to refuse to post any submission to the extent authorized by law. You acknowledge that you, not Bookswagon, are responsible for the contents of your submission. None of the content that you submit shall be subject to any obligation of confidence on the part of Bookswagon, its agents, subsidiaries, affiliates, partners or third party service providers (including but not limited to Bazaarvoice, Inc.)and their respective directors, officers and employees.

    Accept

    New Arrivals


    Inspired by your browsing history


    Your review has been submitted!

    You've already reviewed this product!