能帮忙分析下 这个Java面试题吗? 1C

Java程序设计面试题(二)

背景:
某软件项目,开发团队规模10人。你是其中一员,负责一个公用模块的设计与开发。
需求:
6. 已知三角形3条边的长度,要求能计算其周长;
7. 本项目中有两类三角形:一般三角形和直角三角形,对于后者,还要求计算出面积;
8. 不引入第三方框架,独立实现;
9. 需考虑易维护性、扩展性,适应长期运维与建设的需求;
相关知识:
1. 三角形任意两边之和大于第三边,任意两边之差小于第三边;
2. 直角三角形的三条边符合勾股定理:a2 + b2 = c2 ;
3. 直角三角形的面积为两直角边乘积的一半;
提示:
作答时不要把注意力集中在数学上,要关注软件设计和开发。
把它当作一个真正的产品,尽可能全面地考虑问题,尽力展示你的最高设计水平。

2个回答

首先,你可以考虑看看这里面能用到什么设计模式及编程思想。
其次,目测就是可以用继承来设计类,抽象一个父类的Tangle,子类实现有两个类。可以用工厂方法这种设计模式,提供不同的类型获得不同的三角形实例对象。个人觉得这道题目很普通,就是考察编码过程中对面向抽象编程这个原则的应用。

public abstract class Triangle {
private int sideA;
private int sideB;
private int sideC;
public void setSideA(int sideA){
this.sideA=sideA;
}
public void setSideB(int sideB){
this.sideB=sideB;
}
public void setSideC(int sideC){
this.sideC=sideC;
}
public int getSideA(){
return sideA;
}
public int getSideB(){
return sideA;
}
public int getSideC(){
return sideA;
}
public int getPerimeter();
public abstract int getArea();
public abstract boolean isTriangle();
}
然后设计两个类继承,并且实现抽象算法。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!