我是Java新手,这是我正在阅读的书中找到的一个示例。在此代码中有几件事我不明白。请帮助我理解它。了解java中的类和变量
/*
* CalculatorModel
* Encapsilates the data model used by the calculator Application
*/
public class CalculatorModel{
private double operand1;
private double operand2;
public void setOperand1(double value){
operand1=value;
}
public void setOperand2(double value){
operand2=value;
}
public double getOperand1(){
return operand1;
}
public double getOperand2(){
return operand2;
}
public String toString(){
String s = "operand 1=" + operand1 + "operand 2=" + operand2;
return s;
}
}
/*
* CalculatorHelper
* A class that performs mathematical functions for a calculator program
*/
public class CalculatorHelper{
private CalculatorModel calcModel;
public CalculatorHelper(){
calcModel=new CalculatorModel();
}
public void setOperand1(double value){
calcModel.setOperand1(value);
}
public void setOperand2(double value){
calcModel.setOperand2(value);
}
public double add(){
return calcModel.getOperand1()+calcModel.getOperand2();
}
public double subtract(){
return calcModel.getOperand1()-calcModel.getOperand2();
}
public double multiply(){
return calcModel.getOperand1()*calcModel.getOperand2();
}
public double divide(){
return calcModel.getOperand1()/calcModel.getOperand2();
}
}
请帮助我了解什么是
private CalculatorModel calcModel;
public CalculatorHelper(){
calcModel=new CalculatorModel();
}
在calculatorHelper
类完成。是calcModel
变量是CalculatorModel
类型的变量吗?将对象作为数据类型而不是基本数据类型与变量相比有什么区别?
如果calcModel是一个变量,那么行calcModel = new CalculatorModel();
我不明白为什么重要的是要有两个类CalculatorModel
和CalculatorHelper
。
什么与方法
public void setOperand1(double value){
calcModel.setOperand1(value);
}
在辅助类做的已经有一个setmethod
在CalculatorModel
类。
这是我试过的,这个代码有什么问题?
public class Calculator{
private double num1,num2;
public void setValue1(double value1){
num1=value1;
}
public void setValue2(double value2){
num2=value2;
}
public double getValue1(){
return num1;
}
public double getValue2(){
return num2;
}
public double add(){
return getValue1()+getValue2();
}
public double subtract(){
return getValue1()-getValue2();
}
public double multiply(){
return getValue1()*getValue2();
}
public double divide(){
return getValue1()/getValue2();
}
}
那段代码确实有点奇怪。这是我无法遵循的面向对象设计的尝试。 – zapl
这本书应该解释它。如果没有,你可以尝试另一种(更友好)的书。 – Christian
也许更好地解释OOP是需要的:http://docs.oracle.com/javase/tutorial/java/concepts/object.html –