zoukankan      html  css  js  c++  java
  • OOD之问题空间到解空间—附FP的建模

      通常会被问到,什么事OOD,然后大部分人期待的答案比较死板,继承、封装、多态!懂这个的人多的去了,有什么好问?回答出来的人是否拿着Java又去做一些面向过程的勾当?

      计算机革命起源于机器,因此编程语言的产生始于对机器的模仿;因为机器只认得0和1,所以所有的编程语言都得提供一种抽象机制,人们解决问题的复杂性取决于抽象的类型和质量,汇编语言就是对机器码的轻量级抽象,然后像C一样的“命令式”语言是对汇编的抽象;人们为了让计算机去解决问题就需要用这些语言,本质是在把问题基于计算机的抽象结构给出解决方案,这里涉及问题空间和解空间这两个元素:

    第一:问题空间

      现实世界存在的问题,需要解决,具有其问题的结构特征;特征可以理解为现实世界的模拟抽象;始于人类对自然界分解,组织成的各种概念和关系;因此符合人类的思维方式,容易被人类理解;

    第二:解空间

      计算机的结构构成的空间,是问题最终得以处理为结果的地方,解空间的每一个解也是人类组织创建,但思想出发点是计算机的比较底层的抽象所组织的,可以认为,这类抽象结果,是一种基于计算机的建模过程;第一段提到面向过程的勾当,就是用高级过程语言抽象的思维去解决问题;因此不可否认,Java也是需要过程性元数据的;

    面向对象:

      因此,基于解空间,以计算机思维解决问题这类操作是费时费力的,而面向对象就是一种特别的只针对待解决问题的建模;我们将问题空间的元素及其在解空间中的表示称之为:“对象”,这意味着,程序员不仅仅拥有计算机的元类型去解决问题,而且能自定义类型,我们称之为类,它是对象的抽象;有了新类型后,也意味着,计算机允许根据问题来描述问题;而不是根据运行解决方案的计算机来描述问题,这点是关键所在;就好比每个对象是一台微型计算机,它是有状态的,还具有操作;

      顺便提一下,每一个对象,都需要接受请求来完成任务,一些对象只能满足某些请求,这些请求是由对象的接口所定义,决定接口的叫类型,这些接口都有一个方法与之关联,当向对象发送请求时,方法就会被调用,此过程通常被概况为:向对象“发送消息”(产生请求),通过发生消息,对象就通过方法知道此消息的目的,然后执行对象行为;在代码表现:需要有对象的引用,声明对象的名称,然后用一个圆点连接消息请求;

    每一个对象都提供服务:

      当试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为服务提供者,程序本身向用户提供服务,它通过调用其他对象提供服务达到这一目的,你的目标就是去创建能提供理想的服务来解决问题的一系列对象;将对象当做是服务提供者还有一个好处就是:内聚性,内聚性是软件设计的基本质量要求之一,这意味着一个软件构件组合的非常之好,

    、、、、待续 5.23

      

  • 相关阅读:
    4天精通arcgis
    性能优化紧急回顾笔记
    linux下oracle导入dmp文件
    centos虚拟机复制后网络重启出错解决
    redhat ent 6.5 virtualbox虚拟机通过桥接方式配置主机-虚拟机的局域网
    SVN的搭建及使用(三)用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突,重新设置用户名和密码等
    SVN 的搭建及使用(二)VisualSVN Server建立版本库,以及VisualSVN和TortoiseSVN的使用
    SVN 的搭建及使用(一)下载和搭建SVN服务器
    Visual Studio 2008常见问题
    .net 学习路线感想(转)
  • 原文地址:https://www.cnblogs.com/iCanhua/p/9024136.html
Copyright © 2011-2022 走看看