类:面向对象的范例总是让我感到困惑

时间:2011-04-10 02:37:57

标签: c++ class

有人可以通过一些很好的例子来清楚地解释我c ++类是如何有用的,以及为什么它是一个很好的编程实践。我阅读了很多关于类的内容,使用某些类在c ++中进行了一些编程,但我仍然不清楚为什么需要类,以及它们如何使代码更加健壮和可读。

感谢!!!!!

5 个答案:

答案 0 :(得分:2)

  1. 在信誉良好的学校注册CS课程。
  2. 尽可能多地使用计算机编程课程。
  3. 阅读了很多关于面向对象的书籍(以及关于程序/模块化编程的旧经典。)
  4. 冲洗并重复直至毕业。
  5. 到那时你应该明白课程是什么。

答案 1 :(得分:2)

当您键入脚本或20行代码或100行代码时,这没什么大不了的。

当你获得数百万时,你开始需要一种实际可视化代码的方法。您需要能够谈论不同的部分以及它们如何相互作用。

当你看一个漫长的程序时,它是如何组织的?当你有20个函数时,哪些函数对应于哪些数据?现在记录并记住它,以便下次查看代码时,您将能够回到原来的位置。

对象允许您将功能与其相关的数据进行分组。它可以让您快速找到所需的功能。一旦你习惯了它,很难想象为什么没有它就会编码。我不确定你是如何绘制一个设计来向其他人展示它而没有OO - 流程图?真的?

如果您设计非OO代码非常好用私有变量(这个文件专用)和与该数据相关的函数,您可以获得一些组织效果,但它很混乱,并且有很多开销。此外,对于那些不完全“获取”OO的人来说,将整个代码库发送到代码地狱非常容易。

这是组织代码和数据的一种非常舒适,逻辑合理的方法。

答案 2 :(得分:1)

在游戏中,你有一个枪类。它有一定数量的弹药。你想确保在开枪时减去一颗子弹。重新加载时,剪辑大小会重新添加到弹药中。

最重要的是,您希望正确维护“弹药”数量。通过 encapsulating 构成枪支的所有变量范围到枪支实例。枪的使用者不会考虑太多,也不必担心破坏/搞砸弹药(或其他)值。

 class CGun
 {
 private:
    unsigned int ammo;
 public:
    CGun();
    void Reload() 
    { 
         if (ammo == 0)
         {
             ammo += 40/*40 bullets per clip*/
         }
    }

    void Fire() 
    {
        if (ammo > 0)
        {
            --ammo; 
        }
    }
 };

现在,您可以非常轻松,安全地使用此对象,而无需担心损坏基础数据。

 int main()
 {
     CGun aGun;
     aGun.Fire(); 
 }

答案 3 :(得分:1)

我给你的过于简单的答案是,当你注意到你的程序往往有1)由相关数据组成的结构,以及2)很多在这些结构上运行的函数时,你就有了一个类。手。

例如,在实时操作系统中,任务通常具有任务控制块结构,其中包含有关任务的大量信息,例如其启动指针,优先级,堆栈位置及其状态。 (准备运行,阻塞某些东西,停止,尚未启动等),它的名称,以及任何特定于线程的全局变量的位置。还有许多操作该任务的函数将指向该任务控制块的指针作为参数。如果这个实时操作系统是用C ++编写的,那么你可以创建一个包含任务控制块数据的Task类,并且对该任务进行操作的函数将是类的方法。

答案 4 :(得分:0)

这是一个非常开放的问题,但在简短的课程中,可以更好地表达编程和需要考虑的现实世界的对象,概念和想法。类可用于表示物理对象或概念以及可对其执行的操作。通过链接对象和操作,您可以使用和关系更加明显,简而言之,使代码更容易掌握(尽管在大多数情况下仍然不是很简单)。