`
daogangtang
  • 浏览: 62676 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

lglib.oop 简介

阅读更多
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进行的模拟,关于采用的什么决策,我们后面另外详细说明。现在的机制不一定很完善,还有改进的空间。
分享到:
评论

相关推荐

    Akin E. OOP via Fortran 90-95

    OOP via Fortran 90-95》是一本关于通过Fortran 90/95实现面向对象编程的教程。作者Akin来自Rice大学的机械工程与材料科学系,该书旨在帮助程序员理解和应用面向对象编程的概念到Fortran语言中。 在书中,首先介绍...

    From.COBOL.to.OOP.

    cobol to opp ..

    【独家】【笔面试知识要点】16.OOP与OBP构造函数静态块1

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序设计为由多个相互协作的对象组成,每个对象都有自己的属性(数据)和行为(方法)。OOP的主要特征包括封装、继承、多态和抽象。在OOP...

    【IT十八掌徐培成】Java基础第04天-04.OOP-堆栈的溢出与设置-private关键字.zip

    在Java中,OOP(面向对象编程)是核心概念之一,它包括类、对象、封装、继承和多态等特性。本课程由IT十八掌徐培成讲解的"Java基础第04天-04.OOP-堆栈的溢出与设置-private关键字"深入探讨了两个关键主题:堆栈溢出...

    matlab_oop.pdf

    随着版本的不断更新和完善,MATLAB已经支持面向对象编程(OOP),这使得用户能够更好地组织代码、提高复用性和模块化程度。本文将详细介绍MATLAB面向对象编程的基础概念与应用技巧。 #### 二、面向对象编程概述 面向...

    【IT十八掌徐培成】Java基础第04天-02.OOP概念-定义类-创建对象.zip

    在IT领域,面向对象编程(Object-Oriented Programming,简称OOP)是程序设计的一种重要范式,尤其在Java语言中被广泛采用。本课程由知名IT讲师徐培成讲解,旨在深入理解Java中的OOP概念,特别是如何定义类以及创建...

    progetto.oop

    progetto.oop 简介 OpenWeatherMap上的可视化程序在视觉上的同意。 我在文件区域设置“ listaValori.json”中按每个预定义的API进行了分类。 Oltre alla semplice visualizzaziazione dei dati storici il programma...

    OOP.zip_oop

    在"OOP.zip_oop"这个压缩包中,我们可以推测包含了一些关于Java OOP的示例任务。这些任务可能涉及到创建类、对象,实现封装,使用继承和多态性,以及解决实际问题。文件名"OOP"可能是一个源代码文件,展示了如何在...

    c++本科作业 矩阵运算 运算符重载

    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.rar_oop币"这个标题暗示了我们讨论的主题可能与一个使用OOP技术开发的货币兑换系统有关,而"oop币"可能是系统中的一个特定概念或者代币的名称。 描述中提到的“外币兑换系统”是一个典型的业务场景,这样的...

    OOP.rar_OOP java_java oop_oop

    在给定的“OOP.rar”压缩包中,包含了一些用于学习和理解面向对象编程的小程序,通过这些小程序,我们可以深入探讨Java中的OOP概念。 首先,我们来看“03讲_面向对象的程序设计(1)”这部分内容。这可能是一个教学...

    oop.rar_oop环境

    在"oop.rar_oop环境"中,我们可以推测这是一个关于如何在MyEclipse环境中设置和运行面向对象项目的教程或项目实例。下面将详细介绍OOP的关键概念和MyEclipse中的应用。 1. **类与对象**:在OOP中,类是创建对象的...

    c++罗马数字转换

    《C++编程——数据结构与程序设计方法》这本书第十二章的课后习题

    oop_java编程_11oop.com_DEMO_528OOpJ_silk4vc_

    在本压缩包中,我们关注的是“oop_java编程_11oop.com_DEMO_528OOpJ_silk4vc_”这个项目,它显然与Java编程中的面向对象编程(Object-Oriented Programming,简称OOP)相关,可能是11oop.com网站提供的一款教学DEMO...

    oop-xp1.zip_11oop. com

    在这个"oop-xp1.zip_11oop.com"压缩包中,我们可以看到一个用OOP思想开发的纸牌小游戏。这个程序不仅是一个实用的示例,也是学习和理解面向对象编程理念的良好资源。 在描述中提到的"面向对象的思想"是OOP的核心。...

    08-python-oop简介-使用 OOP 对森林火灾建模-对象

    首先,我们从"08.01-python-oop简介.ipynb"开始。在这一部分,你会了解到OOP的基本原理,包括类(Class)和对象(Instance)的概念。类是创建对象的蓝图,它定义了一组属性(Attributes)和方法(Methods)。对象则...

    oop.rar_oop_面向对象_面向对象程序设计

    在 OOP 中,"oop.ppt" 可能是一个关于面向对象编程的 PowerPoint 演示文稿,涵盖了上述概念的详细讲解,可能还包括实例和案例分析,帮助理解 OOP 的实际应用。而 "www.pudn.com.txt" 文件可能是从网络资源 ...

    oop.rar_C# OOP

    《C# OOP在音像店管理中的应用》 C#(C Sharp)是一种由微软公司开发的面向对象的编程语言,广泛应用于Windows平台的应用程序开发。在C#中,面向对象编程(Object-Oriented Programming,简称OOP)是其核心特性之一...

    AN_Simple_OOP_in_C.pdf

    面向对象编程(OOP)是一种设计方式,它不仅局限于使用特定的语言或工具,而是基于三大基础设计元模式:封装、继承和多态。封装是将数据和函数打包成类的能力;继承是从现有类定义新类的能力,以此实现代码复用和...

    ViaJs:一个能够涵盖基本前端应用的JS工具库

    ViaJs 一个能够涵盖基本前端应用的JS工具库 ViaJs是我在找工作时对一些基础JS功能的总结。 项目正在开发中... ...via.oop.List via.oop.Class via.oop.Model via.ui.animate via.ui.draggable via.ui.resizabl

Global site tag (gtag.js) - Google Analytics