Operations. I Forgot 9/4/2016 COMPUTER SCIENCE DEPARTMENT PICNIC. If you forgot your IClicker, or your batteries fail during the exam

Similar documents
COMPUTER SCIENCE DEPARTMENT PICNIC. Operations. Push the power button and hold. Once the light begins blinking, enter the room code

COMPUTER SCIENCE DEPARTMENT PICNIC. Operations. Push the power button and hold. Once the light begins blinking, enter the room code

Assignment 1 due Monday at 11:59pm

Building Java Programs

Anatomy of a Class Encapsulation Anatomy of a Method

Encapsulation. Administrative Stuff. September 12, Writing Classes. Quick review of last lecture. Classes. Classes and Objects

Chapter 4: Writing Classes

Where do objects come from? Good question!

AP Computer Science Chapter 10 Implementing and Using Classes Study Guide

Designing Classes. Where do objects come from? Where do objects come from? Example: Account datatype. Dr. Papalaskari 1

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

Lecture 12: Classes II

Designing Classes part 2

Building Java Programs

Lecture 11: Intro to Classes

Chapter 4 Defining Classes I

Building Java Programs Chapter 8

A programming problem. Building Java Programs Chapter 8. Observations. A bad solution. Classes

Chapter. We've been using predefined classes. Now we will learn to write our own classes to define objects

Building Java Programs

CSC 1051 Algorithms and Data Structures I. Final Examination May 2, Name:

More Java Basics. class Vector { Object[] myarray;... //insert x in the array void insert(object x) {...} Then we can use Vector to hold any objects.

Questions Answer Key Questions Answer Key Questions Answer Key

CS 116 Week 8 Page 1

CS111: PROGRAMMING LANGUAGE II. Lecture 1: Introduction to classes

MIDTERM REVIEW. midterminformation.htm

Chapter 5: Writing Classes and Enums

CS1004: Intro to CS in Java, Spring 2005

Admin. CS 112 Introduction to Programming. Exercise: Gene Finding. Language Organizing Structure. Gene Finding. Foundational Programming Concepts

11/19/2014. Objects. Chapter 4: Writing Classes. Classes. Writing Classes. Java Software Solutions for AP* Computer Science A 2nd Edition

Table of Contents Date(s) Title/Topic Page #s. Chapter 4: Writing Classes 4.1 Objects Revisited

CmSc 150 Fundamentals of Computing I. Lesson 28: Introduction to Classes and Objects in Java. 1. Classes and Objects

Object-Oriented Programming (OOP) Basics. CSCI 161 Introduction to Programming I

3.1 Class Declaration

Introduction to Visual Basic and Visual C++ Introduction to Java. JDK Editions. Overview. Lesson 13. Overview

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

Lecture 02, Fall 2018 Friday September 7

Object-Oriented Programming Concepts

References and objects

Chapter 6 Introduction to Defining Classes

Computer Science II (20073) Week 1: Review and Inheritance

Topic 27 classes and objects, state and behavior

Islamic University of Gaza Faculty of Engineering Computer Engineering Department

Anatomy of a Method. HW3 is due Today. September 15, Midterm 1. Quick review of last lecture. Encapsulation. Encapsulation

EECS168 Exam 3 Review

Object-Oriented Programming Concepts

CIS 110: Introduction to Computer Programming

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

Outline. CIS 110: Introduction to Computer Programming. Any questions? My life story. A horrible incident. The awful truth

Objects and Classes. 1 Creating Classes and Objects. CSCI-UA 101 Objects and Classes

CS 112 Introduction to Programming

System.out.print(); Scanner.nextLine(); String.compareTo();

CS 101 Exam 2 Spring Id Name

Objects and Classes -- Introduction

Announcements. PS 3 is due Thursday, 10/6. Midterm Exam 1: 10/14 (Fri), 9:00am-10:53am

Lecture 5: Methods CS2301

Building Java Programs

Computer Science II (20082) Week 1: Review and Inheritance

Defining Classes and Methods

Classes as Blueprints: How to Define New Types of Objects

Encapsulation. You can take one of two views of an object: internal - the structure of its data, the algorithms used by its methods

CS 1331 Exam 1. Fall Failure to properly fill in the information on this page will result in a deduction of up to 5 points from your exam score.

writing classes objectives chapter

In Java there are three types of data values:

CSCI 1301: Introduction to Computing and Programming Summer 2018 Lab 07 Classes and Methods

Designing Classes. Where do objects come from? Where do objects come from? Example: Account datatype. Dr. Papalaskari 1

This exam is open book. Each question is worth 3 points.

Introduction to Programming Using Java (98-388)

COMP-202 Unit 8: Defining Your Own Classes. CONTENTS: Class Definitions Attributes Methods and Constructors Access Modifiers and Encapsulation

Introduction to Classes and Objects. David Greenstein Monta Vista High School

Creating an object Instance variables

Chapter 6 Lab Classes and Objects

! Theoretical examples: ! Examples from Java: ! data type: A category of data values. " Example: integer, real number, string

Selected Questions from by Nageshwara Rao

Object Oriented Programming

CS 231 Data Structures and Algorithms, Fall 2016

9 Working with the Java Class Library

CS 251 Intermediate Programming Methods and Classes

Binghamton University. CS-140 Fall Problem Solving. Creating a class from scratch

CS 251 Intermediate Programming Methods and More

Day 3. COMP 1006/1406A Summer M. Jason Hinek Carleton University

OO Programming Concepts. Classes. Objects. Chapter 8 User-Defined Classes and ADTs

Course Outline. Introduction to java

CSE 373. Objects in Collections: Object; equals; compareto; mutability. slides created by Marty Stepp

JAVA PROGRAMMING LAB. ABSTRACT In this Lab you will learn to define and invoke void and return java methods

Instance Members and Static Members

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

COMP 202. More on OO. CONTENTS: static revisited this reference class dependencies method parameters variable scope method overloading

ECE 122. Engineering Problem Solving with Java

Introduction to Inheritance

(800) Toll Free (804) Fax Introduction to Java and Enterprise Java using Eclipse IDE Duration: 5 days

Chapter 4. Defining Classes I

Programming II (CS300)

Objects as a programming concept

CSCI 136 Data Structures & Advanced Programming. Lecture 3 Fall 2017 Instructors: Bill & Bill

Overview of Eclipse Lectures. Module Road Map

Recursion 1. Recursion is the process of defining something in terms of itself.

Example: Count of Points

CS 1331 Exam 1 ANSWER KEY

Transcription:

COMPUTER SCIENCE DEPARTMENT PICNIC Welcome to the 2016-2017 Academic year! Meet your faculty, department staff, and fellow students in a social setting. Food and drink will be provided. When: Saturday, September 10 th Time: 11am 2pm Where: City Park Shelter #7 Operations Push the power button and hold. Once the light begins blinking, enter the room code This room s code is BC When a question is asked, you have 30 seconds to respond Enter the letter of the appropriate answer When you enter the letter of the answer, your i- clicker will blink green. It is your responsibility to check for that green light. I Forgot If you forgot your IClicker, or your batteries fail during the exam Your worst quiz score is not counted to cover this situation. All other quizzes count. If you have an excused absence, you may have the quiz score exempted. 1

Am I here? A. Yes B. No C. Define here 4 Java classes Savitch, ch 5 Outline Objects, classes, and object-oriented programming relationship between classes and objects abstraction Anatomy of a class instance variables instance methods constructors 6 2

Objects and classes object: An entity that combines state and behavior. object-oriented programming (OOP): Writing programs that perform most of their behavior as interactions between objects. class: 1. A program. or, 2. A blueprint of an object. classes you may have used so far: String, Scanner, File We will write classes to define new types of objects. 7 Abstraction abstraction: A distancing between ideas and details. Objects in Java provide abstraction: We can use them without knowing how they work. You use abstraction every day. Example: Your portable music player. You understand its external behavior (buttons, screen, etc.) You don't understand its inner details (and you don't need to). 8 Class = blueprint, Object = instance Music player blueprint state: current song volume battery life behavior: power on/off change station/song change volume choose random song Music player #1 state: song = "Thriller" volume = 17 battery life = 2.5 hrs behavior: power on/off change station/song change volume choose random song 9 Music player #2 state: song = Feels like rain" volume = 9 battery life = 3.41 hrs behavior: power on/off change station/song change volume choose random song Music player #3 state: song = "Code Monkey" volume = 24 battery life = 1.8 hrs behavior: power on/off change station/song change volume choose random song 3

How often would you expect to get snake eyes? If you re unsure on how to compute the probability then you write a program that simulates the process 10 Snake Eyes public class SnakeEyes { public static void main(string [] args){ int ROLLS = 100000; int count = 0; Die die1 = new Die(); Die die2 = new Die(); Need to write the Die class! for (int i = 0; i < ROLLS; i++){ if (die1.roll() == 1 && die2.roll() == 1){ count++; System.out.println( snake eyes probability: " + count / ROLLS); 11 Die object State (data) of a Die object: Instance variable numfaces facevalue Description the number of faces for a die the current value produced by rolling the die Behavior (methods) of a Die object: Method name roll() getfacevalue() roll the die Description retrieve the value of the last roll 12 4

The Die class The class (blueprint) knows how to create objects. Die class state: int numfaces int facevalue behavior: roll() getfacevalue() Die object #1 state: numfaces = 6 facevalue = 2 behavior: roll() getfacevalue() Die die1 = new Die(); Die object #2 state: numfaces = 6 facevalue = 5 behavior: roll() getfacevalue() Die object #3 state: numfaces = 10 facevalue = 8 behavior: roll() getfacevalue() 13 IC Question 2 Why is abstraction a strength when we program? A. It allows us to identify where we use classes B. It allows us to use objects without knowing how they work C. It allows us to use variables without knowing how they work D. All of the above 14 IC Question 2 Answer Why is abstraction a strength when we program? A. It allows us to identify where we use classes B. It allows us to use objects without knowing how they work C. It allows us to use variables without knowing how they work D. All of the above 15 5

IC Question 3 What is the range of possible values of the variable facevalue in the Die class? A. 1..6 B. 1..8 C. 1..numFaces D. 1..faceValue E. None of the above 16 IC Question 3 Answer What is the range of possible values of the variable facevalue in the Die class? A. 1..6 B. 1..8 C. 1..numFaces D. 1..faceValue E. None of the above 17 Object state: instance variables 6

Die class The following code creates a new class named Die. public class Die { int numfaces; int facevalue; Save this code into a file named Die.java. declared outside of any method Each Die object contains two pieces of data: an int named numfaces, an int named facevalue No behavior (yet). 19 Instance variables instance variable: A variable inside an object that holds part of its state. Each object has its own copy. Declaring an instance variable: <type> <name> ; public class Die { int numfaces; int facevalue; 20 Instance variables Each Die object maintains its own numfaces and facevalue variable, and thus its own state Die die1 = new Die(); Die die2 = new Die(); die1 numfaces 5 facevalue 2 die2 numfaces 6 facevalue 3 21 7

Accessing instance variables Code in other classes can access your object's instance variables. Accessing an instance variable: dot operator <variable name>.<instance variable> Modifying an instance variable: <variable name>.<instance variable> = <value> ; Examples: System.out.println( you rolled " + die.facevalue); die.facevalue = 2; 22 Client code Die.java can be made executable by giving it a main We will almost always do this. WHY? To test the class Die before it is used by other classes or can be used by other programs stored in separate.java files. client code: Code that uses a class Roll.java (client code) main(string[] args) { Die die1 = new Die(); die1.numfaces = 6; die1.facevalue = 5; Die die2 = new Die(); die2.numfaces = 10; die2.facevalue = 3;... Die.java public class Die { int numfaces; int facevalue; 23 IC Question 4 When modifying an instance variable by doing the following: xxx.yyy=2; xxx is which of the following: A. Class name B. Variable name C. Object name 24 8

IC Question 4 Answer When modifying an instance variable by doing the following: xxx.yyy=2; xxx is which of the following: A. Class name B. Variable name C. Object name 25 IC Question 5 If we have defined a class to provide functionality to client code, what is the purpose of the main method is that class? A. To provide a mechanism for unit testing B. To provide print statements C. To allow the programmer to build the class D. None of the above 26 IC Question 5 Answer If we have defined a class to provide functionality to client code, what is the purpose of the main method is that class? A. To provide a mechanism for unit testing B. To provide print statements C. To allow the programmer to build the class D. None of the above 27 9

Object behavior: methods OO Instance methods Classes combine state and behavior. instance variables: define state instance methods: define behavior for each object of a class. methods are the way objects communicate with each other and with users instance method declaration, general syntax: public <type> <name> ( <parameter(s)> ) { <statement(s)> ; 29 Rolling the dice: instance methods public class Die { int numfaces; int facevalue; public int roll (){ facevalue = (int)(math.random() * numfaces) + 1; return facevalue; Die die1 = new Die(); die1.numfaces = 6; int value1 = die1.roll(); Die die2 = new Die(); die2.numfaces = 10; int value2 = die2.roll(); Think of each Die object as having its own copy of the roll method, which operates on that object's state 30 10

31 Object initialization: constructors Initializing objects When we create a new object, we can assign values to all, or some of, its instance variables: Die die1 = new Die(6); Die die2 = new Die(); 33 11

Die constructor public class Die { int numfaces; Die die1 = new Die(6); int facevalue; public Die (int faces) { numfaces = faces; facevalue = 1; // can t have both of these constructors at once public Die (int faceval) { numfaces = 6; facevalue = faceval; public int roll (){ facevalue = (int)(math.random()*numfaces) + 1; return facevalue; 34 Constructors constructor: creates and initializes a new object public <type> ( <parameter(s)> ) { <statement(s)> ; For a constructor the <type> is the name of the class A constructor runs when the client uses the new keyword. A constructor implicitly returns the newly created and initialized object. If a class has no constructor, Java gives it a default constructor with no parameters that sets all the object's fields to 0 or null. 35 Multiple constructors are possible public class Die { int numfaces; int facevalue; Die die1 = new Die(5); Die die2 = new Die(); public Die () { numfaces = 6; facevalue = 1; // OK to have both of these constructors at once public Die (int faces) { numfaces = faces; facevalue = 1; 36 12

IC Question 2 public <type> ( <parameter(s)> ) { <statement(s)> ; For a constructor the <type> is which of the following: A. The return type B. The method type C. The name of the class D. The type of the parameter 37 IC Question 2 Answer public <type> ( <parameter(s)> ) { <statement(s)> ; For a constructor the <type> is which of the following: A. The return type B. The method type C. The name of the class D. The type of the parameter 38 Encapsulation 13

Encapsulation encapsulation: Hiding implementation details of an object from clients. Encapsulation provides abstraction; we can use objects without knowing how they work. The object has: an external view (its behavior) an internal view (the state and methods that accomplish the behavior) 40 Implementing encapsulation Instance variables can be declared private to indicate that no code outside their own class can access or change them. Declaring a private instance variable: private <type> <name> ; Examples: private int facevalue; private String name; Once instance variables are private, client code cannot access them: Roll.java:11: facevalue has private access in Die System.out.println( facevalue is " + die.facevalue); ^ 41 Instance variables, encapsulation and access In our previous implementation of the Die class we used the public access modifier: public class Die { public int numfaces; public int facevalue; We can encapsulate the instance variables using private: public class Die { private int numfaces; private int facevalue; But how does a client class now get to these? 42 14

Accessors and mutators We provide accessor methods to examine their values: public int getfacevalue() { return facevalue; This gives clients read-only access to the object's fields. Client code will look like this: System.out.println( facevalue is " + die.getfacevalue()); If required, we can also provide mutator methods: public void setfacevalue(int value) { facevalue = value; Often not needed. Do we need a mutator method in this case? 43 Benefits of encapsulation Protects an object from unwanted access by clients. Example: If we write a program to manage users' bank accounts, we don't want a malicious client program to be able to arbitrarily change a BankAccount object's balance. Allows you to change the class implementation later. As a general rule, all instance data should be modified only by the object, i.e. instance variables should be declared private 44 Access Protection: Summary Access protection has three main benefits: It allows you to enforce constraints on an object's state. It provides a simpler client interface. Client programmers don't need to know everything that s in the class, only the public parts. It separates interface from implementation, allowing them to vary independently. 45 15

General guidelines As a rule of thumb: Classes are public. Instance variables are private. Constructors are public. Getter and setter/mutator methods are public Other methods must be decided on a caseby-case basis. 46 IC Question 3 Instance variables can be declared which of the following to indicate that no code outside their own class can access or change them. A. Public B. Instance C. Class D. Private E. None of the above 47 IC Question 3 Answer Instance variables can be declared which of the following to indicate that no code outside their own class can access or change them. A. Public B. Instance C. Class D. Private E. None of the above 48 16

Printing Objects We would like to be able to print a Java object like this: Student student = new Student( ); System.out.println( student: " + student); Would like this provide output that is more useful than what Java provides by default. Need to provide a tostring() method 49 The tostring() method tells Java how to convert an object into a String called when an object is printed or concatenated to a String: Point p = new Point(7, 2); System.out.println( p: " + p); Same as: System.out.println("p: " + p.tostring()); Every class has a tostring(), even if it isn't in your code. The default is the class's name and a hex (base-16) hash-code: Point@9e8c34 50 tostring() implementation public String tostring() { code that returns a suitable String; Example: tostring() method for our Student class: public String tostring(){ return name: " + name+ "\n" + id: " + id + "\n" + average: " + average; 51 17

IC Question 4 Every class must specify a tostring() A. True B. False 52 IC Question 4 Answer Every class must specify a tostring() A. True B. False classes have a default The default is the class's name and a hex (base-16) hash-code: Point@9e8c34 53 Variable shadowing An instance method parameter can have the same name as one of the object's instance variables: public class Point { private int x; private int y; // this is legal public void setlocation(int x, int y) { // when using x and y you get the parameters Instance variables x and y are shadowed by parameters with same names. 54 18

Avoiding variable shadowing public class Point { private int x; private int y;... public void setlocation(int x_value, int y_value) { x = x_value; y = y_value; 55 Avoiding shadowing using this public class Point { private int x; private int y;... public void setlocation(int x, int y) { this.x = x; this.y = y; Inside the setlocation method, When this.x is seen, the instance variable x is used. When x is seen, the parameter x is used. 56 Multiple constructors It is legal to have more than one constructor in a class. The constructors must accept different parameters. public class Point { private int x; private int y; public Point() { x = 0; y = 0; public Point(int x, int y) { this.x = x; this.y = y; 57 19

Constructors and this One constructor can call another using this: public class Point { private int x; private int y; public Point() { this(0, 0); //calls the (x, y) constructor public Point(int x, int y) { this.x = x; this.y = y;... 58 Summary of this this : A reference to the current instance of a given class using this: To refer to an instance variable: this.variable To call a method: this.method(parameters); To call a constructor from another constructor: this(parameters); 59 Example of using this public class MyThisTest { private int a; public MyThisTest() { this(42); public MyThisTest(int a) { this.a = a; public void somesomething() { int a = 1; System.out.println(a); System.out.println(this.a); System.out.println(this); public String tostring() { return "MyThisTest a=" + a; // refers to the instance variable a 60 20

IC Question 5 When you see this used like below, what is occurring? this(parameters); A. Referring to an instance variable B. Calling a method C. Calling a constructor from another constructor D. Calling a static method 61 IC Question 5 Answer When you see this used like below, what is occurring? this(parameters); A. Referring to an instance variable B. Calling a method C. Calling a constructor from another constructor D. Calling a static method 62 Method overloading Can you write different methods that have the same name? Yes! System.out.println( I can handle strings ); System.out.println(2 + 2); System.out.println(3.14); System.out.println(object); Math.max(10, 15); // returns integer Math.max(10.0, 15.0); // returns double Useful when you need to perform the same operation on different kinds of data. 63 21

Method overloading public int sum(int num1, int num2){ return num1 + num2; public int sum(int num1, int num2, int num3){ return num1 + num2 + num3; A method s name + number, type, and order of its parameters: method signature The compiler uses a method s signature to bind a method invocation to the appropriate definition 64 The return value is not part of the signature You cannot overload on the basis of the return type (because it can be ignored) Example of invalid overloading: public int convert(int value) { return 2 * value; public double convert(int value) { return 2.54 * value; 65 Example Consider the class Pet class Pet { private String name; private int age; private double weight; 66 22

Example (cont) public Pet() public Pet(String name, int age, double weight) public Pet(int age) public Pet(double weight) Suppose you have a horse that weights 750 pounds then you use: Pet myhorse = new Pet(750.0); but what happens if you do: Pet myhorse = new Pet(750);? 67 IC Question 6 The following is legal method overloading public int add (int x, int y) public double add (int a, int b) A. True B. False 68 IC Question 6 Answer The following is legal method overloading public int add (int x, int y) public double add (int a, int b) A. True B. False 69 23

Primitive Equality Suppose we have two integers i and j How does the statement i==j behave? i==j if i and j contain the same value 70 Object Equality Suppose we have two pet instances pet1 and pet2 How does the statement pet1==pet2 behave? 71 Object Equality Suppose we have two pet instances pet1 and pet2 How does the statement pet1==pet2 behave? pet1==pet2 is true if both refer to the same object The == operator checks if the addresses of the two objects are equal May not be what we want! 72 24

Object Equality - extended If you want a different notion of equality define your own.equals() method. Use pet1.equals(pet2) instead of pet1==pet2 The default definition of.equals() is the value of == but for Strings the contents are compared 73.equals for the Pet class public boolean equals (Object other) { if (!other instanceof Pet) { return false; Pet otherpet = (Pet) other; return ((this.age == otherpet.age) &&(Math.abs(this.weight otherpet.weight) < 1e-8) &&(this.name.equals(otherpet.name))); This is not explained correctly in the book (section 5.3)!! // SHOW ECLIPSE EXAMPLE OF Equals code. 74 Naming things Computer programs are written to be read by humans and only incidentally by computers. Use names that convey meaning Loop indices are often a single character (i, j, k), but others should be more informative. Importance of a name depends on its scope: Names with a short life need not be as informative as those with a long life Read code and see how others do it 75 25