COE318 Lecture Notes Week 9 (Oct 31, 2011)

Size: px
Start display at page:

Download "COE318 Lecture Notes Week 9 (Oct 31, 2011)"

Transcription

1 COE318 Software Systems Lecture Notes: Week 9 1 of 12 COE318 Lecture Notes Week 9 (Oct 31, 2011) Topics Casting reference variables equals() and hashcode() overloading Collections and ArrayList utilities (toarray, sort) junit continued Casting reference variables Besides casting primitive data, it is sometimes necessary to cast reference variables. For example, suppose we have: Animal tweety = new Bird( Tweety ); Now suppose Bird's have a method called fly() tat most other Animals do not have. Writing tweety.fly() was cause a compilation error since the Animal interface does not specify a fly() method. However, since we know that tweet is a Bird, we can cast it thus: ((Bird) tweety).fly(); The compiler allows this but, in general, it cannot verify that it is correct. If the cast is incorrect, a runtime exception (ClassCastException) will be thrown. It is often preferable (for readability) to write: Bird b = (Bird) tweety; b.fly(); You can also ensure that no exception can occur at runtime with the safer: if(tweety instanceof Bird) { Bird b = (Bird) tweety;//cannot fail at runtim b. Fly(); Note: the compiler will disallow any cast to a type that is not related (ancestor or descendent) of the type being cast. Thus, the compiler will not allow, for example: Resistor r = (Resistor) (new ComplexNumber(1, 2));//ILLEGAL

2 COE318 Software Systems Lecture Notes: Week 9 2 of 12 equals(object o)and hashcode() It is very common to override equals() and hashcode() (inherited from Object). If you override equals(), you must also override hashcode(). Note: hashcode() is used to qucily dtermine if two objects are potentially equal. If two objects are equal, they must have the same hashcode(). If two objects are not equal, it is preferable but not essential that they have different hashcodes. It is essential that you maintain the signature of equals. The parameter is of type Object! Before checking for actual equality, you have to check that the object is not null and that it is fot proper type. If not, return false. Otherwise, cast it to the right type and check for actual equality. Example for Resistor (where they are equal if they have the same resistance): public boolean equals(object ob) { if(ob == null) { return false; if(! (ob instanceof Resistor)) { return false; Resistor r = (Resistor) ob; return r.r == this.r; public int hashcode() { return (int) r*10000; equals using overloading In Java (and most object oriented languages) you can have more than one method in the same class with the same name! (You cannot do this C, for example.) However, the number and/or types of the parameters must differ. This is called overloading. (Don't confuse this concept from the similarly named but quite

3 COE318 Software Systems Lecture Notes: Week 9 3 of 12 different concept of overriding.) The compiler chooses the version that matches. Here's an example of using 2 equals methods for Resistor: public boolean equals(object ob) { if(ob == null) { return false; if(! (ob instanceof Resistor)) { return false; return equals((resistor) ob); public boolean equals(resistor res) { if (res == null) return false; return r == res.r; Utility methods in Collections and ArrayList The Collections class has several static utility methods (such as sort) that are broadly applicable to anything that implements the List interface (such as ArrayList). There are 2 overloaded sort methods: one that sorts Comparable objects and another where the user supplies a class that implements the Comparable interface. The signatures are: public static <T> void sort(list<t> list) public static <T> void sort(list<t> list, Comparator<? super T> cmprtr) The ArrayList (or anything else that implements the List interface) can also be converted to an ordinary array. (You will need this for one of the later labs.) public <T> T[] toarray(t[] a)

4 COE318 Software Systems Lecture Notes: Week 9 4 of 12 Example: Simple Resistor class Not the Resistor for Lab 6; the one for lab 1. The junit tests illustrate how to use Collections.sort(). How to implemnt the Comparable interface. How to write equals(). Using AssertTrue and AssertFalse in junit. Using AssertEquals for floating point numbers. Note also that the Resistor constructor throws an IllegalArgumentExcpetion if the resistance is not positive. The last test (shown below) shows how to write a junit test to verify that an expected exception did in fact occur. //How to verify that an exception has occurred //Fail if exception does NOT public void testillegalr() { new Resistor(-1); import java.util.comparator; import java.util.arraylist; import java.util.collections; import org.junit.after; import org.junit.afterclass; import org.junit.before; import org.junit.beforeclass; import org.junit.test; import static org.junit.assert.*; public class ResistorTest { public ResistorTest() public static void setupclass() throws Exception public static void teardownclass() throws Exception {

5 COE318 Software Systems Lecture Notes: Week 9 5 of 12 Resistor r1, r2, public void setup() { r1 = new Resistor(10); r2 = new Resistor(20); r3 = new public void teardown() { /** * Test of getcurrent method, of class Resistor. public void testgetcurrent() { r1.setcurrent(2); assertequals(2.0, r1.getcurrent(), 0.0); /** * Test of equals method, of class Resistor. public void testequals() { assertfalse(r1.equals(r2)); assertfalse(r1.equals("abc")); assertfalse(r1.equals(null)); asserttrue(r1.equals(r1)); public void testsort() { ArrayList<Resistor> rs = new ArrayList<Resistor>(); rs.add(r1); rs.add(r3); rs.add(new Resistor(2)); assertequals(rs.get(0).getresistance(), 10.0, 0); System.out.println("Unsorted\n" + rs); Collections.sort(rs);

6 COE318 Software Systems Lecture Notes: Week 9 6 of 12 assertequals(rs.get(0).getresistance(), 2.0, 0); System.out.println("Sorted\n" + rs); Collections.sort(rs, new Comparator<Resistor>() { public int compare(resistor t, Resistor t1) { return (int) (t1.getresistance() - t.getresistance()); ); assertequals(rs.get(0).getresistance(), 20.0, 0); System.out.println("Reverse Sorted\n" + rs); /** * Test of setcurrent method, of class Resistor. public void testsetcurrent() { //How to verify that an exception has occured //Fail if exception does NOT public void testillegalr() { new Resistor(-1); The Resistor class itself is given below: public class Resistor implements Comparable<Resistor>{ final private double r; private double v; public Resistor(double r) { if(r <= 0) { throw new IllegalArgumentException( "Resistance must be > 0"); this.r = r;

7 COE318 Software Systems Lecture Notes: Week 9 7 of 12 public double getresistance() { return r; public double getcurrent() { return v/r; public int hashcode() { int hash = 5; hash = 83 * hash + (int) (Double.doubleToLongBits(this.r) ^ (Double.doubleToLongBits(this.r) >>> 32)); return hash; public boolean equals(object ob) { if(ob == null) { return false; if(! (ob instanceof Resistor)) { return false; Resistor r = (Resistor) ob; return r.r == this.r; public void setcurrent(double i) { v = i*r; public int compareto(resistor t) { return (int) (r - t.r); public String tostring() { return "" + r;

8 COE318 Software Systems Lecture Notes: Week 9 8 of 12 The last version of Zoo shows how ot use toarray(...) for an ArrayList. public Animal[] getanimals() { Animal[] ts = new AbstractAnimal[0]; return animals.toarray(ts); Remarks on Lab 6 No main() supplied (and no need for one!) Use junit tests (you decide how many). Submit your lab when you are confident it works. (It will be tested using junit tests designed by us...) Beware: testing getnodes() is tricky. Another example (Comparable, Comparator interfaces, equals): Person import java.util.arraylist; import java.util.collections; import java.util.comparator; public class Person implements Comparable<Person> { private final String name; private final boolean ismale; public Person(String n, boolean x) { name = n; ismale = x; public String getname() { return name; public boolean ismale() { return ismale;

9 COE318 Software Systems Lecture Notes: Week 9 9 of 12 public String tostring() { return name + "(" + (ismale? "M" : "F") + ")"; public static void main(string[] args) { ArrayList<Person> people = new ArrayList<Person>(); people.add(new Person("Mary", false)); people.add(new Person("Alice", false)); people.add(new Person("Joe", true)); people.add(new Person("Bob", true)); people.add(new Person("Barb", false)); System.out.println("Unsorted: " + people); Collections.sort(people); System.out.println("Sorted (default): " + people); Custom custom = new Custom(); Collections.sort(people, custom); System.out.println("Sorted (custom): " + people); //Alternate... Collections.sort(people, new Comparator<Person>() { public int compare(person t, Person t1) { if(t.ismale()!= t1.ismale()) { return t.ismale()? -1 : 1; //Same gender so order by name return t.getname().compareto(t1.getname()); ); System.out.println("Sorted (anonymous class): " + people); public int compareto(person t) { return name.compareto(t.name); static class Custom implements Comparator<Person> { public int compare(person t, Person t1) { if(t.ismale()!= t1.ismale()) { return t.ismale()? 1 : -1; //Same gender so order by name return t.getname().compareto(t1.getname());

10 COE318 Software Systems Lecture Notes: Week 9 10 of 12 Questions 1. A Person class is shown below. Complete the methods equalsand compareto. (Person objects are considered equal if they have the same first and last names. For the compareto() method, if the last names are different then the one that comes alphabetically before the other is considered smaller ; if the last names are the same, then the first names are used to dtermine the smaller ; if the first and last names are the same, compareto should return 0.) public class Person implements Comparable<Person> { private final String first; private final String last; public Person(String first, String last) { this.first = first; this.last = last; /** * equals true if first and last name same */ public boolean equals(object obj) { public int hashcode() { public int compareto(person p) {

11 COE318 Software Systems Lecture Notes: Week 9 11 of Write junit tests for equals() and compareto() in Person. Answers 1. public class Person implements Comparable<Person> { private final String first; private final String last; public Person(String first, String last) { this.first = first; this.last = last; /** * equals true if first and last name same */ public boolean equals(object obj) { if(obj == null) return false; if(!(obj instanceof Person)) return false; Person p = (Person) obj; return last.equals(p.last) && first.equals(p.first); public int hashcode() {

12 COE318 Software Systems Lecture Notes: Week 9 12 of 12 return first.hashcode() + last.hashcode(); public int compareto(person p) { int a = last.compareto(p.last); if(a == 0) { return first.compareto(first); return a;

COE318 Lecture Notes Week 8 (Oct 24, 2011)

COE318 Lecture Notes Week 8 (Oct 24, 2011) COE318 Software Systems Lecture Notes: Week 8 1 of 17 COE318 Lecture Notes Week 8 (Oct 24, 2011) Topics == vs..equals(...): A first look Casting Inheritance, interfaces, etc Introduction to Juni (unit

More information

COE318 Lecture Notes Week 9 (Week of Oct 29, 2012)

COE318 Lecture Notes Week 9 (Week of Oct 29, 2012) COE318 Lecture Notes: Week 9 1 of 14 COE318 Lecture Notes Week 9 (Week of Oct 29, 2012) Topics The final keyword Inheritance and Polymorphism The final keyword Zoo: Version 1 This simple version models

More information

COE318 Lecture Notes Week 6 (Oct 10, 2011)

COE318 Lecture Notes Week 6 (Oct 10, 2011) COE318 Software Systems Lecture Notes: Week 6 1 of 8 COE318 Lecture Notes Week 6 (Oct 10, 2011) Topics Announcements final qualifiers Example: An alternative to arrays == vs..equals(...): A first look

More information

Fundamental Java Methods

Fundamental Java Methods Object-oriented Programming Fundamental Java Methods Fundamental Java Methods These methods are frequently needed in Java classes. You can find a discussion of each one in Java textbooks, such as Big Java.

More information

COE318 Lecture Notes Week 10 (Nov 7, 2011)

COE318 Lecture Notes Week 10 (Nov 7, 2011) COE318 Software Systems Lecture Notes: Week 10 1 of 5 COE318 Lecture Notes Week 10 (Nov 7, 2011) Topics More about exceptions References Head First Java: Chapter 11 (Risky Behavior) The Java Tutorial:

More information

Generics method and class definitions which involve type parameters.

Generics method and class definitions which involve type parameters. Contents Topic 07 - Generic Programming I. Introduction Example 1 User defined Generic Method: printtwice(t x) Example 2 User defined Generic Class: Pair Example 3 using java.util.arraylist II. Type

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

Collections Algorithms

Collections Algorithms Collections Algorithms 1 / 11 The Collections Framework A collection is an object that represents a group of objects. The collections framework allows different kinds of collections to be dealt with in

More information

Chapter 11: Collections and Maps

Chapter 11: Collections and Maps Chapter 11: Collections and Maps Implementing the equals(), hashcode() and compareto() methods A Programmer's Guide to Java Certification (Second Edition) Khalid A. Mughal and Rolf W. Rasmussen Addison-Wesley,

More information

Polymorphism. return a.doublevalue() + b.doublevalue();

Polymorphism. return a.doublevalue() + b.doublevalue(); Outline Class hierarchy and inheritance Method overriding or overloading, polymorphism Abstract classes Casting and instanceof/getclass Class Object Exception class hierarchy Some Reminders Interfaces

More information

CMSC131. Inheritance. Object. When we talked about Object, I mentioned that all Java classes are "built" on top of that.

CMSC131. Inheritance. Object. When we talked about Object, I mentioned that all Java classes are built on top of that. CMSC131 Inheritance Object When we talked about Object, I mentioned that all Java classes are "built" on top of that. This came up when talking about the Java standard equals operator: boolean equals(object

More information

CMSC 132, Object-Oriented Programming II Summer Lecture 1:

CMSC 132, Object-Oriented Programming II Summer Lecture 1: CMSC 132, Object-Oriented Programming II Summer 2018 Lecturer: Anwar Mamat Lecture 1: Disclaimer: These notes may be distributed outside this class only with the permission of the Instructor. 1.1 Course

More information

C12a: The Object Superclass and Selected Methods

C12a: The Object Superclass and Selected Methods CISC 3115 TY3 C12a: The Object Superclass and Selected Methods Hui Chen Department of Computer & Information Science CUNY Brooklyn College 10/4/2018 CUNY Brooklyn College 1 Outline The Object class and

More information

COE318 Lecture Notes Week 5 (Oct 3, 2011)

COE318 Lecture Notes Week 5 (Oct 3, 2011) COE318 Software Systems Lecture Notes: Week 5 1 of 6 COE318 Lecture Notes Week 5 (Oct 3, 2011) Topics Announcements Strings static and final qualifiers Stack and Heap details Announcements Quiz: Today!

More information

Name Return type Argument list. Then the new method is said to override the old one. So, what is the objective of subclass?

Name Return type Argument list. Then the new method is said to override the old one. So, what is the objective of subclass? 1. Overriding Methods A subclass can modify behavior inherited from a parent class. A subclass can create a method with different functionality than the parent s method but with the same: Name Return type

More information

C09: Interface, and Abstract Class and Method

C09: Interface, and Abstract Class and Method CISC 3120 C09: Interface, and Abstract Class and Method Hui Chen Department of Computer & Information Science CUNY Brooklyn College 2/28/2018 CUNY Brooklyn College 1 Outline Recap Inheritance and polymorphism

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

Inheritance (Part 5) Odds and ends

Inheritance (Part 5) Odds and ends Inheritance (Part 5) Odds and ends 1 Static Methods and Inheritance there is a significant difference between calling a static method and calling a non-static method when dealing with inheritance there

More information

CS-140 Fall 2018 Test 2 Version A Nov. 12, Name:

CS-140 Fall 2018 Test 2 Version A Nov. 12, Name: CS-140 Fall 2018 Test 2 Version A Nov. 12, 2018 Name: 1. (10 points) For the following, Check T if the statement is true, or F if the statement is false. (a) X T F : A class in Java contains fields, and

More information

11 HashMap: Overriding equals ; JUnit; Vistors

11 HashMap: Overriding equals ; JUnit; Vistors 11 HashMap: Overriding equals ; JUnit; Vistors Goals In this lab we will first learn how to define the equals method, as well as how to use the HashMap data structure defined in the Java Collections Frameworks.

More information

The class Object. Lecture CS1122 Summer 2008

The class Object.  Lecture CS1122 Summer 2008 The class Object http://www.javaworld.com/javaworld/jw-01-1999/jw-01-object.html Lecture 10 -- CS1122 Summer 2008 Review Object is at the top of every hierarchy. Every class in Java has an IS-A relationship

More information

Java Fundamentals (II)

Java Fundamentals (II) Chair of Software Engineering Languages in Depth Series: Java Programming Prof. Dr. Bertrand Meyer Java Fundamentals (II) Marco Piccioni static imports Introduced in 5.0 Imported static members of a class

More information

Agenda. Objects and classes Encapsulation and information hiding Documentation Packages

Agenda. Objects and classes Encapsulation and information hiding Documentation Packages Preliminaries II 1 Agenda Objects and classes Encapsulation and information hiding Documentation Packages Inheritance Polymorphism Implementation of inheritance in Java Abstract classes Interfaces Generics

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

Annotations in Java (JUnit)

Annotations in Java (JUnit) Annotations in Java (JUnit) Produced by: Eamonn de Leastar (edeleastar@wit.ie) Dr. Siobhán Drohan (sdrohan@wit.ie) Department of Computing and Mathematics http://www.wit.ie/ What are Annotations? They

More information

Comparing Objects 3/28/16

Comparing Objects 3/28/16 Comparing Objects 3/28/16 Agenda HW Notes Practice Tests Returned Searching Data One of the most important and useful things that computers do is search through huge amounts of data. Search Engines Patterns

More information

Inheritance. Inheritance allows the following two changes in derived class: 1. add new members; 2. override existing (in base class) methods.

Inheritance. Inheritance allows the following two changes in derived class: 1. add new members; 2. override existing (in base class) methods. Inheritance Inheritance is the act of deriving a new class from an existing one. Inheritance allows us to extend the functionality of the object. The new class automatically contains some or all methods

More information

COE318 Lecture Notes Week 3 (Week of Sept 15, 2014)

COE318 Lecture Notes Week 3 (Week of Sept 15, 2014) COE318 Lecture Notes: Week 3 1 of 17 COE318 Lecture Notes Week 3 (Week of Sept 15, 2014) Announcements (REPEAT!) Quiz (5% of total mark) on Wednesday, September 24, 2014. Covers weeks 1 3 and labs 1 3.

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

COE318 Lecture Notes Week 13 (Nov 28, 2011)

COE318 Lecture Notes Week 13 (Nov 28, 2011) COE318 Software Systems Lecture Notes: Week 13 1 of 8 COE318 Lecture Notes Week 13 (Nov 28, 2011) Topics Review Questions/Answers K. Clowes counselling hours for exam week Counselling Hours for Exam Week

More information

Inheritance. Lecture 11 COP 3252 Summer May 25, 2017

Inheritance. Lecture 11 COP 3252 Summer May 25, 2017 Inheritance Lecture 11 COP 3252 Summer 2017 May 25, 2017 Subclasses and Superclasses Inheritance is a technique that allows one class to be derived from another. A derived class inherits all of the data

More information

Abstract Classes and Interfaces

Abstract Classes and Interfaces Abstract Classes and Interfaces Reading: Reges and Stepp: 9.5 9.6 CSC216: Programming Concepts Sarah Heckman 1 Abstract Classes A Java class that cannot be instantiated, but instead serves as a superclass

More information

coe318 Lab 1 Introduction to Netbeans and Java

coe318 Lab 1 Introduction to Netbeans and Java coe318 Lab 1 Week of September 12, 2016 Objectives Lean how to use the Netbeans Integrated Development Environment (IDE). Learn how to generate and write formatted API documentation. Add a constructor,

More information

Implements vs. Extends When Defining a Class

Implements vs. Extends When Defining a Class Implements vs. Extends When Defining a Class implements: Keyword followed by the name of an INTERFACE Interfaces only have method PROTOTYPES You CANNOT create on object of an interface type extends: Keyword

More information

Rules and syntax for inheritance. The boring stuff

Rules and syntax for inheritance. The boring stuff Rules and syntax for inheritance The boring stuff The compiler adds a call to super() Unless you explicitly call the constructor of the superclass, using super(), the compiler will add such a call for

More information

Inheritance and Testing Spring 2018 Exam Prep 4: February 11, 2019

Inheritance and Testing Spring 2018 Exam Prep 4: February 11, 2019 CS 61B Inheritance and Testing Spring 2018 Exam Prep 4: February 11, 2019 1 Playing with Puppers Suppose we have the Dog and Corgi classes which are a defined below with a few methods but no implementation

More information

Tutorial 3: Unit tests and JUnit

Tutorial 3: Unit tests and JUnit Tutorial 3: Unit tests and JUnit Runtime logic errors, such as contract violations, are among the more frequent in a poorly debugged program. Logic error should be fixed. However, to fix an error we need

More information

CSCE 747 Unit Testing Laboratory Name(s):

CSCE 747 Unit Testing Laboratory Name(s): CSCE 747 Unit Testing Laboratory Name(s): You have been hired to test our new calendar app! Congrats!(?) This program allows users to book meetings, adding those meetings to calendars maintained for rooms

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

OOP++ CSE219, Computer Science III Stony Brook University

OOP++ CSE219, Computer Science III Stony Brook University OOP++ CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 What is memory? A giant array of bytes 0xffffffff Stack Segment How do we assign data to/get data from memory?

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

public static boolean isoutside(int min, int max, int value)

public static boolean isoutside(int min, int max, int value) See the 2 APIs attached at the end of this worksheet. 1. Methods: Javadoc Complete the Javadoc comments for the following two methods from the API: (a) / @param @param @param @return @pre. / public static

More information

Topic 5 Polymorphism. " Inheritance is new code that reuses old code. Polymorphism is old code that reuses new code.

Topic 5 Polymorphism.  Inheritance is new code that reuses old code. Polymorphism is old code that reuses new code. Topic 5 Polymorphism " Inheritance is new code that reuses old code. Polymorphism is old code that reuses new code. 1 Polymorphism Another feature of OOP literally having many forms object variables in

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

Introduction to Inheritance

Introduction to Inheritance Introduction to Inheritance James Brucker These slides cover only the basics of inheritance. What is Inheritance? One class incorporates all the attributes and behavior from another class -- it inherits

More information

Java Magistère BFA

Java Magistère BFA Java 101 - Magistère BFA Lesson 3: Object Oriented Programming in Java Stéphane Airiau Université Paris-Dauphine Lesson 3: Object Oriented Programming in Java (Stéphane Airiau) Java 1 Goal : Thou Shalt

More information

Comparing Objects 3/14/16

Comparing Objects 3/14/16 Comparing Objects 3/14/16 Agenda HW Notes Practice Tests Returned Searching Data One of the most important and useful things that computers do is search through huge amounts of data. Search Engines Patterns

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

Distributed Systems Recitation 1. Tamim Jabban

Distributed Systems Recitation 1. Tamim Jabban 15-440 Distributed Systems Recitation 1 Tamim Jabban Office Hours Office 1004 Sunday, Tuesday: 9:30-11:59 AM Appointment: send an e-mail Open door policy Java: Object Oriented Programming A programming

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

Lecture 10. Overriding & Casting About

Lecture 10. Overriding & Casting About Lecture 10 Overriding & Casting About Announcements for This Lecture Readings Sections 4.2, 4.3 Prelim, March 8 th 7:30-9:30 Material up to next Tuesday Sample prelims from past years on course web page

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

CS/ENGRD 2110 SPRING Lecture 7: Interfaces and Abstract Classes

CS/ENGRD 2110 SPRING Lecture 7: Interfaces and Abstract Classes CS/ENGRD 2110 SPRING 2019 Lecture 7: Interfaces and Abstract Classes http://courses.cs.cornell.edu/cs2110 1 Announcements 2 A2 is due Thursday night (14 February) Go back to Lecture 6 & discuss method

More information

For this section, we will implement a class with only non-static features, that represents a rectangle

For this section, we will implement a class with only non-static features, that represents a rectangle For this section, we will implement a class with only non-static features, that represents a rectangle 2 As in the last lecture, the class declaration starts by specifying the class name public class Rectangle

More information

Lecture 4: Extending Classes. Concept

Lecture 4: Extending Classes. Concept Lecture 4: Extending Classes Concept Inheritance: you can create new classes that are built on existing classes. Through the way of inheritance, you can reuse the existing class s methods and fields, and

More information

Tarkvaraprojekt seminar XI 27.aprill Ivo Mägi Java Puzzlers

Tarkvaraprojekt seminar XI 27.aprill Ivo Mägi Java Puzzlers Tarkvaraprojekt seminar XI 27.aprill 2006 Ivo Mägi Java Puzzlers Administratiivinfot Presentatsioonide kuupäevad 11. mai AJU Darth Vader Hades23 HAL invitro 18.mai Kosmos Lendoravad Macrosoft Spectrum

More information

Inheritance. Notes Chapter 6 and AJ Chapters 7 and 8

Inheritance. Notes Chapter 6 and AJ Chapters 7 and 8 Inheritance Notes Chapter 6 and AJ Chapters 7 and 8 1 Inheritance you know a lot about an object by knowing its class for example what is a Komondor? http://en.wikipedia.org/wiki/file:komondor_delvin.jpg

More information

COMP200 INHERITANCE. OOP using Java, from slides by Shayan Javed

COMP200 INHERITANCE. OOP using Java, from slides by Shayan Javed 1 1 COMP200 INHERITANCE OOP using Java, from slides by Shayan Javed 2 Inheritance Derive new classes (subclass) from existing ones (superclass). Only the Object class (java.lang) has no superclass Every

More information

CS/ENGRD 2110 FALL Lecture 7: Interfaces and Abstract Classes

CS/ENGRD 2110 FALL Lecture 7: Interfaces and Abstract Classes 1 CS/ENGRD 2110 FALL 2016 Lecture 7: Interfaces and Abstract Classes http://courses.cs.cornell.edu/cs2110 Announcements 2 Attendance for this week s recitation is mandatory! A2 is due Today Get started

More information

Good Luck! CSC207, Fall 2012: Quiz 3 Duration 25 minutes Aids allowed: none. Student Number: Lecture Section: L0101. Instructor: Horton

Good Luck! CSC207, Fall 2012: Quiz 3 Duration 25 minutes Aids allowed: none. Student Number: Lecture Section: L0101. Instructor: Horton CSC207, Fall 2012: Quiz 3 Duration 25 minutes Aids allowed: none Student Number: Last Name: Lecture Section: L0101 First Name: Instructor: Horton Please fill out the identification section above as well

More information

Argument Passing All primitive data types (int etc.) are passed by value and all reference types (arrays, strings, objects) are used through refs.

Argument Passing All primitive data types (int etc.) are passed by value and all reference types (arrays, strings, objects) are used through refs. Local Variable Initialization Unlike instance vars, local vars must be initialized before they can be used. Eg. void mymethod() { int foo = 42; int bar; bar = bar + 1; //compile error bar = 99; bar = bar

More information

UNIT TESTING. Krysta Yousoufian CSE 331 Section April 19, With material from Marty Stepp, David Notkin, and The Pragmatic Programmer

UNIT TESTING. Krysta Yousoufian CSE 331 Section April 19, With material from Marty Stepp, David Notkin, and The Pragmatic Programmer UNIT TESTING Krysta Yousoufian CSE 331 Section April 19, 2012 With material from Marty Stepp, David Notkin, and The Pragmatic Programmer JUnit Semantics How to write a technically correct JUnit test A

More information

CS-202 Introduction to Object Oriented Programming

CS-202 Introduction to Object Oriented Programming CS-202 Introduction to Object Oriented Programming California State University, Los Angeles Computer Science Department Lecture III Inheritance and Polymorphism Introduction to Inheritance Introduction

More information

More about inheritance

More about inheritance Main concepts to be covered More about inheritance Exploring polymorphism method polymorphism static and dynamic type overriding dynamic method lookup protected access 4.1 The inheritance hierarchy Conflicting

More information

CS/ENGRD 2110 SPRING 2018

CS/ENGRD 2110 SPRING 2018 1 The fattest knight at King Arthur's round table was Sir Cumference. He acquired his size from too much pi. CS/ENGRD 2110 SPRING 2018 Lecture 6: Consequence of type, casting; function equals http://courses.cs.cornell.edu/cs2110

More information

Language Features. 1. The primitive types int, double, and boolean are part of the AP

Language Features. 1. The primitive types int, double, and boolean are part of the AP Language Features 1. The primitive types int, double, and boolean are part of the AP short, long, byte, char, and float are not in the subset. In particular, students need not be aware that strings are

More information

Topics covered. Introduction to JUnit JUnit: Hands-on session Introduction to Mockito Mockito: Hands-on session. JUnit & Mockito 2

Topics covered. Introduction to JUnit JUnit: Hands-on session Introduction to Mockito Mockito: Hands-on session. JUnit & Mockito 2 JUnit & Mockito 1 Topics covered Introduction to JUnit JUnit: Hands-on session Introduction to Mockito Mockito: Hands-on session JUnit & Mockito 2 Introduction to JUnit JUnit & Mockito 3 What is JUnit?

More information

Index COPYRIGHTED MATERIAL

Index COPYRIGHTED MATERIAL Index COPYRIGHTED MATERIAL Note to the Reader: Throughout this index boldfaced page numbers indicate primary discussions of a topic. Italicized page numbers indicate illustrations. A abstract classes

More information

HAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.

HAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner. HAS-A Relationship Association is a relationship where all objects have their own lifecycle and there is no owner. For example, teacher student Aggregation is a specialized form of association where all

More information

10 Generating Javadocs; HashMap: Overriding equals

10 Generating Javadocs; HashMap: Overriding equals Lab 10 c 2010 Felleisen, Proulx, et. al. 10 Generating Javadocs; HashMap: Overriding equals Goals The first part of the lab you will learn how to generate Javadoc documentation, and practice reading Javadoc

More information

Lecture 3. COMP1006/1406 (the Java course) Summer M. Jason Hinek Carleton University

Lecture 3. COMP1006/1406 (the Java course) Summer M. Jason Hinek Carleton University Lecture 3 COMP1006/1406 (the Java course) Summer 2014 M. Jason Hinek Carleton University today s agenda assignments 1 (graded) & 2 3 (available now) & 4 (tomorrow) a quick look back primitive data types

More information

CS/ENGRD 2110 FALL Lecture 6: Consequence of type, casting; function equals

CS/ENGRD 2110 FALL Lecture 6: Consequence of type, casting; function equals 1 CS/ENGRD 2110 FALL 2017 Lecture 6: Consequence of type, casting; function equals http://courses.cs.cornell.edu/cs2110 Overview ref in JavaHyperText 2 Quick look at arrays array Casting among classes

More information

The Java Collections Framework and Lists in Java Parts 1 & 2

The Java Collections Framework and Lists in Java Parts 1 & 2 The Java Collections Framework and Lists in Java Parts 1 & 2 Chapter 9 Chapter 6 (6.1-6.2.2) CS 2334 University of Oklahoma Brian F. Veale Groups of Data Data are very important to Software Engineering

More information

Another interface: Comparable

Another interface: Comparable Another interface: Comparable Comparing things is certainly useful, e.g. for sorting Show me cats ordered by cuteness" Show shapes ordered by number of sides" An example interface: Comparable Since sorting

More information

Distributed Systems Recitation 1. Tamim Jabban

Distributed Systems Recitation 1. Tamim Jabban 15-440 Distributed Systems Recitation 1 Tamim Jabban Office Hours Office 1004 Tuesday: 9:30-11:59 AM Thursday: 10:30-11:59 AM Appointment: send an e-mail Open door policy Java: Object Oriented Programming

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

CS108, Stanford Handout #12. Inheritance 2

CS108, Stanford Handout #12. Inheritance 2 CS108, Stanford Handout #12 Winter, 2006-07 Nick Parlante Inheritance 2 Here we look at a variety of more advanced inheritance issues. Is-a vs. Has-a Specifying a superclass-subclass relationship establishes

More information

INHERITANCE. Spring 2019

INHERITANCE. Spring 2019 INHERITANCE Spring 2019 INHERITANCE BASICS Inheritance is a technique that allows one class to be derived from another A derived class inherits all of the data and methods from the original class Suppose

More information

IT 313 Advanced Application Development

IT 313 Advanced Application Development Page 1 of 7 IT 313 Advanced Application Development Practice Midterm Exam Part A. Multiple Choice Questions. Answer all questions. Optional: supply a reason or show work for partial credit in case you

More information

Java Collection Framework

Java Collection Framework Java Collection Framework Readings Purpose To provide a working knowledge of the Java Collections framework and iterators. Learning Objectives Understand the structure of the Java Collections framework

More information

Java Inheritance. Written by John Bell for CS 342, Spring Based on chapter 6 of Learning Java by Niemeyer & Leuck, and other sources.

Java Inheritance. Written by John Bell for CS 342, Spring Based on chapter 6 of Learning Java by Niemeyer & Leuck, and other sources. Java Inheritance Written by John Bell for CS 342, Spring 2018 Based on chapter 6 of Learning Java by Niemeyer & Leuck, and other sources. Review Which of the following is true? A. Java classes may either

More information

CS211 Computers and Programming Matthew Harris and Alexa Sharp July 9, Boggle

CS211 Computers and Programming Matthew Harris and Alexa Sharp July 9, Boggle Boggle If you are not familiar with the game Boggle, the game is played with 16 dice that have letters on all faces. The dice are randomly deposited into a four-by-four grid so that the players see the

More information

TeenCoder : Java Programming (ISBN )

TeenCoder : Java Programming (ISBN ) TeenCoder : Java Programming (ISBN 978-0-9887070-2-3) and the AP * Computer Science A Exam Requirements (Alignment to Tennessee AP CS A course code 3635) Updated March, 2015 Contains the new 2014-2015+

More information

CS-140 Fall 2017 Test 2 Version A Nov. 29, 2017

CS-140 Fall 2017 Test 2 Version A Nov. 29, 2017 CS-140 Fall 2017 Test 2 Version A Nov. 29, 2017 Name: 1. (10 points) For the following, Check T if the statement is true, the F if the statement is false. (a) T F : An interface defines the list of fields

More information

Object Oriented Programming: In this course we began an introduction to programming from an object-oriented approach.

Object Oriented Programming: In this course we began an introduction to programming from an object-oriented approach. CMSC 131: Chapter 28 Final Review: What you learned this semester The Big Picture Object Oriented Programming: In this course we began an introduction to programming from an object-oriented approach. Java

More information

Java Classes, Inheritance, and Interfaces

Java Classes, Inheritance, and Interfaces Java Classes, Inheritance, and Interfaces Introduction Classes are a foundational element in Java. Everything in Java is contained in a class. Classes are used to create Objects which contain the functionality

More information

Last class. -More on polymorphism -super -Introduction to interfaces

Last class. -More on polymorphism -super -Introduction to interfaces Last class -More on polymorphism -super -Introduction to interfaces Interfaces Sometimes in Java, we will have 2 classes that both share a similar structure, but neither of them is clearly the parent or

More information

Highlights of Last Week

Highlights of Last Week Highlights of Last Week Refactoring classes to reduce coupling Passing Object references to reduce exposure of implementation Exception handling Defining/Using application specific Exception types 1 Sample

More information

EECS2030 Week 7 worksheet Tue Feb 28, 2017

EECS2030 Week 7 worksheet Tue Feb 28, 2017 1. Interfaces The Comparator interface provides a way to control how a sort method (such as Collections.sort) sorts elements of a collection. For example, the following main method sorts a list of strings

More information

CS 200 More Classes Jim Williams, PhD

CS 200 More Classes Jim Williams, PhD CS 200 More Classes Jim Williams, PhD Week 13 1. Team Lab: Instantiable Class 2. BP2 Milestone 3 Due Thursday 3. P7 Due next Thursday 4. CS 300 Programming II in the future? 5. Lecture: More Classes, UML

More information

Chapter 11 Inheritance and Polymorphism. Motivations. Suppose you will define classes to model circles,

Chapter 11 Inheritance and Polymorphism. Motivations. Suppose you will define classes to model circles, Chapter 11 Inheritance and Polymorphism 1 Motivations Suppose you will define classes to model circles, rectangles, and triangles. These classes have many common features. What is the best way to design

More information

Principles of Software Construction: Testing: One, Two, Three

Principles of Software Construction: Testing: One, Two, Three Principles of Software Construction: Testing: One, Two, Three Josh Bloch Charlie Garrod School of Computer Science 1 Administrivia Homework 4a due today, 11:59 p.m. Design review meeting is mandatory But

More information

COMP 250. Lecture 32. polymorphism. Nov. 25, 2016

COMP 250. Lecture 32. polymorphism. Nov. 25, 2016 COMP 250 Lecture 32 polymorphism Nov. 25, 2016 1 Recall example from lecture 30 class String serialnumber Person owner void bark() {print woof } : my = new (); my.bark();?????? extends extends class void

More information

The Object Class. java.lang.object. Important Methods In Object. Mark Allen Weiss Copyright 2000

The Object Class. java.lang.object. Important Methods In Object. Mark Allen Weiss Copyright 2000 The Object Class Mark Allen Weiss Copyright 2000 1/4/02 1 java.lang.object All classes either extend Object directly or indirectly. Makes it easier to write generic algorithms and data structures Makes

More information

Announcements/Follow-ups

Announcements/Follow-ups Announcements/Follow-ups Midterm #2 Friday Everything up to and including today Review section tomorrow Study set # 6 online answers posted later today P5 due next Tuesday A good way to study Style omit

More information

Declarations and Access Control SCJP tips

Declarations and Access Control  SCJP tips Declarations and Access Control www.techfaq360.com SCJP tips Write code that declares, constructs, and initializes arrays of any base type using any of the permitted forms both for declaration and for

More information

CompuScholar, Inc. 9th - 12th grades

CompuScholar, Inc. 9th - 12th grades CompuScholar, Inc. Alignment to the College Board AP Computer Science A Standards 9th - 12th grades AP Course Details: Course Title: Grade Level: Standards Link: AP Computer Science A 9th - 12th grades

More information

Overview. Lecture 7: Inheritance and GUIs. Inheritance. Example 9/30/2008

Overview. Lecture 7: Inheritance and GUIs. Inheritance. Example 9/30/2008 Overview Lecture 7: Inheritance and GUIs Written by: Daniel Dalevi Inheritance Subclasses and superclasses Java keywords Interfaces and inheritance The JComponent class Casting The cosmic superclass Object

More information

CS/ENGRD 2110 FALL Lecture 6: Consequence of type, casting; function equals

CS/ENGRD 2110 FALL Lecture 6: Consequence of type, casting; function equals CS/ENGRD 2110 FALL 2018 Lecture 6: Consequence of type, casting; function equals http://courses.cs.cornell.edu/cs2110 Overview references in 2 Quick look at arrays: array Casting among classes cast, object-casting

More information

Making New instances of Classes

Making New instances of Classes Making New instances of Classes NOTE: revised from previous version of Lecture04 New Operator Classes are user defined datatypes in OOP languages How do we make instances of these new datatypes? Using

More information