C语言大型软件设计的面向对象

原创 2017年11月07日 16:34:07

C 原本是面向过程的语言,自身没有內建面向对象的特性,但我们还是可以利用 C 语言本身已有的特性来实现面向对象的一些基本特征。

今天我们给大家推荐一门《C语言大型软件设计的面向对象》课程,11月16日(下周四)宋宝华老师将线上直播,与您讨论 C 语言面向对象的技术难点、疑点。


1.面向对象的概念


面向对象的语言-


与已往的各种语言的根本不同是,它的设计出发点就是为了更能直接的描述问题域中客观存在的事物。


一切皆对象,对象来源于生活高于生活。


将功能封装进对象,强调具备了功能的对象。


面向对象是基于面向过程的。


是一种符合人们思考习惯的思想,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者


面向对象的特征:


①封装(encapsulation)。封装是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。封装有四大好处:

  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改。
  • 可以对成员进行更精确的控制。
  • 隐藏信息,实现细节。

②继承(inheritance)。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。


③多态(polymorphism)。所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。



2.C语言实现封装、函数指针


在C语言当中,是不存在封装这一个特性的,我们要实现它,我们可以借助两个方法:

① 利用C语言中的头文件,在头文件中进行声明,在C文件中对它进行定义,这样就可以隐藏内部信息,用户只能看到接口和公开的信息,无法知道对象所占内存等。

② 第二种方法是把私有的信息放在一个不透明的私有变量或者结构体当中,只有类的实现代码才知道priv或者结构体的真正定义。 

在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。函数指针是通过函数名及有关参数进行调用的。

3、从一个命令解析器的案例开始

a. 过程化程序设计

b. 采用封装思想设计

4.一个嵌入式图形框架的C面向对象


5.C语言实现继承和多态,模拟虚函数

6.提炼软件的中间层

7.综合案例,对象式思维锻炼

更多细节,您可以点击下方课程入口进入了解:


<<<<<<<<<<<<<<<<<<<<<在线系列课>>>>>>>>>>>>>>>>>>>>

C语言大型软件设计的面向对象

讲师介绍:

宋宝华老师有10几年的Linux开发经验。他长期在著名跨国企业担任一线工程师和系统架构师,编写大量的Linux代码,并负责审核其他同事的代码。他是Linux的活跃开发者,在Linux主线内核提交了4万行以上的代码和几百个补丁,曾担任一ARM SoC在Linux社区的maintainer工作。他也是China-pub 2008年度“十大畅销经典”,“十佳原创”图书《Linux设备驱动开发详解》的作者,他曾为许多知名企业提供嵌入式Linux企业培训和技术服务,受到企业广泛好评。

课程介绍:

C语言代码一旦达到一定规模,就特别强调良好的架构设计,以保证代码的可读性好、代码简洁以及可复用。此时,软件设计师势必要用C语言来做面向对象的设计。不能克服面向对象这一关,也是很多人无法读懂Linux内核、驱动等架构比较庞大的软件的主要技术壁垒之一,因为这些软件里面充满了对象式的设计。 本课程以案例来详细讲解,用C语言如何设计面向对象的程序。

课程特色:专属答疑+课件资料提供+视频无限时回放+VIP交流群

开课时间:随到随学,自由支配



C语言实现面向对象的思想

用C语言实现面向对象的方法,面向对象的三个基本特征,对象唯一性,继承性,抽象性。 使用C语言中的结构体和函数指针将数据与操作放在一起,使得一个问题的解决方法封装在结构体中。 其中结构体的嵌套使用实现了...
  • Learning_zhang
  • Learning_zhang
  • 2016年09月08日 20:17
  • 1684

C语言也可以“面向对象”—— C语言实现封装、继承和多态

网上看到一篇讲述C语言面向对象的文章,顿时眼睛一亮,也佩服作者认识的深入。 特此转来与大家分享,网址: http://dongxicheng.org/cpp/ooc/ 1、  概述 ...
  • happy08god
  • happy08god
  • 2014年02月05日 17:48
  • 2581

C语言面向对象编程(一):封装与继承

C++ 语言中自带面向对象支持,如封装、继承、多态等面向对象的基本特征。 C 原本是面向过程的语言,自身没有内建这些特性,但我们还是可以利用 C 语言本身已有的特性来实现面向对象的一些基本特征。接下来...
  • foruok
  • foruok
  • 2014年01月12日 22:16
  • 44977

如何在C语言里实现“面向对象编程”

有人认为面向对象是C++/Java这种高级语言的专利,实际不是这样,面向对象作为一种设计方法,是不限制语言的。只能说,用C++/Java这种语法来实现面向对象会更容易、更自然一些。 在本节中,就展示如...
  • iamshaofa
  • iamshaofa
  • 2015年03月12日 15:36
  • 3439

C语言实现简单的面向对象例子

对于想做C语言大型项目开发同学,结合上篇C语言模块化编程,会有很大帮助。 实现方法:回调函数,结构体里保存函数指针,具体看下面的代码:#include //几个用于测试的函数 int max(i...
  • lell3538
  • lell3538
  • 2016年07月16日 08:16
  • 1622

用C语言实现面向对象的编程方式

主要利用结构体和函数指针,实现面向对象编程中的封装、继承和多态; //base.h typedef struct BaseClass {     int m_Data;  void ...
  • xjbclz
  • xjbclz
  • 2016年06月04日 22:35
  • 1292

用C语言模拟面向对象编程(上)

导读:   用C语言模拟面向对象编程   虽然我接触计算机已经有将近一年了,但一直以来我不愿意写技术方面的文档,因为所谓的“技术”就是照着做得东西, 即使可能遇到一些难题,到网上搜索一下就可以解决,...
  • chief1985
  • chief1985
  • 2008年01月01日 23:18
  • 3636

c语言如何实现面向对象的机制

我们知道嵌入式是在操作系统内部做开发的,操作系统所有的内核几乎都是c语言。它具有出色的可移植性,能在多种不同体系结构的软硬件平台上运行。具有很高的运行效率,而且简洁紧凑,有灵活的语法机制,并能直接访问...
  • Mormont
  • Mormont
  • 2016年10月30日 19:16
  • 1179

用C语言进行面向对象编程

 *******************************************************************************C中可移植的继承性和多态性2Fr: [E...
  • dadalan
  • dadalan
  • 2009年03月12日 13:42
  • 5386

C语言真的不能面向对象吗?

一直以来,有关于C++、Java、C#等语言的书总喜欢在开篇介绍中拿C语言来比较一番。在承认C语言无可争议的运行效率的同时,也总爱拿C语言不具备面向对象血统的短板说事。当年在看这些的书的时候,我还觉得...
  • kxcfzyk
  • kxcfzyk
  • 2014年03月16日 23:35
  • 3955
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言大型软件设计的面向对象
举报原因:
原因补充:

(最多只允许输入30个字)