问:我通常会在编写过程中编写代码,但是从长远来看,这会花费更多的时间,尤其是当我不知道什么代码在哪里做什么的时候,但是我想通过制作UML类图和模型来开始计划代码。
但是,就像标题所说的那样,您如何知道要创建类,子类,抽象类还是接口,这是大多数程序员遵循的一些指导原则或经验法则。
如果有人可以简单地向我解释上述问题,那将是一个很大的帮助。
答:类,子类:
Java是一种面向对象的编程语言。经验法则可以简单地具有“对象”的概念。必须找出一个物体的三个特征。它是状态,行为和身份。现在,如果按照类的定义进行分类,我们将根据不同对象的属性/属性,但根据不同属性/属性的值对它们进行分类。“类是具有共同属性的对象的集群。(以一个与运输公司相关的项目为例,该项目为运输服务提供车辆。该公司根据客户的要求提供不同类型的车辆,可以是通过在线预订租用)。正如我所说,所有对象(例如两轮车,三轮车和四轮车)将具有相同的属性(大小,速度等)。),但值不同(假设两个惠勒可以容纳2人,三个惠勒可以容纳4人)。现在,由于我们的主要对象是车辆类型,因此将所有运输方式归为父类车辆下的不同类别。在这个主要对象下,我们可以再次根据对象的属性对对象进行分类,就像我们可以根据大小,速度和豪华度对四轮车再次进行分类一样。因此,当我们发现存在分类的可能性时,就是需要创建具有父级属性和功能但又会引入更多规范的子类。现在,由于我们的主要对象是车辆类型,因此将所有运输方式归为父类车辆下的不同类别。在这个主要对象下,我们可以再次根据对象的属性对对象进行分类,就像我们可以根据大小,速度和豪华度对四轮车再次进行分类一样。因此,当我们发现存在分类的可能性时,就是需要创建具有父级属性和功能但又会引入更多规范的子类。现在,由于我们的主要对象是车辆类型,因此将所有运输方式归为父类车辆下的不同类别。在这个主要对象下,我们可以再次根据对象的属性对对象进行分类,就像我们可以根据大小,速度和豪华度对四轮车再次进行分类一样。因此,当我们发现存在分类的可能性时,就是需要创建具有父级属性和功能但又会引入更多规范的子类。
抽象类:
进行抽象类需要理解重要的事情,并且主要集中在“什么”上,而避免从操作员/用户的角度来考虑“如何”。了解谁将使用该产品以及他/她的要求是什么,相应地隐藏/显示实施细节并仅向用户显示功能。一个简单的例子可以是用户编写和发送电子邮件,而不必担心邮件将如何到达目的地。让我们以上述示例类车辆为例,该类车辆具有速度功能,我们可以将其声明为抽象速度,因为此功能将以不同的模式(例如,慢速,中速,快速)由不同对象(例如,两个/三个/四个轮车)使用)。
接口:
在开发模块或系统的任何部分时,如果开发人员遇到一种情况,即他/她认为必须使用特定的方法,并且必须由其他类来实现,即该方法必须是在由另一个类实现。这意味着我们必须使该类为100%抽象,并且当我们希望一个类为100%抽象时,我们将该类声明为Interface而不是abstract。