作为一名初级程序员,刚刚学习 OOP 的基础知识,我在练习程序的基本包含结构方面遇到了很多问题。我一直在使用各种书面和在线资源自学编程。但是,这是我的问题(嗯,其中之一......):
一方面,我理解抽象、封装和类之间的低耦合度的重要性,但另一方面,我一直在努力构建我的程序并以一种允许不同的方式设计我的类不同文件中的类相互了解。
当然,这是我的一个主要问题,它导致了草率、骇人听闻的代码,只有在我把所有基本的 OOP 主体扔出窗口并开始用全局变量填充我的代码、所有东西的前向声明之后,它才能按照我想要的方式工作无处不在,并公开班级成员。
简而言之:我的编程一团糟……C++ 是我的第一种编程语言,即使我尽最大努力以面向对象的方式设计/编写,我最终还是得到了一堆难看的文件,#包括几乎所有内容每个文件,以及很少工作的程序和 OOP 意大利面条代码的奇怪组合!
我自称是编程新手,我承认学习如何构建程序需要时间,但我几乎无计可施!我知道我的问题源于我对 OOP有一点了解。我知道我想编写处理单个任务的独立类。但与此同时,我不明白如何正确地提醒每个类程序其他部分的存在。这有点像知道你应该吃什么样的食物但不知道如何使用叉子......
简而言之,这就是我的问题。并进一步跟进我的一些更具体的问题:
在 C++ 多文件项目中,是否正常/需要将 main() 函数放在自己的类中?还是将 main() 留在全局范围内是标准的事情?
在以前,我用 C++ 编写的过程程序中,在 main.cpp 文件的顶部有一个全局范围内的常量变量或 #defines 并不少见。例如,屏幕的尺寸或其他有用的信息可能会在程序开始时定义。OOP 中会发生什么?这种做法要完全避免吗?或者我是否制作一个 MAIN.H 文件并将其#include 到项目中的每个其他标题中?我不知道该怎么办...
在编写我的第一个中型 OOP 实践程序时,当我开始尝试编写 StateMachine 类时,我的工作戛然而止。我打算让 StateMachine 类包含程序将使用的所有可能的屏幕状态。但是,出现了一个问题,即我的 StateMachine 类似乎不知道我的其他一些 State 类,即使它们都是#included。我以前见过人们做类的前向声明,有必要吗?我应该在整个地方发送垃圾邮件的类声明还是代码味道?
最后,#include 和前向声明命令的顺序是否重要?
我知道这可能是一个超级基本的问题,但在我从单文件过程式 c++ 初学者程序过渡到多文件 OOP 编程的过程中,这让我非常困难。是否有一些通用的经验法则来构建您的程序,以便一切正常?我一直在使用包含守卫,所以有什么理由不能在每个源文件中只 #include 每个头文件?我应该在每个类的每个头文件中都有一个 #included 的 common.h 文件吗?
我非常感谢社区可以给我的任何帮助/建议。我知道在我开始发展我的 OOP 技能之前,这是一个简单但重要的障碍。我一直在尝试深入思考将类彼此分开的重要性,以至于我不确定如何真正设置我的类/文件以使它们真正相互交互!非常感谢你的帮忙!