zoukankan      html  css  js  c++  java
  • An introduction to the object

    Thinking of Java

    The First Chapter

    An introduction to the object

    • 语言信息的组织和分类的协定

    • 编程语言的产生始于对机器的模仿

    • 面向对象程序设计(Object-oriented Programming,OOP)


    语言信息的组织和分类的协定

    “我们之所以将自然界分解,组织成各种概念,并按照其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下......除非赞成这个协定中规定的有关语言信息的组织和分类,否则我们根本无法交流。”---Benjamin Lee Whorf(1897-1941)

    编程语言的产生

    编程语言的产生始于对机器的模仿。

    • 计算机是头脑的延伸工具

    • 还是一种不同类型的表达媒体

    面向对象程序设计(Object-Oriented Programming,OOP)

    是这种以计算机为表达媒体的大趋势中的组成部分


    抽象过程

    本节要点:

    1. 所有编程语言都提供抽象机制

    2. 另一种对机器建模的方式

    3. 面向对象方式像程序员提供的解决问题的方式

    4. 一个成功的面向对象语言所拥有的特点

    5. 更简洁的描述


    所有编程语言都提供抽象机制
    • 人们所能够解决的问题的复杂性直接取决于抽象的类型和质量

    1. 类型是指:所抽象的是什么?

      1. 汇编语言:对底层机器的轻微抽象

      2. “命令式”语言(C语言就是其中之一):对汇编语言的抽象

    特点:

    要求再解决问题时要基于计算机的结构,而不是基于所要解决 的问题的结构来考虑

    举例:

    问题所在的空间:问题空间-业务

    机器所在的空间:解空间-计算机

    这些语言的特点就是:建立实际待解决问题再这两个空间的映射


    另一种对机器建模的方式
    • 只针对待解决问题建模。

    代表性语言:

    1. LISP

    2. APL

    3. PROLOG

    解决方式:

    1. 所有问题最终都是列表

    2. 所有问题都是算法形式的

    3. 所有问题都可以转换成决策链

    缺点:

    限制性强

    面向对象方式像程序员提供的解决问题的方式

    特点:

    • 不会受限于任何特定类型的问题

    • 可通过添加新类型的对象使自身适用于某个特定问题

    重点:

    • 将问题空间中的元素和其在解空间中的表示称为"对象"

    归纳:

    每个对象有具体的状态,具有操作,用户可以要求对象执行这些操作

    Alan Kay提出的成功面向对象语言的五个基本特点:
    • 万物皆为对象

      • 将对象视为奇特的变量,可以存储数据

      • 可以要求它在自身上执行操作

      • 抽取任何待求解问题的任何概念化构件

    • 程序是对象的集合,它们通过发送消息来告知彼此所要做的

      • 消息是对某个特定对象的方法的调用请求

    • 每个对象都有自己的由其他对象所构成的存储

      • 可以通过创建包含现有对象的包的方式来创建新类型的对象

      • 将程序复杂性隐藏在对象的简单性背后

    • 每个对象都拥有其类型

      • 每个对象都是某个类(class)的一个实例(instance)

      • 类之间的区别特性是:

        • "可以发送什么消息给它(给这个类)"

    • 某一特定类型的所有对象都可以接收同样的消息

      • 可替代性(substitutability)---类之间的继承

        • 继承之后创建子类对象可以使用父类的方法

    对象的特点
    • 具有状态、行为和标识,每一个对象都可以拥有内部数据

      • 定义了该对象的状态

      • 定义了该对象的方法

    • 每一个对象在内存中都有一个唯一的地址

    It's a lonely road!!!
  • 相关阅读:
    netCore3.1项目搭建过程记录-省的每次都傻乎乎的不知道应该先干啥
    探究 position-sticky 失效问题
    协议的设计一般采用结构体进行数据打包,在协议设计的结构体中能不能使用指针 ?
    ROS pluginlib
    ROS NodeHandle命令空间问题
    ROS 常见命令
    ROS ros::spin() 和 ros::spineOnce区别
    PPM图像文件格式
    Qtcreator for visual studio版本调试问题
    Install Typora For Linux
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14671289.html
Copyright © 2011-2022 走看看