| ALoopingFactorialSpreadsheet.java |
package lectures.class_dual_roles.instances;
import util.annotations.WebDocuments;
import lectures.class_dual_roles.statics.Factorials;
import lectures.interfaces.FactorialSpreadsheet;
/**
* This class serves a new role - a template for creating multiple instances with the same
* behavior.
*/
@WebDocuments({"Lectures/ClassDualRolesInstances.pptx", "Lectures/ClassDualRolesInstances.pdf", "Videos/ClassDualRolesInstances.avi"})
public class ALoopingFactorialSpreadsheet
{
/*
* No static in global variable declaration below, this means these variables are
* created in memory dynamically when we do new ALoopinFactorialSpreadsheet()
* to "instantiate" the class. Such a global variable is called an instance variable.
* A static variable is created once the first time the class is accessed by main()
* or some method called by main(). It is not by default a final variable,
* it value is dynamic (can change) but there is only instance of it is created for a
* particular program.
*/
int number;
long factorial;
// static long factorial;
/*
*
* An instance variable is any variable
* that does not have the keyword static next to it.
* that is declared outside a method and does not have the keyword static next to it.
*
*
* For each instance variable in a class of a program:
* Memory space is allocated at most once.
* Memory space is allocated multiple times,depending on how many times the class
* is instantiated in the program.
*
* For each static variable in a class of a program:
* Memory space is allocated at most once.
* Memory space is allocated multiple times,depending on how many times the
* class is instantiated in the program.
*/
/*
* No static in method declarations below as these methods access instance variables.
* They are called instance methods.
* What happens if you make the variable, factorial, static?
* Can this static variable still be accessed by the instance methods.
* What happens if you make the method getNumber static.
* Can you still directly access the instance variables?
*/
public int getNumber() {
// static public int getNumber() {
return number;
}
/*
* (T/F) An instance variable can be accessed by only instance methods.
* (T/F) A static variable can be accessed by only static methods.
*/
public void setNumber(int newValue) {
number = newValue ;
factorial = Factorials.loopingFactorial(number);
}
public long getFactorial() {
return factorial;
}
}
/*
* Go to{InstantiatingFactorialSpreadsheetUse}
*/