文章目录
- 1.我的有理数代码:
- 2.测试代码
- 3.测试结果
- 4.问题
- 1.尝试回答与c语言的有理数代码相比较,为什么你设计的类更加面向对象?
- 2.尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。
- 1.别人如何复用你的代码?
- 2.别人的代码是否依赖你的有理数类的内部属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
- 3.有理数类的public方法是否设置合适?为什么有的方法设置为private?
- 4.你的类里面有static属性或方法吗?如果有,为什么要设置为static的?
1.我的有理数代码:
public class RationalNum {
private int RNum; //有理数
public int getRNum() {
return RNum;
}
public void setRNum(int rNum) {
RNum = rNum;
}
public int add(int addNum) {//相加
int num = RNum + addNum;
return num;
}
public int sub(int subNum) {//相减
int num = RNum - subNum;
return num;
}
public int mul(int mulNum) {//相乘
int num = RNum * mulNum;
return num;
}
public double div(double divNum) {//相除
double num = RNum / divNum;
return num;
}
public int rem(int remNum) {//求余
int num = RNum%remNum;
return num;
}
public double sqrt() {//开方
double num=Math.sqrt(RNum);
return num;
}
}
2.测试代码
import java.util.Scanner;
import test.RationalNum;
public class test2 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numb1 = scanner.nextInt();
int num2 = scanner.nextInt();
RationalNum firstNum = new RationalNum();
firstNum.setRNum(numb1);
System.out.println("相加得:" + firstNum.add(num2));
System.out.println("相减得:" + firstNum.sub(num2));
System.out.println("相乘得:" + firstNum.mul(num2));
System.out.println("相除得:" + firstNum.div((double)num2));
System.out.println("除余得:" + firstNum.rem(num2));
System.out.println("开方得:" + firstNum.sqrt());
scanner.close();
}
}
3.测试结果
4.问题
1.尝试回答与c语言的有理数代码相比较,为什么你设计的类更加面向对象?
- 例如在C语言中我定义一个string类型得字符串,我现在想要知道它得长度,那么我可以用strlen(str);来得到他得长度。由于C不是面向对象的语言,也就没有this的概念,因此当使用一个与某个“东西”相关的函数时,就需要不厌其烦的将代表这个“东西”的变量作为参数传递进去。而Java中有一个字符串类String, 通过调用 String.length()就可以直接知道字符串的长度。所以感觉我设计得更加面向对象。
2.尝试从代码复用的角度来描述你设计的有理数类。从几个方面讨论。
1.别人如何复用你的代码?
- 复制我的代码并命名如RationalNum的类,然后就可以调用了
2.别人的代码是否依赖你的有理数类的内部属性?当你的有理数类的属性修改时,是否会影响他人调用你有理数类的代码?
- 既然是调用我的代码,那肯定是依赖我的有理数类的内部属性了,当我修改我的有理数类的属性修改时,会影响他人调用你有理数类的代码。
3.有理数类的public方法是否设置合适?为什么有的方法设置为private?
- 合适,因为有一些我不希望别人访问的属性,这些就需要设置成private。
4.你的类里面有static属性或方法吗?如果有,为什么要设置为static的?