纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 6193|回复: 1

[C/C++] 我的20年编程经验总结:9---认识对象

[复制链接]
发表于 2014-8-8 07:56:29 | 显示全部楼层 |阅读模式
认识对象
========
- 静态对象()
- 动态对象(自身起变化的对象)
==================================对象(OBJECT)命名规则:
1. 以名词(对象名称)在先(总是!)
2. 类总是(全是)名词(允许动名词),没有直接的动词像: DELETE,CREATE,GET,SET,DESTROY
3. 清楚"IS" 和 "HAS"
4. 数据(DATA)本身已无意义,因为所有以DIGITAL的存在方式就是数据,除非专指RAW DATA(也无意义?)
   只有数据以一定方式存在的形式才有意义,像IMAGE 格式,AUDIO 格式, XML, HTML, 等等
   FAT,NTFS,EXT2, UDF, ISO9660 等等,则是对数据存放的管理,也是数据,只是(可以指为)它们是
   数据管理的数据
5。指定数据的含义,意义特别重大,如10101010, 如不指定含义,毫无意义,当指定含义时,它才有确定的
   意义,所以说数据本身是无意义的,只有当它隶属于某个对象时,它才有了特定的含义,这时数据才变得
   有意义了。也就是说,对数据的认读,对数据的处理,一切的一切,都源自于这个数据的隶属对象,
6。首先,以DIR命名PACKAGE(或者,大模块),文件名则以CLASS对象命名,文件中则是VAR和FUNCTION命名
7。不重复命名法:
   理论上一个对象的名字应是:
   MODULE_SUBMODULE_SUBSUBMODULE_XXX_CLASS
   但是由于路径名(通常对应于MODULE 和 SUBMODULE)的存在则只需取对象名即可。
8。重复命名法:
   理论上一个对象的名字应是:
   MODULE_SUBMODULE_SUBSUBMODULE_XXX_CLASS
   但是由于类是独立可行的,任何一个类都可被单独的用于它处(REUSE),所以类名应是UNIQUE,SPECIFIC的
   不然在其它的应用中会被重复命名。
9。命名的通用性和特定性
   如果SURE(能肯定的话),尽量以取通用名为好,这样软件的移植性能达到最好,如果不能肯定此类是一通用类,
   或者也不可能通过不大的IMPROVEMENT(改善)将其变成通用类的话,则以取特定(UNIQUE,SPECIFIC)的类名为好,
   但这样,软件的移植性就不好了.
   有难度的是,做一个通用类
   =======================
10.核心逻辑原则(Core Logic Principle):
   只对数据对象的数据结构方式和内在(处理)LOGIC部分命名,不对它的APPEARANCE形式命名,
   这是一种快速和简单的做法,因为APPREARANCE形式太多。
11.C Object programming
   永远的原则:seperate "data" and "data presentation", like Model–View–Controller (MVC) 模型
// include drawing ("third party viewing") object like "widget"
// include natural object
// pthread is the way to manage multiple objects
//
Object based programming in "C"
- All "big" object will be defined as one "CObject" structure;
- Inside "CObject", there will be always with some attribute and methods:
  // Object property and method
  -- CObject ID;
  -- CObject Size;
  -- ActiveStatus; (if active, then it's in the list to response event)
     (ACTIVE,IDLE, ...)
  -- ...
  -- EventHandling_PropertiesUpdate
  // relationship
  -- CRealtion (*Prev, *Next, *Parent, *Child)
  // presentation
  -- EventHandling_AppearanceUpdate
  (My ptask will be modified for this kind of management usage)
  -- Hook up
  // Divided into "system level object" and "applciation level object"
  // the reason is: system object has special attribute like:
  // --- timing critical
  // --- seperate memory space
12.Data Attribute (数据对像的属性)
- Object self (用于描述对象自己): to describe object properties
- Object relation(用于描述对象之间的关系): to describe the relation between other objects, like "parent", "child",...
- Object presentation(用于描述对象的表现,从第三方角度来看这个对象): to describe how this object to be present to "third party" (like mankind). That's for apprearance
   

打包(板块,PACKAGE)对象:不同种类的数据,但是存在于特定的硬件环境,
  也许JAVA就是以这种方式定义PACKAGE的
- 以硬件上的数据存在方式作为数据对象集的定义方法 (如GUI,IO,NET)
  GUI:因为所在GRAPHIC的数据通常存在于OSD BUFFER (硬件上的指定的MEMORY块,有相关的硬件组织
       输出和后继处理)
  IO: PC(或EMBEDDED SOC)上的IO DEVICE,有串行和并行,同步,异步之分
  NET:以协议STACK方式存在的数据,以SOCKET方式读入和写出
  MATH: 以FPU为中心的数据对象集
-
数据对象的命名竞争:
- 输入方式   (DEMUX,。。)
- 输出方式  (ENCODE,。。)
- 表现方式 (FORM, FRAME, ETC)
- 存在方式 (模拟,数字,静态,动态,串行,并行 )
原因:
- 不同对象,不同应用,其主要着重点是不同的,所以其命名方式也会随之改变
  如像网络应用,着重点在协议,则以协议为基础的命名更重要
  多媒体(MP3,JPEG, 。。。)应用,以标准为基础的命名更重要
  总之, 数据对象在什么场合下的重要性决定了它的命名取向
不知道这些理论对不对:
- 如果一个功能函数所处理的数据对象是通用的(不属于特定的类对象范围),则此函数应视为
  通用函数,作为一个独立的函数存在,不要将其放入一个类中,当然,在类中,是可以调用
  这种通用函数的,而且一定有此目的  
  如像:
  -- string handling: strcopy, strcat, strcmp, stricmp,
  -- data conversion: hex2bin, asc2hex, ...
  --                : sizeof() (应是宏)
  -- math function: ceil(),floor(), tan(), sin(),...
  --
  不对之处:
  当一个STRING 是实体时,此应作为类的一个对象,这样,在此对象的连续的操作中,用FUNC 是不好的,
  反之,用类中的FUNC操作则会带来许多BENEFIT(象能记住当前位置,便于作运算类操作,等)
- 软件是串行的,所以总有一个MAIN()入口,然后层次的CALL其它(如果软件架构不错的话)
  硬件是并行的,所以有许多CLOCK入口,或有许多其它INPUT PORT,模块是并行跑的
  
(if project files no <= 100)
- All files under one dir
  -- dir name: project name
  -- file name: project_module_submodule_subxxxname_class_name
(else)
- files under different dir
  -- root dir name: project name
  -- sub dir name: module name
  -- subsubxxx dir name: subxxx domule name
  -- file name: class name (with dir name?)

Language indepentant (programmer need to know but language indepentant):
- standard (like MP3, MPEG1/2/4, .263, .264, ...)
  -- standard is enough to use?
  -- need to extend?
  --
- resource (for example, image files: PNG, JPEG, TIFF, GIF, ...)
  -- creation / editing tool?
  -- where to get?
- output devices: audio devices, video devices, disc, ...
  -- how to use?
  -- how to test?
  --
- input devices: ethernet, wireless, scanner, keyboard, mouse, ...
  -- how to use?
  -- how to test?
- procedure, logic, or pseudo language description (programming)
-

Module catogory:
- resource (images, fonts, test pattern(?), )
- configuration (  )
- library (like MFC, VCL, ...)
- doc (object description, architecture, ...)
-

reference:
- Java
- .Net
-
Naming obstacle:
- usually it's under certain context, so it's easy to conduct "action oriented naming", such
  as "createxxx, deletexxxx, renamexxx, getxxx, setxxxx"
- common and specific confused
  - specific: no other place will use it as it's specific, so it's naming is unique, not repeatable for
              common usage
  - common: somewhere else will reuse it, so it's name / behavior should have "common" "general" attribute
            not specific
Naming target:
- got right scope for this project
-
- got right naming to dir level
- got right naming to file name level
- got right naming to class naming level
- got right naming to function level, and variable level
-

About Object:
- definition depend on object scope
  -- if by cosmos, then everything in cosmos is belong to cosmos object
  -- if by earth, then everything in earth is belong to earth object
  -- if by ...
- object is one container
- one object could include multiple objects
- multiple objects could include one object
- object is dynamically changed (along with time, it extend itself?)
-

First task:
- Object view: example and method, tools
- Object name view / examples: collection

Package:
- A group collection of classes
-
First task:
- Object view: example and method, tools
-
回复

使用道具 举报

发表于 2019-8-18 09:05:10 | 显示全部楼层

回帖奖励 +1

哈哈,有意思。

2019年全国老板手机号码大全》介绍

   2019年全国老板手机号码大全共400万个老板手机号码,全国老板手机号码数据截止更新

日期到2019年底。全国老板手机号码数据内容有公司名称、老板姓名、 经营范围、经济

类型、地址、 邮编、手机号码、注册日期、注册资金等等 。是开放的Access数据库格式,

1张光盘。有效率在87%以上。

   2019年《全国老板手机号码大全》让您直接同公司最顶层的老板 洽谈业务,是您最好的

商务秘书和商务助手。做生意,跑业务,担心没有客户?《全国老板手机号码名录》让你直

接和企业的老总谈生意!拥有它,你就等于拥有全中国企 业、事业单位的400多万位负责人的

客户资料,你就有做不完的生意。



QQ 1217718899
企业网址

http://www.20168888.com/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-31 01:02 , Processed in 1.446652 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表