代码的‘灵魂’与‘透视眼’:ObjectSense 面向对象与反射机制

codigger
• 阅读 3

在编程世界中,如果说变量和函数是构建程序的"砖块",那么面向对象编程(OOP)就是赋予这些砖块"灵魂"的设计哲学。ObjectSense 在 VimL 基础上扩展出完整的 OOP 特性,让代码更具模块化和可复用性,让代码拥有了生命和智慧。 一、类与对象:OOP 的基本单元 类是对象的蓝图,使用 Class 关键字定义,例如 Class Car。类中可以包含属性和方法,其中特殊方法 Preload() 会在类加载后自动执行,Construct() 作为构造函数用于初始化成员变量。 对象是类的实例,通过 CreateInstance 函数创建: 带参数构造:CreateInstance("Car", #{name: 'BMW'}) 传递初始化参数; 单例模式:不指定参数时自动创建单例,如 CreateInstance('Car'),确保全局唯一实例。 代码的‘灵魂’与‘透视眼’:ObjectSense 面向对象与反射机制 二、面向对象三大特性 封装:通过 @accessible 注解控制方法可访问性,将数据和操作封装在类内部。例如在 Car 类中,s:Run() 方法通过 self.Refuel() 访问内部方法,对外隐藏实现细节。 继承:使用 Inherits 关键字实现,支持多继承。例如 Class Index Inherits Human, Car 让 Index 类同时拥有 Human 和 Car 的方法。通过 super 关键字可调用父类方法,如 super.Work() 调用父类的 Work 方法。 多态:允许不同对象对同一方法做出不同响应。子类可重写父类方法,例如 Index 类重写 Human 类的 Work 方法后,调用 temp.Work() 时会执行子类的实现,实现了 “同一接口,不同行为”。

三、反射:代码的透视眼 反射(Reflector) 是一种让程序能够在运行时“审视”自身结构的高级能力。它允许你在不确定一个类或方法具体名称的情况下,动态地获取它们的信息并进行操作。这就像拥有了一双“透视眼”,让程序能够自我诊断和适应变化。 ObjectSense 的反射机制通过 Import object.Gadget 来使用。你可以通过它来获取一个类的父类信息(GetSuperReflectors)、类本身的反射信息(GetClassReflector),甚至是类或方法上的注解(GetAnnotations)。 反射在构建插件系统和通用框架时尤为重要,因为它让你可以编写灵活、可扩展的代码,从而无需在开发时就预知所有可能的情况。 代码的‘灵魂’与‘透视眼’:ObjectSense 面向对象与反射机制 四、实战示例 以下是一个完整的面向对象示例结构: bash |-- oop |-- Car.ose # 定义Car类 |-- Human.ose # 定义Human类 |-- Index.ose # 继承Car和Human的子类

在 Index.ose 中: ose Class Index Inherits Human, Car " 重写Work方法 function! s:Work() return "override work method" endfun

function! s:Preload() let temp = CreateInstance("Index", "Car") echo temp.Work() # 调用重写的方法 echo super.Stop() # 调用父类方法 endfun 代码的‘灵魂’与‘透视眼’:ObjectSense 面向对象与反射机制 掌握了面向对象和反射这两个强大的工具,你将能够编写出更具结构性、可维护性和扩展性的代码。在下一篇文章中,我们将学习如何优雅地处理程序中可能出现的错误,让你的代码更加健壮。

点赞
收藏
评论区
推荐文章
菜园前端 菜园前端
2年前
什么是面向对象编程?
原文链接:什么是面向对象编程?面向对象程序设计(ObjectOrientedProgramming,OOP)是一种计算机编程架构,也可以理解为是一种编程的思想。面向对象程序设计的核心就是对象和类,对象也是类的实例化,类是对现实对象的抽象。对象间通过消息传递
Wesley13 Wesley13
3年前
java语言与jvm虚拟机简介
一、java语言  1.1支持面向对象编程oop    强调支持,因为java同样可以面向过程编程,但java是为oop而生的。    oop的三大特性是:封装、继承、多态。    封装主要针对成员变量而言,oop的思想要求成员变量均为私有,不应该对外能够访问,一个符合oop思想的类应该只有公共方
Easter79 Easter79
3年前
Spring中的AOP(一)——AspectJ的基本使用
AOP(AspectOrientProgramming),也就是面向切面编程,作为面向对象编程的一种补充,当前已经成为一种比较成熟的编程思想,其实AOP问世的时间并不长,甚至在国内的翻译还不太统一(另有人翻译为“面向方面编程”)。AOP和OOP(ObjectOrientProgramming,面向对象编程)互为补充,OOP将程序分解成各个层次的对象
Wesley13 Wesley13
3年前
JAVA类和对象创建
!(https://oscimg.oschina.net/oscnet/22ac82441e269125878e950d13f2825b44f.jpg)  面向对象  学习目标:  理解面向对象的编程思想  理解类与对象的关系  如何创建类与对象  方法重载  一:什么是面向对象编程(OOP)  面向对象编程(Object
小万哥 小万哥
1年前
Kotlin 面向对象编程 (OOP) 基础:类、对象与继承详解
面向对象编程(OOP)是一种编程范式,它通过创建包含数据和方法的对象来组织代码。相较于过程式编程,OOP提供了更快更清晰的结构,有助于遵守DRY(Don&39;tRepeatYourself)原则,使代码更易于维护和扩展。在Kotlin中,类和对象是OOP的核心。类作为对象的模板,定义了对象的行为和状态;对象则是类的具体实例。例如,Car类可以定义汽车的品牌、型号等属性,以及如驾驶和刹车等功能。通过构造函数可以快速初始化对象的属性。此外,Kotlin支持继承机制,子类可以从父类继承属性和方法,促进代码重用。
一点一木 一点一木
11个月前
JavaScript中的面向对象编程(OOP) - 终极指南
本文介绍了JavaScript的面向对象编程(OOP)概念,包括继承、多态、封装和抽象等关键要素,并通过代码示例帮助开发者理解和应用OOP思维。
codigger codigger
3星期前
解析 ObjectSense 编程语言的核心特点与设计理念
ObjectSense是一门面向对象的脚本编程语言,起源于Codigger平台。该语言于2022年由Trotter开发,旨在提供一个简洁、高效的软件构建方案,其核心代码精炼至千行以内。面向对象编程(OOP)ObjectSense遵循主流的面向对象编程(OO
小万哥 小万哥
1年前
C# 面向对象编程解析:优势、类和对象、类成员详解
C什么是面向对象编程?OOP代表面向对象编程。过程式编程涉及编写执行数据操作的过程或方法,而面向对象编程涉及创建包含数据和方法的对象。面向对象编程相对于过程式编程具有几个优势:OOP执行速度更快,更容易执行OOP为程序提供了清晰的结构OOP有助于保持C代码
小万哥 小万哥
1年前
深入解析 Java 面向对象编程与类属性应用
Java面向对象编程面向对象编程(OOP)是一种编程范式,它将程序组织成对象。对象包含数据和操作数据的方法。OOP的优势:更快、更易于执行提供清晰的结构代码更易于维护、修改和调试提高代码重用性减少开发时间类和对象类是对象的模板,它定义了对象的属性和方法。对
小万哥 小万哥
1年前
C++ 多级继承与多重继承:代码组织与灵活性的平衡
C多级继承多级继承是一种面向对象编程(OOP)特性,允许一个类从多个基类继承属性和方法。它使代码更易于组织和维护,并促进代码重用。多级继承的语法在C中,使用:符号来指定继承关系。多级继承的语法如下:cclassDerivedClass:publ