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语言面向对象的文章,顿时眼睛一亮,也佩服作者认识的深入。 特此转来与大家分享,网址: http://dongxicheng.org/cpp/ooc/ 1、  概述 ...

C语言的模块化设计和面向对象编程

来自网易杭州研发技术总监“云风”BLOG的几篇面向对象设计的文章 C 语言对模块化支持的欠缺 继续昨天的话题。随便列些以后成书可能会写的东西。既然书的主题是:怎样构建一个(稍具规模的)...
  • xkarl
  • xkarl
  • 2011年03月02日 21:04
  • 1362

软件设计本质论(Essential Design) —白话面向对象 (转注:关于c语言实现封装继承多态的一堆博文)

软件设计本质论(Essential Design) —白话面向对象 分类: 23.设计本质论系列 2006-08-15 21:424361人阅读 评论(11)收藏 举报 软件设计本质论(E...

大型软件设计指导

  • 2015年12月23日 19:34
  • 229KB
  • 下载

面向对象软件设计遵循的原则

面向对象软件设计遵循的原则 1.单一职责原则(SRP--Single-Responsibility Principle) SRP简介:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。...

初学软工——面向对象的软件设计

主要对软件工程中谈到的面向对象的设计加上自己编程中的一些理解
  • tr1912
  • tr1912
  • 2015年08月31日 17:11
  • 831

软件设计本质论—白话面向对象

不同的人在谈面向对象编程(OOP)时所指的含义并不相同。有人认为任何采用图形界面的应用程序都是面向对象的。有人把它作为术语来描述一种特别的进程间通信机制。还有人使用这个词汇是另有深义的,他们其实是想说...

软件设计之面向对象

面向对象的定义及好处 1.定义:一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放在不同对象里, 强调的是某些功能的对象。对象的定义:具有某些功能的实...

面向对象软件设计原则(一) —— 引子(http://www.cnblogs.com/ldcsaa/archive/2012/02/12/2347082.html)

“面向对象软件设计”这个术语及其相关话题对于很多开发人员来说已经是耳熟能详了,甚至听腻了。但是,对不住各位,为了吸引眼球和引起“异性”注意,本座还是落入俗套选择这个热门话题作为本博客的开张炒作篇目。请...

面向对象软件设计中的开闭原则

what: 软件设计过程中对扩展性开放,对修改关闭。即软件实体应该在不修改的前提下扩展,这个原则实际上为软件设计指明了目标。 我们知道软件设计应当充分考虑软件的可维护性,即需求发生变化的时候软件结...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言大型软件设计的面向对象
举报原因:
原因补充:

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