CS 1110 Prelim II: Review Session 1. Exam Info Prelim 1: 7:30–9:00PM, Tuesday, Nov 9 th, Olin 155 (Last name starts with A-Lewis) and Olin 255 (Last name.

Slides:



Advertisements
Similar presentations
SUMMARY: abstract classes and interfaces 1 Make a class abstract so instances of it cannot be created. Make a method abstract so it must be overridden.
Advertisements

1 CS October 2008 Casting About 1.Casting between classes 2.Apparent and real classes. 3.Operator instanceof Procrastination Leave nothing for to-morrow.
CS 1110 Prelim II: Review Session 1. (Fall’07) Question 1 (15 points). Write the body of the following function recursively. /** = n, but with its digits.
CERTIFICATION OBJECTIVES Use Class Members Develop Wrapper Code & Autoboxing Code Determine the Effects of Passing Variables into Methods Recognize when.
CS 106 Introduction to Computer Science I 04 / 11 / 2008 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 02 / 18 / 2008 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 11 / 26 / 2007 Instructor: Michael Eckmann.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Inheritance and Polymorphism.
1 CS100J 13 March 2006 Arrays. Reading: Secs 8.1, 8.2, 8.3. Listen to the following lectures on loops on your Plive CD. They are only 2-3 minutes long,
CS 106 Introduction to Computer Science I 04 / 16 / 2010 Instructor: Michael Eckmann.
1 CS100J 14 March 2006 Arrays. Reading: Secs 8.1, 8.2, 8.3. Listen to the following lectures on loops on your Plive CD. They are only 2-3 minutes long,
CS 106 Introduction to Computer Science I 11 / 15 / 2006 Instructor: Michael Eckmann.
CS 1110 Prelim III: Review Session 1. Info My name: Bruno Abrahao – We have two other TA’s in the room to help you individually Beibei Zhu Suyong Zhao.
Loops – While, Do, For Repetition Statements Introduction to Arrays
CS 106 Introduction to Computer Science I 10 / 04 / 2006 Instructor: Michael Eckmann.
CS100J 17 March 2005 Arrays. Reading: Secs 8.1, 8.2, 8.3. The last Java feature to study in this course Quote for the Day: Computer science has its field.
1 Inheritance and Polymorphism. 2 Motivations Suppose you will define classes to model circles, rectangles, and triangles. These classes have many common.
Arrays, Loops weeks 4-6 (change from syllabus for week 6) Chapter 4.
1 CS100J 27 February 2006 Casting About 1.Casting between classes 2.Apparent and real classes. 3.Operator instanceof Procrastination Leave nothing for.
1 CS100J 25 October 2006 Arrays. Reading: Secs 8.1, 8.2, 8.3. Listen to the following lectures on loops on your Plive CD. They are only 2-3 minutes long,
Multiple Choice Solutions True/False a c b e d   T F.
Announcements  I will discuss the labtest and the written test #2 common mistakes, solution, etc. in the next class  not today as I am still waiting.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
CMSC 202 Generics. Nov Generalized Code One goal of OOP is to provide the ability to write reusable, generalized code. Polymorphic code using.
CSCI 3328 Object Oriented Programming in C# Chapter 5: C# Control Statement – Part II UTPA – Fall
CS 1110 Prelim II: Review Session 1. Introduction My name: Bruno Abrahao – We have three additional TA’s in the room to help you individually Shuang Nam.
CS 1110 Prelim II: Review Session 1. Exam Info Prelim II: 7:30–9:00PM, Tuesday, 8 November, Baker Lab 200, 219, 119 Look at the previous Prelims Arrive.
CS/ENGRD 2110 SPRING 2015 Lecture 6: Consequence of type, casting; function equals 1.
Copyright © 2002, Systems and Computer Engineering, Carleton University a-JavaReview.ppt * Object-Oriented Software Development Unit.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
Inheritance and Polymorphism Daniel Liang, Introduction to Java Programming.
1 CS1110, 8 March 2009 Two topics: elementary graphics (for A5); loops Reading: Sec and chapter 7 on loops. The lectures on the ProgramLive CD can.
CS/ENGRD 2110 FALL 2014 Lecture 6: Consequence of type, casting; function equals 1.
Review – Final Test Chapters 8,10,11. Locate error in following statement try i = Integer.pareseInt(str); catch(NumberFormatException e) System.out.println(“Input.
ArrayList Class An ArrayList is an object that contains a sequence of elements that are ordered by position. An ArrayList is an object that contains a.
Topic 4 Inheritance.
1 CS100J 4 March 2008 Two topics: Turtles; loops Start reading Sec and chapter 7 on loops. The lectures on the ProgramLive CD can be a big help.
1 On (computational) simplicity We are trying to teach not just Java, but how to think about problem solving. Computer science has its field called computational.
CS/ENGRD 2110 FALL 2013 Lecture 4: The class hierarchy; static components 1.
Inheritance (Part 5) Odds and ends 1. Static Methods and Inheritance  there is a significant difference between calling a static method and calling a.
Method Overloading  Methods of the same name can be declared in the same class for different sets of parameters  As the number, types and order of the.
This recitation 1 An interesting point about A3: Using previous methods to avoid work in programming and debugging. How much time did you spend writing.
 In the java programming language, a keyword is one of 50 reserved words which have a predefined meaning in the language; because of this,
SOEN 343 Software Design Section H Fall 2006 Dr Greg Butler
1 CS April 2010 while loops Reading: today: Ch. 7 and ProgramLive sections. For next time: Ch Prelim 2. Thursday evening, 7:30PM Watch.
Pointers in C++. Topics Covered  Introduction to Pointers  Pointers and arrays  Character Pointers, Arrays and Strings  Examples.
Week 10 - Wednesday.  What did we talk about last time?  Method example  Roulette simulation  Types in Java.
1 CS April 2010 while loops Reading: today: Ch. 7 and ProgramLive sections. For next time: Ch Prelim 2. Thursday evening, 7:30PM Watch.
CS/ENGRD 2110 FALL 2015 Lecture 6: Consequence of type, casting; function equals 1.
1 CS1110 Lecture 16, 26 Oct 2010 While-loops Reading for next time: Ch (arrays) Prelim 2: Tu Nov 9 th, 7:30-9pm. Last name A-Lewis: Olin 155 Last.
OOP Basics Classes & Methods (c) IDMS/SQL News
1 CS100J 27 September 2005 Casting About 1.Casting between classes 2.Apparent and real classes. 3.Operator instanceof Procrastination Leave nothing for.
1 CS100J 06 March 2008 Read: Sec and chapter 7 on loops. The lectures on the ProgramLive CD can be a big help. Some anagrams A decimal pointI'm.
JAVA Programming (Session 2) “When you are willing to make sacrifices for a great cause, you will never be alone.” Instructor: รัฐภูมิ เถื่อนถนอม
CORRECTNESS ISSUES AND LOOP INVARIANTS Lecture 8 CS2110 – Fall 2014.
CORRECTNESS ISSUES AND LOOP INVARIANTS Lecture 8 CS2110 – Fall 2015.
1 CS Oct 2008 Arrays. Reading: Secs 8.1, 8.2, 8.3 Listen to the following lectures on loops on your Plive CD. They are only 2-3 minutes long, and.
CS100Lecture 61 Announcements Homework P1 due on Thursday Homework P2 handed out.
CS/ENGRD 2110 SPRING 2016 Lecture 6: Consequence of type, casting; function equals 1.
Correctness issues and Loop invariants
CS100J 21 February 2005 Casting About
Sorry these slides weren’t available last evening!
CS/ENGRD 2110 Fall 2017 Lecture 6: Consequence of type, casting; function equals
CS100J 28 February 2008 Casting About
The fattest knight at King Arthur's round table was Sir Cumference
CS 302 Week 11 Jim Williams, PhD.
CS/ENGRD 2110 Fall 2018 The fattest knight at King Arthur's round table was Sir Cumference. He acquired his size from too much pi. Lecture 6: Consequence.
Chap 2. Identifiers, Keywords, and Types
CS100J 16 Oct, 2007 Assignment A5: loops
CS October 2010 Read: Sec and chapter 7 on loops. The lectures on the ProgramLive CD can be a big help. Some anagrams A decimal point I'm.
Presentation transcript:

CS 1110 Prelim II: Review Session 1

Exam Info Prelim 1: 7:30–9:00PM, Tuesday, Nov 9 th, Olin 155 (Last name starts with A-Lewis) and Olin 255 (Last name starts with Li-Z) Look at the previous Prelims Arrive early! Helps reducing stress

Topics Recursion Class Hierarchy Abstract Arrays Loops Invariants

(Fall’07) Question 1 (15 points). Write the body of the following function recursively. /** = n, but with its digits reversed. Precondition: n >= 0. e.g. n = , value is "027531". e.g. n = 12345, value is "54321". e.g. n = 7, value is "7". e.g. n = 0, value is "0".*/ public static String rev(int n) { } 4 returns a String

Recursive Function 4 Principles 1. Write the precise specification 5

/** = n, but with its digits reversed. Precondition: n >= 0. e.g. n = , value is "027531". e.g. n = 12345, value is "54321". e.g. n = 7, value is "7". e.g. n = 0, value is "0".*/ public static String rev(int n) { // base case: //{n has only one digit} // recursive case: // {n has at least two digits} } 6

Recursive Function 4 Principles 1. Write the precise specification 2. Base Case 7

/** = n, but with its digits reversed. Precondition: n >= 0. e.g. n = , value is "027531". e.g. n = 12345, value is "54321". e.g. n = 7, value is "7". e.g. n = 0, value is "0".*/ public static String rev(int n) { // base case: //{n has only one digit} if (n < 10) // recursive case: // {n has at least two digits} } 8

Let’s review some type issues What is the type of? 42 "" + 42; ‘a’ + ‘b’ ‘b’ + "anana" ‘b’ + ‘a’ + "nana" ‘b’ + (‘a’ + "nana") "" + ‘b’ + ‘a’ + "nana" 9

/** = n, but with its digits reversed. Precondition: n >= 0. e.g. n = , value is "027531". e.g. n = 12345, value is "54321". e.g. n = 7, value is "7". e.g. n = 0, value is "0".*/ public static String rev(int n) { if (n < 10) return "" + n; // recursive case: // {n has at least two digits} } 10 base case: n has 1 digit

Recursive Function 4 Principles 1. Write the precise specification 2. Base Case 3. Progress – Recursive call, the argument is “smaller than” the parameter. Ensures base case will be reached (which terminates the recursion) 4. Recursive case 11

/** = n, but with its digits reversed. Precondition: n >= 0. e.g. n = , value is "027531". e.g. n = 12345, value is "54321". e.g. n = 7, value is "7". e.g. n = 0, value is "0".*/ public static String rev(int n) { if (n < 10) return "" + n; // n has at least 2 digits return (n%10) + rev(n/10); } 12 base case: n has 1 digit recursive case:

/** = the reverse of s.*/ public static String rev(String s) { if (s.length() <= 1) return s; // { s has at least two chars } int k= s.length()-1; return s.charAt(k) + rev(s.substring(1,k)) + s.charAt(0); 13 recursive case base case Do this one using this idea: To reverse a string that contains at least 2 chars, switch first and last ones and reverse the middle.

Class Hierarchy

CS1110 Flix 15

public class Movie { private String title; // title of movie private int length; // length in minutes /** Constructor: document with title t and len minutes long */ public Movie(String t, int len) { title= t; length= len; } /** = title of this Movie */ public String getTitle() { return title; } /** = length of document, in minutes */ public int getLength() { return length; } /** = the popularity: shorter means more popular */ public int popularity() { return 240 – length; } } public class Trailer extends Movie { /** Constructor: a trailer of movie t. Trailers are 1 minute long*/ public Trailer(String t) {super(t, 1);} } public class Documentary extends Movie { private String topic; // … /** Constructor: instance with title t, length n, and topic p */ public Documentary(String t, int n, String p) { super(t, n); topic= p; } /** = "Documentary" */ public String DocumentaryType() { return "Documentary"; } /** = popularity of this instance */ public int popularity() { return getLength(); } } public class Short extends Documentary { /** Constructor: instance with title t, length n, and topic p */ public Short(String t, int n, String p) { super(t, n, p); } /** displays acknowledgement */ public String showAck() {return "We thank our director“;} /** = "Short Doc" */ public String DocumentaryType() { return "Short Doc"; } } 16

(Fall’05) Question 4 (30 points) For each pair of statements below, write the value of d after execution. If the statements lead to an error, write “BAD” and briefly explain the error. (The question continues on the next page.) Documentary e= new Short("Man on Wire”, 5, "Bio"); boolean d= "Short Doc”.equals(e.DocumentaryType()); 17

(Fall’05) Question 4 (30 points) For each pair of statements below, write the value of d after execution. If the statements lead to an error, write “BAD” and briefly explain the error. (The question continues on the next page.) Documentary e= new Short("Man on Wire”, 5, "Bio"); boolean d= "Short Doc”.equals(e.DocumentaryType()); 18 True. method equals here is from the string object

2. Movie c= new Documentary(null, 3, "Carter Peace Center"); int d= c.popularity(); 19

public class Movie { private String title; // title of movie private int length; // length in minutes /** Constructor: document with title t and len minutes long */ public Movie(String t, int len) { title= t; length= len; } /** = title of this Movie */ public String getTitle() { return title; } /** = length of document, in minutes */ public int getLength() { return length; } /** = the popularity: shorter means more popular */ public int popularity() { return 240 – length; } } public class Trailer extends Movie { /** Constructor: a trailer of movie t. Trailers are 1 minute long*/ public Trailer(String t) {super(t, 1);} } public class Documentary extends Movie { private String topic; // … /** Constructor: instance with title t, length n, and topic p */ public Documentary(String t, int n, String p) { super(t, n); topic= p; } /** = "Documentary" */ public String DocumentaryType() { return "Documentary"; } /** = popularity of this instance */ public int popularity() { return getLength(); } } public class Short extends Documentary { /** Constructor: instance with title t, length n, and topic p */ public Short(String t, int n, String p) { super(t, n, p); } /** displays acknowledgement */ public String showAck() {return "We thank our director“;} /** = "Short Doc" */ public String DocumentaryType() { return "Short Doc"; } } 20

21 a0 Animal Cat Cat(String, int) getNoise() toString() getWeight() age Animal(String, int) isOlder(Animal) 5 QUESTION: Which method is called by Animal t= new Cat(“A”,5); t.toString() ? A.the one in the hidden partition for Object of a0 B.the one in partition Animal of a0 C.the one in partition Cat of a0 D.None of these Object Animal Cat the class hierarchy:

2. Movie c= new Documentary(null, 3, "Carter Peace Center"); int d= c.popularity(); What is the apparent class? Answer: 197. method popularity of class Documentary is called Movie DocumentaryTrailer Short 22

3. Short b= (Short)(new Documentary("", 2, "WMD")); int d= b.DocumentaryType().length(); 23

3. Short b= (Short)(new Documentary("", 2, "WMD")); int d= b.DocumentaryType().length(); Movie DocumentaryTrailer Short From documentary, can go (cast) up and back down to documentary. Think what would happen for the call b.showAck() 24

3. Short b= (Short)(new Documentary("", 2, "WMD")); int d= b.DocumentaryType().length(); Movie DocumentaryTrailer Short From documentary, can go (cast) up and back down to documentary. Think what would happen for the call b.showAck(). 25 Answer: BAD

4. Movie a= (Movie)(new Trailer("Harry Potter")); int d= a.popularity(); The cast is legal! Which popularity() method is called? Movie DocumentaryTrailer Short 26

4. Movie a= (Movie)(new Trailer("Harry Potter")); int d= a.popularity(); The cast is legal! Method popularity() from Trailer is called (inherited by Trailer) Movie DocumentaryTrailer Short 27

5. Movie f= new Short("War", 1, "Vietnam"); char d= f.DocumentaryType().charAt(1); The methods that can be called are determined by the apparent type: Only components in the apparent class (and above)!!! 28

5. Movie f= new Short("War", 1, "Vietnam"); char d= f.DocumentaryType().charAt(1); The methods that can be called are determined by the apparent type: Only components in the apparent class (and above)!!! f.DocumentaryType() is illegal. Syntax error. 29 Answer: BAD

Recap: equals(Object ob) In class Object – b.equals(d) is the same as b == d Unless b == null (why?) Most of the time, we want to use equals to compare fields. We need to override this method for this purpose 30

(Fall’05) Question 4 (24 points). (a) Write an instance method equals(Object obj) for class Documentary public class Documentary extends Movie { /** = "obj is a Documentary with the same values in its fields as this Documentary" */ public boolean equals(Object obj) { } 31

public class Documentary extends Movie { /** = "obj is a Documentary with the same values in its fields as this Documentary" */ public boolean equals(Object obj) { if ( !(obj instanceof Documentary) { } 32

public class Documentary extends Movie { /** = "obj is a Documentary with the same values in its fields as this Documentary" */ public boolean equals(Object obj) { if ( !(obj instanceof Documentary) { return false; } 33

public class Documentary extends Movie { /** = "obj is a Documentary with the same values in its fields as this Documentary" */ public boolean equals(Object obj) { if ( !(obj instanceof Documentary) { return false; } Documentary docObj= (Documentary)obj; } 34 Don’t forget to cast. This is a legal cast. (Why?)

public class Documentary extends Movie { /** = "obj is a Documentary with the same values in its fields as this Documentary" */ public boolean equals(Object obj) { if (!(obj instanceof Documentary) { return false; } Documentary docObj= (Documentary)obj; return getTitle().equals(docObj.getTitle()) && getLength() == docObj.getLength() && topic.equals(docObj.topic); } 35

Abstract Classes

Let’s capture the essence of animals /** representation of an animal */ public class Animal { private int birthDate; // animal’s birth date private String predator; // predator of this animal private String prey; // class of animals this hunts … // move the animal to direction… public void move(…){ … } // make the animal eat… public void eat (…){ … } … } 37

Problems Animal is an abstract concept – Creating an abstract animal doesn’t make sense in the real world – Dogs, cats, snakes, birds, lizards, all of which are animals, must have a way to eat so as to get energy to move However… – Class Animal allows us to create a UFA (unidentified flying animal), i.e. instance of Animal – If we extend the class to create a real animal, nothing prevent us from creating a horse that doesn’t move or eat. 38

Solutions How to prevent one from creating a UFA? – Make class Animal abstract Class cannot be instantiated – How? Put in keyword abstract How to prevent creation paralyzed dogs or starving sharks? – Make the methods move and eat abstract Method must be overridden – How? Put in keyword abstract and replace the body with ";" 39

Making things abstract /** representation of an animal */ public abstract class Animal{ private int birthDate; // birth date private String predator; // animal’s predator private String prey; // What animal hunts … // Move the animal move in direction … public abstract void move(…); // Make the animal eat… public abstract void eat (…); } 40

Arrays

The type of the array: int[] String[] Integer[] 42 Array: object Can hold a fixed number of values of the same type a0 Basic form of a declaration: int[] x Does not create array, it only declares x. x’s initial value is null Elements of array are numbered: 0, 1, 2, …, x.length–1; x null int[] Array creation: new int[4] Assignment: int[] t= new int[4] t a0 int[]

43 4 Array: length Array length: an instance field of the array. This is why we write x.length, not x.length( ) a Length field is final: cannot be changed. Length remains the same once the array has been created. length The length is not part of the array type. The type is int[] An array variable can be assigned arrays of different lengths. int[] x; x= new int[4]; x= new int[32];

44 Arrays int[] x ; x null int[] a0 x= new int[4]; Create array object of length 4, store its name in x x a0 int[] a Assign 2*x[0], i.e. -8, to x[3] Assign 6 to x[2] int k= 3; x[k]= 2* x[0]; x[k-1]= 6; x[2]= 5; x[0]= -4; a Assign 5 to array element 2 and -4 to array element 0 x[2] is a reference to element number 2 of array x

45 Difference between Vector and array Declaration: int[] a; Vector v; Elements of a: int values Elements of v: any Objects Array always has n elements Number of elements can change Creation: a= new int[n]; v= new Vector(); Reference: a[e] v.get(e) Change element: a[e]= e1; v.set(e, e1); Array locations a[0], a[1], … in successive locations in memory. Access takes same time no matter which one you reference. Elements all the same type (a primitive type or class type) Can’t tell how Vectors are stored in memory. Referencing and changing elements done through method calls Elements of any Object type (but not a primitive type). Casting may be necessary when an element is retrieved.

46 Array initializers Instead of int[] c= new int[5]; c[0]= 5; c[1]= 4; c[2]= 7; c[3]= 6; c[4]= 5; Use an array initializer: int[] c= new int[] {5, 4, 7, 6, 5}; a0 array initializer: values must have the same type, in this case, int. Length of the array is the number of values in the list

47 Question 3 (20 points) a) Consider the program segment below. Draw all variables (with their respective values) and objects created by execution of this program segment. int[] z= new int[] {3, 2, 1}; String[] s= new String[2]; z= new int[2]; b) Give an expression to reference the second element of z. c) What is the result of the expression s[1].length() after the execution of the code above? d) Give the declaration of a single variable v to store the values “1” and “Hi” at the same time.

48 Execution of the for-loop The for-loop: for (int i= 2; i <= 200; i= i +1) { x= x + i*i; } loop counter: i initialization: int i= 2; loop condition: i <= 200; increment: i= i + 1 repetend or body: { x= x + i; } Called a “flow chart” To execute the for-loop. 1.Execute initialization. 2.If loop condition false, terminate execution. 3.Execute repetend. 4.Execute increment, repeat from step 2. i= 2; i <= 200 i= i +1; true false x= x + i*i;

49 Note on ranges contains 2, 3, 4, 5. It contains 5+1 – 2 = 4 values In the notation m..n, we require always, without saying it, that m <= n + 1. If m = n + 1, the range has 0 values contains 2, 3, 4. It contains 4+1 – 2 = 4 values 2..3 contains 2, 3. It contains 3+1 – 2 = 2 values 2..2 contains 2. It contains 2+1 – 2 = 1 values The number of values in m..n is n+1 – m contains.It contains 1+1 – 2 = 0 values 3..1 contains. This is an invalid range!

Invariants Assertions: true-false statements (comments) asserting your beliefs about (the current state of) your program. // x is the sum of 1..n <- asserts a specific relationship between x and n Invariant: an assertion about the variables that is true before and after each iteration (execution of the repetend). 50

51 Finding an invariant // Store in double variable v the sum // 1/1 + 1/2 + 1/3 + 1/4 + 1/5 + … + 1/n for (int k= 1; k <= n; k= k +1) { Process k; } // v =1/1 + 1/2 + … + 1/n v= 0; // invariant: v = sum of 1/i for i in 1..k-1 Command to do something and equivalent postcondition What is the invariant? … k-1 k k+1 … n The increment is executed after the repeted and before the next iteration

Questions