Oop 如何识别对象、对象的方法和属性?

Oop 如何识别对象、对象的方法和属性?,oop,methods,properties,Oop,Methods,Properties,这个问题似乎是无止境的,但我不知道在哪里或如何问这个问题。在编写面向对象的代码时,必须确定与所编写内容相关的对象、方法和属性我很难做到这一点,因此我想知道是否有软件或某种模板可以帮助我解决这一问题 例如,如果我的对象是一辆汽车,一些方法可以是.engineStart(),.closeDoor(doorNumber),一些属性可以是颜色,品牌,许可证号码 在他们真正开始编码之前,是否有人使用某种格式或技术来识别所有对象、方法和属性。意思是,我知道我有一辆拥有所有这些属性的车。所以我需要一个具有以下

这个问题似乎是无止境的,但我不知道在哪里或如何问这个问题。在编写面向对象的代码时,必须确定与所编写内容相关的对象、方法和属性我很难做到这一点,因此我想知道是否有软件或某种模板可以帮助我解决这一问题

例如,如果我的对象是一辆
汽车
,一些方法可以是
.engineStart()
.closeDoor(doorNumber)
,一些属性可以是
颜色
品牌
许可证号码


在他们真正开始编码之前,是否有人使用某种格式或技术来识别所有对象、方法和属性。意思是,我知道我有一辆拥有所有这些属性的车。所以我需要一个具有以下属性的汽车类别:颜色、品牌、车牌号、汽油里程。现在我想知道这辆车的平均价格是多少。我可以在car类中专门为对象创建一个函数,可以根据我输入的参数或对象本身的属性调用该函数来生成价格


这可能没有帮助或意义,但在编写代码时,您将看到何时何地使用类。

在考虑程序设计时,请考虑:

所需的类、方法和数据

类之间的关系

如何存储信息等

所以,试着对你的程序做一个非常详细的描述,以及你想要它做什么。然后通读你的描述,挑选一些名词和动词,这些名词和动词可以帮助你指定诸如对象、属性和方法之类的东西。从这里你可以看到你想如何组织你的类和数据。尽量不要让一个类太复杂或太小


不确定这是否是您想要的,但我希望我能提供帮助。

类应该处理在所选设计的上下文中构建的系统的单个方面

接口应该是最小的(没有糖和方便的功能)。这意味着,若您可以使用接口的子集实现用例,那个么将实现该用例不应该是成员函数的函数

例如:

class Foo
{
    public:
    void TurnLeft(uint32_t radians);
    void TurnRight(uint32_t radians);
    // Bad - interface not minimal and this is a convenience function.
    void TurnLeftThenRight(uint32_t radiansLeft, uint32_t radiansRight); 
};
类应该是某种抽象。这意味着,在使用类时,它不应该要求类的所有实现细节以及对用于实现它的所有需求的充分理解。正确使用该类应该比实现它更容易

一个类不应该简单地通过属性“导出”它封装的所有状态,因为这样它就不是一个抽象,而只是一组数据

对于实际使用的类,它将对其所在的上下文和一般体系结构进行假设。(线程、内存使用策略、堆栈使用(递归是/否)、异常是/否……)。对于应用程序编程来说,试图将所有这些从类中分离出来或将其转化为多模板参数怪物通常不是最佳策略

一个类实现应该有一个单元测试和一些关于它的约束和假设的文档


类方法应该以防御方式实现。也就是说,在优化和调优阶段之前,类应该检查输入参数,如果可能的话,还应该检查其输出参数和约束状态。

我希望在开始编码之前识别所有对象,而不是在期间。在开始编码之前和期间定义会创建相同的结果。你只需要决定你的对象代表什么以及它的属性需要定义什么。计划是很好的,但你会发现自己总是在不断地添加和删除功能。所以你问的是一个广泛且高度个人化的问题。我不同意你的观点,即功能会随着我的代码而改变。然而,如果我们事先尽可能地定义所有内容,我们就可以限制更改和错误的数量,并提高总体代码质量。如果你打算抢劫银行,你就更有可能逃过一劫,而不是在去哪里时即兴创作。那么你会说我描述的名词可能是物体吗?对象=名词,方法=动词?当然。所以,也许像单数名词一样,可以是表示对象的基本类。在该类中,可以定义其属性。然后,任何听起来有用的动词都可以作为方法适当地放在这些类中。一盏灯显然有一个灯泡。如果要为灯泡创建一个单独的类,那么继承lamp类EX:(
class LightBulb继承自lamp
)或者为
bulb
创建一个单独的类而不继承会更有意义吗?