Cmp Sci 187: Midterm Review Based on Lecture Notes.
-
date post
21-Dec-2015 -
Category
Documents
-
view
213 -
download
0
Transcript of Cmp Sci 187: Midterm Review Based on Lecture Notes.
![Page 1: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/1.jpg)
Cmp Sci 187:Midterm Review
Based on Lecture Notes
![Page 2: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/2.jpg)
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
![Page 3: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/3.jpg)
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
![Page 4: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/4.jpg)
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″;
valuegreetings H e l l oString char []
![Page 5: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/5.jpg)
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
![Page 6: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/6.jpg)
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
![Page 7: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/7.jpg)
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
![Page 8: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/8.jpg)
8
The Class Throwable• Throwable is the superclass of all exceptions• All exception classes inherit its methods
Throwable
Error Exception
AssertionErrorRuntimeExceptionOther Error
ClassesCheckedExceptionClasses
UnCheckedExceptionClasses
![Page 9: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/9.jpg)
9
Efficiency
• Big-O notation• What it is• How to use it to analyze an algorithm’s efficiency
![Page 10: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/10.jpg)
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.
![Page 11: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/11.jpg)
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
![Page 12: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/12.jpg)
12
A Superclass and a Subclass
• Consider two classes: Computer and Laptop• A laptop is a kind of computer: therefore a subclass
variables of Computer and all subclasses
additional variables for class Laptop
(and its subclasses)
methods of Computer and all subclasses
additional Methods for class Laptop
(and its subclasses)
String maker String cpu int ram int disk
int getRam() int getDisk() String toString()
double lcd double weight
double getlcd()
Laptop
Computer
![Page 13: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/13.jpg)
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 { ... }
![Page 14: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/14.jpg)
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()
![Page 15: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/15.jpg)
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
![Page 16: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/16.jpg)
16
Inheritance
• Java does not implement multiple inheritance• Get some of the advantages of multiple inheritance:
• Interfaces• Delegation
• Sample class hierarchy: drawable shapes
![Page 17: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/17.jpg)
17
Collection Hierarchy
Collection
Queue
List
AbstractList
AbstractCollection
Iterable
AbstractSequentialCollection
Vector ArrayList
StackLinkedList
![Page 18: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/18.jpg)
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
![Page 19: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/19.jpg)
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
0 Size Cap -1
Occupied Available
![Page 20: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/20.jpg)
20
Implementing ArrayList.add(E)
0 Size Cap -1
Occupied Available
0 Size Cap -1
Occupied Available
![Page 21: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/21.jpg)
21
Implementing ArrayList.add(int,E)
0 Size
Occupied Available
index
![Page 22: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/22.jpg)
22
Implementing ArrayList.remove(int)
0 Size
Occupied
![Page 23: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/23.jpg)
23
Linked List
next = = prevdata = null
Node<String>
next = = prevdata =
Node<String>
next = = prevdata =
Node<String>
Tom Sue
String String
DLList<String>
head size=2
List Node
Element
![Page 24: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/24.jpg)
24
Implementing DLList With a “Dummy” Node
DLList<String>
head =
next = = prevdata = null
Node<String>
• 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
![Page 25: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/25.jpg)
25
Implementing DLList Circularly
DLList<String>
head = next = = prevdata = null
Node<String>
next = = prevdata = “Tom”
Node<String>
next = = prevdata = “Sue”
Node<String>
Next
Prev
Next
Next
Prev
Prev
![Page 26: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/26.jpg)
26
DLList Insertion
DLList<String>
head = next = = prevdata = null
Node<String>
next = = prevdata = “Tom”
Node<String>
next = = prevdata = “Sue”
Node<String>
Next
Prev
Next
Next Prev
Prev
next = = prevdata = “Pat”
Node<String>
Prev
Next
![Page 27: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/27.jpg)
27
DLList Removal
DLList<String>
head = next = = prevdata = null
Node<String>
next = = prevdata = “Tom”
Node<String>
next = = prevdata = “Sue”
Node<String>
Next
Prev
Next
Next Prev
Prev
next = = prevdata = “Pat”
Node<String>
Prev
Next
![Page 28: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/28.jpg)
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
![Page 29: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/29.jpg)
29
PostFix Form
1 + 2 * 3 + 4
Input Stack Output //11 1 //2+ + //32 2 //4* * //53 3 //6+ === * + //7 + //84 4 //9 + //10
![Page 30: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/30.jpg)
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 //64 4 7 //7+ 11 //8
11 //9
![Page 31: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/31.jpg)
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
![Page 32: Cmp Sci 187: Midterm Review Based on Lecture Notes.](https://reader035.fdocuments.us/reader035/viewer/2022062714/56649d6c5503460f94a4cac9/html5/thumbnails/32.jpg)
32
Queue (2)
• Applications of queues:• Simulating physical systems with waiting lines ...• Using Queues and random number generators