模块化编程
编辑模块化编程是一种软件设计技术,它强调将程序的功能分为独立的,可互换的模块,以使每个模块都包含执行所需功能的一个方面所必需的一切。
模块接口表示该模块提供和需要的元素。接口中定义的元素可由其他模块检测。该实现包含与接口中声明的元素相对应的工作代码。模块化程序设计与结构化程序设计和面向对象程序设计密切相关,它们的全部目标都是通过分解成较小的部分来促进大型软件程序和系统的构建,并且都起源于1960年代。尽管这些术语的历史用法一直不一致,但“模块化编程”现在是指将整个程序的代码分解为高级片段:结构化编程到结构化的低级代码使用控制流,以及面向对象的编程的数据使用的对象,一种数据结构。
关键方面
编辑使用模块化编程,可以将关注点分离,从而使模块执行逻辑上离散的功能,并通过定义明确的界面进行交互。通常,模块形成有向无环图(DAG)。在这种情况下,模块之间的循环依赖关系被视为指示这些模块应该是单个模块。在模块确实形成DAG的情况下,它们可以按层次结构进行排列,其中最低级别的模块是独立的,不依赖于其他模块,而较高级别的模块则依赖于较低级别的模块。特定程序或库是其自身层次结构中的顶层模块,但又可以看作是较高级程序,库或系统的较低层模块。
在创建模块化系统时,不是创建一个整体的应用程序(其中最小的组件是整体),而是单独编写几个较小的模块,因此当它们组合在一起时,它们会构建可执行的应用程序。典型地,这些也被编译分别经由单独的编译,然后通过一个链接的连接子。一个刚刚即时编译器可以执行一些这样的结构“上即时”的运行时间。
这些独立的功能通常分为程序控制功能或特定任务功能。程序控制功能旨在用于一个程序。专门准备了特定的任务功能以适用于各种程序。
这使得模块化设计的系统(如果构建正确)比传统的整体式设计具有更高的可重用性,因为所有(或许多)模块都可以在其他项目中重复使用(无需更改)。这也有助于将项目“分解”为几个较小的项目。从理论上讲,由于没有团队成员在创建整个系统,甚至不需要了解整个系统,因此大型团队将更容易组装模块化软件项目。他们可以只专注于分配的较小任务。
历史
编辑模块化编程以子系统(尤其是I / O)和软件库的形式出现,可以追溯到早期的软件系统,在该系统中,它被用于代码的重用。1960年代末和1970年xxx发的以模块化为目标的模块化编程本身,作为结构化编程概念(1960年代)的大规模模拟。术语“模块化编程”至少可以追溯到1968年7月在信息和系统研究所由拉里·康斯坦丁组织的全国模块化编程研讨会上。
模块未包含在ALGOL 68(1968)的原始规范中,但作为早期实现的扩展(ALGOL 68-R(1970)和ALGOL 68C(1970))包括在内,并于随后正式使用。从一开始就为模块化编程设计的xxx种语言是Niklaus Wirth的短暂的Modula(1975)。另一种早期的模块化语言是Xerox PARC的Mesa(1970年代),Wirth借鉴了Mesa以及其后续版本Modula-2(1978)中的原始Modula,该语言尤其通过其后续版本Modula-3影响了后来的语言。(1980年代)。Modula使用点限定名称(例如从模块M.a
引用对象)与访问记录字段的表示法(以及类似的对象属性或方法)相吻合,并且在C#,Dart,Go, Java和Python等。模块化编程从1980年xxx始普及:最初的Pascal语言(1970年)不包含模块,但后来的版本,尤其是UCSD Pascal(1978年)和Turbo Pascal(1983年),就像Pascal一样以“单元”的形式包含了它们。 -影响Ada(1980)。扩展的Pascal ISO 10206:1990标准在其模块化支持方面与Modula2保持了紧密联系。标准ML(1984)a
M
拥有最完整的模块系统之一,包括在模块之间映射的函子。
在1980年代和1990年代,尤其是由于C ++和Java的流行,模块化编程被面向对象的编程所遮盖,并且常常与之混淆。例如,C语言家族在C ++中支持对象和类(最初是C with Classes,1980)和Objective-C(1983),仅支持30年或更长时间的模块。Java(1995)支持包形式的模块,尽管代码组织的主要单位是类。但是,Python(1991)从一开始就突出使用模块和对象,使用模块作为代码组织的主要单位,使用“包”作为较大的单位。和Perl 5的(1994)包括用于两个模块和对象的支持,其中模件可从一个广阔的数组CPAN(1993)。
模块化编程现已普及,并且几乎可以使用1990年代以来开发的所有主要语言。模块的相对重要性在不同的语言之间有所不同,并且在基于类的面向对象的语言中,与类作为组织和封装的单位仍然存在重叠和混淆,但是它们作为不同的概念都已得到很好的确立。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/109683/