The primary strength of Object-Oriented Design Using Java is that it has one of the best presentations of problem solving using patterns available. It has received rave reviews from instructors and has been class tested at a number of schools where the response from both professors and students has
Object-Oriented Design Using Java
β Scribed by Dale Skrien
- Publisher
- McGraw-Hill Education
- Year
- 2008
- Tongue
- English
- Leaves
- 354
- Category
- Library
No coin nor oath required. For personal study only.
β¦ Synopsis
The primary strength of Object-Oriented Design Using Java is that it has one of the best presentations of problem solving using patterns available. It has received rave reviews from instructors and has been class tested at a number of schools where the response from both professors and students has been extremely positive.
This book is intended for the object-oriented programming design course where UML is used extensively for design and notation. It has been especially designed to be accessible to students and is full of real-world examples, case studies, and other aids to assist student understanding.
β¦ Table of Contents
Title
Contents
1 Elegance in Object-Oriented Design and Implementation
Section 1.0 Introduction
Section 1.1 Why Worry?
Section 1.2 Software Engineering
Section 1.3 Criteria for Elegant Software
Section 1.4 Road Map
2 Fundamentals of Object Orientation
Section 2.0 Introduction
Section 2.1 Object-Oriented Programming vs. NonβObject-Oriented Programming
Overview of OO vs. Non-OO Programming
Object-Oriented Languages
Advantages of OO programming
Section 2.2 Classes, Objects, Variables, and Methods in Java
Section 2.3 Aside: Class Methods & Variables in Java
Introduction to Class Variables and Methods
Class Variables in Java and Their Uses
Class Methods in Java and Their Uses
Summary
Section 2.4 Brief Introduction to UML Class Diagrams
Section 2.5 Implementation Inheritance
Specialization
The Object Superclass in Java
Another Use of Specialization
Generalization
Single Inheritance in Java
Section 2.6 Types, Subtypes, and Interface Inheritance
Type
Polymorphism
The Value of Polymorphism
Section 2.7 Interfaces vs. Abstract Classes
Section 2.8 Dynamic Method Invocation
Section 2.9 Overloading vs. Overriding
Section 2.10 Controlling Access to Methods and Data (Public, Private, Protected, Package)
Section 2.11 Summary
3 Elegance and Implementation Inheritance
Section 3.0 Introduction
Section 3.1 Four Perspectives on Inheritance
Code Reuse Perspective
Is-A Perspective
Public Interface Perspective
Polymorphism Perspective
Section 3.2 Suffi ciency of Code Reuse
Section 3.3 Suffi ciency of Code Reuse and the Is-A Relationship
Section 3.4 Suffi ciency of Code Reuse, the Is-A Relationship, and Public Interfaces
Section 3.5 Has-A Relationships and UML Associations
Section 3.6 Suffi ciency of Code Reuse, the Is-A Relationship, Public Interfaces, and Polymorphism
Section 3.7 Costs of Using Implementation Inheritance
Section 3.8 Example: Person, Woman, and Man
Section 3.9 Example: Drawing Polygons
Section 3.10 Example: Sorting
Section 3.11 Subclassing Arrays in Java
Section 3.12 Inheritance vs. Referencing Revisited
Section 3.13 Summary
4 Elegance and Methods
Section 4.0 Introduction
Section 4.1 Coding Styles and Naming Conventions
Section 4.2 Methods and Decomposition
Section 4.3 Cohesive Methods
Section 4.4 Well-Formed Objects and Class Invariants
Section 4.5 Internal Documentation
Section 4.6 External Documentation
Section 4.7 Case Study: Overriding the Equals Method in Java
Section 4.8 Case Study: Overriding the Clone Method in Java
Section 4.9 Refactoring
Section 4.10 Code Optimization
Section 4.11 Summary and Further Reading
5 Elegance and Classes
Section 5.0 Introduction
Section 5.1 Starting Out Finding Classes and Their Relationships
Extract Nouns and Verbs
Use Concepts from the Application Domain
Use CRC Cards
Class Protocols
The Big Picture
Section 5.2 Maximizing Cohesion
Section 5.3 Separation of Responsibility
Section 5.4 Duplication Avoidance
Section 5.5 Complete and Consistent Protocols
Section 5.6 Mutability vs. Immutability Revisited
Section 5.7 Designing for Change
Section 5.8 Law of Demeter
Section 5.8 Summary and Further Reading
6 Simple Case Study of a Money Class
Section 6.0 Introduction
Section 6.1 Naive Representations of Money
Section 6.2 A USMoney Class
Section 6.3 Using Subclasses of Money to Represent Different Currencies
Section 6.4 Using One Class of Money with a Currency Attribute
Section 6.5 Mixed Currencies vs. Simple Currencies
Section 6.6 Converting Between Currencies
Section 6.7 MoneyConverter Issues
Section 6.8 MixedMoney and SimpleMoney Issues
Section 6.9 Mixed Money Only
Section 6.10 Alternate Implementation with Binary Trees
Section 6.11 Summary
7 Introduction to Design Patterns
Section 7.0 Introduction
Section 7.1 The Adapter Pattern
Section 7.2 The Singleton Pattern
Section 7.3 The Iterator Pattern
Section 7.4 The Command Pattern
Section 7.5 Factories
Section 7.6 Summary
8 Figure-Drawing Application Case Study
Section 8.0 Introduction
Section 8.1 The User Interface
Section 8.2 The Observer Pattern
Section 8.3 The Figure Hierarchy
Section 8.4 The Model-View-Controller Architecture
Section 8.5 The Prototype Pattern
Section 8.6 The State Pattern
Section 8.7 The Composite Pattern
Section 8.8 The Memento Pattern
Section 8.9 Summary
9 Language Parser Case Study
Section 9.0 Introduction
Section 9.1 VSSJ: A Very Simple Subset of Java
Section 9.2 Pretty Printing
Section 9.3 Scanning
Section 9.4 A Simple Pretty Printer
Section 9.5 Interpreter Pattern
Section 9.6 Design of the AST
Section 9.7 Method Finder
Section 9.8 Some Problems with These Elegant Implementations
Section 9.9 The Visitor Pattern
Section 9.10 Visitors and Double-Dispatching
Section 9.11 Facade Pattern
Section 9.12 Parsers and Builders
Section 9.13 Tokens, Visitors, and Polymorphism (Optional Section)
Section 9.14 Summary
Appendix AAn Introduction to UML
Section A.0 Introduction
Section A.1 Class Diagrams
Section A.2 Sequence Diagrams
Section A.3 State Machine Diagrams
Section A.4 Use Case Diagrams
Section A.5 Summary
Appendix B Coding Conventions and Javadoc Comments
Section B.0 Introduction
Section B.1 Indentation and Spacing
Section B.2 Punctuation and Layout
Section B.3 Formatting a Loop
Section B.4 Incrementing Integer Variables
Section B.5 Working with Boolean Variables
Section B.6 Line and Block Comments
Section B.7 File Layout
Section B.8 Javadoc Syntax
Section B.9 Summary
Index
π SIMILAR VOLUMES
This book will explain the Object Oriented approach to programming and through the use of small exercises, for which feedback is provided, develop some practical skills as well. At the end of the book one larger case study will be used to illustrate the application of the techniques. This will culmi
This book teaches the classic data structures with an informal, yet rigorous, approach; it includes the appropriate object-oriented concepts and makes use of the appropriate Java constructs.
The updated and revised Object-Oriented Data Structures Using Java, Fourth Edition is an essential resource for students learning data structures using the Java programming language. It presents both the traditional and modern data structure topics with an emphasis on problem-solving and object-orie