File - AP Computer Science

advertisement
Agenda
•
•
•
•
Scope of variables
Comparable interface
Location class in GridWorld
homework
scope
• The scope of a variable is the part of
the program over which the variable
name can be referenced(used).
• You cannot refer to a variable before
its declaration.
You can declare variables in several
different places:
1. In a class body as state variables.
Variables declared here are referred
to as class-level variables.
2. As parameters of a method or
constructor.
3. In a method's body or a constructor's
body.
4. Within a statement block, such as
inside a while or for block.
Variables As state variables
public class Circle {
private double radius;
//constructor
public Circle(double r) { .. }
public void setRadius(…) { … }
public double area() { … }
public double getRadius() { … }
}
Class-level variables are accessible from
anywhere in the class.
Variables as method parameters
public void setRadius(double newValue) {
radius = newValue; }
• Variables declared as method parameters
can be accessed from within the method
body.
• They are local variables, only visible
within the body block
Varailes in a method's body or a
constructor's body.
Assume there is a BankAccount class:
public void deposit(double amt){
double totalAmt;
totalAmt = balance + amt; }
amt and totalAmt are local variables, not visible
outside the body block
Variables inside a for loop
for (int i = 1; i <= 10; i++)
{
System.out.println(i);
}
System.out.println(i); <= invalid
the scope of the counter i is inside the
for loop
How about a nested loop?
• for (int x = 0; x < 5; x++) {
for (int y = 0; y < 3; y++) {
System.out.println(x);
System.out.println(y);
}
}
• a nested block can access variables
declared in the outer block
public class ScopeExample {
public static void main(String[] args) {
int var1;
for (int var2 = 0; var2 < 5; var2++) {
method1(); } }
public static void method1() {
int var3;
var1++;
for (int var4 = 0; var4 < 2; var4++) {
var3 + var4 = 1; } }
• For this scope topic, refer to the
following link:
http://www.java2s.com/Tutorial/Java/
0020__Language/VariableScope.htm
Comparable interface
• The purpose of this interface is to compare
objects.
• It has only one method
public interface Comparable
{
int compareTo(Object otherObject);
//returns a neg number if a<b
//return a pos number if a>b
//returns 0 if a=b
}
String class comparison
String x= "xyz";
String y= "abc";
System.out.println(x.compareTo(y));
System.out.println(y.compareTo(x));
What’s the output?
How to test?
public static void main(String[] args)
{
BankAccount aAcct = new BankAccount(100.0);
BankAccount bAcct = new BankAccount(200.0);
System.out.println(aAcct.compareTo(bAcct));
}
public class BankAccount implements Comparable{
private double balance;
public BankAccount(double amt){
balance = amt;}
//other methods…
public int compareTo(Object otherObj){
BankAccount otherAcct = (BankAccount) otherObj;
Int retValue;
If(balance < otherAcct.balance)
retValue = -1;
If(balance > otherAcct.balance)
retValue = 1;
If(balance == otherAcct.balance)
retValue = 0;
return retValue;
Location Class
public class Location implements Comparable
{
private int row; // row location in grid
private int col; // column location in grid
public static final int LEFT = -90;
public static final int RIGHT = 90;
public static final int HALF_LEFT = -45;
…..
public static final int NORTH = 0;
…..
public Location(int r, int c)
{
row = r;
col = c;
}
public int getRow()
public int getCol()
{
{
return row;
return col;
}
}
public int compareTo(Object other) {
Location otherLoc = (Location) other;
if (getRow() < otherLoc.getRow())
return -1;
if (getRow() > otherLoc.getRow())
return 1;
if (getCol() < otherLoc.getCol())
return -1;
if (getCol() > otherLoc.getCol())
return 1;
return 0;
}
List Interface
• 3 classes that implements the List
interface:
LinkedList, ArrayList, Vector
• 3 classes are available by importing
java.util.*;
Practice on the board
Class: Student
Variables: lastName, firstName, grades
Constructor with 2 parameters to initialize the
state variables lastName and firstName; set
grades to 0
methods:
getName- return the full name(lastName +
firstName)
setGrade- take a parameter and set the grades
Create a UEmployee class that contains member
variables for the university employee name and
salary.
The UEmployee class should contain member
methods for returning the employee name and
salary.
Create Faculty and Staff classes that inherit the
UEmployee class. The Faculty class should include
members for storing and returning the department
name. The Staff class should include members for
storing and returning the job title.
Download