我在课堂上感到困惑

时间:2012-08-21 23:30:47

标签: c# java class instantiation

我敢打赌,这是任何人都可以问过的最愚蠢的问题,但我似乎无法围绕这个话题。我理解一个Class用于创建一个对象(当你实例化它时),但令我困惑的是,“你什么时候知道在一个程序中创建一个类是否可行?”。

假设你创建一个程序来收集用户的输入(无论是名称,数字或任何其他细节),使用这些细节进行一些计算,然后在本地存储所有这些。它的基本但是你需要使用一个类来使程序更流畅/更快或更易于维护吗?

我是否在困惑自己?

编辑:我主要使用的是Visual Studio和NetBeans IDE等程序。​​

6 个答案:

答案 0 :(得分:2)

正如您所说,类是一个允许您描述类型的构造,该类型具有属性方法和事件。

在简单的情况下,您可以轻松地使用不使用类,但是在具有适当考虑的对象模型的更大,更复杂的项目中,事情变得更加容易。易于维护,扩展,重用,阅读。

当时可能感觉更多的工作(在大多数情况下可能是这样),但如果您正在创建需要支持的东西,那绝对不会浪费精力。

答案 1 :(得分:1)

在Java中,你没有选择:你不能编写类之外的代码。

类是实例的模板。它将状态和行为一起封装到单个软件组件中。您可以通过创建相互作用以实现目标的类的实例来编写程序。

  

你需要使用一个类来使程序更流畅/更快或者   更可维护?

我不能代表C#,但在Java中你没有选择。您要么创建一个单独的类来完成主类中的所有操作,要么将其分解为几个处理问题不同部分的类(例如I / O,计算,持久性等)。您必须有一个或多个类

您可以编写类并从中创建对象,因为它们可以很好地映射到您要解决的问题类型。它们或者是模拟世界物理事物的真实对象(例如人物,汽车,银行等)或思想的归纳(例如PersonFactory,Account等)您选择编写面向对象的代码,因为对象模拟了问题你想好好解决。

一些问题适合于函数式编程。编写程序来解决问题的方法不止一种。

答案 2 :(得分:0)

这是一个非常简单/易于理解的教程,它将帮助您学习/理解C#,尤其是Classes也可以查看Structs

C# Class Tutorial

答案 3 :(得分:0)

课程主要是为了帮助我们组织代码。他们不一定能让软件在计算机上运行得更快。当我第一次学习课程时,我发现建模"真实世界"对象。例如,如果我想编写一个计算几何形状的面积和周长的程序,我会创建一个简单的Shape类,它定义了进行计算的抽象方法。然后我扩展这个类来创建不同类型的形状,比如CircleSquareTriangle。通过简单的类应用程序和更多编程经验开始,我已经能够逐渐看到其他地方使用类。

答案 4 :(得分:0)

<强> 1。您何时知道在程序中创建类是否可行?

我认为回答这个问题的每个人都会有一个稍微不同的回答,但通常情况下,你应该使用Classes来模块化你的程序的功能。在您的示例中,您说过您的程序可能会从用户那里获取输入,使用输入来执行某些计算,并在某处保留用户数据和计算结果。您可以拥有以下三个类:

UserInput - 处理键盘输入并将其转换为更容易处理的格式

Calculator - 处理转换后的所有输入

DataPersistence - 处理从/向磁盘,数据库或您需要的任何内容的读/写。

这样,你的所有代码都不仅仅是在一个庞大的Java / C#main()调用中堆积起来,你可以相互独立地关注较小的部分。这些组件之间的相互作用决定了程序的行为。

<强> 2。它的基本但是你需要使用一个类来使程序更流畅/更快或更易于维护吗?

由于如何在Java或C#等语言中引用对象,类实际上可能最终会增加程序的开销,但是如果您的程序是在一个巨大的函数中编写的,它们会使您的代码更容易阅读和修改。这有点类似于将数学教科书分成章节。如果代数,微积分和微分方程都被浓缩成教科书的一个章节,那么教科书对那些想要跳到微积分部分的人来说并不是很有用。添加章节标题的开销可以忽略不计,因为它允许作者/读者专注于本书的某些部分。

同样,Classes可以帮助您分割工作,以便以后更容易维护。速度/性能通常不会受到如何将程序划分为类的影响,只要您明智地执行 - 这就是面向对象设计的真正艺术性表现出来的地方:)

答案 5 :(得分:0)

对于一个简单的程序,就像你的例子一样,从用户那里收集输入(名称,数字,注释),你可以轻松地做到这一点,而无需创建一个新的类,不包括像C#和Java这样的语言需要静态类的事实把你的主要功能放在里面。如果你使用像C这样的非面向对象语言,你可以在没有类的情况下轻松完成。

对于你所描述的一个简单的类,实际上,创建类似乎有点额外的工作(虽然它可能是微不足道的)。但是,这只是因为您指的是一小组数据。

创建类有用的地方是你有很多数据。该类充当将这些数据组合在一起的方式,并可能将其作为一个整体存储在本地。您还可以在与类成员直接相关的每个类上添加其他相关方法。

当您的应用变得更加复杂时,您需要跟踪客户,产品,结算信息(信用卡,PayPal,...),地址(发货和结算),这些类是将每个信息位保持在一起,并将每个较大的“捆绑”(类)信息彼此相关联。

您可以让客户拥有包含帐单和送货地址的订单。这些类中的每一个本身都有许多字段。但是,您可以通过课程将更大的客户概念与目标送货地址联系起来。

至于“你什么时候知道在一个程序中创建一个类是否可行?”,答案并不总是那么容易,但是只要你看到自然适合的数据字段(好吧,就像一个地址,或产品说明或帐单信息)。我希望我有一个更具体的答案,但这取决于你正在构建什么,以及你正在使用什么类型的数据。

不,这不是任何人都不会问的最愚蠢的问题!我希望这有助于你理解。