软件构造第二次实验(前瞻)

目录

1.什么是ADT

2.为什么要使用ADT

3.什么是OOP

OOP即面向对象程序设计,全bai称为Object Oriented Programming,是一种du计算机编程架构。其zhi本质是以建立模型体现出来的抽象dao思维过程和面向对象的方法,模型是用来反映现实世界中事物特征的。面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

4.OOP的优点

5.什么是AF

6.什么是RI

7.什么是表示泄露

8.什么是泛型

9.Java中的测试方法

10.什么是重载

11.什么是重写

12.重载与重写的区别


1.什么是ADT

抽象数据类型Abstract Data Type,ADT)是计算机科学中具有类似行为的特定类别的数据结构的数学模型;或者具有类似语义的一种或多种程序设计语言的数据类型。抽象数据类型是描述数据结构的一种理论工具,其目的是使人们能够独立于程序的实现细节来理解数据结构的特性。抽象数据类型的定义取决于它的一组逻辑特性,而与计算机内部如何表示无关。

2.为什么要使用ADT

抽象数据类型的主要作用是数据封装和信息隐藏,让实现与使用相分离。数据及其相关操作的结合称为数据封装。对象可以对其他对象隐藏某些操作细节,从而使这些操作不会受到其他对象的响,这就是信息隐藏。抽象数据类型独立于运算的具体实现,使用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,实现了信息隐藏。

3.什么是OOP

OOP即面向对象程序设计,全bai称为Object Oriented Programming,是一种du计算机编程架构。其zhi本质是以建立模型体现出来的抽象dao思维过程和面向对象的方法,模型是用来反映现实世界中事物特征的。面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

4.OOP的优点

1、数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;

2、通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;

3、结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程;

4、通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度;

5、以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统。

5.什么是AF

AF,全名Abstraction Function,简单点说就是一个抽象函数,它反映两个空间的对应关系,一个是表示空间R,一个是抽象空间A。我的理解是表示空间就是我们在实现这个项目时的空间,而抽象空间是用户看到的那个空间。比如我写一个下棋的程序,我采用数组实现棋盘,那么表示空间里是一个数组,抽象空间里是一个棋盘,而AF就是它两者之间的映射,它将数组映射到棋盘上去,相当于一个函数,表示空间是定义域,抽象空间是值域。显然,这个映射是一个满射,我们不会编写无意义的程序,但它不一定是双射,因为可以有多种的实现方法。

6.什么是RI

RI,全名Representation invariant,我们也可以把它看成一个从R映射到boolean的映射。它是为了判断我们的实现的每个表示是否“合法”,比如,还是刚才的那个棋盘,我要求数组里的所存的黑白色棋子个数相同,这就是一个RI。这个要求是程序无论在任何时候都为true的。我们也可以把它看成一个集合,这个集合里所有元素都是合法的,按刚才的例子说就是这个集合里的数组黑白棋子数都是相等的。总结一下,设计一个ADT,我们首先要选择某种特定的表示方式R,进而指定某个子集是合法的(RI),并为该子集中的每个值做出“解释”(AF)—-即如何映射到抽象空间中的值。
 

7.什么是表示泄露

在java编程中,我们实现某个类时,每个类都定义一些域。有immutable的例如String,有mutable的例如list,set。而我们在构造观察器的时候如果不对mutable类型的变量进行表示处理,就容易在外部对内部的类属性进行修改,而我们正常则应该需要调用内部方法才能对内部属性进行修改。
 

8.什么是泛型

泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

9.Java中的测试方法

1、在代码中写些测试的方法,把你想要验证的东西,输出看一下(如:System.out.println();)。
2、可以用Debug的形式,跟踪代码执行,验证程序的逻辑是否正确(断点调试)。
3、使用junit测试框架

10.什么是重载

重载(Overload)是一个类中多态性的一种表现。如果在一个类中定义了多个同名的方法,它们参数列表不同,则称为方法的重载(Overload)

重载(Overload):是一个类中多态性的一种表现,指同一个类中不同的函数使用相同的函数名,但是函数的参数个数或类型不同。可以有不同的返回类型;可以有不同的访问修饰符;可以抛出不同的异常。调用的时候根据函数的参数来区别不同的函数。

11.什么是重写

重写(Override)是父类与子类之间多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Override)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

重写(Override): 是父类与子类之间的多态性,是子类对父类函数的重新实现。函数名和参数与父类一样,子类与父类函数体内容不一样。子类返回的类型必须与父类保持一致;子类方法访问修饰符的限制一定要大于父类方法的访问修饰(public>protected>default>private);子类重写方法一定不能抛出新的检查异常或者比被父类方法申明更加宽泛的检查型异常。

12.重载与重写的区别

重载实现于一个类中;重写实现于子类中。

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92440 人正在系统学习中

来源:懒不是我的fault

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月22日
下一篇 2022年4月22日

相关推荐