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二级抽象复用技术 未完……

裸男
Nakeman.cn 2023 Build by Gatsby and Tailwind, Deploy on Netlify.