如何识别对象,方法和属性?

时间:2015-03-19 16:16:47

标签: oop methods properties

这个问题可能看似开放,但我不知道在何处或如何提出这个问题。在编写面向对象的代码时,必须确定与他们正在编写的内容相关的对象,方法和属性。 我很难做到这一点所以我想知道是否有软件或某种模板可以帮助我解决这个问题

例如,如果我的对象是Car,则有几种方法可能是.engineStart().closeDoor(doorNumber),而一些属性可以是colormake,{ {1}}。

有没有人有一种格式或技术可用于识别实际开始编码之前的所有对象,方法和属性?

3 个答案:

答案 0 :(得分:0)

在考虑您的计划设计时考虑到:

所需的课程,方法和数据。

您班级之间的关系。

如何存储信息等。

因此,只需尝试详细描述您的程序以及您希望它执行的操作。然后浏览您的描述并挑选出某些可以帮助您指定对象,属性和方法等内容的名词和动词。从这里,您可以看到您希望如何组织您的课程和数据。尽量不要使一个类太复杂或太小。

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

答案 1 :(得分:0)

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

接口应该是最小的(没有糖和便利功能)。这意味着如果你能够实现一个带有接口子集的用例,那么一个能够实现用例的函数不应该是一个成员函数。

示例:

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); 
};

一个类应该是各种各样的抽象。这意味着,它不应该要求所有类的实现细节以及在使用类时完全理解用于实现它的所有要求。正确使用该类应该比实现它更容易。

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

对于一个实用的类,它将对它所处的上下文和一般架构做出假设。 (线程,内存使用策略,堆栈使用(递归是/否),异常是/否,......)。试图将所有这些因素排除在外或将其转换为多模板参数怪物通常不是应用程序编程的最佳策略。

类实现应该有一个单元测试和某种形式的文档,关于它的约束和假设。

类方法应以防御方式实施。即在优化和调优阶段之前,类应检查输入参数,如果可能,还应检查其输出参数和状态以及其约束条件。

答案 2 :(得分:-1)

当你开始编码时,你需要确定需要与什么相关的东西。意思是,我知道我有一辆拥有所有这些属性的汽车。所以我需要一个具有以下属性的汽车类:颜色,制造,车牌号,汽油里程。现在我想知道这辆车的平均价格。我可以在汽车类中专门为可以调用的对象创建一个函数,根据我输入的参数或对象本身的属性生成价格。

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