随笔分类 -  oop

摘要:依赖倒置的层(高层模块不应依赖于低层模块,二者应依赖于抽象)-高层表示策略层。 低层:细节、实现; 依赖于控制方向 控制方向:(IO)事件循环是控制逻辑的根 高层:策略层、掌握更多上下文、更接近用户目的、应用层、聚合低层能力以达到目的 低层:为高层提供基础能力、技术工具层;低层提供技术和工具。 阅读全文
posted @ 2022-05-18 21:27 zzfx 阅读(60) 评论(0) 推荐(0) 编辑
摘要:面向对象:类的成员 只是特定(类的)命名空间的全局变量(函数)而已 类变量: 生命周期:全生命周期; 作用域: 1)外部可见性:修饰符确定; 2)继承可见性:修饰符确定。 阅读全文
posted @ 2019-12-02 17:55 zzfx 阅读(198) 评论(0) 推荐(0) 编辑
摘要:类、闭包、monand 三者的相同点都是封装了数据与操作。 类:定义数据类型,倾向于数据的抽象;集合数据为操作提供上下文。 闭包:对环境变量和操作的封装抽象。操作基于环境变量,核心问题是环境变量的管理。 在模型上是一个操作对应一个数据结构的模型。 将运算与上下文封装抽象为一种特殊的类型,从而取得与普 阅读全文
posted @ 2019-09-20 11:03 zzfx 阅读(379) 评论(0) 推荐(0) 编辑
摘要:所有的上下文信息都需要通过参量传入; 在方法内部获取不到任何调用类型的信息;或许这个可以改进; 改进的方案是添加一个缺省的thisClass关键字; 除了命名空间的作用外,与全局函数没有任何区别。 阅读全文
posted @ 2019-08-30 16:49 zzfx 阅读(181) 评论(0) 推荐(0) 编辑
摘要:直接联系: oc:isa; java:class; 间接联系: c++:虚函数表; 对象内存模型; 阅读全文
posted @ 2019-06-06 16:29 zzfx 阅读(243) 评论(0) 推荐(0) 编辑
摘要:类型的内存模型的3个问题: 1、包含什么:附加信息 2、怎么布局:内存对齐 3、使用场景:怎么使用附加信息 一、包含什么? 除了包含结构类型的显式成员变量外,类型内存模型需要解决附加信息的引入问题 1、附加信息(Opaque)有哪些: 类型信息、函数信息、继承信息、内存计数等; 2、为什么有附加信息 阅读全文
posted @ 2019-03-22 17:16 zzfx 阅读(358) 评论(0) 推荐(0) 编辑
摘要:从程序的本质上来讲,是对算法以及数据的重视程度的不同。程序的本质是算法和数据。 面向过程编程重视算法,忽视数据。 面向对象编程侧重点在数据,对算法的重视程度不如面向过程编程。对数据的重视,使面向对象编程具有继承,封装,多态等特性,在各方面提高了编程的效率。 https://www.cnblogs.c 阅读全文
posted @ 2019-03-15 18:49 zzfx 阅读(335) 评论(0) 推荐(0) 编辑
摘要:面向对象的本质:基于对象+面向接口+继承。 继承是对面向接口编程的升级;使得接口的复用能在继承链上进行; 继承的另一重含义的复用。 阅读全文
posted @ 2019-03-14 17:47 zzfx 阅读(249) 评论(0) 推荐(0) 编辑
摘要:一、多态的本质 多态的本质:同一函数接口在接受不同的类型参量时表现出不同的行为: 不同对象能够调用同一接口,是因为它们含有统一的抽象纬度:接口; 同一函数能够接受不同对象的调用,是因为函数的参量是一个抽象类型(接口); 环境变量(主体类型)作为接口函数的特殊输入对接口的实现起着决定性的作用; 同一个 阅读全文
posted @ 2019-03-14 17:40 zzfx 阅读(358) 评论(0) 推荐(0) 编辑
摘要:内聚性是模块之所以成为模块的原因--一个中心、单一职责。 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量,一个内聚成都高的模块(在理想情况下)应当制作一件事 内聚的目的在于降低通信的消耗; 阅读全文
posted @ 2018-11-27 17:48 zzfx 阅读(242) 评论(0) 推荐(0) 编辑
摘要:面向过程编程的致命缺陷是算法与算法的结合方式过于单一, 是数据与算法的结合方式不支持扩展和修改,硬编码; 面向对象和函数式编程都是对这一缺陷的改进。 结合方式过于单一,并且存在硬绑定问题。 阅读全文
posted @ 2018-10-31 17:25 zzfx 阅读(274) 评论(0) 推荐(0) 编辑
摘要:面向对象的本质是算法的上下文封装。 是数据与算法的结合方式。 相对于面向结构编程,解决了同一类属的组织问题。 相对于面向结构编程,优化了数据与算法的结合方式。 阅读全文
posted @ 2018-10-31 17:20 zzfx 阅读(204) 评论(0) 推荐(0) 编辑
摘要:动态类型:能够使程序直到执行的时候才确定所属的类。 动态绑定:能够使程序直到执行的时候才能确定要对对象调用的实际方法。 动态类型关注运行时类型信息; 动态绑定关注调用什么方法; 动态类型是动态绑定的基础。 类型系统是多态的基础。 阅读全文
posted @ 2018-09-19 12:03 zzfx 阅读(141) 评论(0) 推荐(0) 编辑
摘要:一、类型系统: 1、完全动态类型:对象的类型未id(oc语言)等,与顶级基类对应;可以调用顶级基类的函数及使用定制手段进行实际类型的函数调用。 2、继承动态类型:对象属于继承体系的一部分,基类的类型可以表征继承体系中任一类型的对象;基类对应于上面的顶级类型; 3、静态类型:编译时已确定的类型; 二、 阅读全文
posted @ 2018-09-19 11:49 zzfx 阅读(220) 评论(0) 推荐(0) 编辑
摘要:动态类型的关键是将动态对象与实际类型信息绑定。 See also: Dynamic programming language and Interpreted language Dynamic type checking is the process of verifying the type saf 阅读全文
posted @ 2018-09-19 11:40 zzfx 阅读(159) 评论(0) 推荐(0) 编辑
摘要:编译器最重要的工作就是确定对象内存模型 阅读全文
posted @ 2018-06-15 15:06 zzfx 阅读(185) 评论(0) 推荐(0) 编辑
摘要:多态有类型系统衍生。 有限类型、无限类型、确定类型。 Classifications Christopher Strachey (1967) introduced the concept of polymorphism informally into procedural programming l 阅读全文
posted @ 2018-06-07 16:47 zzfx 阅读(271) 评论(0) 推荐(0) 编辑
摘要:this 和 self指针 为函数提供了运行上下问;为函数提供了当前对象的其实地址,方便函数的对对象的访问。 阅读全文
posted @ 2018-01-18 12:49 zzfx 阅读(111) 评论(0) 推荐(0) 编辑
摘要:Normally, in a typed language, the dispatch mechanism will be performed based on the type of the arguments (most commonly based on the type of the rec 阅读全文
posted @ 2018-01-18 12:40 zzfx 阅读(291) 评论(0) 推荐(0) 编辑
摘要:对象指针本身也是接口中的一个参量。 然而,在更广阔的计算机领域中,多态这个词并不只是局限在类继承和虚函数上。只要是同名函数能够根据参数的类型不同而获得不同的实现,我们都可以叫它“多态”。 多态可以分成三类,Ad hoc 多态(Ad hoc ~),参数化多态(Parametric ~),子类型多态(S 阅读全文
posted @ 2018-01-17 16:53 zzfx 阅读(187) 评论(0) 推荐(1) 编辑