OO Programing in C (2)

原创 2011年03月27日 19:16:00

OO Programing in C is not only POSSIBLE but also PRACTICAL
--------------------------------------------------------------------------------

OO的一个亮点是类的"继承",通过"继承",可以重用许多代码。而且"继承"也是现实生活中非常自然的一种关系。但是很不幸,C没有class,更没有提供"继承"的表达方式。既然能用C的struct来仿真class, 那能不能继续来仿真"继承"呢?答案是:possible。就像<<Inside the C++ Object Modal>>书中所叙述的那样——你可以用C来达到所有C++能做到的事。但这种仿真显然毫无实际应用价值。

"继承"是一种表达方式,代码重用才是目的。

为了重用代码,C++可以用"继承"的方式来巧妙的达到目的,但是也必须付出代价:你必须非常仔细地设计你的类族谱,要有前瞻性,要有可扩展性,要决定分多少个层次....这些都不是容易做到的事。

C别无选择,模块化设计,函数,宏....只能通过巧妙的设计才能达到代码可重用的目的。还是举个例子来说明C是如何做到"殊途同归"的吧。

"链表"是一个非常常用的数据结构,常用于管理无序的数据(对象)集合。链表操作,特别是双向链表操作很容易出错。重用一套通用操作链表的代码可以为我们省不少事。在C++中,我们可以用经典的STL中的list类。为了适应各种数据类型,list类用模板来实现。list类实现的很巧妙,功能很强,但是,不得不说,很少人用。其实不仅list类很少用,STL都很少人用。(希望这是我的一家之言,反正我所熟悉的C++程序员都不怎么用STL :-)当然在C++中你还有另外一个选择:实现一个List基类完成链表操作,要放入链表的类从List类继承而来,就拥有了一套操作list的方法。

Linux内核中用C提供了一套非常巧妙的方法操作链表,位于.../linux/include/linux/list.h,只用一些宏和inline函数来实现双向链表。

OO 编程基本功--(1)

OO编程基本功--(1)
  • csharp25
  • csharp25
  • 2014年08月18日 16:08
  • 1439

OO思想名词解释

复习 OOA、OOD、OOP  OOA   Object-Oriented Analysis:面向对象分析方法   是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想...
  • superdog007
  • superdog007
  • 2015年10月10日 10:48
  • 1313

java学习之oo篇

这两天刚开始学习java语言,当看完马士兵讲的java中的面向对象之后,有种豁然开朗的感觉,内心充满了欢喜,因此,在这里跟大家分享一下自己的感受。 一、OO三大特性       1、封装    ...
  • china_e999
  • china_e999
  • 2015年04月01日 17:53
  • 535

OO设计五大原则

OO的五大原则是指SRP、OCP、LSP、DIP、ISP 1. SRP(Single Responsibility Principle 单一职责原则)  单一职责很容易理解,所谓单一职...
  • u014117094
  • u014117094
  • 2015年07月08日 23:13
  • 773

PHPOO知识点总结

 面向对象:认识或认知事物的一种方法--->类比 对象是类进行实例化后的结果 object -->物质,事物 类 -->抽象:属性-->外观   行为-->做的事(默认情况下的是缺少了该属...
  • ailxxiaoli
  • ailxxiaoli
  • 2016年07月09日 20:43
  • 844

java设计模之OO原则小结

一、松耦合的威力 观察者模式提供了一种对象设计,让主题和观察者之间松耦合。 当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。 关于观察者的一切,主题只知道观察者实现了某个接口(也就是O...
  • xiaokang123456kao
  • xiaokang123456kao
  • 2017年04月08日 17:35
  • 308

OO六大设计原则总结(上层码农必会)

一直以来都严格遵循OO的原则来进行开发(用的工具是C++和Qt) 什么是设计原则? 设计原则是基本的工具,应用这些规则可以使你的代码更加灵活、更容易维护,更容易扩展。 基...
  • suxinpingtao51
  • suxinpingtao51
  • 2015年07月29日 15:45
  • 1628

JAVA程序员的OO思想

写程序大概2年了,OO思想倒是思考过,也应用过,但是到如今没有系统的总结过,所以感觉理解的不够到位,想借此写成博客,今后不断的完善。 1.战略和战术 战略是指对军事全局的策划和指导,战术是指作战的...
  • rnZuoZuo
  • rnZuoZuo
  • 2014年03月29日 14:38
  • 1083

ALV OO: 最简单的ALV OO实例-Docking容器

最简单的ALV OO实例,Docking容器实现,ALV宽度可以由用户自动调整……
  • rztyzxzy
  • rztyzxzy
  • 2015年07月29日 09:51
  • 1676

SOA思想、OO思想、WCF概述

理解面向对象SOA(Service-Oriented-Adrchiteture)   是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。...
  • u012135077
  • u012135077
  • 2015年11月12日 17:10
  • 300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OO Programing in C (2)
举报原因:
原因补充:

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