美文网首页
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