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

Conteúdo apagado Conteúdo adicionado
m referencia para exagero do uso de getters e setters
Linha 266:
* [[Herança (programação)|Herança]] é o mecanismo pelo qual uma classe pode estender outra classe ou ser estendida por outra classe. O mecanismo de herança permite que uma classe (subclasse) compartilhe o código-fonte outra classe (superclasse), aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos). As grandes vantagens deste mecanismo são: 1) organização do software; 2) evitar a duplicação desnecessária de código, o que pode levar a reduzir o tempo gasto para desenvolver o projeto. '''Generalização''' é o processo de herança, no qual é criada uma superclasse, a partir de subclasses já existentes. '''Especialização''' é o processo no qual é criada uma subclasse a partir de superclasse(s) já existentes. Neste último caso, a herança é '''simples''', quando uma subclasse herda características de uma única superclasse; a herança é '''múltipla''', quando a subclasse herda características de mais de uma superclasse. Um exemplo de herança: Mamífero é super-classe de Humano. Ou seja, um Humano '''é um''' mamífero. '''Observação''': Nem todas as linguagens orientadas a objetos suportam a herança múltipla (Ex.: Java).<ref>{{citar livro|titulo=Java Como Programar - Oitava Edição|ultimo=Deitel|primeiro=Paul|editora=Prentice Hall|ano=2010|local=São Paulo|paginas=|acessodata=}}</ref><ref>{{citar livro|titulo=Programação Orientada a Objetos com Java - 4ª Edição|ultimo=Barnes|primeiro=David J.|editora=Prentice Hall|ano=2009|local=São Paulo|paginas=|acessodata=}}</ref>
* [[Associação (programação)|Associação]] é o mecanismo pelo qual um objeto utiliza os recursos de outro. Pode tratar-se de uma associação simples "usa um" ou de um acoplamento "parte de". Por exemplo: Um humano usa um telefone. A tecla "1" é parte de um telefone. A [[Orientação_a_objetos#Novas_características|composição de objetos]] é um tipo de associação.
* [[Encapsulamento]] consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente os métodos que acessam (getters) e alteram (setters) estes estados, tomando o cuidado para não deixar todos esses atributos acessíveis.<ref name="suntutorial">{{Citar web |url=http://blog.caelum.com.br/nao-aprender-oo-getters-e-setters/ |título=Como não aprender orientação a objetos: getters e setters |publicado=Blog da Caelum |acessodata=3 de março de 2019}}</ref> Exemplo: você não precisa conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo a você uma interface mais amigável (os botões, o monofone e os sinais de tom).
* [[Abstração (programação)|Abstração]] é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais. Na POO, uma classe é uma abstração de entidades existentes no domínio do software.
* [[Polimorfismo]] consiste no princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação (assinatura) mas comportamentos distintos, especializados para cada classe. De acordo com a literatura, existem quatro tipos de polimorfismo que uma linguagem de programação pode ter (nem toda linguagem orientada a objeto tem suporte para os quatro tipos de polimorfismo):