Lecture 20 SYS-1S22 / MTH-1A66. Sorting Objects. Stuart Gibson S01.09A. Sorting Arrays of Objects

Size: px
Start display at page:

Download "Lecture 20 SYS-1S22 / MTH-1A66. Sorting Objects. Stuart Gibson S01.09A. Sorting Arrays of Objects"

Transcription

1 Lecture 20 SYS-1S22 / MTH-1A66 Sorting Objects Stuart Gibson sg@sys.uea.ac.uk S01.09A 1 Sorting Arrays of Objects It is common that we want to sort arrays of objects It is obvious what we mean by one integer being less than another. It is not necessarily obvious what we mean by one object being less than another. Before we can sort an array of objects, we have to define what it means for one object to be: less than greater than or equal to another object. 2

2 compareto Method The general form of a compareto method is: public int compareto (Object that) if (/*Define this greater than that /*) return 1; if (/*Define this less than that /*) return -1; else // must be equal return 0; The return type is an int. The argument passed in is any Java Object. 3 compareto should compareto Method return a positive number if this is greater than that. return a negative number if this is less than that. return 0 if this is equal to that. Note: do not rely on the result being -1 or 1! To call the compareto method of an object is the same as calling any method of an object, we use the dot operator. For example: int a = object1.compareto(object2); 4

3 String Class compareto Method String objects have a compareto method built in One String is said to be less than another if it comes before it Alphabetically, thus: AAA is less than ABB CC is less than CCDDDD BB is less than BBA Is the String compareto method case sensitive? What would the ordering of aaa and AAA be? Hint: Remember that a String is an array of characters and characters are really numbers. 5 For example: String Class compareto Method String name1 = new String( Alice ); String name2 = new String( Bob ); String name3 = new String( Bob ); int a,b,c; a = name1.compareto(name2); b = name2.compareto(name3); c = name3.compareto(name1); System.out.println( a: +a+ b: +b+ c: +c); a: -1 b: 0 c: 1 6

4 a: -1 b: 0 c: 1 String Class compareto Method a is -1 therefore name1 less than name2 Alice less than Bob b is 0 therefore name2 equal to name3 Bob equal to Bob c is 1 therefore name3 greater than name1 Bob greater than Alice 7 For example: String Class compareto Method if(name3.compareto("bobby")!= 0) System.out.println( Bob is not equal to Bobby"); if(name3.compareto("bob") == 0) System.out.println( Bob is equal to Bob"); if("robert".compareto("bob") > 0) System.out.println("Robert is greater than Bob!"); Bob is not equal to Bobby Bob is equal to Bob Robert is greater than Bob 8

5 String Class compareto Method What happens when we change cases? String name = fred ; if(name.compareto( Fred )!= 0) System.out.println(name+ is not equal Fred ); if(name.compareto( Fred ) > 0) System.out.println(name+ is greater than Fred ); if(name.compareto( Fred ) < 0) System.out.println(name+ is less than Fred ); fred is not equal to Fred fred is greater than Fred 9 String Class compareto Method The String compareto method works by comparing characters of the array, starting from index 0 until it finds a difference. Remember that characters are compared by their numeric (ASCII / Unicode) value. So the numeric representations are: F is 70 whereas f is 105 Hence f is greater than F and therefore.. fred is greater than Fred. Is there a way to compare Strings ignoring case? 10

6 String Class comparetoignorecase Method The String comparetoignorecase works by comparing the characters of the String, but first converts them to lowercase. String name = fred ; if(name.comparetoignorecase( Fred )!= 0) System.out.println(name+ is not equal Fred ); else System.out.println(name+ is equal to Fred ); fred is equal to Fred 11 Comparing Student Objects If we define a Student object as: public class Student private String forename; private String surname; private Date dob; private String school; private int year; // Constructor that takes three arguments public Student(String fn, String sn, Date db) forename = fn; sn = surname; dob = new Date(db); // other methods here 12

7 Comparing Student Objects (by name) Our first attempt would be to compare them using surname // in Student class public int compareto(student that) return surname.comparetoignorecase(that.surname); What happens if the surnames are the same, we would to compare first names as well: public int compareto(student that) int c = surname.comparetoignorecase(that.surname); if (c == 0) c = forename.comparetoignorecase(that.forename); return c; 13 Comparing Student Objects (by dob) It is important to note that we can not have two compareto methods with the same method signature, so we have to alter the compareto method each time. It is up to the person that designs the class how they want to sort the Objects using the compareto method. We might want to sort Student objects by date of birth (dob), and hence ALTER the compareto method to be: // in Student class public int compareto(student that) return dob.compareto(that.dob); This assumes we have written a compareto method for the class Date. 14

8 Comparing Date Objects What if we had stored the date as a String? String date1 = "12/02/2003"; String date2 = "12/03/1977"; if (date1.compareto(date2) > 0) System.out.println(date1+ is after +date2); else if (date1.compareto(date2) == 0) System.out.println(date1+ is the same as +date2); else System.out.println(date1+ is before +date2); 12/02/2003 is before 12/03/1977 Obviously this is wrong, so it is better to define a Date class: public class Date private int day; private int month; private int year; 15 Comparing Date Objects // in Date class public int compareto(date other) if(year > other.year) return 1; else if (year < other.year) return -1; else if (month > other.month) return 1; else if (month < other.month) return -1; else if (day > other.day) return 1; else if (day < other.day) return -1; else return 0; 16

9 Sorting an Array of Objects Suppose we want to write a selection sort method for the Sort class to sort an array of Student Objects public class Sort // see Lecture 19 public static void selectionsort(int[] t) // implementation here // overload the selectionsort method public static void selectionsort(student[] t) // implementation here 17 Selection Sorting an Array of Student objects The algorithm to perform the sort is identical: Task: Selection Sort: Sorts Array T[0 n-1] into ascending order for i = 0 to n-2 loop find position of smallest element in T[i..n-1] pos = i min = T[i] for j=i+1 to n-1 loop if T[j] < min pos = j min = T[j] swap element at smallest position with element at i T[pos] = T[i] T[i] = min 18

10 Selection sort previous implementation for (int i=0; i<t.length-1; i++) pos = i; for(int j=i+1; j< t.length; j++) if(t[j] < t[pos]) pos = j; if (pos!= i) temp = t[pos]; t[pos] = t[i]; t[i] = temp; 19 Selection Sorting an Array of Student objects The two key differences in the implementation are that we can not compare Student objects using the < operator in the line: if(t[j] < t[pos]) we need to replace it to use the compareto method: if(t[j].compareto(t[pos]) < 0) In the swap routine, temp is no longer an int but should be a Student reference instead so the line: int temp; becomes Student temp; 20

11 Selection sort Student implementation public static void selectionsort(student[] t) int pos; Student temp; for (int i=0; i<t.length-1; i++) pos = i; for(int j=i+1; j< t.length; j++) if(t[j].compareto(t[pos]) < 0) pos = j; if (pos!= i) temp = t[pos]; t[pos] = t[i]; t[i] = temp; 21 Some more on compareto So far for all our objects we have created the compareto method in the following format: public int compareto (ourtype that) but at the start we said that it had the general form: public int compareto(object that) Why should it be in that form? The code for both our selectionsort routines is very similar. It is only the type of object that is changing. Repeating this code for every possible object is very tedious! Is there another way? 22

12 Selection sort Generic case??? Why not try and make a generic case for all objects? We know that all user defined objects are java Objects so why not try making the selectionsort like this: public static void selectionsort(object[] t) Object temp; // implementation here This seems great in theory but what happens at the line: if(t[j].compareto(t[pos]) < 0) 23 Selection sort Generic case??? According to our method declaration t[j] is a Java Object, so the compiler looks for a compareto method in the Java Object class. Check API listing for Object no compareto! Or try compiling our code and we get the following error: Sort.java:59: cannot resolve symbol symbol : method compareto (java.lang.object) location: class java.lang.object if(t[j].compareto(t[pos]) < 0) ^ 1 error Finished 24

13 Selection sort Generic case??? The only way we know of solving this would be to cast the Object into a specific object type like a Student. However we would need to cast the java Object for every type of object we want to sort. So we are back to the same problem as before. What we need is a way of making our object belong to two different categories, primarily we want it to be a Student object, but for generic algorithms we want it to be a comparable object. We say that we want the Student object to be polymorphic, i.e. have many forms. So how could we define each of these forms or categories? 25 One Object - Many Categories For example, depending upon what the situation is, objects belong to different categories. As a species I would be classed as Human When questioned about my job, I would be classed as a student When playing football I would be classed as a footballer. I can be placed in a certain category because I function in a certain way at a certain time. For example to class myself as a footballer, I must have the ability to play football. 26

14 One Object - Many Categories In Java we can force an object to belong to another category by ensuring that is has certain behaviours. Remember that in Java behaviours are modelled by methods! Therefore if we want to ensure that an object can be treated as a certain type, we must ensure that it conforms to a set functionality by containing certain methods. This functionality is enforced by specifying a set of methods that must be implemented in the object. This specification is provided by an interface. 27 Interfaces An interface has abstract methods. An abstract method is a method that does not have an implementation. An abstract method does not contain a method body, only a method header, after this it ends in a semi-colon. public interface Footballer public void shot(); public void dribble(); public void pass(); 28

15 Interfaces A class is said to implement an interface. If a class implements an interface, it must define each of the abstract methods in the interface. For example if we want our Student object to be capable of being categorised / used as a Footballer it MUST implement the Footballer interface It MUST define all of the abstract methods from the Footballer interface. 29 Interfaces public class Student implements Footballer // Student variables and methods public void shoot() // implementation here public void dribble() // implementation here public void pass() // implementation here 30

16 Comparable Interface So we require the Student object to be a comparable object, i.e. something we can compare in a generic algorithm. Java provides a Comparable interface! The Comparable interface contains just one abstract method, the compareto method: public interface Comparable public int compareto (Object o); Therefore any class implementing the Comparable interface must define a compareto method. 31 Sorting an array of Comparable objects public static void selectionsort( Comparable[] t ) int pos; Comparable temp; for (int i=0; i<t.length-1; i++) pos = i; for(int j=i+1; j< t.length; j++) if(t[j].compareto(t[pos]) < 0) pos = j; if (pos!= i) temp = t[pos]; t[pos] = t[i]; t[i] = temp; 32

17 Comparable sort of Student Objects So we have to change Student class so that it becomes: public class Student implements Comparable Then we can remove the selectionsort(student[] t) method from the Sort class file, because we can now use the selectionsort(comparable[] t) method to sort the Student objects. There is one slight problem! If we want to sort an array of Student objects: Student[] sys1s22 = new Student[35]; // enter data into array // then sort the data Sort.selectionSort(sys1S22); 33 Comparable sort of Student Objects We get the following compilation error: Student.java:3: Student should be declared abstract; it does not define compareto(java.lang.object) in Student public class Student implements Comparable ^ 1 error Finished This is because our compareto method was declared as follows: public int compareto(student that) Not the required form: public int compareto(object that) 34

18 Student Objects compareto method We can rewrite it as follows: // in Student class public int compareto(object that) // cast object to a student object then // compare as normal. Student s = (Student)that; int c = surname.comparetoignorecase(s.surname); if (c == 0) c = forename.comparetoignorecase(s.forename); return c; 35 Comparable sort in practice // create an array of students Student[] bedrockhigh = new Student[3]; bedrockhigh[0] = new Student( Fred, Flintstone, BRH,4); bedrockhigh[1] = new Student( Barney, Rubble, BRH,2); bedrockhigh[2] = new Student( Wilma, Flintstone, BRH,1); //print out array before sorting System.out.println( BEFORE SORTING ); for (int i = 0; i < bedrockhigh.length; i++) System.out.println(bedrockHigh[i]); //sort array using Comparable sort Sort.selectionSort(bedrockHigh); // print out array after sorting System.out.println(); System.out.println( AFTER SORTING ); for (int i = 0; i < bedrockhigh.length; i++) System.out.println(bedrockHigh[i]); 36

19 Comparable sort in practice BEFORE SORTING Flintstone, Fred : BRH 4 Rubble, Barney : BRH 2 Flintstone, Wilma : BRH 1 AFTER SORTING Flintstone, Fred : BRH 4 Flintstone, Wilma : BRH 1 Rubble, Barney : BRH 2 37 Questions Ok, now we can sort an array of any objects as long as we implement the Comparable interface and in doing so declare a compareto method, but What happens if we want to sort the array using a different way to that which we specified in our compareto method? We know we can t have more than one compareto, so ideally it should provide a natural ordering. However we can sort the array using different fields by creating a class that implements the Comparator interface How do we sort an ArrayList? Surely Java has already implemented sorting? More next lecture. 38

Object-Oriented Programming

Object-Oriented Programming Object-Oriented Programming Interfaces Interfaces In object-oriented programs using Java, we use interfaces to specify a set of behaviors that a number of object classes should have in common. In Java,

More information

ECE 122. Engineering Problem Solving with Java

ECE 122. Engineering Problem Solving with Java ECE 122 Engineering Problem Solving with Java Lecture 8 More Conditional Statements Outline Problem: How do I make choices in my Java program? Understanding conditional statements Remember: Boolean logic

More information

ECE 122. Engineering Problem Solving with Java

ECE 122. Engineering Problem Solving with Java ECE 122 Engineering Problem Solving with Java Lecture 8 More Conditional Statements Outline Problem: How do I make choices in my Java program? Understanding conditional statements Remember: Boolean logic

More information

ITI Introduction to Computing II

ITI Introduction to Computing II ITI 1121. Introduction to Computing II Marcel Turcotte School of Electrical Engineering and Computer Science Interface Abstract data types Version of January 26, 2013 Abstract These lecture notes are meant

More information

Unit 10: Sorting/Searching/Recursion

Unit 10: Sorting/Searching/Recursion Unit 10: Sorting/Searching/Recursion Notes AP CS A Searching. Here are two typical algorithms for searching a collection of items (which for us means an array or a list). A Linear Search starts at the

More information

Overview. ITI Introduction to Computing II. Interface 1. Problem 1. Problem 1: Array sorting. Problem 1: Array sorting. Problem 1: Array sorting

Overview. ITI Introduction to Computing II. Interface 1. Problem 1. Problem 1: Array sorting. Problem 1: Array sorting. Problem 1: Array sorting Overview ITI 1121. Introduction to Computing II Rafael Falcon and Marcel Turcotte (with contributions from R. Holte) Electrical Engineering and Computer Science University of Ottawa Interface Abstract

More information

QUEEN MARY, UNIVERSITY OF LONDON DCS128 ALGORITHMS AND DATA STRUCTURES Class Test Monday 27 th March

QUEEN MARY, UNIVERSITY OF LONDON DCS128 ALGORITHMS AND DATA STRUCTURES Class Test Monday 27 th March QUEEN MARY, UNIVERSITY OF LONDON DCS128 ALGORITHMS AND DATA STRUCTURES Class Test Monday 27 th March 2006 11.05-12.35 Please fill in your Examination Number here: Student Number here: MODEL ANSWERS All

More information

G51PRG: Introduction to Programming Second semester

G51PRG: Introduction to Programming Second semester G51PRG: Introduction to Programming Second semester Lecture 7 Natasha Alechina School of Computer Science & IT nza@cs.nott.ac.uk Previous lecture es interfaces collections hierarchy in Java Lecture 7:

More information

Logical Operators and switch

Logical Operators and switch Lecture 5 Relational and Equivalence Operators SYS-1S22 / MTH-1A66 Logical Operators and switch Stuart Gibson sg@sys.uea.ac.uk S01.09A 1 Relational Operator Meaning < Less than > Greater than

More information

SCHOOL OF COMPUTING, ENGINEERING AND MATHEMATICS SEMESTER 1 EXAMINATIONS 2015/2016 CI101 / CI177. Programming

SCHOOL OF COMPUTING, ENGINEERING AND MATHEMATICS SEMESTER 1 EXAMINATIONS 2015/2016 CI101 / CI177. Programming s SCHOOL OF COMPUTING, ENGINEERING AND MATHEMATICS SEMESTER 1 EXAMINATIONS 2015/2016 CI101 / CI177 Programming Time allowed: THREE hours: Answer: ALL questions Items permitted: Items supplied: There is

More information

Advanced Programming - JAVA Lecture 4 OOP Concepts in JAVA PART II

Advanced Programming - JAVA Lecture 4 OOP Concepts in JAVA PART II Advanced Programming - JAVA Lecture 4 OOP Concepts in JAVA PART II Mahmoud El-Gayyar elgayyar@ci.suez.edu.eg Ad hoc-polymorphism Outline Method overloading Sub-type Polymorphism Method overriding Dynamic

More information

Objects and Iterators

Objects and Iterators Objects and Iterators Can We Have Data Structures With Generic Types? What s in a Bag? All our implementations of collections so far allowed for one data type for the entire collection To accommodate a

More information

MIT AITI Lecture 18 Collections - Part 1

MIT AITI Lecture 18 Collections - Part 1 MIT AITI 2004 - Lecture 18 Collections - Part 1 Collections API The package java.util is often called the "Collections API" Extremely useful classes that you must understand to be a competent Java programmer

More information

Inheritance, Polymorphism, and Interfaces

Inheritance, Polymorphism, and Interfaces Inheritance, Polymorphism, and Interfaces Chapter 8 Inheritance Basics (ch.8 idea) Inheritance allows programmer to define a general superclass with certain properties (methods, fields/member variables)

More information

Q1 Q2 Q3 Q4 Q5 Total 1 * 7 1 * 5 20 * * Final marks Marks First Question

Q1 Q2 Q3 Q4 Q5 Total 1 * 7 1 * 5 20 * * Final marks Marks First Question Page 1 of 6 Template no.: A Course Name: Computer Programming1 Course ID: Exam Duration: 2 Hours Exam Time: Exam Date: Final Exam 1'st Semester Student no. in the list: Exam pages: Student's Name: Student

More information

VARIABLES AND TYPES CITS1001

VARIABLES AND TYPES CITS1001 VARIABLES AND TYPES CITS1001 Scope of this lecture Types in Java the eight primitive types the unlimited number of object types Values and References The Golden Rule Primitive types Every piece of data

More information

CS 455 Final Exam Fall 2012 [Bono] Dec. 17, 2012

CS 455 Final Exam Fall 2012 [Bono] Dec. 17, 2012 Name: USC loginid (e.g., ttrojan): CS 455 Final Exam Fall 2012 [Bono] Dec. 17, 2012 There are 6 problems on the exam, with 70 points total available. There are 7 pages to the exam, including this one;

More information

Faculty of Science FINAL EXAMINATION

Faculty of Science FINAL EXAMINATION Faculty of Science FINAL EXAMINATION COMPUTER SCIENCE COMP 250 INTRODUCTION TO COMPUTER SCIENCE Examiner: Prof. Michael Langer April 27, 2010 Associate Examiner: Mr. Joseph Vybihal 9 A.M. 12 P.M. Instructions:

More information

CS 61B Data Structures and Programming Methodology. July 2, 2008 David Sun

CS 61B Data Structures and Programming Methodology. July 2, 2008 David Sun CS 61B Data Structures and Programming Methodology July 2, 2008 David Sun Announcements Project 1 spec and code is available on the course website. Due July 15 th. Start early! Midterm I is next Wed in

More information

CMPS 12A Introduction to Programming Midterm 2 Review Problems

CMPS 12A Introduction to Programming Midterm 2 Review Problems CMPS 12A Introduction to Programming Midterm 2 Review Problems Note: Do problems 4, 5 and 9 from the Midterm 1 review sheet. Problems 6, 8 and 9 from this sheet have not yet been covered. We'll see how

More information

Use of the ArrayList class

Use of the ArrayList class Use of the ArrayList class The ArrayList class is very similar to the Vector class. It also manages a collection of objects, and as the name indicates, does so with an array implementation. This is also

More information

School of Informatics, University of Edinburgh

School of Informatics, University of Edinburgh CS1Bh Solution Sheet 4 Software Engineering in Java This is a solution set for CS1Bh Question Sheet 4. You should only consult these solutions after attempting the exercises. Notice that the solutions

More information

Super-Classes and sub-classes

Super-Classes and sub-classes Super-Classes and sub-classes Subclasses. Overriding Methods Subclass Constructors Inheritance Hierarchies Polymorphism Casting 1 Subclasses: Often you want to write a class that is a special case of an

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

COP 3330 Final Exam Review

COP 3330 Final Exam Review COP 3330 Final Exam Review I. The Basics (Chapters 2, 5, 6) a. comments b. identifiers, reserved words c. white space d. compilers vs. interpreters e. syntax, semantics f. errors i. syntax ii. run-time

More information

VIRTUAL FUNCTIONS Chapter 10

VIRTUAL FUNCTIONS Chapter 10 1 VIRTUAL FUNCTIONS Chapter 10 OBJECTIVES Polymorphism in C++ Pointers to derived classes Important point on inheritance Introduction to virtual functions Virtual destructors More about virtual functions

More information

COP 3337 Test 3. private int minimumposition(int from) { Part 1: Selection Sort

COP 3337 Test 3. private int minimumposition(int from) { Part 1: Selection Sort COP 3337 Test 3 NAME Part 1: Selection Sort The SelectionSorter class implements a selection sort on an array of strings. It is missing the minimumposition() method that returns the index position of the

More information

CSE 2123: Collections: Priority Queues. Jeremy Morris

CSE 2123: Collections: Priority Queues. Jeremy Morris CSE 2123: Collections: Priority Queues Jeremy Morris 1 Collections Priority Queue Recall: A queue is a specific type of collection Keeps elements in a particular order We ve seen two examples FIFO queues

More information

Sri Vidya College of Engineering & Technology

Sri Vidya College of Engineering & Technology UNIT I INTRODUCTION TO OOP AND FUNDAMENTALS OF JAVA 1. Define OOP. Part A Object-Oriented Programming (OOP) is a methodology or paradigm to design a program using classes and objects. It simplifies the

More information

McGill University School of Computer Science COMP-202A Introduction to Computing 1

McGill University School of Computer Science COMP-202A Introduction to Computing 1 McGill University School of Computer Science COMP-202A Introduction to Computing 1 Midterm Exam Thursday, October 26, 2006, 18:00-20:00 (6:00 8:00 PM) Instructors: Mathieu Petitpas, Shah Asaduzzaman, Sherif

More information

CS111: PROGRAMMING LANGUAGE II

CS111: PROGRAMMING LANGUAGE II CS111: PROGRAMMING LANGUAGE II Computer Science Department Lecture 1(c): Java Basics (II) Lecture Contents Java basics (part II) Conditions Loops Methods Conditions & Branching Conditional Statements A

More information

LAB 13: ARRAYS (ONE DIMINSION)

LAB 13: ARRAYS (ONE DIMINSION) Statement Purpose: The purpose of this Lab. is to practically familiarize student with the concept of array and related operations performed on array. Activity Outcomes: As a second Lab on Chapter 7, this

More information

Data Structures CSci 1200 Test 1 Questions

Data Structures CSci 1200 Test 1 Questions Overview Data Structures CSci 1200 Test 1 Questions Test 1 will be held Monday, February 14, 2011, 12:00-1:30pm, Darrin 308. No make-ups will be given except for emergency situations, and even then a written

More information

Chapter 8 Search and Sort

Chapter 8 Search and Sort Chapter 8 Search and Sort Goals This chapter begins by showing two algorithms used with arrays: selection sort and binary search. After studying this chapter, you will be able to understand how binary

More information

1 Shyam sir JAVA Notes

1 Shyam sir JAVA Notes 1 Shyam sir JAVA Notes 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write

More information

CS304 Object Oriented Programming Final Term

CS304 Object Oriented Programming Final Term 1. Which of the following is the way to extract common behaviour and attributes from the given classes and make a separate class of those common behaviours and attributes? Generalization (pg 29) Sub-typing

More information

CSIS 10B Lab 2 Bags and Stacks

CSIS 10B Lab 2 Bags and Stacks CSIS 10B Lab 2 Bags and Stacks Part A Bags and Inheritance In this part of the lab we will be exploring the use of the Bag ADT to manage quantities of data of a certain generic type (listed as T in the

More information

What are the characteristics of Object Oriented programming language?

What are the characteristics of Object Oriented programming language? What are the various elements of OOP? Following are the various elements of OOP:- Class:- A class is a collection of data and the various operations that can be performed on that data. Object- This is

More information

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012

MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #2 Examination 12:30 noon, Thursday, March 15, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)

More information

Advanced Placement Computer Science. Inheritance and Polymorphism

Advanced Placement Computer Science. Inheritance and Polymorphism Advanced Placement Computer Science Inheritance and Polymorphism What s past is prologue. Don t write it twice write it once and reuse it. Mike Scott The University of Texas at Austin Inheritance, Polymorphism,

More information

Do not open this examination paper until instructed to do so. Section A: answer all the questions. Section B: answer all the questions.

Do not open this examination paper until instructed to do so. Section A: answer all the questions. Section B: answer all the questions. M09/5/COMSC/SP1/ENG/TZ0/XX 22097013 Computer science Standard level Paper 1 Tuesday 19 May 2009 (afternoon) 1 hour 30 minutes INSTRUCTIONS TO CANDIDATES Do not open this examination paper until instructed

More information

Practice Questions for Final Exam: Advanced Java Concepts + Additional Questions from Earlier Parts of the Course

Practice Questions for Final Exam: Advanced Java Concepts + Additional Questions from Earlier Parts of the Course : Advanced Java Concepts + Additional Questions from Earlier Parts of the Course 1. Given the following hierarchy: class Alpha {... class Beta extends Alpha {... class Gamma extends Beta {... In what order

More information

COE 212 Engineering Programming. Welcome to the Final Exam Thursday December 15, 2016

COE 212 Engineering Programming. Welcome to the Final Exam Thursday December 15, 2016 1 COE 212 Engineering Programming Welcome to the Final Exam Thursday December 15, 2016 Instructors: Dr. Salim Haddad Dr. Bachir Habib Dr. Joe Tekli Dr. Wissam F. Fawaz Name: Student ID: Instructions: 1.

More information

2. [20] Suppose we start declaring a Rectangle class as follows:

2. [20] Suppose we start declaring a Rectangle class as follows: 1. [8] Create declarations for each of the following. You do not need to provide any constructors or method definitions. (a) The instance variables of a class to hold information on a Minesweeper cell:

More information

Defensive Programming

Defensive Programming Defensive Programming Software Engineering CITS1220 Based on the Java1200 Lecture notes by Gordon Royle Lecture Outline Why program defensively? Encapsulation Access Restrictions Documentation Unchecked

More information

CS 455 Midterm Exam 1 Fall 2010 [Bono] Sept. 29, 2010

CS 455 Midterm Exam 1 Fall 2010 [Bono] Sept. 29, 2010 Name: USC loginid (e.g., ttrojan): CS 455 Midterm Exam 1 Fall 2010 [Bono] Sept. 29, 2010 There are 4 problems on the exam, with 55 points total available. There are 7 pages to the exam, including this

More information

Object-Orientation. Classes Lecture 5. Classes. State and Behaviour. Instance Variables. Object vs. Classes

Object-Orientation. Classes Lecture 5. Classes. State and Behaviour. Instance Variables. Object vs. Classes CP4044 Lecture 5 1 Classes Lecture 5 Object-Orientation Object-oriented design (OOD) Models real-world objects Models communication among objects Encapsulates data (attributes) and functions (behaviors)

More information

LAMBDA EXPRESSIONS. Summer 2018

LAMBDA EXPRESSIONS. Summer 2018 LAMBDA EXPRESSIONS Summer 2018 LAMBDA EXPRESSIONS USES Introduced in Java SE 8, lambda expressions are a way to create single-method classes in your code in a much less cumbersome manner than anonymous

More information

CMSC 341. Nilanjan Banerjee

CMSC 341. Nilanjan Banerjee CMSC 341 Nilanjan Banerjee http://www.csee.umbc.edu/~nilanb/teaching/341/ Announcements Just when you thought Shawn was going to teach this course! On a serious note: register on Piazza I like my classes

More information

CS313D: ADVANCED PROGRAMMING LANGUAGE. Lecture 3: C# language basics II

CS313D: ADVANCED PROGRAMMING LANGUAGE. Lecture 3: C# language basics II CS313D: ADVANCED PROGRAMMING LANGUAGE Lecture 3: C# language basics II Lecture Contents 2 C# basics Methods Arrays Methods 3 A method: groups a sequence of statement takes input, performs actions, and

More information

COE 212 Engineering Programming. Welcome to the Final Exam Monday May 18, 2015

COE 212 Engineering Programming. Welcome to the Final Exam Monday May 18, 2015 1 COE 212 Engineering Programming Welcome to the Final Exam Monday May 18, 2015 Instructors: Dr. Joe Tekli Dr. George Sakr Dr. Wissam F. Fawaz Name: Student ID: Instructions: 1. This exam is Closed Book.

More information

LECTURE 17. Array Searching and Sorting

LECTURE 17. Array Searching and Sorting LECTURE 17 Array Searching and Sorting ARRAY SEARCHING AND SORTING Today we ll be covering some of the more common ways for searching through an array to find an item, as well as some common ways to sort

More information

University of Cape Town ~ Department of Computer Science. Computer Science 1015F ~ 2007

University of Cape Town ~ Department of Computer Science. Computer Science 1015F ~ 2007 Name: Please fill in your Student Number and Name. Student Number : Student Number: University of Cape Town ~ Department of Computer Science Computer Science 1015F ~ 2007 Final Examination Question Max

More information

Arrays and functions Multidimensional arrays Sorting and algorithm efficiency

Arrays and functions Multidimensional arrays Sorting and algorithm efficiency Introduction Fundamentals Declaring arrays Indexing arrays Initializing arrays Arrays and functions Multidimensional arrays Sorting and algorithm efficiency An array is a sequence of values of the same

More information

CS 231 Data Structures and Algorithms, Fall 2016

CS 231 Data Structures and Algorithms, Fall 2016 CS 231 Data Structures and Algorithms, Fall 2016 Dr. Bruce A. Maxwell Department of Computer Science Colby College Course Description Focuses on the common structures used to store data and the standard

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 03: Creating Classes MOUNA KACEM mouna@cs.wisc.edu Spring 2019 Creating Classes 2 Constructors and Object Initialization Static versus non-static fields/methods Encapsulation

More information

CS 455 Midterm Exam 1 Fall 2010 [Bono] Sept. 29, 2010

CS 455 Midterm Exam 1 Fall 2010 [Bono] Sept. 29, 2010 SOLUTION Name: USC loginid (e.g., ttrojan): CS 455 Midterm Exam 1 Fall 2010 [Bono] Sept. 29, 2010 There are 4 problems on the exam, with 55 points total available. There are 7 pages to the exam, including

More information

QUIZ 2 Introduction to Computer Science (COMP 250) Mon. March 2, 2009 Professor Michael Langer

QUIZ 2 Introduction to Computer Science (COMP 250) Mon. March 2, 2009 Professor Michael Langer QUIZ 2 Introduction to Computer Science (COMP 250) Mon. March 2, 2009 Professor Michael Langer STUDENT NAME: ID: The exam consists of five questions. There are a total of 10 points. You may use the back

More information

Object-Oriented Programming and Software Engineering CITS1001 MID-SEMESTER TEST

Object-Oriented Programming and Software Engineering CITS1001 MID-SEMESTER TEST Object-Oriented Programming and Software Engineering School of Computer Science & Software Engineering The University of Western Australia CITS1001 MID-SEMESTER TEST Semester 1, 2013 CITS1001 This Paper

More information

Programming 2. Topic 8: Linked Lists, Basic Searching and Sorting

Programming 2. Topic 8: Linked Lists, Basic Searching and Sorting RMIT School of Computer Science and Information Technology Programming 2 Topic 8: Linked Lists, Basic Searching and Sorting Lecture Slides COPYRIGHT 2008 RMIT University. Original content by: Peter Tilmanis,

More information

COSC 2P95. Procedural Abstraction. Week 3. Brock University. Brock University (Week 3) Procedural Abstraction 1 / 26

COSC 2P95. Procedural Abstraction. Week 3. Brock University. Brock University (Week 3) Procedural Abstraction 1 / 26 COSC 2P95 Procedural Abstraction Week 3 Brock University Brock University (Week 3) Procedural Abstraction 1 / 26 Procedural Abstraction We ve already discussed how to arrange complex sets of actions (e.g.

More information

Day 4. COMP1006/1406 Summer M. Jason Hinek Carleton University

Day 4. COMP1006/1406 Summer M. Jason Hinek Carleton University Day 4 COMP1006/1406 Summer 2016 M. Jason Hinek Carleton University today s agenda assignments questions about assignment 2 a quick look back constructors signatures and overloading encapsulation / information

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 03: Creating Classes MOUNA KACEM mouna@cs.wisc.edu Spring 2018 Creating Classes 2 Constructors and Object Initialization Static versus non-static fields/methods Encapsulation

More information

Lecture 2. CS118 Term planner. Refinement. Recall our first Java program. Program skeleton GCD. For your first seminar. For your second seminar

Lecture 2. CS118 Term planner. Refinement. Recall our first Java program. Program skeleton GCD. For your first seminar. For your second seminar 2 Lecture 2 CS118 Term planner For your first seminar Meet at CS reception Bring The Guide Bring your CS account details Finish the problem sheet in your own time Talk to each other about the questions

More information

2/3/2018 CS313D: ADVANCED PROGRAMMING LANGUAGE. Lecture 3: C# language basics II. Lecture Contents. C# basics. Methods Arrays. Dr. Amal Khalifa, Spr17

2/3/2018 CS313D: ADVANCED PROGRAMMING LANGUAGE. Lecture 3: C# language basics II. Lecture Contents. C# basics. Methods Arrays. Dr. Amal Khalifa, Spr17 CS313D: ADVANCED PROGRAMMING LANGUAGE Lecture 3: C# language basics II Lecture Contents 2 C# basics Methods Arrays 1 Methods : Method Declaration: Header 3 A method declaration begins with a method header

More information

5.6.1 The Special Variable this

5.6.1 The Special Variable this ALTHOUGH THE BASIC IDEAS of object-oriented programming are reasonably simple and clear, they are subtle, and they take time to get used to And unfortunately, beyond the basic ideas there are a lot of

More information

CS101 Part 2: Practice Questions Algorithms on Arrays, Classes and Objects, String Class, Stack Class

CS101 Part 2: Practice Questions Algorithms on Arrays, Classes and Objects, String Class, Stack Class CS1 Part 2: Algorithms on Arrays, Classes and Objects, String Class, Stack Class 1. Write a method that, given two sorted arrays of integers, merges the two arrays into a single sorted array that is returned.

More information

CSC 273 Data Structures

CSC 273 Data Structures CSC 273 Data Structures Lecture 5 - Introduction to Sorting The Interface Comparable Consider the method compareto for class String if s and t are strings, s.compareto(t) is Negative if s comes before

More information

Lecture 6 Introduction to Objects and Classes

Lecture 6 Introduction to Objects and Classes Lecture 6 Introduction to Objects and Classes Outline Basic concepts Recap Computer programs Programming languages Programming paradigms Object oriented paradigm-objects and classes in Java Constructors

More information

if (x == 0); System.out.println( x=0 ); if (x = 0) System.out.println( x=0 );

if (x == 0); System.out.println( x=0 ); if (x = 0) System.out.println( x=0 ); Sample Final Exam 1. Evaluate each of the following expressions and show the result and data type of each: Expression Value Data Type 14 % 5 1 / 2 + 1 / 3 + 1 / 4 4.0 / 2.0 Math.pow(2.0, 3.0) (double)(2

More information

CLASS DESIGN. Objectives MODULE 4

CLASS DESIGN. Objectives MODULE 4 MODULE 4 CLASS DESIGN Objectives > After completing this lesson, you should be able to do the following: Use access levels: private, protected, default, and public. Override methods Overload constructors

More information

DUKE UNIVERSITY Department of Computer Science. Test 1: CompSci 100

DUKE UNIVERSITY Department of Computer Science. Test 1: CompSci 100 DUKE UNIVERSITY Department of Computer Science Test 1: CompSci 100 Name (print): Community Standard acknowledgment (signature): Problem 1 value 30 pts. grade Problem 2 16 pts. Problem 3 14 pts. Problem

More information

Computer Science & Engineering 150A Problem Solving Using Computers

Computer Science & Engineering 150A Problem Solving Using Computers Computer Science & Engineering 150A Problem Solving Using Computers Lecture 06 - Stephen Scott Adapted from Christopher M. Bourke 1 / 30 Fall 2009 Chapter 8 8.1 Declaring and 8.2 Array Subscripts 8.3 Using

More information

Intermediate Programming

Intermediate Programming Intermediate Programming Lecture 12 Interfaces What is an Interface? A Java interface specified a set of methods that any class that implements the interfacesmust have. An Interface is a type, which means

More information

CE221 Programming in C++ Part 2 References and Pointers, Arrays and Strings

CE221 Programming in C++ Part 2 References and Pointers, Arrays and Strings CE221 Programming in C++ Part 2 References and Pointers, Arrays and Strings 19/10/2017 CE221 Part 2 1 Variables and References 1 In Java a variable of primitive type is associated with a memory location

More information

Course Content. Objectives of Lecture 20 Arrays. Outline of Lecture 20. CMPUT 102: Arrays Dr. Osmar R. Zaïane. University of Alberta 4

Course Content. Objectives of Lecture 20 Arrays. Outline of Lecture 20. CMPUT 102: Arrays Dr. Osmar R. Zaïane. University of Alberta 4 Structural Programming and Data Structures Winter CMPUT 1: Arrays Dr. Osmar R. Zaïane Course Content Introduction Objects Methods Tracing Programs Object State Sharing resources Selection Repetition Vectors

More information

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance

Contents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance Contents Topic 04 - Inheritance I. Classes, Superclasses, and Subclasses - Inheritance Hierarchies Controlling Access to Members (public, no modifier, private, protected) Calling constructors of superclass

More information

Course Content. Objectives of Lecture 18 Black box testing and planned debugging. Outline of Lecture 18

Course Content. Objectives of Lecture 18 Black box testing and planned debugging. Outline of Lecture 18 Structural Programming and Data Structures Winter 2000 CMPUT 102: Testing and Debugging Dr. Osmar R. Zaïane Course Content Introduction Objects Methods Tracing Programs Object State Sharing resources Selection

More information

Instantiation of Template class

Instantiation of Template class Class Templates Templates are like advanced macros. They are useful for building new classes that depend on already existing user defined classes or built-in types. Example: stack of int or stack of double

More information

Interfaces, collections and comparisons

Interfaces, collections and comparisons תכנות מונחה עצמים תרגול מספר 4 Interfaces, collections and comparisons Interfaces Overview Overview O Interface defines behavior. Overview O Interface defines behavior. O The interface includes: O Name

More information

QUIZ. Can you find 5 errors in this code?

QUIZ. Can you find 5 errors in this code? QUIZ Can you find 5 errors in this code? QUIZ What (if anything) is wrong with this code? public: ; int Constructor argument need! QUIZ What is meant by saying that a variable hides another? I.e. have

More information

Compiling and Running a C Program in Unix

Compiling and Running a C Program in Unix CPSC 211 Data Structures & Implementations (c) Texas A&M University [ 95 ] Compiling and Running a C Program in Unix Simple scenario in which your program is in a single file: Suppose you want to name

More information

CSCI 355 Lab #2 Spring 2007

CSCI 355 Lab #2 Spring 2007 CSCI 355 Lab #2 Spring 2007 More Java Objectives: 1. To explore several Unix commands for displaying information about processes. 2. To explore some differences between Java and C++. 3. To write Java applications

More information

Project 1: Empirical Analysis of Algorithms

Project 1: Empirical Analysis of Algorithms Project 1: Empirical Analysis of Algorithms Dr. Hasmik Gharibyan Deadlines: submit your files electronically by midnight (end of the day) on Friday, 1/19/18. Late submission: you can submit your work within

More information

Outline. Parts 1 to 3 introduce and sketch out the ideas of OOP. Part 5 deals with these ideas in closer detail.

Outline. Parts 1 to 3 introduce and sketch out the ideas of OOP. Part 5 deals with these ideas in closer detail. OOP in Java 1 Outline 1. Getting started, primitive data types and control structures 2. Classes and objects 3. Extending classes 4. Using some standard packages 5. OOP revisited Parts 1 to 3 introduce

More information

Java Foundations: Unit 3. Parts of a Java Program

Java Foundations: Unit 3. Parts of a Java Program Java Foundations: Unit 3 Parts of a Java Program class + name public class HelloWorld public static void main( String[] args ) System.out.println( Hello world! ); A class creates a new type, something

More information

Objects as a programming concept

Objects as a programming concept Objects as a programming concept IB Computer Science Content developed by Dartford Grammar School Computer Science Department HL Topics 1-7, D1-4 1: System design 2: Computer Organisation 3: Networks 4:

More information

CSC 240 Computer Science III Spring 2018 Midterm Exam. Name

CSC 240 Computer Science III Spring 2018 Midterm Exam. Name CSC 240 Computer Science III Spring 2018 Midterm Exam Name Page Points Score 2 9 4-6 53 7-10 38 Total 100 1 P age 1. Tracing programs (1 point each value): For each snippet of Java code on the left, write

More information

Fall CS 101: Test 2 Name UVA ID. Grading. Page 1 / 4. Page3 / 20. Page 4 / 13. Page 5 / 10. Page 6 / 26. Page 7 / 17.

Fall CS 101: Test 2 Name UVA  ID. Grading. Page 1 / 4. Page3 / 20. Page 4 / 13. Page 5 / 10. Page 6 / 26. Page 7 / 17. Grading Page 1 / 4 Page3 / 20 Page 4 / 13 Page 5 / 10 Page 6 / 26 Page 7 / 17 Page 8 / 10 Total / 100 1. (4 points) What is your course section? CS 101 CS 101E Pledged Page 1 of 8 Pledged The following

More information

Review: Object Diagrams for Inheritance. Type Conformance. Inheritance Structures. Car. Vehicle. Truck. Vehicle. conforms to Object

Review: Object Diagrams for Inheritance. Type Conformance. Inheritance Structures. Car. Vehicle. Truck. Vehicle. conforms to Object Review: Diagrams for Inheritance - String makemodel - int mileage + (String, int) Class #3: Inheritance & Polymorphism Software Design II (CS 220): M. Allen, 25 Jan. 18 + (String, int) + void

More information

Java Foundations Certified Junior Associate

Java Foundations Certified Junior Associate Java Foundations Certified Junior Associate 习题 1. When the program runs normally (when not in debug mode), which statement is true about breakpoints? Breakpoints will stop program execution at the last

More information

Defining Your Own Classes

Defining Your Own Classes Defining Your Own Classes In C, you are allowed to define a struct and then define variables of that struct. But Java allows you to define your own class. This means not only defining the data structure,

More information

Sorting/Searching and File I/O. Sorting Searching Reading for this lecture: L&L

Sorting/Searching and File I/O. Sorting Searching Reading for this lecture: L&L Sorting/Searching and File I/O Sorting Searching Reading for this lecture: L&L 10.4-10.5 1 Sorting Sorting is the process of arranging a list of items in a particular order The sorting process is based

More information

Module Contact: Dr Gavin Cawley, CMP Copyright of the University of East Anglia Version 1

Module Contact: Dr Gavin Cawley, CMP Copyright of the University of East Anglia Version 1 UNIVERSITY OF EAST ANGLIA School of Computing Sciences Main Series UG Examination 2017-18 PROGRAMMING 1 CMP-4008Y Time allowed: 2 hours Answer FOUR questions. All questions carry equal weight. Notes are

More information

CS1004: Intro to CS in Java, Spring 2005

CS1004: Intro to CS in Java, Spring 2005 CS1004: Intro to CS in Java, Spring 2005 Lecture #16: Java conditionals/loops, cont d. Janak J Parekh janak@cs.columbia.edu Administrivia Midterms returned now Weird distribution Mean: 35.4 ± 8.4 What

More information

Static, Final & Memory Management

Static, Final & Memory Management Static, Final & Memory Management The static keyword What if you want to have only one piece of storage regardless of how many objects are created or even no objects are created? What if you need a method

More information

CS126 Final Exam Review

CS126 Final Exam Review CS126 Final Exam Review Fall 2007 1 Asymptotic Analysis (Big-O) Definition. f(n) is O(g(n)) if there exists constants c, n 0 > 0 such that f(n) c g(n) n n 0 We have not formed any theorems dealing with

More information

C:\Temp\Templates. Download This PDF From The Web Site

C:\Temp\Templates. Download This PDF From The Web Site 11 2 2 2 3 3 3 C:\Temp\Templates Download This PDF From The Web Site 4 5 Use This Main Program Copy-Paste Code From The Next Slide? Compile Program 6 Copy/Paste Main # include "Utilities.hpp" # include

More information

CSc 2010 Principles of Computer Science, Fall 2013 Practice Problems for Midterm 3* * 3 17 % 9-20 % (26 / 7) "2"

CSc 2010 Principles of Computer Science, Fall 2013 Practice Problems for Midterm 3* * 3 17 % 9-20 % (26 / 7) 2 CSc 2010 Principles of Computer Science, Fall 2013 Practice Problems for Midterm 1. For each Java expression in the left hand column, indicate its value in the right hand column. Be sure to show a constant

More information

STUDENT LESSON A20 Inheritance, Polymorphism, and Abstract Classes

STUDENT LESSON A20 Inheritance, Polymorphism, and Abstract Classes STUDENT LESSON A20 Inheritance, Polymorphism, and Abstract Classes Java Curriculum for AP Computer Science, Student Lesson A20 1 STUDENT LESSON A20 Inheritance, Polymorphism, and Abstract Classes INTRODUCTION:

More information