1. 结构化程序设计(C/Ada/Basic)
作为最早提出的程序设计方法,其核心是将程序模块化。
2. 面向对象程序设计(Java、C++)
其以“对象”为中心进行分析和设计,使这些对象形成了解决目标问题的基本构件。
程序设计方法 | 特点 | 优点 |
结构化程序设计 | 1. 采用“自顶而下,逐步求精”的设计思想,即从问题的总体目标开始,层层分解和细化。 2.“独立功能,单出、入口”的模块仅用三种(顺序、分支、循环)基本控制结构的编码原则。此结构减少了模块的相互联系使模块可作为插件或积木使用,降低程序的复杂性,提高了程序的可靠性。 | 相比于非结构化程序有较好的可靠性、易验证性和可修改性;相比于非结构化程序设计方法的设计思路,模块层次分明,便于分工开发和协调,且程序可读性强 |
面向对象程序设计 | 1. 采用自低向上的方法,先将问题空间划分为一系列对象的集合,再将对象集合进行分类抽象,一些具有相同属性行为的对象被抽象为一个类,采用继承来建立这些类之间的联系,形成结构层次。(继承性) 2. 采用对象为中心的设计方式,再现了人类认识事物的思维方式和解决问题的工作方式。 3. 以对象为唯一的语义模型,整个软件任务是通过各对象(类)之间相互传递消息的手段协同完成的。因此,能尽量逼真地模拟客观世界及其事物。 4. 由于对象和类实现了模块化,类继承实现了抽象对象,以及任一对象的内部状态和功能的实现的细节对外都是不可见的,因此很好地实现了信息隐藏。由此建立在类及其继承性基础上的重用能力可应付复杂的大型的软件开发。(封装性) | 使软件具有良好的体系结构、便于软件构件化、软件复用和良好的扩展性和维护性,抽象程度搞,因而具有较高的生产效率。 |
总结:结构化设计方法的设计思想清晰,易学易用,模块层次分明,便于分工开发和调试,编写出来的程序可读性强;面向对象设计方法具有自下而上的特性,允许开发者从问题的局部开始,在开发过程中逐步加深对系统的理解,其以数据为中心,以类作为表现数据的工具,是划分程序的基本单位。而函数在面向对象设计中成为类的接口。
C++概述
C++是一门混合型的语言,既支持传统的结构化程序设计,又支持面向对象的程序设计。其是在C语言的基础上增加了面向对象程序设计的要素而发展起来的。其创作灵感来源于BCPL语言(C语言的来源之一)和Simula67语言(以面向对象为核心的语言),同时还借鉴了Algol68。C++标准可分为两部分:C++语言本身和C++标准库。
*模板
模板是根据类型的参数来产生函数和类的机制,有时也称模板为“参数化的类型”。使用模板,可以设计一个对于许多类型数据进行操作的类,而不需要为每个类型的数据建立一个单独的类。标准模板库STL和微软的活动模板库ATL都基于C++语言扩展。
*标准模板库STL
STL是数据结构和算法的一个框架,是C++标准库实现容器和算法的部分。数据结构包括矢量、列表和映射等,算法包括这些数据结构的查找、复制和排序等。
程序设计
程序设计是指设计、编制、调试程序的方法和过程。
C++语言的历史
斯特劳.施特鲁普: BJARNE STROUSTRUP
C++语言历史 | 发明人或组织 | 与C++的关系 |
1980,C++诞生,始称“带类的C” | 贝尔实验室的斯特劳.施特鲁普博士及其同事 | 在C语言(kEN & DMR)的基础上,从Simula67中引入面向对象的特征,开发出C++ |
1983,正式命名为C++ | 瑞克.格内斯特 | 提出C++作为本语言的名字 |
1989,推出AT&TC++2.0版 | 斯特劳.施特鲁普博士及其同事 | 为C++引进了运算符重载、引用、虚函数等许多特性,使之更加精练 |
1998,发布C++的国际标准ISO/IEC:98-14882 | 美国国家标准化协会ANSI和国际标准化组织ISO | 对C++进行标准化工作
|
C++语言的特点
1. C++是C语言的超集,因此其能与C语言兼容
2. C++支持面向对象的程序设计
(1) 封装性即将一组数据和这组数据有关的操作集合组装在一起,形成对象。
C++中通过建立类这个数据类型来支持封装性。
(2) 继承性即一个类具有另一个类的属性和行为。这个类具有另一个类的全部特征,又具有自身的独有特性。C++中将其称为派生类(子类),而将其所继承的类称为基类(父类)。
(3) 多态性即不同的对象调用相同名称的函数,并可导致完全不同的行为。
C++中的多态性通过使用函数重载、模板和虚函数等概念来实现。
3. C++模板是对其的一种扩展
C++的优点(相对于C语言)
1. 与C语言兼容,既支持面向对象的程序设计,也支持结构化的程序设计。
2. 修补了C语言中的一些漏洞,提供更好的类型检查和编译时的分析。
3. 生成目标程序质量高,程序执行效率高。
4. 提供了异常处理机制,简化了程序出错处理。利用throw、try和catch关键字,使出错处理程序不必与正常的代码紧密结合,提高了程序的可靠性与可读性。
5. 函数可以重载。重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。
6. 提供了模板机制。模板包括类模板和函数模板两种,它们将数据类型作为参数。对于具体数据类型,编译器自动生成模板类或模板函数,它提供了源代码复用的一种手段。
7. 支持面向对象的程序设计方法,特别适合于中型和大型的软件开发项目。从开发时间、费用到软件的重用性、可扩充性、可维护性和可靠性等方面,C++均具有很大的优越性。