Najlepszy samouczek Lua Object Oriented W 2024 r. W tym samouczku możesz dowiedzieć się cechy obiektowe,Lua Object Oriented,Lua dziedziczenie,Funkcja nadpisania,

Lua Object Oriented

OOP (Object Oriented Programming, OOP) jest bardzo popularną architekturę programowania komputerowego.

Następujące języki programowania wsparcia programowania obiektowego:

  • C ++
  • Jawa
  • Objective-C
  • Smalltalk
  • C #
  • rubin

cechy obiektowe

  • 1) Opakowanie: odnosi się do zdolności podmiotu do informacji, funkcji i odpowiedzi są umieszczane w oddzielnych właściwości obiektu.
  • 2) Dziedziczenie: odziedziczone metoda nie pozwala na zmianę podstawy oryginalnego programu na jego ekspansji, tak że pierwotna funkcja może być zachowane, a nowe funkcje również została rozszerzona. Pomaga to zmniejszyć powtarzalnego kodowania, w celu poprawy wydajności oprogramowania.
  • 3) polimorfizm: ta sama operacja stosowane do różnych obiektów mogą mieć różne interpretacje, w wyniku różnych wyników realizacji. W czasie wykonywania można wskazać klasy bazowej wskaźnik zadzwonić pochodzące metod klasy.
  • 4) Streszczenie: Streszczenie (abstrakcji) jest uproszczenie złożonej rzeczywistości w sposób, można go znaleźć najwłaściwsze Kategoria ta jest zdefiniowana jako specyficznego problemu, a może być w najbardziej odpowiedniej interpretacji poziom spadków.

Lua Object Oriented

Wiemy, że składu właściwości obiektów i metod. LUA jest najbardziej podstawowa struktura stół, trzeba korzystać ze stołu do opisania właściwości obiektu.

lua Funkcja może być używany do celów reprezentacyjnych. Klasa to funkcja LUA stół + mogą być symulowane.

Co do spadku można symulować metetable (nie zaleca się, aby symulować tylko najbardziej podstawowych przedmiotów na tyle większość czasu).

Tabele Lua nie tylko w pewnym sensie, jest obiektem. Jak przedmiot, tabela także stanu (zmiennych składowych), także wartości niezależny obiekt natury, w szczególności z dwóch przedmiotów o różnych wartościach (tabela) stanowią dwa różne obiekty, obiekt w różnym czasie może być różna wartości, ale zawsze był obiektem, obiekt jest podobny do tabeli utworzonej przez co ich cyklu życia, w którym nie tworzy się związek. Przedmioty mają swoje funkcje składowe, stoły mają również:

Account = {balance = 0}
function Account.withdraw (v)
    Account.balance = Account.balance - v
end

Definicja ta tworzy nową funkcję i zapisać wypłacić w terminie obiekt konta, możemy wywołać następujące:

Account.withdraw(100.00)

Prosty przykład

Następująca prosta klasa zawiera trzy właściwości: powierzchni, długości i szerokości, metodę printArea dla wyników drukowania:

-- Meta class
Rectangle = {area = 0, length = 0, breadth = 0}

-- 派生类的方法 new
function Rectangle:new (o,length,breadth)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  self.length = length or 0
  self.breadth = breadth or 0
  self.area = length*breadth;
  return o
end

-- 派生类的方法 printArea
function Rectangle:printArea ()
  print("矩形面积为 ",self.area)
end

Tworzenie obiektu

Celem jest stworzenie instancji procesu trochę klasy przydzielić pamięci. Każda klasa ma swoją własną pamięć i korzystać ze wspólnych danych.

r = Rectangle:new(nil,10,20)

Właściwości dostępu

Możemy użyć kropki aby uzyskać dostęp do atrybutu class (.):

print(r.length)

Funkcje składowe Dostęp

Możemy użyć dwukropka (:) przypisanie klas dostępu:

r:printArea()

alokacji pamięci, gdy obiekt jest zainicjowany.

Kompletny przykład

Poniżej pokazujemy Lua obiektowego pełny przykład:

-- Meta class
Shape = {area = 0}

-- 基础类方法 new
function Shape:new (o,side)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  side = side or 0
  self.area = side*side;
  return o
end

-- 基础类方法 printArea
function Shape:printArea ()
  print("面积为 ",self.area)
end

-- 创建对象
myshape = Shape:new(nil,10)

myshape:printArea()

Powyższy program, wyjście jest:

面积为 	100

Lua dziedziczenie

Dziedziczenie odnosi się do obiektu bezpośrednio za pomocą właściwości i metody innego obiektu. Właściwości i metody mogą być stosowane do przedłużania klasę bazową.

Poniższa demonstruje proste przykłady dziedziczenia:

 -- Meta class
Shape = {area = 0}
-- 基础类方法 new
function Shape:new (o,side)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  side = side or 0
  self.area = side*side;
  return o
end
-- 基础类方法 printArea
function Shape:printArea ()
  print("面积为 ",self.area)
end

Kolejnym przykładem, kwadratowe obiekty Shape dziedziczą klasy:

Square = Shape:new()
-- Derived class method new
function Square:new (o,side)
  o = o or Shape:new(o,side)
  setmetatable(o, self)
  self.__index = self
  return o
end

Kompletny przykład

Poniższe przykłady odziedziczyliśmy prostą metodę klasy rozszerzyć klasę, wywodzące się z klasy pochodnej, który zapewnia zachowanie zmiennych składowych i metod dziedziczonych klas:

 -- Meta class
Shape = {area = 0}
-- 基础类方法 new
function Shape:new (o,side)
  o = o or {}
  setmetatable(o, self)
  self.__index = self
  side = side or 0
  self.area = side*side;
  return o
end
-- 基础类方法 printArea
function Shape:printArea ()
  print("面积为 ",self.area)
end

-- 创建对象
myshape = Shape:new(nil,10)
myshape:printArea()

Square = Shape:new()
-- 派生类方法 new
function Square:new (o,side)
  o = o or Shape:new(o,side)
  setmetatable(o, self)
  self.__index = self
  return o
end

-- 派生类方法 printArea
function Square:printArea ()
  print("正方形面积为 ",self.area)
end

-- 创建对象
mysquare = Square:new(nil,10)
mysquare:printArea()

Rectangle = Shape:new()
-- 派生类方法 new
function Rectangle:new (o,length,breadth)
  o = o or Shape:new(o)
  setmetatable(o, self)
  self.__index = self
  self.area = length * breadth
  return o
end

-- 派生类方法 printArea
function Rectangle:printArea ()
  print("矩形面积为 ",self.area)
end

-- 创建对象
myrectangle = Rectangle:new(nil,10,20)
myrectangle:printArea()

Realizacja powyższego kodu, wyjście jest:

面积为 	100
正方形面积为 	100
矩形面积为 	200

Funkcja nadpisania

Lua, możemy przepisać funkcji klasy bazowej, definiować własne implementacje w klasach pochodnych:

-- 派生类方法 printArea
function Square:printArea ()
  print("正方形面积 ",self.area)
end
Lua Object Oriented
10/30