gpt4 book ai didi

现实生活中理发的Java OO类设计实例

转载 作者:行者123 更新时间:2023-11-29 07:01:02 27 4
gpt4 key购买 nike

伙计们,我是 OOP 的新手。我想设计 OO 类来表示人类如何执行理发 Action

我有这样的初始类蓝图:

class Human {
Human(){}
class Hair{
private int length;
Hair(){
this.length=10;
}
}
}
class Tools{
Tools(){}
class Scissors{
Scissors(){}
}
}
class HoldingScissors{
public void makeHairCut(Human theHuman){
theHuman.Hair.length = 5;
}
}

但是,我不知道如何将它们之间的关系联系起来。我希望人类先“捕获”剪刀,然后才有剪头发的能力。有人可以告诉我如何实现这一目标吗?

最佳答案

HoldingScissor 可能不应该是一个类,而是一个能够执行一类 Action 的属性。

但是,有一百万种方法可以对此进行建模。 OO有两点:消息传递和封装;不要只关注对象粒度,因为你会追求错误的抽象

abstract class Action {
public void perform();
}


public class CutHairsAction {

Human agent,target;

public CutHairsAction(Human agent, Human target) {
if (agent.getHolding() == null) throw new IllegalStateException("agent not holding scissors");
if (! agent.getHolding() instanceOf Scissor) throw new IllegalStateException("agent not holding scissors");
if (target.Hair.lenght < 5) throw new IllegalStateException("target hair short enough");

this.target = target;
this.agent = agent;
}

public void perform() {
target.Hair.length = 5;
}
}

关于现实生活中理发的Java OO类设计实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26114936/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com