美文网首页
C++ 面向对象编程

C++ 面向对象编程

作者: 我阿郑 | 来源:发表于2021-12-21 11:36 被阅读0次

    面向对象编程

    面向对象编程是一种设计思想,并不局限于语言

    无论是C++, Java,还是C语言, 或者Shell, Perl, Python,甚至汇编语言,都可以实现面向对象编程,“面向对象编程”是设计思想,C,C++是实现手段。

    相对来说,C++更容易实现这种设计思想,而C则相对是麻烦了一点

    如何实现面向对象编程?

    第一步:假设存在一个对象。初步设想它应该提供哪些服务。(把这个对象当成一个工具、或者是一个服务员)

    第二步:定义如何使用它的服务。细化为函数。
    (1) create/destroy: 创建与销毁对象
    (2) 其他功能函数:指该对象提供的服务

    第三步:选择一种实现方法,写代码完成上述函数接口。

    举例子:
    现在的需求是:需要存储一系列Student对象

    第一步:定义服务
    假设存在一个对象DataStore,它为我们提供Student对象的存储服务器。它提供以下的服务:

    • 可以向它加入一个对象
    • 可以按ID来查找一个对象
    • 可以按ID删除一个对象
    • 可以打印显示所有的对象

    第二步:细化为函数

    定义一个类型

    struct DataStore
    {
    };
    

    (注:成员变量先不用考虑)

    创建与销毁

    DataStore*  ds_create();
    void ds_destroy(DataStore*  store);
    

    其他功能函数:

    (1) 可以向它加入一个对象

      void ds_add( DataStore* store, const Student* obj);
    

    (2) 可以按ID来查找一个对象

      Student* ds_find(DataStore* store, int id);
    

    (3) 可以按ID删除一个对象

      void ds_remove(DataStore* store, int id);
    

    (4) 可以打印显示所有的对象

      void show_all(DataStore* store);
    

    确定该对象的使用方式

    // 创建一个对象
    DataStore* store = ds_create(); 
    
    // 调用ds_add
    Student obj;
    ds_add(store, &obj);
    
    // 销毁对象
    ds_destroy(store);
    

    至此,已经完成了面向对象编程的设计工作,接下来选择一种实现,使用链表来实现, 把相关的数据放在DataStore对象里

    struct DataStore
    {
        Student head; // 存一个有头链表
    };
    
    // 创建对象
    DataStore*  ds_create()
    {
        // 动态创建对象
        DataStore* store = (DataStore*)malloc(sizeof(DataStore));
        
          // 初始化
        store->head.next = NULL;
        return store;
    }
    
    // 销毁对象
    void ds_destroy(DataStore*  store)
    {
        // 释放所有相关资源
        Student* p = store->head.next;
        while(p)
        {
            Student* next = p->next;
            free(p);
            p = next;
        }
        // 销毁对象
        free(store);
    }
    
    // 添加对象
    void ds_add( DataStore* store, const Student* obj)
    {
        // 创建对象、复制数据
        Student* copy = (Student*)malloc(sizeof(Student));
        *copy = *obj;
        
        // 添加到链表
        // ...
    }
    
    

    相关文章

      网友评论

          本文标题:C++ 面向对象编程

          本文链接:https://www.haomeiwen.com/subject/brxxqrtx.html