关键词:   对象    抽象    状态    映射    静态

  • 对象和类
对象一词,我们可能会联想到一个物体。比如一支笔,一本书,等等。他们都可以称为对象。对象其实就是现实生活中常见的事物,每个事物都可以叫做对象。反过来讲,严格的说对象不能简单的叫做事物,它是对事物的统称。这是广义的对象。

在现实世界中,在我们人类的视角下,会对各种事物进行一个分类,比如动物类,景观类等。分类的目的是让我们更清楚的认识世界,从而管理世界,应用世界。按照对象的广义的解释,对应每个类中,类中的对象即被赋予了特殊含义,可称为狭义对象。特殊含义是指这些类中对象具有共同的特性,它们是类的实例化。 比如马是动物类的一个实例对象。 我们通常是先接触对象,然后观察它们的特点,再进行归纳总结,从而定义出对象的集合——类。
对象的特点包括两部分:一是它的状态(基本属性);二是它的行为(方法)。我们仍然以马为例。马的性别,年龄,体形,颜色等属于它的状态,而马奔跑、吃草属于它的行为。生活中有很多这样的例子,对象无处不在。哲学家们正是最先由生活中的对象而产生思考,并进行推理和联想。

  • 从上学起,我们便要学习数学这门课。

当你学到一定年龄,你会对数学有一个这样的认识:它好抽象!你可能会抱怨:这都是什么鬼符号?!(…4*2^(lim(lnN+3##22#))…)。 没错,数学的魅力正是在于它的抽象。它把生活中发生的事情进行(最)本质的抽象。通过抽象,数学计算中可以不必关注具体事物的状态和行为,而仅是对其抽象的东西进行运算,因为这样可以提高效率。在无数的数学运算中,必定蕴藏着某些思维方法,比如数形结合法,归纳法等。这些方法通过人类发展中的不断实践总结而形成。在本文中我们会提到这几个方法:抽象,联想,举一反三,映射。

我们开始把视角从数学调到程序语言上,准确的讲是面向对象程序编程(OOP)。(这里主要讨论Java)
应用之前的分析,OOP就可相当于一个虚拟世界。OOP中对象即是对现实世界对象的一个抽象,它也包括状态和行为(这里通常叫做方法)。对象属于类,是类的一个实例。Java中的类是广义的类,它不仅可以指一类具有共同特性的对象,也可以指一个要解决的问题,因为确切的说问题也可以被当作一个类。另外一个不同点是OOP中先有类,再有对象*(类中也可以无对象),而现实生活中我们总是先观察到一个对象,一般不会直接想到它是哪一类的对象。



  • OOP中对象的状态和方法非常有趣。
状态,也称字段,数据成员,属性等。它描述对象的属性信息。我称它为静的东西。
方法,c/c++中也叫函数。它描述对象可以有哪些行为。我称它为动的东西。
在一个类中,通过一些动静的结合,可以想象到从程序语言到现实世界的映射。

类中有一个东西叫静态的(static)。如果要映射到现实世界的类,我联想到的是静态的即对应常态的。现实中一个对象常态是什么样的,就是说它经常表现出的状态和行为,区别于非常态。当然这种映射不是严格的,你可以联想到更多例子。
类中静态常量是指在另一个类中可以直接调用类而获取静态常量(前提是非私有)。静态方法类似。
而非静态常量指在另一个类中要想使用该类的成员和方法,必须创建一个该类的对象,然后用该对象调用其成员或方法,(通常使用对象的引用来调用)

暂时说到这里。下次将讨论现实生活中的联系,以及在OOP中是怎样运用的。
(我把这种从一个领域中的思维或关键字联想到另一个领域的过程叫做举一反三的广义化。)

注释:*1(标题)。指OOP中对象,是对现实世界对象的抽象。
*2(先有类,再有对象)。指要想创建一个对象,首先要有这个对象所属的类。


对象——从现实世界的抽象(*)相关推荐

  1. 印度软件水平为什么世界第一_第1部分:为什么现实世界中的软件需求很难

    印度软件水平为什么世界第一 这是我 过去几年 与 Healthforge 团队一起在医疗保健领域开发软件的经验系列文章中的第一 篇 . 在大多数时间里,我们一直与欧洲,北美和澳大利亚的主要中心以及全球 ...

  2. 计算机图形物理知识,计算机图形学:虚拟和现实世界的融合

    谈及"计算机图形学",可能很多人会觉得很有距离感,或者和计算机视觉.图像处理等学科混淆.但是,如果告诉大家图形学技术是支持各种影视特效.三维动画影片.计算机游戏.虚拟现实以及大家手 ...

  3. 未来计算机在现实世界的应用,计算机图形学:虚拟和现实世界的融合

    原标题:计算机图形学:虚拟和现实世界的融合 (点击图片放大观看,更多论文留意文末推荐) 编者按:自1998年成立以来,微软亚洲研究院一直致力于推动计算机科学领域的前沿技术发展.在建院20周年之际,我们 ...

  4. 计算机专业预见未来,预见未来 | 计算机图形学:虚拟和现实世界的融合

    编者按:自1998年成立以来,微软亚洲研究院一直致力于推动计算机科学领域的前沿技术发展.在建院20周年之际,我们特别邀请微软亚洲研究院不同领域的专家共同撰写"预见未来"系列文章,以 ...

  5. arkit与现实世界距离比_如何使用ARKit和Pusher构建实时增强现实测量应用程序

    arkit与现实世界距离比 by Esteban Herrera 由Esteban Herrera 如何使用ARKit和Pusher构建实时增强现实测量应用程序 (How to Build a Rea ...

  6. 图神经网络可以解决现实世界中的问题吗?

    全文共3133字,预计学习时长9分钟 来源:Pexels 深度学习已经改变了我们处理数据的方式,通过使用日益增长的计算"廉价"资源(摩尔定律)来解决现实世界问题,并且能够完成一些人 ...

  7. 专家:人工智能开始对现实世界产生重大影响

    来源:人机与认知实验室 编译:喻玲萧  编辑:王旭泉 中国日报网11月8日电 据英国<卫报>报道,曾撰写过一本有关人工智能的权威教科书的美国科学家表示,在将人工智能的进步比作原子弹技术的发 ...

  8. AGI:走向通用人工智能的【哲学】之现实世界的虚拟与真实——带你回看1998年的经典影片《The Truman Show》感悟“什么是真实”

    AGI:走向通用人工智能的[哲学]之现实世界的虚拟与真实--带你回看1998年的经典影片<The Truman Show>感悟"什么是真实" 导读:今天写的这篇文章,完 ...

  9. 专家:人工智能开始对现实世界产生重大影响​​

    专家:人工智能开始对现实世界产生重大影响 ​​人工智能技术与咨询​​ 本文摘自中国日报网 中国日报网11月8日电 据英国<卫报>报道,曾撰写过一本有关人工智能的权威教科书的美国科学家表示, ...

最新文章

  1. [LeetCode]Contains Duplicate III
  2. Navicat Premium
  3. c传给php数据解包,小程序源码提取工具,完美解包,一键提取小程序源代码工具_PHP源码...
  4. qlineedit文本改变时_PyQt5 QLineEdit(单行编辑器) 学习
  5. 如何在其他程序的窗口上创建按钮并使之能响应
  6. 使用分页方式读取超大文件的性能试验
  7. Web Hacking 101 中文版 十八、内存(一)
  8. Golang Json文件解析为结构体工具-json2go
  9. 解线性方程组的迭代法(雅可比、高斯-塞德尔迭代法)
  10. 智能指针和自定义删除器
  11. ubuntu-12.04.4-server安装
  12. 从神话诗歌到奇幻科学的人类探索史·《月亮》·总篇(简版)
  13. 【重磅整理】180篇NIPS-2020顶会《强化学习领域》Accept论文大全
  14. flutter web 微信授权和微信支付
  15. 微信小程序头像为什么是模糊的?小程序头像模糊怎么办?
  16. 每日一问-ChapGPT-20221231-关于中医的各国看法
  17. 香港证券监管机构呼吁加密监管以应对欺诈行为
  18. 基于LM的双目图像校准算法源码第一部分
  19. 未来哪些行业值得加入?
  20. Java Thread 和 Park

热门文章

  1. 计算机二级office函数日期,Excel函数-日期和文本函数-计算机二级Office
  2. php网上商城拟解决的问题是,上次说的软件商城BUG,已找到问题,并解决~
  3. jupyter 导入文件路径_更改jupyter notebook默认存储路径
  4. 小程序中的css样式有哪些,微信小程序中css样式media标签
  5. html view设置全屏,uni-app 如何设置web-view 不全屏,不自动铺满,动态控制web-view的高度...
  6. retinanet 部署_目标检测RetinaNet_飞桨-源于产业实践的开源深度学习平台
  7. python 导出数据并发邮件_Python 获取zabbix数据图并发邮件
  8. IDEA Unmapped Spring configuration files found.
  9. 【Python之旅】第四篇(四):基于面向对象的模拟人生游戏类
  10. MySQL 多表查询(Day43)