Presentation is loading. Please wait.

Presentation is loading. Please wait.

Final Review Recitation – 05/01/2009 CS 180 Department of Computer Science, Purdue University.

Similar presentations


Presentation on theme: "Final Review Recitation – 05/01/2009 CS 180 Department of Computer Science, Purdue University."— Presentation transcript:

1 Final Review Recitation – 05/01/2009 CS 180 Department of Computer Science, Purdue University

2 Final Exam Overview Time and place 10:20am on May 6, at SMTH 108 Types of questions 30 multiple choice questions 5 programming questions on Objects, inheritance, exception, file I/O, recursion Cover all chapters, with a focus on later chapters that haven’t been tested FYI: old exams available on course website Fall 2006 exam I, II, and final TA evaluation online, open until 11pm, May 2

3 Object-Oriented Design Methods  Extract small parts of a program and calculations which will be performed multiple times Encapsulation Classes, Objects, and Polymorphism  Covered in more detail later

4 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 Primitives Numeric: int, double, float, double, … Character: char Logic: boolean They are NOT Objects  Can be compared with ==, !=, =, etc.  Cannot call methods Explicit type-casting double  float  long  int  short  byte Implicit type-casting byte  short  int  long  float  double

5 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 5 Objects Objects are handled with a reference address Two objects should be compared with the.equals() method  Do NOT use == to compare objects Assignment operators assign references – they do not make separate copies NullPointerException – always make sure your object is not null before calling methods with it Constructors should be used to initialize class variables Calling methods  Need object  Static methods Can use class name Cannot access non-static methods/variables inside Keyword: this

6 Strings Strings are a type of object  Also should NOT be compared with == Can be concatenated with the ‘+’ operator Important String functions  charAt  indexOf  substring  length

7 Selection Modifies the flow of control of the program if/else construct  Must have a boolean condition to check against  { } are important, but not necessary for one line statements  else branch is optional  Don’t be confused by indentation.. switch construct  Multi-way branch which makes a decision based on a char, byte, short, or int  default case  break statement

8 Repetition for while do-while Pitfalls  Off-by-one errors  Infinite looping  Different control flows

9 GUI and Event-driven Programming Common classes  JFrame  JPanel  JLabel  JMenu, JMenuItem  JButton Layouts

10 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 10 Arrays Linear collection of data  Can hold primitives or Objects, but must all be of the same type length tells the number of elements in the array  Member, not a method Indexed from 0 to length – 1 Protect against ArrayIndexOutOfBoundsException Can create multiple dimension arrays Usually use for-loops to iterate through members of the array

11 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 11 Exceptions and Assertions Use a try/catch/finally block to handle exceptions thrown by a program Use throw statement to notify caller of an error Exception types and hierarchy. Examples of RunTimeHierarchy? User defined exceptions must extend Exception Use assertions to detect internal errors. Use exceptions to notify the client programmer of the misuse of our class. When assertions fail, an AssertionError is thrown.

12 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 12 File I/O Many classes  FileInputStream, DataInputStream, FileReader, BufferedReader, Scanner, PrintWriter, DataOutputStream, etc.  ObjectInputStream, ObjectOutputStream Used to write objects to a file Any object serialized by a stream must implement Serializable Which classes are used to write text and which are used to write binary? Always close files you open

13 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 13 Inheritance and Polymorphism Differences between abstract classes and interfaces Polymorphism can simplify code Extend specific classes from general classes Use protected keyword to protect information and methods No need to rewrite methods which are the same as in a parent class Super constructor is always called as the first line of constructor

14 ©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 14 Dynamic Data Structures and Generics Inner classes Lists  Node class  Circularly linked lists  Doubly linked lists Java Collections  Vector  ArrayList  LinkedList

15 Recursion Think about what the sub-problem is Only be concerned with the current level of recursion Two necessary cases  Base case  Recursive case

16 Review ends here. Now time for exercises!

17 What is the output? public class A { private int x; public static int doStuff() { x = 100; x /= 3; x++; return x; } public static void main(String[] args) { System.out.println(A.doStuff()); }

18 What is the output? public class A { private int x; public static int doStuff() { x = 100; x /= 3; x++; return x; } public static void main(String[] args) { System.out.println(A.doStuff()); } Because this method is static, it does not have access to non-static class variables. This code will Not compile because x is non-static.

19 Types Given the following classes, which of the following declarations are valid? public interface I {…} public interface J extends I {…} public interface K {…} public abstract class A {…} public class B extends A {…} implements J, K public class C extends B {…} public class D extends A {…} implements I A a = new B(); B b = new J(); C c = new B(); B b = new C(); I i = new A(); I i = new B(); I i = new D(); K k = new C();

20 Types Given the following classes, which of the following declarations are valid? public interface I {…} public interface J extends I {…} public interface K {…} public abstract class A {…} public class B extends A {…} implements J, K public class C extends B {…} public class D extends A {…} implements I A a = new B();valid – B is a subclass of A B b = new J();invalid – cannot instantiate interfaces C c = new B();invalid – not all B is the superclass of C B b = new C();valid – C is a subclass of B I i = new A();invalid – A does not implement I I i = new B();valid – A implements J, and J is a type of I I i = new D();valid – D impelements I K k = new C();valid – C extends B which implements K

21 Arrays Write a method which takes in an array of integers and replaces the values of the array with a value c i. Define c i to be the sum of the numbers in indices 0…i in the incoming array. public void cumulativeArray(int[] a) { }

22 Arrays Write a method which takes in an array of integers and replaces the values of the array with a value c i. Define c i to be the sum of the numbers in indices 0…i in the incoming array. public void cumulativeArray(int[] a) { if (a.length <= 1) return; for (int k=1; k<a.length; k++) a[k] = a[k] + a[k-1]; }

23 Linked Lists Given an appropriate (integer) Node class, write a recursive method which sums up the numbers in the list. public int sumList(Node l) { }

24 Linked Lists Given an appropriate (integer) Node class, write a recursive method which sums up the numbers in the list. public int sumList(Node l) { if (l == null) retrurn 0; return l.num + sumList(l.next); }

25 Strings Write a recursive method reverse which takes in a String and returns the reverse of the String. You may NOT use the reverse method in the String class, however you may use other methods available to you. public String reverseString(String s) { }

26 Strings Write a recursive method reverse which takes in a String and returns the reverse of the String. You may NOT use the reverse method in the String class, however you may use other methods available to you. public String reverseString(String s) { if (s == null || s.length() <= 1) return s; if (s.length() == 2) return “” + s.charAt(1) + s.charAt(0); returns.charAt(s.length()-1) + reverseString(s.substring(1, s.length()-1)) + s.charAt(0); }

27 Linked Lists Given an appropriate Node class, write a method which removes every other node from the list, starting with the second. public Node removeEveryOther(Node l) { }

28 Linked Lists Given an appropriate Node class, write a method which removes every other node from the list, starting with the second. public Node removeEveryOther(Node l) { Node l1 = l; while (l1 != null && l1.next != null) { l1.next = l1.next.next; l1 = l1.next; } return l; }

29 Linked Lists Now write the same method, but recursively. public Node removeEveryOther(Node l) { }

30 Linked Lists Now write the same method, but recursively. public Node removeEveryOther(Node l) { // base case if (l == null || l.next == null) return l; // recursive case Node l1 = removeEveryOther(l.next.next); l.next = l1; return l; }

31 Recursion Given an appropriate node class, write a recursive method which reverses a singly linked list. public Node reverse(Node l) { }

32 Recursion Given an appropriate node class, write a recursive method which reverses a singly linked list. public Node reverse(Node l) { if (l == null || l.next == null) return l; Node restreversed = reverse(l.next); l.next.next = l; l.next = null; return restreversed; }

33 Linked Lists Given an appropriate Node class, one way to detect a cycle in your list is by moving two pointers around the list, one one index at a time and the other two indices at a time. Write a method which determines whether or not there is a cycle in a list. public boolean hasCycle(Node l) { }

34 Linked Lists Given an appropriate Node class, one way to detect a cycle in your list is by moving two pointers around the list, one one index at a time and the other two indices at a time. Write a method which determines whether or not there is a cycle in a list. public boolean hasCycle(Node l) { Node l1 = l; Node l2 = l; while (l1 != null && l2 != null & l1.next != null && l2.next != null && l2.next.next != null) { l1 = l1.next; l2 = l2.next.next; if (l1 == l2) return true; } return false; }

35 Finally… Thanks for your hard work this semester! Good luck with your CS180 final and all other finals and projects! Have a wonderful summer!!


Download ppt "Final Review Recitation – 05/01/2009 CS 180 Department of Computer Science, Purdue University."

Similar presentations


Ads by Google