精华内容
下载资源
问答
  • 面向对象C与代码复用实现

    千次阅读 2016-10-31 10:44:36
    oop的目的在于“对象模板”的“使用”,如c++中面向对象被各种吐槽,各种又违背oop的地方,但就目的来说,c++的oop也是为了oop的使用,同样,我认为c在实现面向对象的实现中更需要倾向于实现“对象模板”的良好使用...

    c++中的“类”,翻译极烂,完全丢失意义,其英文为class,class的百度翻译如下:


    class翻译为:种类、归类等动作,衍生到opp中,翻译应为:是一个物体的共性描述,应翻译成“物体模板”或“对象模板”,其目的是用于实体对象的创建的。


    “对象模板” 的设计思路称为 data abstraction & encapsulation 


    一般data通常翻译成数据,也很烂,data百度翻译如下:


    应翻译为资料更妥,衍生为生成资料,或者衍生为数据&结构。

    data abstraction :生产资料的抽象化(百度生产资料定义:劳动者进行生产时需要使用的资源和工具),也可以认为是数据结构的抽象化,当然要注意数据& 结构

    encapsulation :封装

    生产资料抽象化的实现建立在接口和实现分离的基础上,接口的出现实现了抽象化的可能,即它首先把函数入口给抽象化了。而接口和实现分离这一效果被称为封装,封装的意义不是浅层的在于不让外部对象操作内部数据和直接使用内部功能,而是opp意义中,外部对象不能影响内部数据和内部功能,只能通过对象对外的接口影响该对象,这样带来的好处之一是减少耦合,但其主要目的还是用于不能影响内部数据和内部功能,对象之间的互操作只能通过接口实现,这才是彻底的opp,不能穿透对象的接口。

    举个片面的例子:就和生物细胞间的相互影响一样,细胞A只能分泌激素透过细胞B的细胞膜去影响细胞B,而不能装备CT设备直接去影响细胞B内的物质和内部功能。


    网上看到一个关于封装的粗暴观点,“封装就是指运行的“数据”和“函数”绑定在一起”,看着有点糙,但是感觉也在理,于是我同理认为:

    data抽象:函数接口甚至数据接口是抽象的(忽然想到,就是因为数据接口是抽象的,所以才会有c++中多态的存在,因为需要对应不同的“私有数据”进行不同的函数)


    一直在思考oop的目的是啥,思考c++中有类的目的是啥。oop的目的在于“对象模板”的“使用”,如c++中面向对象被各种吐槽,各种又违背oop的地方,但就目的来说,c++的oop也是为了oop的使用,同样,我认为c在实现面向对象的实现中更需要倾向于实现“对象模板”的良好使用这一特性上,而不是扣死在实现oop本生特性上。

    oop的本质在于的类的衍化、叠级使用,为啥要用oop,因为很多现实广义事情处理方式本质上就是oop,每一层次都干了点部分事情,然后切换成其他级别的对象。。。。


    关于c和c++,一个我觉得类似的模型:

    以前生产队干活,啥都是大家共享。有个垃圾2B领导下来视察插秧,看到有块水田的水很少,原来是有个地方决了,于是问插秧的农民A,农民A表示他是来插秧的,决口的事情要问犁地农民B,,农民B表示他按正常顺序犁的,可能是犁地农用拖拉机不好,要问维护人员农民C,农名C表示犁地的拖拉机已经还给东边的生产队了,有问题你农民A为什么不早说呢???于是农民A,B,C明年饿死了。。。

    后来承包到户了,有个路人路过农民s家的田,看到田里水不够,告诉了一下农民s,农民s马上赶往他家一亩三分地,表示他家的沟决了他自己来,他家的秧苗缺了他自己来,他家的肥料不够了他自己蹲田里,他要是生病了还有他儿子。。。没垃圾2B领导的事情了,产量还年年上升。早这样农民A,B,C就都过着快乐充实的日子了。


    还有一个模型:

    老板有个项目:招了一个硬件,一个软件,硬件哗哗哗的画好了板子,软件开始猛调,哎!硬件!你的二极管冒烟了,硬件哗哗哗的改了,软件开始猛调,哎!电容炸了,硬件哗哗哗的改了,软件开始猛调,哎!mcu冒烟了。。。OK产品出来了,好快啊,量产了。。。。。。哎。。。。。。怎么运行了一天就要重启才行呢,软件,是你程序问题吧???(硬件嘀咕,其实我少接了一个地,但都量产了,哪里敢说轻易改板子啊,跑路吧。。。)

    老板又有个项目:找了个软硬皆通的,先研究样板,再开始硬件,先电源,再最小系统,再软件测试,开始加外围,软件测试。。。。。。。。。好慢啊。。。一步一个脚印。。。每个问题点都清楚。。产品终于出来了,量产。。。稳定。。。


    oop:抽象了,也封装了,不谈继承等优点,封装的好处,我目前感觉是责任划清了,就是你的活,找你就行。不用2B领导去问a,问b,问c,不用浪费精力去处理三角关系。

    展开全文
  • http://blog.jobbole.com/105105/
    http://blog.jobbole.com/105105/
    
    展开全文
  • LW_OOPC.H 面向对象C MISOO 头文件

    千次阅读 2013-12-15 10:29:41
    不用malloc,其对象不是在程序执行期间才去分配空间的。而是与一般的int,char形态的变量一样,在编译期间就留下内存空间了,不需要在执行期间通过malloc来取得内存空间。 纯粹静态型(pure STATIC)精简型;...

    Use Case(用例)的主要内涵及其表达为:

    1)描述该服务的名称及返回的信息类型,她描述What

    2)描述服务过程中,用户与系统之间有哪些交互,其描述How和When。但是请留意,这个How不是员工作汉堡的How,而是用户与系统如何交互的How。

    3)描述用户的角色,她描述Who

    /

    动态型(Dynamic):使用malloc函数

    静态型(Static):标准型;不用malloc,其对象不是在程序执行期间才去分配空间的。而是与一般的int,char形态的变量一样,在编译期间就留下内存空间了,不需要在执行期间通过malloc来取得内存空间。

    纯粹静态型(pure STATIC)精简型;避免使用指针来调用函数。即不调用new函数。

    /*  lw_oopc_kc.h */ 
    #ifndef LOOPC_H 
    #define LOOPC_H 
    #include <malloc.h> 
    #define CLASS(type)/ 
    typedef struct type type; / 
    struct type
    #ifndef LW_OOPC_PURE_STATIC 
    #ifndef LW_OOPC_STATIC 
    #ifndef LW_OOPC_DYNAMIC
    #define CTOR(type) / 
    void* type##Setting(type*); / 
    void* type##New() / 
           { / 
             struct type *t; / 
             t = (struct type *)malloc(sizeof(struct type)); / 
             return type##Setting(t); / 
           } / 
    void* type##Setting(type *t) / 
          { 
        #else 
          #define CTOR(type) / 
          void* type##New() / 
          { / 
           struct type* t; / 
           t = (struct type*)malloc(sizeof(struct type)); 
        #endif
        #else 
        #define CTOR(type) / 
        void * type##Setting(type* t)/ 
        { 
            #endif 
            #endif
    #define END_CTOR return (void*)t;  } 
    #define FUNCTION_SETTING(f1, f2)  t->f1 = f2; 
    #define IMPLEMENTS(type) type type 
    #define INTERFACE(type) / 
    typedef struct type type; / 
    struct type 
    #endif 
    /*     end     */


    展开全文
  • LW_OOPC是一套輕量級的面向對象C語言編程框架。它是一套C語言的宏,總共1個.h文件(如果需要內存泄漏和調試打印支持,需要增加1個.c文件(lw_oopc.c,約145行)),20個宏,約130行代碼,非常的輕量級,但卻很好的...
    
    

    LW_OOPC是一套輕量級的面向對象C語言編程框架。它是一套C語言的宏,總共1個.h文件(如果需要內存泄漏和調試打印支持,需要增加1個.c文件(lw_oopc.c,約145行)),20個宏,約130行代碼,非常的輕量級,但卻很好的支持了很多面向對象的特性,比如繼承、多態,可以優美的實現面向接口編程。

    注意,這裏特別強調一下,使用LW_OOPC的前提是:在C語言下。如果您所在的團隊已經在使用C++,那麽LW_OOPC對于這種情形是沒有價值的。也就是說,LW_OOPC希望能夠幫助到那些懂OO的程序員,即便是在用C語言編程,依然能夠編寫出面向對象的程序。  ---《开源中国》http://www.oschina.net/p/lwoopc


    面向对象OO(Object Oriented):封装、继承、多态、抽象(abstract)、接口(interface)

    接口>> 对于实现我的所有类,看起来都应该象我现在这个样子。 

          (人是接口,你和我的说话就是 人的说话,也就是实现了人的说话接口,人说话有很多种,我是一种你是一种)

    抽象:人说话是接口,中国人说话都用中文,普通话就是一个抽象方法(函数),而你我说普通话就是实现了这个抽象方法。

    ------------------ lw_oopc 的基本原理 ---- define

    #define CLASS(c_name) \
       typedef struct c_name  c_name; \
       struct c_name

    #define NEW(type) \
        type *type##_new() \
        {                   \
            type *new_v=(type*)malloc(sizeof(type));     \
            return new_v;                               \
        }

    CLASS(Class)
    {
        int index;
    };
    NEW(Class) //当编译器编译时就自动得到 Class *Class_new() 函数,哈哈,有点像C++模版
    int main(void)

    {
        Class* a=Class_new();
        a->index=1;
        printf("%d",a->index);
        //getch();
        return 0;
    }

    展开全文
  • C面向对象

    千次阅读 2018-11-18 05:41:28
    C面向对象
  • C 语言实现面向对象编程

    万次阅读 多人点赞 2018-08-14 18:36:38
    C 语言实现面向对象编程 1、引言 面向对象编程(OOP)并不是一种特定的语言或者工具,它只是一种设计方法、设计思想。它表现出来的三个最基本的特性就是封装、继承与多态。很多面向对象的编程语言已经包含这三...
  • 面向过程与面向对象

    千次阅读 2019-06-12 08:59:10
    《目录》 面向过程与面向对象 C 与 C++ 的区别 代码复用 分层思想 封装、继承、多态 C语言实现封装 C语言实现继承 C语言实现多态 ...
  • 面向对象C

    2015-01-27 16:01:59
    面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可维护性,传统的 C 代码同样可以设计出比较易读,易维护,复杂度较低的优美代码,本文将通过一个实际的例子来...
  • C面向对象-构建对象

    2017-07-09 16:00:14
    一组松散的变量是比较难追踪的,所以一般采用结构体将其封装起来struct{ tBoolean logOn; static enum eLogLevel ouputLevel[NUM_LOG_SUBSYSTEMS];...但是如果要让C代码看起来更像面向对象,那么
  •  从面向过程到面向对象——在C中如何实现面向对象编程 2010-05-26 星期三 晴朗 <br />引言:像我们这些80后的童鞋,一般都是从C入门,然后转到C++和Java这些面向对象语言。当习惯了OOP的思想后就会...
  • c面向对象设计

    2013-05-02 23:30:57
    记得还在我们大学C++第一门课的时候,老师就告诉我们说,C++是一门面向对象的语言。C++有三个最重要的特点,即继承、封装、多态。等到后来随着编码的增多和工作经验的积累,我也慢慢明白了面向对象的含义。可是,等...
  • C面向对象

    2011-06-11 18:11:00
    准确来说,C虽然是一门面向过程的语言,但是强大的C,完全可以用自己本身的东西来实现面向对象,只是实现起来比较麻烦,不推荐新手看此文档!面向对象的三个基本特征是:封装、继承、多态。1.1封装 封装最好理解了。...
  • 面向对象是一种思想,而不是一门语言 我们上哪去找对象,都面向对象去了
  • C/C++面向过程与面向对象的区别

    千次阅读 2019-03-18 22:18:04
    C++是面向对象的(object oriented programming—OOP)。强调对象,由对象实施动作。 C是面向过程的(procedure oriented programming—POP)。强调执行的过程。 总结起来就是: 面向对象是首先抽象出各种对象...
  • C 语言面向对象思想

    2020-10-22 10:52:58
    1.我们为什么要学习面向对象思想??? 在我们平时的开发中也经常会遇到一些简单的项目我们很快就完成了,并且测试着也没有任何问题,但是随着产品迭代,需求增加,项目维护起来越来越耗时,一个看似简单的需求,...
  • 面向对象

    2018-07-13 16:04:13
    类、对象、面向对象的三大特征核心:对象(其余都是根据对对象引申出来的)面向过程:c语言int a;int b;(全局变量)main(){sssss(代码);int c;(局部变量)ssss}print(){//其余方法}通过方法组织代码,数据少的时候没有...
  • 在学习C、C++以来,一直是在使用它们来编程,却从没有去仔细的考虑过他们的基本的思想,突然被问到面向对象、面向过程的时候,就会有一些吞吞吐吐,模棱两可(这都不知道,还好意思说自己会C、C++??面试官:好了下...
  • 学过C++或者其他面向对象的语言的都知道,面向对象编程有诸多好处。面向对象程序设计有几个特征: 面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些...
  • c++面向对象c面向过程的一些概念

    千次阅读 2017-01-18 14:02:46
    1.面向对象和面向过程的概念 面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可。 面向对象是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一...
  • C面向对象

    2018-07-22 10:06:57
    1.**在面向对象的语言里面,出现了类的概念。类是对特定数据的特定操作的集 合体。类包含了两个范畴:数据和操作。而C语言中的struct仅仅是数据的 集合,我们可以利用函数指针将struct模拟为一个包含数据和操作的...
  • object-c面向对象语言

    2015-04-07 20:16:18
    以前接触过 java,c# 都是面向对象的语言 oc(object-c)也是面向对象的语言 面向对象编程 OOP( Object Oriented Programming) 一、oc 的历史 Object-c 简称OC,扩充自c语言的面向对象编程语言,是 os x 还有 ios ...
  • 面向对象方法,OO方法所具有的模块化、信息封装与隐蔽、抽象性、继承性、多样性等独特之处,这些优异特性为研制大型软件、提高软件可靠性、可重用性、可扩充性和可维护性提供了有效的手段和途径。Java主要特征:封装性...
  • C语言的面向对象设计方法,正如题记上面所说,面向对象是一种思想,而并非是一种语言,我们将会介绍C语言实现的面向对象开发方式。
  • c实现面向对象

    万次阅读 2012-10-31 17:03:18
    面向对象无非就是封装继承和多态 封装:struct实现 继承:指针实现,就是把父类包含在结构体中。 多态:可以用指针实现。 一般实现多态,父结构体必须是子结构体的第一个元素,这样就可以通过强制转换子类和...
  • C 面向对象程序设计

    2012-07-12 23:09:52
    C 面向对象程序设计  运行时动态绑定一直以来都是面向对象的优势,比如C++\JAVA等面向对象编程语言都有这种特性。  但是,其实C语言也可以有这样的优势。在C语言要实现这种方式,需要利用结构体、以及结构体的...
  • 我想知道C 真的就写不来面向对象的代码么? 我理解的面向对象应该是一种程序设计思想,按理说所有的编程语言只要按照 面向对象的思想来写,应该都可以写出来面向对象的代码。 本人属于菜鸟,请各位大神解答一下,...
  • 面向对象和面向过程 不同之处

    千次阅读 2015-03-11 16:50:16
    C++ JAVA是面向对象 C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制) C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,165
精华内容 12,066
关键字:

面向对象c