1 / 32

Java Midterm Review: Basic Java, Software Design, Correctness and Efficiency, Inheritance, Lists, Stacks, Queues

This review covers key topics of CMP Sci 187, including Basic Java, Software Design, Correctness and Efficiency, Inheritance, Lists, Stacks, Queues. It also discusses classes, objects, abstract data types, interfaces, exceptions, efficiency analysis, and inheritance.

tathey
Download Presentation

Java Midterm Review: Basic Java, Software Design, Correctness and Efficiency, Inheritance, Lists, Stacks, Queues

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cmp Sci 187:Midterm Review Based on Lecture Notes

  2. What Did We Cover ? • Basic Java (review) • Software Design (Phone Directory) • Correctness and Efficiency: Exceptions, Testing, Efficiency (Big-O) • Inheritance and Class Hierarchies • Lists and the Collection Interface Building Block for Fundamental Data Structures • Stacks: Perhaps the Simplest Data Structure • Queues: The Second Simplest

  3. Classes and Objects • The class is the unit of programming • A Java program is a collection of classes • A class describes objects (instances) • Describes their common characteristics: is a blueprint • Thus all the instances have these same characteristics • These characteristics are: • Data fields for each object • Methods (operations) that do work on the objects

  4. Methods: Referencing and Creating Objects • You can declare reference variables • They reference objects of specified types • Two reference variables can reference the same object • The new operator creates an instance of a class • A constructor executes when a new object is created • Example: String greeting = ″Hello″; value greetings H e l l o String char []

  5. Abstract Data Types, Interfaces • A major goal of software engineering: write reusable code • Abstract data type (ADT): data + methods • A Java interface is a way to specify an ADT • Names, parameters, return types of methods • No indication of how achieved (procedural abstraction) • No representation (data abstraction) • A class may implement an interface • Must provide bodies for all methods of the interface

  6. Java 5 • Generics • ArrayList<String> = new ArrayList<String>(); • Inner Classes • Block Scoping, can make use of fields of outer class • Static nested class • Auto (Un)Boxing • Primitive <-> wrapped object

  7. Exceptions • Categories of program errors • Why you should catch exceptions • The Exception hierarchy • Checked and unchecked exceptions • The try-catch-finally sequence • Throwing an exception: • What it means • How to do it

  8. The Class Throwable • Throwable is the superclass of all exceptions • All exception classes inherit its methods Throwable Error Exception RuntimeException Checked Exception Classes Other Error Classes AssertionError UnChecked Exception Classes

  9. Efficiency • Big-O notation • What it is • How to use it to analyze an algorithm’s efficiency

  10. Efficiency Examples for (int i = 1; i < n; i *= 2) { do something with x[i] } Sequence is 1, 2, 4, 8, ..., ~n. Number of iterations = log2n = log n.

  11. Inheritance • Inheritance and how it facilitates code reuse • How does Java find the “right” method to execute? • (When more than one has the same name ...) • Defining and using abstract classes • Class Object: its methods and how to override them

  12. A Superclass and a Subclass • Consider two classes: Computer and Laptop • A laptop is a kind of computer: therefore a subclass String maker String cpu int ram int disk int getRam() int getDisk() String toString() methods of Computerand all subclasses variables of Computerand all subclasses Computer additional variables for class Laptop (and its subclasses) additional Methods for class Laptop (and its subclasses) double lcd double weight double getlcd() Laptop

  13. Is-a Versus Has-a Relationships • Confusing has-a and is-a leads to misusing inheritance • Model a has-a relationship with an attribute (variable) public class C { ... private B part; ...} • Model an is-a relationship with inheritance • If every C is-a B then model C as a subclass of B • Show this: in C include extends B: public class C extends B { ... }

  14. Class Object • Object is the root of the class hierarchy • Every class has Object as a superclass • All classes inherit the methods of Object • But may override them • boolean equals(Object o) • String toString() • int hashCode() • Object clone()

  15. Inheriting from Interfaces vs Classes • A class can extend 0 or 1 superclass • Called single inheritance • An interface cannot extend a class at all • (Because it is not a class) • A class or interface can implement 0 or more interfaces • Called multiple inheritance

  16. Inheritance • Java does not implement multiple inheritance • Get some of the advantages of multiple inheritance: • Interfaces • Delegation • Sample class hierarchy: drawable shapes

  17. Collection Hierarchy Iterable Collection Queue AbstractCollection List AbstractList AbstractSequential Collection Vector ArrayList LinkedList Stack

  18. Lists (1) • The List interface • Writing an array-based implementation of List • Linked list data structures: • Singly-linked • Doubly-linked • Circular • Implementing List with a linked list • The Iterator interface • hasNext(), next(), remove() • Implementing Iterator for a linked list

  19. Implementing an ArrayList Class • KWArrayList: simple implementation of ArrayList • Physical size of array indicated by data field capacity • Number of data items indicated by the data field size Occupied Available 0 Cap -1 Size

  20. Implementing ArrayList.add(E) Occupied Available 0 Cap -1 Size Occupied Available 0 Cap -1 Size

  21. Implementing ArrayList.add(int,E) Available Occupied Size 0 index

  22. Implementing ArrayList.remove(int) Occupied 0 Size

  23. Node<String> Node<String> Node<String> next = = prev data = null next = = prev data = next = = prev data = Linked List List Node DLList<String> head size=2 String String Element Tom Sue

  24. Implementing DLList With a “Dummy” Node DLList<String> head = Node<String> next = = prev data = null • The “dummy” node is always present • Eliminates null pointer cases • Even for an empty list • Effect is to simplify the code • Helps for singly-linked and non-circular too

  25. Implementing DLList Circularly DLList<String> head = Node<String> Node<String> Node<String> next = = prev data = null next = = prev data = “Tom” next = = prev data = “Sue” Next Prev Prev Next Next Prev

  26. DLList Insertion DLList<String> head = Node<String> Node<String> Node<String> Node<String> next = = prev data = “Pat” next = = prev data = “Sue” next = = prev data = null next = = prev data = “Tom” Next Prev Next Prev Prev Next Next Prev

  27. DLList Removal DLList<String> head = Node<String> Node<String> Node<String> Node<String> next = = prev data = “Pat” next = = prev data = “Sue” next = = prev data = null next = = prev data = “Tom” Next Prev Next Prev Prev Next Next Prev

  28. Stacks • The Stack<E> data type and its four methods: • push(E), pop(), peek(), and empty() • How the Java libraries implement Stack • How to implement Stack using: • An array • A linked list • Using Stack in applications • Finding palindromes • Testing for balanced (properly nested) parentheses • Evaluating arithmetic expressions

  29. PostFix Form 1 + 2 * 3 + 4 Input Stack Output //1 1 1 //2 + + //3 2 2 //4 * * //5 3 3 //6 + === * + //7 + //8 4 4 //9 + //10

  30. Evaluate Postfix 1 2 3 * + 4 + Input Stack //1 1 1 //2 2 2 1 //3 3 3 2 1 //4 * 6 1 //5 + 7 //6 4 4 7 //7 + 11 //8 11 //9

  31. Queue (1) • Representing a waiting line, i.e., queue • FIFO • The methods of the Queue interface: offer, remove, poll, peek, and element • Implement the Queue interface: • Singly-linked list • Circular array (a.k.a., circular buffer) • Doubly-linked list

  32. Queue (2) • Applications of queues: • Simulating physical systems with waiting lines ... • Using Queues and random number generators

More Related