Always Learning

Object of Data Abstraction and Structures (using Java), The
David RileyUniversity of Wisconsin, LaCrosse

ISBN-10: 0201713594
ISBN-13:  9780201713596

Publisher:  Addison-Wesley
Copyright:  2003
Format:  Paper; 688 pp
Published:  10/03/2002
Status: Out of Print


We're sorry, this product is no longer available.
Please contact your Pearson rep if you are using this product and need instructor resources.


Print this content

In this section:


Description

The Object of Data Abstraction and Structures is for readers who are looking for a second computer science course that focuses on a modern object-oriented approach in Java. It covers the traditional data structures topics of a CS2 course, with special attention to sound software engineering practice, using an object-oriented approach.

The presentation is divided into two parts to provide instructors maximum flexibility to tailor the material to their particular needs. The main body of the textbook consists of Chapters 1-10 with general topics that are common to most CS2 courses, but with a distinctly O-O flavor. The Foundations section of the book, consisting of chapters F1 through F5, is a collection of foundational material that are assumed within the main body. These topics include an introduction object-oriented programming, software specifications, inheritance, exceptions and recursion. Most CS2 courses expect some, but not all, of this Foundations material as prerequisite, but there are considerable differences. The inclusion of these Foundations chapters allows the faculty member to choose how to use these topics. If a Foundations topic is new to students, then it may be fully covered at the beginning of the course, or inserted within the course at the instructor's discretion. If the Foundations topic is covered in prior curricula, then the Foundations material may be ignored or covered lightly using spiral pedagogy. It is even possible to pick and choose individual sections of the Foundations chapters.

Chapter 1 begins with the concept of abstraction (ADTs) and how it is used in software design. UML class diagrams are used to display high-level design and abstract preconditions and postconditions provide a notation to express detailed design. The Template Design Pattern is also introduced. Chapter 2 examines the concept of a data container from an abstract (ADT) perspective. Design issues, such as genericity, boundedness, iterators and mutability are explored. Chapter 3 is a brief aside to introduce performance issues, and Chapter 4 is an initial examination of ADT implementation using structures that are somewhat familiar to the student - arrays. Chapter 5 covers files and streams, including the O-O concept of persistence. Chapters 6 is a substantial exploration of lists that ranges from list/sequence ADTs to list applications to list implementation strategies to standard Java list classes. Chapter 7 presents stacks and queues, including both implementations and applications. Chapter 8 includes a presentation of the increasingly popular Map ADT and typical implementations from simple arrays to hash tables. Chapter 9 covers trees and Chapter 10 presents various searching and sorting algorithms.


Features

  • Presents traditional data structures topics of the second (CS2) class using an object-oriented methodology to offer better approaches for data structure design and implementation.
  • Makes a clear distinction between design and implementation.
  • Provides an object-oriented approach to abstract design using class diagrams, design by contract, and several fundamental design patterns.
  • Utilizes object-oriented methodology such as iterators, interfaces, and inner classes to demonstrate proper O-O implementations.
  • Integrates the coverage of several standard Java interfaces and classes that are related to data containers.
  • Includes Core Concepts: Review and Reference section that has 6 Chapters of material that permits user to tailor topic order and coverage.
  • Makes extensive use of specifications in the form of preconditions, postconditions and class invariants as a means to define class and method behavior.
  • Emphasizes software engineering skills using special Software Engineering Tip boxes throughout each chapter to highlight sound software development practices.
  • Consistently uses UML class diagrams and object diagrams exposing students to the same notations that have become the industry standard.
  • Provides practical “how to” ideas regarding code and design reviews by Java Inspector sections at the end of each chapter. Each Java Inspector section also serves to review key material from the chapter.
  • A perfect follow-up text to the author's The Object of Java (Addison-Wesley, 2001), or any other introduction to Java book.


Table of Contents

SECTION 1.

Abstraction.

Abstract Data Types.

Specification and Abstraction.

ADT Design Principles.

Template Design Pattern.

Interfaces.

The Object Class.

Containers.

Intro to Containers.

Generic Containers.

Wrapper Classes.

Bounded Containers.

Sequences.

String.

Mutability.

Iterators.

Collections and Enumerations.

Performance Considerations.

Algorithms and Counting.

Big-oh Notation.

Run-time Performance of Control Various Structures.

Arrays and Tables.

Review of One-Dimensional Arrays.

An Array Implementation of BoundedSet.

Representations.

Implementing Iterator.

Implementing Collection (optional).

The Vector Class.

Multidimensional Arrays.

Array of Arrays.

Tables.

Bit Vectors.

Finite State Machines.

Lists and List Implementations.

Data Lifetime.

The Singleton Design Pattern.

Dynamic Data Allocation and Deallocation.

Objects Referencing Like Objects.

One-way Lists and Single Linking.

Implementing a Simple Singly- linked List.

List Implementation Improvements — Sentinel Nodes & Pre-pointers.

Multiple Iterators Per List.

Iterator Integrity.

Circular Lists.

Two-way Lists and Double Linking.

java.util.list and java.util.LinkedList (optional).

Implementing a List with an Array.

Other Linear Containers (Stacks and Queues).

Stack as a Container ADT.

Sample Stack Applications.

List Implementations of Stack.

An Array Implementation of Stack.

java.util.Stack.

Queue as a Container ADT.

A List Implementation of Queue.

Ring Buffer Implementation of Queue.

Priority Queue.

Maps.

Map ADT.

Implementing Map in a List.

Implementing Map as an Array Table.

Hash Tables.

Implementing Map as a Hash Table.

java.util.Map and java.util.HashMap.

Trees.

Introduction to Trees.

Tree Applications.

Binary Trees.

A Binary Tree and Iterator.

Tree Traversal Algorithms.

Binary Search Trees.

Linked Implementations of Binary Trees.

An Array Implementation of Binary Tree.

General Trees.

SECTION 2. CORE CONCEPTS: REVIEW AND REFERENCE.

Object-oriented Programming.

Objects and Classes.

Java Applications.

Class Diagrams.

Implementing a Design.

Program Execution - Object Diagrams.

Testing and Debugging.

Java Applets.

Software Specifications.

Why Specify?

Class Diagrams.

A Language for Expressing Specifications.

Common Assertion Patterns.

Designing and Programming by Contract.

Preconditions and Postconditions.

Class Specifications.

Inheritance.

Extension and Specialization.

is_a Relationships.

Inheritance in Java.

Scope and Inheritance.

Type Conformance.

Dynamic Dispatch and Polymorphism.

Abstract Classes.

Exceptions.

Robustness and Exceptions.

Exception Handling.

Exception Recovery.

Standard Exceptions.

Specifying with Exceptions.

Files and Streams.

Files.

The Java File Class.

Input and Output.

DataInputStream and DataOutputStream.

Text Files.

Terminal-style I/O (optional).

Persistent Objects.

Recursion.

Recursive Definition.

BNF.

Recursion in Specification Functions.

From Recursive Definition to Method.

Recursive Methods.

Recursive Execution.

Recursion and Repetition.

More Complicated Forms of Recursion.



Back to top

Print this content

In this section:


Author Bios

David D. Riley is chairman of the Department of Computer Science at University of Wisconsin-LaCrosse, where he teaches programming for beginners and for experienced programmers. His areas of specialty include object-oriented software development, software engineering, and computer architecture. He holds a Ph.D. in Computer Science from the University of Iowa.

Professor Riley is the author of four other programming books, including Data Abstraction and Structures using C++ with Mark Headington.

Back to top

Print this content

Pearson Higher Education offers special pricing when you choose to package your text with other student resources. If you're interested in creating a cost-saving package for your students contact your Pearson Higher Education representative.

Back to top