Download presentation
Presentation is loading. Please wait.
Published byJonathan Crabtree Modified over 11 years ago
1
COMP 110: Introduction to Programming Tyler Johnson Mar 23, 2009 MWF 11:00AM-12:15PM Sitterson 014
2
COMP 110: Spring 20092 Questions?
3
COMP 110: Spring 20093 Today in COMP 110 Review Overloading Programming Demo
4
COMP 110: Spring 20094 Review From last time
5
COMP 110: Spring 20095 The Math Class 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
6
COMP 110: Spring 20096 Wrapper Classes Each primitive type has an associated Wrapper class Byte Short Integer Long Float Double Character Boolean
7
COMP 110: Spring 20097 Writing Methods Solving a problem using decomposition Divide into subproblems (pseudocode) Solve each subproblem separately as a method Use the methods youve created to solve the problem
8
COMP 110: Spring 20098 Review More broadly
9
COMP 110: Spring 20099 Calling Methods within Methods Its 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 }
10
COMP 110: Spring 200910 Calling Methods within Methods 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(); }
11
COMP 110: Spring 200911 Input to Methods The input to a method is in the form of arguments public class Account { private double balance; private double limit; public void addPurchase(double amount) { if(balance + amount <= limit) balance = balance + amount; //only add if the transaction //is valid } The value is filled in by whomever calls the method
12
COMP 110: Spring 200912 Input to Methods public class Account { private double balance; private double limit; public void addPurchase(double amount) { 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(); account.addPurchase(15.); //call addPurchase and w/ 15 for the amount account.addPurchase(20.); //call addPurchase and w/ 20 for the amount } Separate Java Files! A Driver program (Used for testing)
13
COMP 110: Spring 200913 Input to Methods NEVER do this public class Account { private double balance; private double limit; public void addPurchase(double amount) { 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!
14
COMP 110: Spring 200914 Methods that Return a Value public class Account { private double balance; private double limit; //a helper method to determine if a transaction is valid private boolean transactionValid(double amount) { if(balance + amount <= limit) return true; else return false; } public void addPurchase(double amount) { boolean valid = transactionValid(amount); //is the transaction valid? if(valid) balance = balance + amount; //only add if the transaction is valid }
15
COMP 110: Spring 200915 Method Calls in If-Statements public class Account { private double balance; private double limit; //a helper method to determine if a transaction is valid private boolean transactionValid(double amount) { if(balance + amount <= limit) return true; else return false; } public void addPurchase(double amount) { if(transactionValid(amount)) balance = balance + amount; //only add if the transaction is valid } Call to a method inside an if-statement
16
COMP 110: Spring 200916 Booleans Theres 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");
17
COMP 110: Spring 200917 Overloading Section 6.4 in text
18
COMP 110: Spring 200918 Overloading public class InputOne { public void readInput() { … } public class InputTwo { public void readInput() { … } public static void main(String[] args) { InputOne iOne = new InputOne(); InputTwo iTwo = new InputTwo(); iOne.readInput(); //readInput method of class InputOne iTwo.readInput(); //readInput method of class InputTwo } Methods in different classes can have the same name
19
COMP 110: Spring 200919 Overloading Methods in the same class can also have the same name This is called overloading Distinguished by the number & types of the parameters
20
COMP 110: Spring 200920 Overloading Example 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.; }
21
COMP 110: Spring 200921 Overloading You have already been using overloaded methods 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
22
COMP 110: Spring 200922 Other Overloading Examples 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);
23
COMP 110: Spring 200923 Overloading Any kind of method can be overloaded Void methods Methods returning a value Static methods Non-static methods Constructors
24
COMP 110: Spring 200924 Constructor Overloading 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; } Pet myPet = new Pet(); Pet myPet = new Pet("Fang", 12, 10.);
25
COMP 110: Spring 200925 Method Signatures A methods 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!
26
COMP 110: Spring 200926 Method Signatures 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)
27
COMP 110: Spring 200927 Automatic Type Conversion 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
28
COMP 110: Spring 200928 The situation gets more complicated with overloading 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); } Interaction with Overloading Which method is being called?
29
COMP 110: Spring 200929 Overloading/Type Conversion Java will always use a method that is an exact match before it attempts type conversion
30
COMP 110: Spring 200930 Exact Overloading Match 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
31
COMP 110: Spring 200931 Ambiguous Method Calls 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
32
COMP 110: Spring 200932 Ambiguous Method Calls 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 }
33
COMP 110: Spring 200933 In Summary How Java determines which method you intend to call Exact Match? Use the Method Unambiguous Match using Type Conversion? Use the Method Error Match Based on Method Name, Num & Types of Parameters
34
COMP 110: Spring 200934 Use of Overloading Misuse of overloading can lead to strange bugs 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(10); //meant to set weight, set age instead }
35
COMP 110: Spring 200935 Programming Demo Room Occupancy Create a class called Room that can be used to record the number of people in the rooms of a building
36
COMP 110: Spring 200936 Room Occupancy 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 addOneToRoom – add a person to the room removeOneFromRoom – remove a person from the room (dont 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
37
COMP 110: Spring 200937 Programming Demo Programming
38
COMP 110: Spring 200938 Wednesday Array Basics (Section 7.1)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.