zoukankan      html  css  js  c++  java
  • 算法 (对象的理解)

        首先不得不提的一个概念是, 类 与 对象;

        这在 任何面向对象的语言中, 都是一个优先度极高的概念, 我首先了解到的概念则是: 类是对象的集合, 是对象的抽象化, 对象是类的实例, 是类的具象化. 在归纳总结中, 将具有某些共同属性 及 方法的概念, 实物, 进行抽象化, 就是在 java 中常常谈到的类;

        而在事实上, 我也是这样做的. 如果要定义一个人:

     就属性而言, 有 name, age, sex; 就方法而言, 有 eat, sleep, work 等等;

       但属性本身的 类型定义, 方法的参数以及返回值定义, 更多的是从一种经验主义的角度出发, 来为它们进行定义, 将类与实际生活相联系, 进而完成定义. 我只是定义, 却不思考为什么这样定义, 如果需要作出必要的优化调整, 往往也无从下手, 类与类之间的组合依赖聚合等等关系, 也是从经验主义出发, 说到底, 是将程序 , 类的构架本身作为一种现实场景来看待, 使用.

        但在 算法4 中, 却从另一个角度解释了类:

         数据类型指的是一组值和一组对这些值的操作的集合, 定义和使用数据类型的过程, 又被称为数据抽象, 而在数据抽象中的一个基础概念: 对象是能够承载数据类型的值得实体.

        由此扩展开来, 其实从小就在一直培养, 灌输着这样一种概念. 在数学中, 会接触到 : 整数, 正数, 负数, 小数, 未知数 种种概念, 而后会学习到各种各样的 函数.

     稍稍分析则会发现:

               数本身就拥有值, 而对不同的数, 我们定义了不同的操作, 以及对这些相应的操作拥有不同的结果(返回值). 正数: 可以 + - * / 对这些不同的操作, 会有不同的结果, 就像在 java中调用不同的方法, 取到不同的返回值. 对于 负数, 我们又额外定义了一条操作, 两个负数相乘, 结果为正, 对 0 又规定了 0 不能作为除数, 这种过程本身就是一种数据类型的定义, 用语言上的描述将数据类型可以进行的操作, 操作的规则进行进一步的限制与定义. 而之前却并没有意识到这样的联系, 有所不同的是, 在编程以前, 大多是使用数据类型, 赋予数据类型最基本的属性: 值,  并使用相应的函数操作这些值, 仅此而已. 

               而在编程的过程中, 由使用者变成了造物主, 我们自己定义并使用数据类型, 由我们本身来定义 它的属性, 定义它的方法, 由方法来限定数据类型的功能,  在使用数据类型的时候, 我们的注意力集中在API描述的操作上而不会关心数据的表示; 在实现抽象数据类型时, 我们的注意则集中在数据本身, 并实现对数据的各种操作.

           数据类型指的是一组值, 和对这些值操作的集合.

  • 相关阅读:
    iOS开发CoreAnimation解读之三——几种常用Layer的使用解析
    iOS开发CoreAnimation解读之二——对CALayer的分析
    iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程
    在最完整的搜索提示降史上的用户交互的研究——阅读《An Eye-tracking Study of User Interactions with Query Auto Completion》
    学习算法
    This Android SDK requires Android Developer Toolkit version 22.6.2 or above.
    一切都不是为了营销手段的目的都是耍流氓
    LeetCode219:Contains Duplicate II
    无尽的循环ViewPager
    允许Ubuntu14.04"保存"屏幕亮度值
  • 原文地址:https://www.cnblogs.com/zyzdisciple/p/7764740.html
Copyright © 2011-2022 走看看