Orientação a objetos: diferenças entre revisões

Conteúdo apagado Conteúdo adicionado
Rfabbri (discussão | contribs)
m detalhe de escrita: parênteses
Rfabbri (discussão | contribs)
melhorada referencia (talvez) principal e texto
Linha 2:
{{revisão|data=março de 2018}}
{{wikificação|data=março de 2018}}
'''Programação Orientada a Objetos''' (também conhecida pela sua sigla '''POO''') é um modelo de [[Análise de sistemas|análise]], [[Padrão de projeto de software|projeto]] e [[Linguagem de programação|programação]] de ''[[software]]'' baseado na composição e interação entre diversas unidades chamadas de 'objetos'.<ref name='oop'>Object-oriented Programming in C#
for C and Java programmers. Kurt Nørmark, 2011. http://people.cs.aau.dk/~normark/oop-csharp/html/notes/theme-index.html</ref>
A POO é um dos 4 principais paradigmas de programação (as outras são programação [[Programação imperativa|imperativa]], [[Programação funcional|funcional]] e [[Programação lógica|lógica]]). Os objetos são operados com o conceito de 'this' (isso) ou 'self' (si), de forma
que seus métodos (muitas vezes) modifiquem os dados da própria instância. Os
programas são arquitetados na formaatravés de objetos que interagem entre si. Dentre
as várias abordagens da POO, as baseadas em classes são as mais comuns: objetos
são instâncias de classes, o que em geral também define o tipo do objeto.
Assim, na POO, implementa-se um conjunto de classes. Cada classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.<ref name="Meyer2009">{{citar livro|autor =Bertrand Meyer|título=Touch of Class: Learning to Program Well with Objects and Contracts|ano=2009|publicado=Springer Science & Business Media|isbn=978-3-540-92144-8}}</ref>
A alternativa mais usual ao uso de classes é o uso de protótipos.
Neste caso, objetos são copias de outros objetos, não instâncias de classes.
Javascript e [[Lua (linguagem de programação)|Lua]] são exemplos de linguagens cuja POO é realizada por protótipos.
A diferença prática mais evidente é que na POO baseada em protótipos apenas a herança simples é implementada pela cópia do objeto.
Assim, na POO, implementa-se um conjunto de classes passíveis de serem instanciadas como objetos, e.g. [[Python]] e [[C++]]
(ou objetos protótipos que são copiados e alterados, e.g. [[JavaScript]] e [[VimL]]).
 
!{{anchor|MOO}}
Em alguns contextos, o termo [[Modelagem de dados|modelagem]] orientada ao objeto ([[#MOO|MOO]]) é preferível ao termo POO. De fato, o paradigma "orientado ao objeto" tem origem nos estudos da [[cognição]] e influenciou a [[inteligência artificial]] e a [[linguística]],
dada a relevância para a abstração de conceitos do mundo real.
A [[MOO]] é considerada a melhor estratégia para diminuir o "gap semântico" (o hiato entre o mundo real e a representação dele), e facilita a comunicação das partes interessadas no [[modelo]] ou [[software]] (e.g. o [[projetista|modelador]] e o [[usuário final]]) na medida em que conceitos, terminologia, símbolos, grafismo e estratégias, são, potencialmente, mais óbvios, intuitivos, naturais e exatos.<ref></ref>
 
Muitas das linguagens de programação mais utilizadas atualmente (talvez a