黑马程序员技术交流社区
标题:
面向对象设计问题
[打印本页]
作者:
严海荣
时间:
2012-9-18 20:15
标题:
面向对象设计问题
本帖最后由 严海荣 于 2012-9-19 08:22 编辑
比如说:生产者消费者,一个资源类,一个生产者类,一个消费者类,一个主类,然后考虑各个类的属性和方法,生产者和消费者实现Runnable接口,考虑类与类之间的关系,还有什么时候用构造函数,传递参数,好难想到啊?
面向对象设计时,你们是怎么思考问题的?
作者:
武庆东
时间:
2012-9-18 20:26
学员的两个面向对象的面试题,用面向对象的方式设计如下情景。
“两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子”,
* 石头-->(通过KnifeFactory)-->石刀
* 树-->(通过StoneKnife的cut方法)-->木材-->(ChairFactory的makeChair方法)-->椅子
StoneKnife = KnifeFactory.createKnife(Stone first,Stone second);//KnifeFactory具有制作石刀的方法(createKnife),两块石头磨成石刀
material = StoneKnife.cut(tree);//石刀具有砍树的方法
Chair chair = ChairFactory.makeChair(material);//ChairFactory具有制作椅子的方法makeChair
“球从一根绳子的一段移动到了另一端”,
class Rope {
private Point start;
private Point end;
public Rope(Point start, Point end) {
this.start = start;
this.end=end;
}
public Point nextPoint(Point currentPoint){
/*
通过两点一线的数学公式可以计算出当前点的下一个点, 这个细节在设计阶段可以不考虑的问题。
如果当前点是终止点,则返回null;如果当前点不是线上的店,则抛出异常。
*/
}
}
class Ball{
private Rope rope;
private Point currentPoint;
public Ball(Rope rope,startPoint){
this.rope=rope;
this.currentPoint=startPoint;
}
public void move(){
currentPoint=rope.nextPoint(currentPoint);
System.out.println("小球移动到"+currentPoint);
}
}
作者:
史小兵
时间:
2012-9-18 21:04
面向对象的设计其实在你拿到一个问题时,你可以先分析一下问题中到底涉及到几个对象,然后呢就是分析每个对象应该具有什么属性,和方法!
然后就是设计程序了!
就比如人吃苹果这个例子
人吃的苹果是什么时间收获的,苹果会是什么颜色的这些收获时间、和颜色肯定是只有苹果自己知道
每个人都可以吃苹果,因此到底是谁吃了,就应该有名字,和年龄和一些其他的属性!通过分析就可以写了!
public class Person {
private String name;//人都会有名字的属性
private int age;//人都会有年龄的属性
//在创建人的对象时直接为人的上边的属性进行初始化
//人的一些属性经常不想被人访问因此为其提供了get和set的方法
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//比如吃苹果的这个方法,肯定就应该是人所具有的方法
//然后就是在里头写下你要实现的方法
public void eat()
{
}
}
public class Apple {
private String color;//苹果的颜色也只有自己知道
private String get_time;//苹果收获时间也只有苹果自己知道
//创建苹果对象时就对其进行初始化
//因为事物的自身的一些属性经常不想被人访问因此给出其get和set方法
public Apple(String color, String get_time) {
super();
this.color = color;
this.get_time = get_time;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getGet_time() {
return get_time;
}
public void setGet_time(String get_time) {
this.get_time = get_time;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2