当前位置: 首页 > news >正文

中英文切换网站开发做微商能利用的网站有哪些

中英文切换网站开发,做微商能利用的网站有哪些,html网站建设购物案例,长沙官网优化技术面向对象编程 面向对象编程Object-Oriented Programming,OOP) 作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征&#xff0…

面向对象编程

面向对象编程Object-Oriented Programming,OOP)
作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。

一、OOP的优势

(来自chatgpt)

代码组织和可读性提升: 使用类似于对象的结构体和函数指针来组织代码,可以将相关的数据和操作放在一起,使代码更易于理解和维护。

封装和信息隐藏: 通过将数据隐藏在结构体中,只暴露必要的操作接口,实现对实现细节的封装,避免外部直接访问内部数据,增强了代码的安全性。

代码重用和扩展性: 使用类似于继承的技巧,可以创建派生结构体来扩展已有的功能,实现代码的重用和扩展,减少了重复编写代码的工作量。

多态性和灵活性: 通过函数指针的动态绑定,可以在运行时根据对象的类型调用相应的方法,实现多态的效果,增加了代码的灵活性和可扩展性。

更接近硬件: C语言相对较接近底层,通过模拟面向对象的方式,可以在嵌入式系统等场景中实现更高层次的代码组织和抽象。

代码可测试性: 将数据和操作封装在对象中,可以更容易地进行单元测试,通过独立测试对象的方法,减少了测试复杂性。

二、如何实现OOP

尽管C语言时面向过程,但可以通过结构体和函数指针模拟面向对象编程。后面会以rt-thread的设备源码分析OOP的实现。以I/O设备模型为例,其模型如下图所示:
在这里插入图片描述

图一 rt-thread的IO设备

2.1 抽象

对于单片机来说有很多驱动外设,如GPIO、UART、SPI、I2C等,这些外设都可以抽象成一个设备结构体rt_device其定义如下

struct rt_device
{struct rt_object          parent;        /* 内核对象基类 */enum rt_device_class_type type;          /* 设备类型 */rt_uint16_t               flag;          /* 设备参数 */rt_uint16_t               open_flag;     /* 设备打开标志 */rt_uint8_t                ref_count;     /* 设备被引用次数 */rt_uint8_t                device_id;     /* 设备 ID,0 - 255 *//* 数据收发回调函数 */rt_err_t (*rx_indicate)(rt_device_t dev, rt_size_t size);rt_err_t (*tx_complete)(rt_device_t dev, void *buffer);const struct rt_device_ops *ops;    /* 设备操作方法 *//* 设备的私有数据 */void *user_data;
};
typedef struct rt_device *rt_device_t;

我们可以想象一下GPIO、UART、SPI、I2C这些不同的外设是否都具有这些属性和方法。

2.2 封装

分装主要包含两层意思:

  1. 将数据和操作捆绑在一起,创造出一个新的类型的过程。
  2. 将接口与实现分离的过程。

回顾rt_device 结构体,将该对象的属性与该对象具有的方法ops封装在一起,便于代码的维护。外部程序只能通过结构体访问相关数据也增加了代码的安全性。

2.3 继承

rt_device结构体中存在一个基类rt_object也是其父类。也就是说每个rt_device都从rt_object中继承了这些属性。每次使用rt_device声明不同对象时都不需要重复定义rt_object,实现代码的重用和扩展,减少了重复编写代码的工作量。

struct rt_object
{char       name[RT_NAME_MAX];                       /**< name of kernel object */rt_uint8_t type;                                    /**< type of kernel object */rt_uint8_t flag;                                    /**< flag of kernel object */void      *module_id;                               /**< id of application module */rt_list_t  list;                                    /**< list node of kernel object */
};

2.4 多态

rt_device结构体中存在 rt_device_ops *ops 方法。

/*** operations set for device object*/
struct rt_device_ops
{/* common device interface */rt_err_t  (*init)   (rt_device_t dev);rt_err_t  (*open)   (rt_device_t dev, rt_uint16_t oflag);rt_err_t  (*close)  (rt_device_t dev);rt_size_t (*read)   (rt_device_t dev, rt_off_t pos, void *buffer, rt_size_t size);rt_size_t (*write)  (rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size);rt_err_t  (*control)(rt_device_t dev, int cmd, void *args);
};

通过函数指针的方式实现多态。实际项目中我们会遇到多个模块的适配问题,比如AT的wifi模块,犹豫各个厂商AT指令不兼容,当项目中产生替代料时,使用多态则再合适不过了。
对于client应用层业务主要分:连接服务器发送数据接收应答断开连接四部分,分别对应openwritereadclose四个操作。
若使用乐鑫esp则需要实现esp_connect(),esp_send(),esp_recv(),esp_close()四个功能,
若使用移远模块,则需要实现quectel_connect(),quectel_send(),quectel_recv(),quectel_close()功能。
通过device_init函数使client.ops根据实际模块绑定对应函数即可。APP层操作只会是client.ops->open()client.ops->write(),client.ops->read(),client.ops->close()
增加了代码的灵活性和可扩展性,也实现了代码的应用与驱动分层,朝着“高内聚、低耦合”的方向前进。

http://www.yayakq.cn/news/355218/

相关文章:

  • 网站架构的建设企业网页设计论文
  • 扬州网站建设哪家好wordpress插件+七牛
  • 域名备案网站如何把国外的网站在国内做镜像
  • 交河做网站价格百度推广电话是多少
  • 有没有那个网站是做点心的网站要怎么做的
  • 记事本做的网站链接怎么装饰加强意识形态建设 办好政协网站
  • 网站的类型及特点难道做网站的工资都不高吗
  • 纵横网站兖州网站建设公司
  • 想建个网站找谁电商运营自学网站
  • wordpress建站注册新用户小荷特卖的网站谁做的
  • 网站建设cms网站文件名格式
  • 房产中介公司网站源码企业注册网上申请入口
  • 淘宝网站如何在邮件里做超链接什么是功能型网站
  • 建立网站 多少钱免费设计app的网站建设
  • 邯郸教育网站建设2022年河北二建考试最新消息
  • 网站建设费如何账务处理网络平台宣传方式有哪些
  • 企业网站建设指导规范网页设计作品 简单
  • 查权重网站上海备案证查询网站查询系统
  • 泉州网站制作哪个好薇设计网页代码流程
  • 专业制作网站 上海网站开发的预算
  • 杭州免费网站制作房产交易网站建设策划案
  • 深圳建网站的建筑设计公司注册
  • 怎么制作网站视频教程步骤跳网站查询的二维码怎么做
  • 英文在线购物网站建设门户网站的建立
  • 图片网站制作做网站租服务器一年多少钱
  • 网站建设陆金手指下拉壹玖seo博客教程
  • ico网站进行推广top的域名网站
  • 做App和网站 聚马平面设计欣赏网站推荐
  • 珠海网站建设专线卖高权重网站做跳转
  • 腾讯云网站建设教学视频导视设计提案