1 / 35

# Questions? - PowerPoint PPT Presentation

Questions?. Math Class Wrapper Classes Writing / Testing Methods. Today in COMP 110. Review Math class / Wrapper classes / Decomposition Calling methods Overloading Programming Demo. The Math Class. Provides many standard mathematical methods

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Questions?' - sora

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

• Math Class

• Wrapper Classes

• Writing / Testing Methods

• Review

• Math class / Wrapper classes / Decomposition

• Calling methods

• Programming Demo

Provides many standard mathematical methods

All methods are static, no need for an object of the Math class

Call methods of the Math class using class name

Math.abs

Math.max

Math.min

Math.pow

Math.round

Others

Predefined constants

Math.PI

Math.E

• Each primitive type has an associated “Wrapper” class

• Byte

• Short

• Integer

• Long

• Float

• Double

• Character

• Boolean

• Solving a problem using decomposition

• Divide into subproblems (pseudocode)

• Solve each subproblem separately as a method

• Use the methods you’ve created to solve the problem

• It’s possible to call methods within other methods

• If calling a method of the same class, no need to specify receiving object

public class Example {

public void method1() {

method2(); //no object needed, current object assumed

}

public void method2() {

//do something

}

}

public class Example {

public void method1() {

System.out.println("method1!");

method2(); //no object needed, current object assumed

}

public void method2() {

System.out.println("method2!");

}

public static void main(String[] args) {

Example example = new Example(); //create object of class Example

example.method1();

}

}

• The input to a method is in the form of arguments

public class Account {

private double balance;

private double limit;

if(balance + amount <= limit)

balance = balance + amount; //only add if the transaction //is valid

}

}

The value is filled in by whomever calls the method

public class Account {

private double balance;

private double limit;

if(balance + amount <= limit)

balance = balance + amount; //only add if the transaction is valid

}

}

public class AccountTester {

public static void main(String[] args) {

Account accnt = new Account();

}

}

Separate Java Files!

A Driver program (Used for testing)

• NEVER do this

public class Account {

private double balance;

private double limit;

Scanner keyboard = new Scanner(System.in);

amount = keyboard.nextDouble();

if(balance + amount <= limit)

balance = balance + amount; //only add if the transaction is valid

}

}

Overwriting the value that was passed in!

public class Account {

private double balance;

private double limit;

//a helper method to determine if a transaction is valid

privateboolean transactionValid(double amount) {

if(balance + amount <= limit)

return true;

else

return false;

}

boolean valid = transactionValid(amount); //is the transaction valid?

if(valid)

balance = balance + amount; //only add if the transaction is valid

}

}

public class Account {

private double balance;

private double limit;

//a helper method to determine if a transaction is valid

privateboolean transactionValid(double amount) {

if(balance + amount <= limit)

return true;

else

return false;

}

if(transactionValid(amount))

balance = balance + amount; //only add if the transaction is valid

}

}

Call to a method inside an if-statement

• There’s no need to write

if(systemsGo == true)

System.out.println("Launch");

if(transactionValid(amount) == true)

System.out.println("Accepted");

• The more concise and equivalent way is

if(systemsGo)

System.out.println("Launch");

if(transactionValid(amount))

System.out.println("Accepted");

public class InputOne {

}

}

public class InputTwo {

}

}

• Methods in different classes can have the same name

• public static void main(String[] args) {

• InputOne iOne = new InputOne();

• InputTwo iTwo = new InputTwo();

• }

• Methods in the same class can also have the same name

• Distinguished by the number & types of the parameters

public class Average {

//average two values

public double getAverage(double a, double b) {

return (a + b) / 2.;

}

//average three values

public double getAverage(double a, double b, double c) {

return (a + b + c) / 3.;

}

}

System.out.print(7); //print an integer

System.out.print('7'); //print a character

System.out.print("seven"); //print a string

System.out.print(7.0); //print a double

• The Math class

• double Math.max(double a, double b)

• int Math.max(int a, int b)

• long Math.max(long a, long b)

• Allows the following

int m = Math.max(1,3);

double d = Math.max(5.6, 5.7);

• Any kind of method can be overloaded

• Void methods

• Methods returning a value

• Static methods

• Non-static methods

• Constructors

Pet myPet = new Pet();

Pet myPet = new Pet("Fang", 12, 10.);

public class Pet {

private String name;

private int age;

private double weight;

public Pet() {

name = “No name yet.”;

age = 0;

weight = 0;

}

public Pet(String initName, int initAge, double initWeight) {

name = initName;

age = initAge;

weight = initWeight;

}

}

• A method’s signature consists of

• Method name

• Number of parameters

• Types of parameters

• Example

public double getAverage(double a, double b) { … }

• Signature

• Name: getAverage

• NumParams: 2

• Param Types:

• Param1: double

• Param2: double

Return type is NOT considered part of the signature!

• Java does not allow you to define two methods with the same signature in the same class

• Examples

//these two are the same

float getAverage(float a, float b)

double getAverage(float a, float b)

//these two are different

float getAverage(float a, float b)

double getAverage(double a, double b)

• Recall that automatic type conversion can sometimes occur with method calls

double square(double x) {

return x*x; //square the argument and return it

}

• We can call this method as follows

square(7.0); //returns 49.0

square(7); //also returns 49.0, auto type conversion

public class Example {

double square(double x) {

return x*x;

}

int square(int x) {

return x*x;

}

public static void main(String[] args) {

Example e = new Example();

e.square(7.0);

e.square(7);

}

}

Which method is being called?

• Java will always use a method that is an exact match before it attempts type conversion

public void example(int i, double d, char c) {…}

• Are these calls to example an exact match?

• example(23, 55, 'c');

• example(88, 76.0, ';');

• example(4.0, 25, '!');

No. Automatic type conversion used

Yes. No need for Automatic type conversion

No. Automatic type conversion not possible

• Java will only perform type conversion if the method call is unambiguous

• There is only ONE method for which automatic type conversion can be used to find a match

public class Example {

double sum(int a, double b) {

return a + b;

}

double sum(double a, int b) {

return a + b;

}

public static void main(String[] args) {

Example e = new Example();

e.sum(7, 7); //error, this method call is ambiguous

e.sum(7, 7.0); //this is ok

e.sum(7.0, 7); //this is ok

}

}

• How Java determines which method you intend to call

Match Based on Method Name, Num & Types of Parameters

Exact Match?

Use the Method

Unambiguous Match using Type Conversion?

Use the Method

Error

• Use only with good reason

public Pet(double initWeight) { //constructor for weight

weight = initWeight;

}

public Pet(int initAge) { //constructor for age

age = initAge;

}

public static void main(String[] args) {

Pet myPet = new Pet(65); //meant to set weight, set age instead

}

• Room Occupancy

• Create a class called Room that can be used to record the number of people in the rooms of a building

• Attributes

• numberInRoom – the number of people in a room

• totalNumber – the total number of people in all rooms as a static variable

• Methods

• default constructor – sets number of people in room to 0

• removeOneFromRoom – remove a person from the room (don’t go below 0 persons)

• getNumber – returns the number of people in the room

• getTotal – a static method that returns the total number of people in all rooms

• validRemoval(int num) – returns whether num people can be removed from the room

• Programming

• Array Basics