Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Collapse
Brand Logo

CELua[RU]

  1. Главная
  2. Программирование
  3. Справочники
  4. Lua ООП конспект

Lua ООП конспект

Запланировано Прикреплена Закрыта Перенесена Справочники
ce luaoop
1 Сообщения 1 Posters 27 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • MasterGHM Не в сети
    MasterGHM Не в сети
    MasterGH Администраторы
    написал в отредактировано MasterGH
    #1

    Пригодится для создания больших плагинов в Cheat Engine. Более ~500 строк

    Наследование

    ClassX = {}
    
    	function ClassX:New(_argument1, _argument2)
    
    		local obj = {}
    		obj.argument1 = _argument1
    		obj.argument2 = _argument2
    
    		-- Через "self"
    		function obj:GetValue1() return obj.argument1 end
    		function obj:GetValue2() return obj.argument2 end
    
    		setmetatable(obj, self)
    		obj.__index = ClassX
    		return obj
    	end
    
    	someObject = ClassX:New("A", "B")
    	print(someObject.GetValue1())
    	print(someObject.GetValue2())
    
    
       	Woman = {}
    	--наследуемся
    	setmetatable(Woman ,{__index = ClassX})
    	--проверяем
    	masha = Woman:New("Марья","Ивановна")
    	print(masha:GetValue1())  --->результат: Марья
    

    Инкапсуляция

    Person = {}
    	function Person:new(name)
    		--приватное свойство
    		local private = {}
    		private.age = 18
    
    		local obj = {}
    		--публичное свойство
    		obj.name = name or "Вася"   -- "Вася" - это значение по умолчанию
    
    		function obj:getAge() return private.age end
    
    		setmetatable(obj,self)
    		self.__index = self
    		return obj
    	end
    
    	vasya = Person:new()
    	print(vasya.name)          --> результат: Вася
    	print(vasya.age)           --> результат: nil
    	print(vasya:getAge())     --> результат: 18
    

    Полиморфизм

    Person = {}
    	function Person:New(name)
    		local private = {}
    		private.age = 18
    
    		local obj = {}
    		obj.name = name or "Вася"
    		-- Защищенный от переорпеделения
    		function obj:GetName() return "Person protected "..self.name end
    		-- Переопределяемый
    		function Person:GetName2() return "Person "..self.name	end
    
    		setmetatable(obj, self)
    		self.__index = self
    		return obj
    	end
    
    	--создадим класс, унаследованный от Person
    	Woman = {}
    	setmetatable(Woman,{__index = Person})
    	function Woman:GetName() return "Woman protected "..self.name end
    	function Woman:GetName2() return "Woman "..self.name end
    
    	--проверим
    	masha = Woman:New()
    	print(masha:GetName())   --> Person protected Вася
    	print(masha:GetName2())  --> Woman Вася
    

    ref

    1 ответ Последний ответ
    0

Powered by NodeBB | Contributors
СeLua[RU] 2024©
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы