Press "Enter" to skip to content

JS语言是不是面向对象的?(二)

最新的编程技术研究成果:2020-10-25

  • 第一,OO和FP都是 程序构造术,两种都使用了抽象,但不同的思想范型;
  • 第二,构造过程分为,功能编程,和结果编程两步;
  • 第三,(两种)程序构造术 都为解决复杂性,通用协作,和复用达到这个意义目标;

阐述的步骤

1 为什么要面向对象
2 什么是面向对象
3 面向对象的标准特征是什么,
4 JS有没有,以及如何实现这个特征。

为什么要 面向对象

1 针对 事务应用程序 (数据量大,代码重复率高)的程序特点而设计的构造术
2 特点是思维粒度适中,易编写和阅读维护

什么是面向对象?

以 对象 为单元 组织程序(功能)

什么是对象?类是不是对象?函数呢?

「对象」是封装了计算功能的程序组件单位,「完整形式的对象」应该是具数据和方法的;缺损形式的都是对象的特殊,如只有数据的JS对象,和只有方法的JS轻便对象;
「类」是抽象的对象,实现上(实例了一个对象作为单位)需要语言的“反抽象”支持
「抽象类」则更为抽象,设计目标是为了复用代码,多一层“反抽象”支持

对象与封装是什么关系?对象一定是封装的吗?封装的意义?

将计算功能的实现细节「封装」起来,使用者在对象逻辑(更高粒度)之上工作,解决了计算复杂性;
「封装」起来,也便于团队协作,专业独立

对象封装了什么?

对象封装了计算功能,但对使用者来说,对象的名字可能不足于表达它的功能涵义,所以这是一个技艺(待研究),对象可以需额外的文档进行解释「它的封装功能」

面向对象的标准特征是什么

使用对象及对象关系 描述 真实世界

描述真实:must enable a developer to describe the reality using objects and to define relationships among objects

抽象:将细节包装成一个符号,便利分析思考

面向对象什么特性来满足 事务应用程序的什么组织需要?

对象细节封装,对象功能抽象,和对象继承或组合复用
(类或函数)对象参数派生 是一级复用,类继承是二级复用
对象组合是一种轻便的二级复用

面向对象标准特性

满足 事务应用程序组织需要
主要有支持两个方面,满足大程序开发和组织的需要

1 协作

逻辑封装单元:对象实例(函数是特殊对象实例)
物理封装单元:模块

2 复用

一级抽象复用(模板[函数和类]的派生和组合):对象参数派生,组合是一种特殊的派生
代码模板:对 「对象」 进行局部的抽象(形式参数)产生的代码模板,用(实际参数)来派生对象实例
派生与组合:

二级抽象复用(继承):类继承,抽象类,高阶函数

介于一代面向过程程序构造术(也有协作和复用的功能特性)相区分,面向对象构造术特点在:
第一,封装单元是有状态数据的 计算对象,而不是无状态记忆的过程函数;
第二,支持二级抽象复用

技术实现

协作和复用特性,一般实现技术有哪些?JS又是怎样实现的?
未完……

JS有没有,以及如何实现这个特征

JS 对象闭包比较接近封装技术
JS动态性——一个对象可任意更改形式,与严格封装相悖;JS似乎倾向于一种约定封装,而非技术封装(js class 没有private修饰)
原型继承和高阶函数是JS二级抽象复用技术
未完……

参考

JS语言是不是面向对象的?(一)

Be First to Comment

Leave a Reply

Your email address will not be published. Required fields are marked *