lglib.oop是一个特殊的模块,它用于给现有lua基础提供一套好用的面向对象机制。
此模块中定义了一个对象Object(用table实现的)。这个对象是一个最基础的原生对象,任何其它的类和对象都是从这个源头衍生的。它的地位跟java中的Object地位一致。
Object定义了几个属性和方法:
属性:
__tag : 每个类的定义都需要加入此属性,以标识类的名字和继承关系
_parent : 指向父对象(或类对象)
方法:
new: 此方法为内部接口,用于生成一个新的对象(子类对象或类的实例对象)
extend: 此方法为导出接口,用于从一个现有类上定义一个新的类
isInstance: 此方法用于判断自己是否是一个类的实例
isClass: 此方法用于判断自己是否是一个类
在实例使用时,仿照如下形式定义一个类。
module(..., package.seeall)
-- 在bamboo.model中,已经执行了 require 'lglib.oop' 了
local Model = require 'bamboo.model'
local Message = Model:extend {
-- 属性的话,只有这个__tag是必须的
__tag = 'Bamboo.Model.Message';
__name = 'Message';
__desc = 'General message definition.';
-- 方法的话,只有这个init是必须的,参数中第一个必须为self
init = function (self, t)
if not t then return self end
self.type = t.type
-- self.uuid = t.uuid
self.author = t.author
self.content = t.content
self.timestamp = t.timestamp or os.time()
return self
end;
doSomething = function (self)
.....
end;
}
return Message
使用这个类:
下面创建两个消息实例
local msg_obj = Message() -- 创建一个空消息
local msg_obj2 = Message { -- 创建一个有内容的消息
type = '100',
author = 'daoge',
content = 'hello',
}
msg_obj2:doSomething(); -- 调用类中定义的方法
-----------------------------------------
实际上,此处的oop只是用table进行的模拟,关于采用的什么决策,我们后面另外详细说明。现在的机制不一定很完善,还有改进的空间。
分享到:
相关推荐
OOP via Fortran 90-95》是一本关于通过Fortran 90/95实现面向对象编程的教程。作者Akin来自Rice大学的机械工程与材料科学系,该书旨在帮助程序员理解和应用面向对象编程的概念到Fortran语言中。 在书中,首先介绍...
cobol to opp ..
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序设计为由多个相互协作的对象组成,每个对象都有自己的属性(数据)和行为(方法)。OOP的主要特征包括封装、继承、多态和抽象。在OOP...
在Java中,OOP(面向对象编程)是核心概念之一,它包括类、对象、封装、继承和多态等特性。本课程由IT十八掌徐培成讲解的"Java基础第04天-04.OOP-堆栈的溢出与设置-private关键字"深入探讨了两个关键主题:堆栈溢出...
随着版本的不断更新和完善,MATLAB已经支持面向对象编程(OOP),这使得用户能够更好地组织代码、提高复用性和模块化程度。本文将详细介绍MATLAB面向对象编程的基础概念与应用技巧。 #### 二、面向对象编程概述 面向...
在IT领域,面向对象编程(Object-Oriented Programming,简称OOP)是程序设计的一种重要范式,尤其在Java语言中被广泛采用。本课程由知名IT讲师徐培成讲解,旨在深入理解Java中的OOP概念,特别是如何定义类以及创建...
progetto.oop 简介 OpenWeatherMap上的可视化程序在视觉上的同意。 我在文件区域设置“ listaValori.json”中按每个预定义的API进行了分类。 Oltre alla semplice visualizzaziazione dei dati storici il programma...
在"OOP.zip_oop"这个压缩包中,我们可以推测包含了一些关于Java OOP的示例任务。这些任务可能涉及到创建类、对象,实现封装,使用继承和多态性,以及解决实际问题。文件名"OOP"可能是一个源代码文件,展示了如何在...
For this task, put your code in the following files: Matrix.cpp, Matrix.h. You are to write a class Matrix which includes appropriate fields associated with 2*2 matrices. A 2*2 matrix takes the ...
"oop.rar_oop币"这个标题暗示了我们讨论的主题可能与一个使用OOP技术开发的货币兑换系统有关,而"oop币"可能是系统中的一个特定概念或者代币的名称。 描述中提到的“外币兑换系统”是一个典型的业务场景,这样的...
在给定的“OOP.rar”压缩包中,包含了一些用于学习和理解面向对象编程的小程序,通过这些小程序,我们可以深入探讨Java中的OOP概念。 首先,我们来看“03讲_面向对象的程序设计(1)”这部分内容。这可能是一个教学...
在"oop.rar_oop环境"中,我们可以推测这是一个关于如何在MyEclipse环境中设置和运行面向对象项目的教程或项目实例。下面将详细介绍OOP的关键概念和MyEclipse中的应用。 1. **类与对象**:在OOP中,类是创建对象的...
《C++编程——数据结构与程序设计方法》这本书第十二章的课后习题
在本压缩包中,我们关注的是“oop_java编程_11oop.com_DEMO_528OOpJ_silk4vc_”这个项目,它显然与Java编程中的面向对象编程(Object-Oriented Programming,简称OOP)相关,可能是11oop.com网站提供的一款教学DEMO...
在这个"oop-xp1.zip_11oop.com"压缩包中,我们可以看到一个用OOP思想开发的纸牌小游戏。这个程序不仅是一个实用的示例,也是学习和理解面向对象编程理念的良好资源。 在描述中提到的"面向对象的思想"是OOP的核心。...
首先,我们从"08.01-python-oop简介.ipynb"开始。在这一部分,你会了解到OOP的基本原理,包括类(Class)和对象(Instance)的概念。类是创建对象的蓝图,它定义了一组属性(Attributes)和方法(Methods)。对象则...
在 OOP 中,"oop.ppt" 可能是一个关于面向对象编程的 PowerPoint 演示文稿,涵盖了上述概念的详细讲解,可能还包括实例和案例分析,帮助理解 OOP 的实际应用。而 "www.pudn.com.txt" 文件可能是从网络资源 ...
《C# OOP在音像店管理中的应用》 C#(C Sharp)是一种由微软公司开发的面向对象的编程语言,广泛应用于Windows平台的应用程序开发。在C#中,面向对象编程(Object-Oriented Programming,简称OOP)是其核心特性之一...
面向对象编程(OOP)是一种设计方式,它不仅局限于使用特定的语言或工具,而是基于三大基础设计元模式:封装、继承和多态。封装是将数据和函数打包成类的能力;继承是从现有类定义新类的能力,以此实现代码复用和...
ViaJs 一个能够涵盖基本前端应用的JS工具库 ViaJs是我在找工作时对一些基础JS功能的总结。 项目正在开发中... ...via.oop.List via.oop.Class via.oop.Model via.ui.animate via.ui.draggable via.ui.resizabl