Presentation is loading. Please wait.

Presentation is loading. Please wait.

Cleaning up! Miscellaneous things of some import.

Similar presentations


Presentation on theme: "Cleaning up! Miscellaneous things of some import."— Presentation transcript:

1 Cleaning up! Miscellaneous things of some import

2 Names  A “name” is called an “identifier” in Java  Many “things” can be named in Java  Classes  Variables  Methods  Names can be “re-used” (duplicated) if certain rules are followed  The rules make sure that a name refers to exactly one “thing”

3 Identifiers public class SomeClass { public int foo; private int fi; private int fee; public void foo( int fum ) { // code missing } public void foo( double fi ) { // code missing } public class Client { private SomeClass c; public void method() { // can we write c.fee c.foo c.foo(3) c.foo(3.0) }

4 Method Overloading  Two methods in the same class can have the same name  Must have different parameter lists  May differ in the type of arguments  May differ in the number of arguments  When the name is used, the specific function must be determined by context. public class SomeClass { public int foo(int x) { … } public int foo(double x) { … } public int foo(int x, int y) { … } public int foo(String x) { … } public int foo(Rectangle x) { … } public int foo(int z) { … } } public class SomeClass { public int foo(int x) { … } public int foo(double x) { … } public int foo(int x, int y) { … } public int foo(String x) { … } public int foo(Rectangle x) { … } public int foo(int z) { … } }

5 Summary of name reuse  There are no restrictions for using the same identifier in two separate classes.  There are no restrictions for using the same identifier to name local variables and/or parameters of different methods.  A local variable (or parameter) can have the same name as an instance variable of its class.  An instance variable and method can share the same name within the same class.  Methods can be overloaded public class SomeClass { public int fee; private int fi; private int foo; public void foo( int fum ) { int fo; int fee; } public void foo( double fi ) { int fo; int fum; } public class SomeClass { public int fee; private int fi; private int foo; public void foo( int fum ) { int fo; int fee; } public void foo( double fi ) { int fo; int fum; }

6 Difficulty with name reuse  Consider the following rule:  A local variable (or parameter) can have the same name as an instance variable of its class.  The keyword ‘this’ refers to the currently active object. Use the keyword ‘this’ as an object reference! public class SomeClass { public int conundrum; public void foo() { int conundrum; // how to output the conundrum instance var? } public class SomeClass { public int conundrum; public void foo() { int conundrum; // how to output the conundrum instance var? }

7 Recursion  Methods can be recursive. The method is invoked within the body of the method!  Consider the following mathematical definition of the factorial function:  How could this be written in Java? public int fact(int n) { int result = 1; for(int i=1; i<=n; i++){ result = result * i; } return result; } public int fact(int n) { int result = 1; for(int i=1; i<=n; i++){ result = result * i; } return result; } public int fact(int n) { if(n == 0) { return 1; } else { return n * fact(n-1); } public int fact(int n) { if(n == 0) { return 1; } else { return n * fact(n-1); } Iterative (non recursive) solution Recursive solution

8 Recursion  Consider the following mathematical definition of the greatest common divisor of two non-negative integers X and Y where X >= Y. /* precondition: x >= y */ public int gcd(int x, int y) { if(y == 0) { return x; } else { return gcd(y, x%y); } /* precondition: x >= y */ public int gcd(int x, int y) { if(y == 0) { return x; } else { return gcd(y, x%y); } gcd(259, 111) = …


Download ppt "Cleaning up! Miscellaneous things of some import."

Similar presentations


Ads by Google