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

FreeCAD源码分析:属性系统

按照面向对象设计(Object-Oriented Design, OOD)的信条,OOD大体上包括两方面的内涵:一方面,需要将业务数据抽象成(树状/层状)数据对象,这就是所谓的数据对象模型(Data Object Model);另一方面就是职责的分摊与聚合,将业务逻辑分摊到数据对象,数据对象之间通过预定义的接口完成交互,也就是所说的面向接口编程(Interface-Oriented Programming)。

因此,数据对象通常由属性方法等构成,而属性系统自然就会成为数据对象模型的主要研究内容。

Ref. from Acise: A CAx Industrial Software Ecology 

As for a general CAx application software, it's usually a touch requirement to manage the application-specific data and its related business logic. Following the object-oriented design, data should be modeled as objects which can have a few of properties. Usually, these data objects can be grouped into a hierarchy of objects. The method to organize these objects is called 'data object model'. In addition, users are willing to interact with these data objects through UI elements. These UI elements present these data objects, fetch user events from users and make appropriate reactions.

FreeCAD中,借助于Observer Pattern,实现了对象属性管理,可以说,属性系统是FreeCAD中极其重要的组成部分。因此,有必要对其予以分析总结。同时,也非常希望本文对从事国产CAx(CAD/CAE/CAM)软件研发的朋友们有所帮助。

注1:限于研究水平,分析难免不当,欢迎批评指正。

注2:文章内容会不定期更新。

一、属性与属性容器

二、 SelctionModel

三、属性显示与编辑

四、扩展与演练:ACISE中的属性系统

参考文献

  • Erich Gamma. Design Patterns:elements of reusable object-oriented software. Addison Wesley, 1994.
  • Joseph Ingeno. Software Architect's Handbook. Packt Publishing, 2018.

网络资料

 FreeCADicon-default.png?t=N7T8https://www.freecad.org/

Acise: A CAx Industrial Software Ecologyicon-default.png?t=N7T8https://blog.csdn.net/qq_26221775/article/details/133831665?spm=1001.2014.3001.5501大型CAx(CAD/CAE/CAM)软件研发中的职责编排icon-default.png?t=N7T8https://blog.csdn.net/qq_26221775/article/details/136975550?spm=1001.2014.3001.5501 FreeCAD源码分析:FreeCADApp模块icon-default.png?t=N7T8https://blog.csdn.net/qq_26221775/article/details/113789364?spm=1001.2014.3001.5502

http://www.lryc.cn/news/397086.html

相关文章:

  • C++入门 模仿mysql控制台输出表格
  • SpringBoot新手快速入门系列教程五:基于JPA的一个Mysql简单读写例子
  • 开源大势所趋
  • 智能无人机飞行控制系统:基于STM32的设计与实现(内附资料)
  • centos磁盘空间满了-问题解决
  • 宝塔:如何开启面板ssl并更新过期ssl
  • 大白话讲解AI大模型
  • pandas+pywin32操作excel办公自动化
  • 防火墙(ensp USG6000v)---安全策略 + 用户认证综合实验
  • Java使用POI导出后数字类型为常规类型,不能计算
  • 项目进度管理(5-1)常见的缓冲区监控方法
  • 构造函数语意学(The Semantics of Constructors)
  • 香橙派5plus上跑云手机方案二 waydroid
  • 600Kg大载重起飞重量多旋翼无人机技术详解
  • LlamaFactory可视化微调大模型 - 参数详解
  • 最新 Kubernetes 集群部署 + flannel 网络插件(保姆级教程,最新 K8S 版本)
  • C语言笔记31 •单链表经典算法OJ题-3.反转链表•
  • 网桥与以太网交换机:功能与区别解析
  • 动态引用的艺术:在Postman中实现自动化的终极指南
  • Qt:15.布局管理器(QVBoxLayout-垂直布局、QHBoxLayout-水平布局、QGridLayout-网格布局、拉伸系数,控制控件显示的大小)
  • 图论---无向图中国邮路的实现
  • Rockchip RK3588 - Rockchip Linux SDK脚本分析
  • 【C++中resize和reserve的区别】
  • 计算机毕业设计Python深度学习游戏推荐系统 Django PySpark游戏可视化 游戏数据分析 游戏爬虫 Scrapy 机器学习 人工智能 大数据毕设
  • Python面试题:如何在 Python 中进行正则表达式操作?
  • C#面:简述什么是中间件(Middleware)?
  • AWS Glue 与 Amazon Redshift 的安全通信配置
  • nginx访问控制
  • 高效应对网络攻击,威胁检测响应(XDR)平台如何提升企业应急响应能力
  • 多线程问题