<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/wiki/PT-BR/Introdu%C3%A7%C3%A3o_OOP?action=history&amp;feed=atom</id>
	<title>PT-BR/Introdução OOP - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/wiki/PT-BR/Introdu%C3%A7%C3%A3o_OOP?action=history&amp;feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PT-BR/Introdu%C3%A7%C3%A3o_OOP&amp;action=history"/>
	<updated>2026-04-26T02:43:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PT-BR/Introdu%C3%A7%C3%A3o_OOP&amp;diff=81798&amp;oldid=prev</id>
		<title>Sousateew: Fix links</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PT-BR/Introdu%C3%A7%C3%A3o_OOP&amp;diff=81798&amp;oldid=prev"/>
		<updated>2025-02-08T00:45:37Z</updated>

		<summary type="html">&lt;p&gt;Fix links&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:45, 8 February 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l86&quot;&gt;Line 86:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 86:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Outras páginas relacionadas úteis sobre OOP:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Outras páginas relacionadas úteis sobre OOP:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[OOP]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[[OOP]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vetor&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vector&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Matriz&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Matrix&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Categoria&lt;/del&gt;:OOP]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Categoria&lt;/del&gt;:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Incompleto&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Category&lt;/ins&gt;:OOP]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Categoria&lt;/del&gt;:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tutoriais&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Category&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Incomplete&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Category&lt;/ins&gt;:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tutorials&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[hu:OOP Introdução]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[hu:OOP Introdução]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[zh-cn:Introdução à OOP]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''Translated by'': Sousateew ([https://wiki.multitheftauto.com/wiki/OOP_Introduction Original])&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;''Translated by'': Sousateew ([https://wiki.multitheftauto.com/wiki/OOP_Introduction Original])&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki-wiki_dev_:diff::1.12:old-77502:rev-81798 --&gt;
&lt;/table&gt;</summary>
		<author><name>Sousateew</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=PT-BR/Introdu%C3%A7%C3%A3o_OOP&amp;diff=77502&amp;oldid=prev</id>
		<title>Sousateew: Created page with &quot;{{Nota|Se você contribuiu editando e ajustando esta página do fórum, se você se beneficiou deste tutorial ou se você tem algo a dizer; por favor, me dê um feedback no link do fórum fornecido abaixo.}} Este é um tutorial de script que explica o que é programação orientada a objetos e ensina como usar os recursos de OOP (Programação Orientada a Objetos) do MTA. Isso foi originalmente criado por qaisjp (discussão)...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=PT-BR/Introdu%C3%A7%C3%A3o_OOP&amp;diff=77502&amp;oldid=prev"/>
		<updated>2023-08-19T00:30:16Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Nota|Se você contribuiu editando e ajustando esta página do fórum, se você se beneficiou deste tutorial ou se você tem algo a dizer; por favor, me dê um feedback no link do fórum fornecido abaixo.}} Este é um tutorial de script que explica o que é programação orientada a objetos e ensina como usar os recursos de OOP (Programação Orientada a Objetos) do MTA. Isso foi originalmente criado por &lt;a href=&quot;/index.php?title=Usu%C3%A1rio:Qais&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Usuário:Qais (page does not exist)&quot;&gt;qaisjp&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Usu%C3%A1rio_Discuss%C3%A3o:Qais&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Usuário Discussão:Qais (page does not exist)&quot;&gt;discussão&lt;/a&gt;)...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Nota|Se você contribuiu editando e ajustando esta página do fórum, se você se beneficiou deste tutorial ou se você tem algo a dizer; por favor, me dê um feedback no link do fórum fornecido abaixo.}}&lt;br /&gt;
Este é um tutorial de script que explica o que é programação orientada a objetos e ensina como usar os recursos de OOP (Programação Orientada a Objetos) do MTA. Isso foi originalmente criado por [[Usuário:Qais|qaisjp]] ([[Usuário Discussão:Qais|discussão]]) às 22h48min de 8 de junho de 2014 (UTC). [http://forum.mtasa.com/viewtopic.php?f=148&amp;amp;t=76388 Post no fórum.]&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Introdução à OOP ==&lt;br /&gt;
OOP (ou POO) significa ''programação orientada a objetos''. Três palavras simples e você provavelmente entenderá a última palavra mais. OOP é quando todas as funções relacionadas a uma única instância são chamadas nessa instância, sendo uma instância uma criação de uma classe - uma classe de elementos, uma classe de banco de dados, um jogador, um veículo. Originalmente, tudo era ''procedural'', você tinha que fazer coisas como:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local veiculo = createVehicle(411, 0, 0, 3)&lt;br /&gt;
setVehicleDamageProof(veiculo, true)&lt;br /&gt;
setElementFrozen(veiculo, true)&lt;br /&gt;
setElementHealth(veiculo, 1000)&lt;br /&gt;
setElementVelocity(veiculo, 0.2, 0.2, 0.2)&lt;br /&gt;
destroyElement(veiculo)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Muitas vezes, você sabe com o que está lidando. A variável quase sempre está ligada ao tipo, você nomearia um veículo que explodiu como '''veiculoExplodido''', ou pelo menos no contexto você entenderia que '''explodido''' implica um veículo quando no evento '''onVehicleExplode'''. Então, você tem que escrever uma função longa ''e'' referenciar o veículo manualmente ao trabalhar de maneira procedural. Doloroso. A programação orientada a objetos é muito diferente disso e trabalha com cada &amp;quot;objeto&amp;quot; individualmente. Em vez de ter que chamar uma função e referenciá-la dentro da chamada, você na verdade chama a função DENTRO da classe.&lt;br /&gt;
&lt;br /&gt;
Você provavelmente pensa que tudo o que você pode criar e passar para funções são elementos. Um veículo é um elemento. Um jogador é um elemento. Tudo o que é um elemento também é uma classe. Conexões criam uma instância de uma classe, mas &amp;quot;'''conexão'''&amp;quot; não é um elemento, é uma instância - um objeto. Ao longo do tutorial, quando eu digo ''objeto'', não me refiro a [[createObject]] (a menos que eu realmente mencione), mas para deixar as coisas mais claras, vou evitar mencionar objetos físicos enquanto escrevo este artigo. Aqui está um diagrama de Venn elegante que criei para mostrar a organização simples de classes e elementos.&lt;br /&gt;
[[Arquivo:Classes,_Elements_and_Problem_children.png|500px|esquerda|diagrama de Venn]]&lt;br /&gt;
As funções à esquerda são organizadas para mostrar em qual categoria o valor retornado se encaixa. Temos Classes, Elementos e &amp;quot;Problemas&amp;quot;.&lt;br /&gt;
Problemas não são categorias reais escritas no código, apenas funções que quebram regras. Tudo com que você pode brincar são classes: recursos, veículos e equipes.&lt;br /&gt;
Todos os elementos são classes, você pode fazer: &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;destroyElement(ped)&amp;lt;/syntaxhighlight&amp;gt; mas você não pode fazer: &amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;destroyElement(resource)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problemas são coisas estranhas. Você não pode fazer todas as funções mencionadas em (na verdade, todos os elementos não permitem a gama completa de funções a serem aplicadas a eles, mas mencionei especialmente algumas delas) na seção &amp;quot;Funções de Elemento&amp;quot; da lista de funções, mas você pode usar destroyElement() neles.&lt;br /&gt;
Existem filhos de classes, por exemplo, com jogadores, o sistema funciona assim: &amp;quot;''Elemento -&amp;gt; Pedestre -&amp;gt; Jogador''&amp;quot;. Todos os Jogadores são Pedestres e todos os Pedestres são Elementos. Nem todos os Pedestres são Jogadores, e certamente nem todos os Elementos são Jogadores. O ponto principal aqui é que quase tudo o que você pode criar ou recuperar e reutilizar posteriormente usa uma classe.&lt;br /&gt;
&lt;br /&gt;
Em vez do código anterior, o código poderia ser substituído por este:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local veiculo = createVehicle(411, 0, 0, 3)&lt;br /&gt;
veiculo:setDamageProof(true)&lt;br /&gt;
veiculo:setFrozen(true)&lt;br /&gt;
veiculo:setHealth(1000)&lt;br /&gt;
veiculo:setVelocity(0.2, 0.2, 0.2)&lt;br /&gt;
veiculo:destroy()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Funciona de maneira bastante similar a como uma tabela funciona, é como customTable.setAlgo(), exceto que o uso de ''':''' faz o Lua converter customTable.setAlgo() para customTable.setAlgo(customTable). Isso é uma coisa interna sobre ''açúcar sintático'' e você não precisa se preocupar muito com isso.&lt;br /&gt;
&lt;br /&gt;
Essas funções são bastante úteis, mas há mais mudanças com OOP, explicarei isso abaixo.&lt;br /&gt;
&lt;br /&gt;
== Instanciação, variáveis ==&lt;br /&gt;
OOP remove a necessidade de dizer a parte &amp;quot;criar&amp;quot; da função, então em vez de dizer '''createVehicle''', você apenas diz '''Veiculo'''. Funciona exatamente da mesma maneira, é quase como fazer '''Veiculo = createVehicle'''. Legal, não é? A única diferença aqui é que você perde as coisas extras oferecidas, Veiculo não tem essas coisas extras, mas Jogador definitivamente tem. Por exemplo, em vez de fazer getPlayerFromName(), você faria Player.getFromName(). É uma maneira agradável e simples de organizar funções.&lt;br /&gt;
{{Dica|''Vehicle()'' funciona porque na verdade acessa a função '''createVehicle''', isso permite omitir o '''.criar''' quando se está simplesmente &amp;quot;criando um objeto&amp;quot;}}&lt;br /&gt;
Como a OOP se baseia na programação procedural, muitas coisas foram herdadas do estilo procedural, mas para facilitar as coisas, temos variáveis para todas as funções que exigem uma única entrada. Encurtamos '''getElementDimension()''' para '''elemento:getDimension()''', mas também podemos ir um nível mais profundo: '''elemento.dimension'''. Sim, como uma variável normal. Você pode definir essa variável como uma variável normal e ler dela como uma variável normal. Ei, vocêpoderia até fazer isso:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;function incrementarDimensao()&lt;br /&gt;
    local jogador = Player.getRandom() -- pega um jogador aleatório&lt;br /&gt;
    jogador.dimension = jogador.dimension + 1 -- incrementa a dimensão&lt;br /&gt;
end&lt;br /&gt;
setTimer(incrementarDimensao, 60*1000, 10) -- define um temporizador para sessenta mil milissegundos, sessenta segundos, um minuto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esse código pegaria um jogador aleatório e o moveria para a próxima dimensão a cada minuto pelos próximos dez minutos.&lt;br /&gt;
&lt;br /&gt;
== Vetores ==&lt;br /&gt;
player.position também funciona! Mas como você muda três argumentos... usando uma variável? Vetores.&lt;br /&gt;
Vetores são classes muito poderosas e vêm em várias formas, para este introdução, vou abordar um vetor tridimensional em termos de elementos. Usar um vetor é muito simples e, é claro, opcional. Onde você pode usar posições atualmente, você pode usar um vetor.&lt;br /&gt;
&lt;br /&gt;
Portanto, este é um exemplo simples de criar um veículo e movê-lo para o centro do mapa usando vetores:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Primeiro, crie um vetor tridimensional&lt;br /&gt;
local posicao = Vector3(300, -200, 2) -- algum lugar distante&lt;br /&gt;
local veiculo = Vehicle(411, posicao) -- crie um veículo na posição&lt;br /&gt;
veiculo.posicao = centreOfMap - Vetor3(300, -200, 0) -- mova o veículo duas unidades acima do centro do mapa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sim, usei o sinal negativo. Vetores não são apenas maneiras elegantes de lidar com posições ou rotações 3D ou qualquer coisa assim, você pode fazer cálculos matemáticos com eles. A matemática ''especial'' ainda não foi documentada, mas vou tentar trabalhar nisso. Portanto, como você pode ver na linha um, criei um vetor 3D em ''300, -200, 2'' e na linha dois criei o veículo nessa posição.&lt;br /&gt;
&lt;br /&gt;
'''veiculo.position''' retornou um vetor e também aceita um vetor - é praticamente setElementPosition() sem o &amp;quot;()&amp;quot;. Apenas uma variável simples; então, na linha três, eu mudei o valor do vetor da posição do veículo. É aqui que a matemática aconteceu, em termos simples é isso que está acontecendo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
x = 300 - 300&lt;br /&gt;
y = -200 - -200&lt;br /&gt;
z = 2 - 0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A matemática de vetores é um pouco complicada, mas definitivamente permite uma grande variedade de mágicas matemáticas. Confira os links úteis abaixo relacionados a Vetores e Matrizes (Matrizes = forma plural de Matriz) para entender mais sobre como isso funciona.&lt;br /&gt;
&lt;br /&gt;
== Entendendo a documentação ==&lt;br /&gt;
A documentação para a sintaxe de OOP tem a intenção de ser muito simples e é suportada pela sintaxe procedural. Para simplificar as coisas, tudo é formatado de maneira consistente de certa forma.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;section name=&amp;quot;Exemplo&amp;quot; class=&amp;quot;generic&amp;quot; show=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
{{OOP|Defina a variável como nula para executar [[removePedFromVehicle]]|[[ped]]:warpIntoVehicle|vehicle|getPedOccupiedVehicle}}&lt;br /&gt;
&amp;lt;/section&amp;gt;&lt;br /&gt;
Às vezes, uma nota é adicionada à página. Isso explicará quaisquer diferenças especiais no uso de OOP para essa função.&lt;br /&gt;
Os métodos podem começar com ''[[player]]:'' ou ''[[Player]].'' - o primeiro é apenas para uma função em uma instância (setElementHealth) e o último é um método estático (getRandomPlayer).&lt;br /&gt;
A seção de contraparte permite ver rapidamente como a variável pode ser usada. Na maioria dos casos, isso pode ser inferido a partir da página da função.&lt;br /&gt;
Se você é um contribuidor do wiki, considere também ler [[Template:OOP|o modelo de OOP]].&lt;br /&gt;
&lt;br /&gt;
== Links úteis ==&lt;br /&gt;
Outras páginas relacionadas úteis sobre OOP:&lt;br /&gt;
&lt;br /&gt;
[[OOP]]&lt;br /&gt;
[[Vetor]]&lt;br /&gt;
[[Matriz]]&lt;br /&gt;
[[Categoria:OOP]]&lt;br /&gt;
[[Categoria:Incompleto]]&lt;br /&gt;
[[Categoria:Tutoriais]]&lt;br /&gt;
&lt;br /&gt;
[[hu:OOP Introdução]]&lt;br /&gt;
[[zh-cn:Introdução à OOP]]&lt;br /&gt;
&lt;br /&gt;
''Translated by'': Sousateew ([https://wiki.multitheftauto.com/wiki/OOP_Introduction Original])&lt;/div&gt;</summary>
		<author><name>Sousateew</name></author>
	</entry>
</feed>