C++-Record03—程序设计方法的发展历程及C语言和C++语言的关系

目录

面向过程的结构化程序设计方法

面向对象的方法

面向对象的基本概念

C语言和C++语言的关系

经验之谈


面向过程的结构化程序设计方法

  1. 设计思路
    • 自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。简言之,就是一步一步进行编程的。
  2. 程序结构:
    • 按功能划分为若干个基本模块,形成一个树状结构。
    • 各模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。
    • 其模块化实现的具体方法是使用子程序。

  3. 优点:

有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。

     4.缺点:

可重用性差、数据安全性差、难以开发大型软件和图形界面的应用软件

把数据和处理数据的过程分离为相互独立的实体。

当数据结构改变时,所有相关的处理过程都要进行相应的修改。

每一种相对于老问题的新方法都要带来额外的开销。

图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。

一句话,许多软件的运行顺序,并不是,从头到尾,顺序执行的,比如开发一个界面,需要的时候操作界面中的某一部分就可以了,而不是从界面开始,到界面结束,逐步都执行一遍。

 

面向对象的方法

      思路是,把求解的问题分解成一个一个对象,类把属性和方法做了一个封装。

  1. 将数据及对数据的操作方法(属性和方法)封装在一起,作为一个相互依存、不可分离的整体——对象。
  2. 对同类型对象抽象出其共性,形成类。
  3. 类通过一个简单的外部接口,与外界发生关系。
  4. 对象与对象之间通过消息进行通信。

面向对象的基本概念

对象

  1. 一般意义上的对象:
    • 是现实世界中一个实际存在的事物。
    • 可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。
    • 是构成世界的一个独立单位,具有
      1. 静态特征:可以用某种数据来描述
      2. 动态特征:对象所表现的行为或具有的功能
  2. 面向对象方法中的对象:
    • 是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由一组属性和一组行为构成。
    • 属性:用来描述对象静态特征的数据项。
    • 行为:用来描述对象动态特征的操作序列。

  1. 分类——人类通常的思维方法
  2. 分类所依据的原则——抽象
    • 忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。
    • 例如,石头、树木、汽车、房屋等都是人们在长期的生产和生活实践中抽象出的概念。
  1. 面向对象方法中的"类"
    • 具有相同属性和服务的一组对象的集合
    • 为属于该类的全部对象提供了抽象的描述,包括属性和行为两个主要部分。
    • 类与对象的关系:
      犹如模具与铸件之间的关系,一个属于某类的对象称为该类的一个实例。

封装

也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

  1. 把对象的属性和服务结合成一个独立的系统单元。
  2. 尽可能隐蔽对象的内部细节。对外形成一个边界(或者说一道屏障),只保留有限的对外接口使之与外部发生联系。
  3. 继承对于软件复用有着重要意义,是面向对象技术能够提高软件开发效率的重要原因之一。
  4. 定义:特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。
  5. 例如:将轮船作为一个一般类,客轮便是一个特殊类。

多态

       多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类中具有不同的语义。

 

面向对象的软件工程

  1. 面向对象的软件工程是面向对象方法在软件工程领域的全面应用。它包括:
    • 面向对象的分析(OOA)
    • 面向对象的设计(OOD)
    • 面向对象的编程(OOP)
    • 面向对象的测试(OOT)
    • 面向对象的软件维护(OOSM)

C语言和C++语言的关系

这两种语言都是在实践过程中,逐步完善起来的,这两种是不同的语言,但并不是竞争关系。C++是C的加强。

学习C++并不会影响原有的C语言知识,相反会根据加深对C的认知;

学习C++可以接触到更多的软件设计方法,并带来更多的机会。

经验之谈

学习C/C++的程序员,在N年之后,普遍没有学习java的程序员接受新知识的能力快, 原因是因为C/C++大部分是用在底层,接触上层的没有java接受的快,接受的多。java大部分是调用,调用,再调用,而C++相对于来说,还是偏底层的。这应该引起初学者的注意,一定不要自己的思想固步自封!但话又说回来,一旦C/C++程序员可以把这个思想转变过来,去主动的快速的接收新的知识的时候,那时候的成长空间将势如破竹。

如果一个大牛,只懂java语言,那么他在企业的立足之地,就是上升业务流,如果既懂java又懂C++那么他将知道,整个公司的产品架构。一般公司的产品架构:

一般最底层是硬件,硬件通过寄存器创建c接口,与上层相连,然后,如果这个接口套一层WINDOWS驱动那就是windows环境开发,如果套一层LIUNX驱动那就是liunx环境开发,如果是套一层安卓驱动那就是安卓环境开发。再往上走,一般就是国际标准,这一层一般是各种协议,分为c++或者java编写的。再往上就是信息系统,就分为各种框架了。再往上就是应用了。而一般从信息系统往上一般是java的天地,从国际标准规范往下是c++的天地,如果一个大牛,只会java和C++中的一种语言,那对他来说他无疑只能占到公司全部架构的半壁河山,是肯定不行的。 

对于C++编程员,把C++学透了,应该尽快的往业务上,也就是java上转了。不要固步自封。没有看不懂的代码,只有看不懂的业务。

发布了140 篇原创文章 · 获赞 6 · 访问量 4856

猜你喜欢

转载自blog.csdn.net/qq_17846375/article/details/103937581