PDF Estudoss
PDF Estudoss
PDF Estudoss
POLIMORFISMO
O polimorfismo é implementado através do uso de herança e interfaces. Ele
permite que o desenvolvedor escreva um código mais flexível, reutilizável e
fácil de manter.
Polimorfismo significa "muitas formas", que permite ao desenvolvedor usar o
mesmo elemento de formas diferentes.
No Polimorfismo temos dois tipos:
Ele permite que você defina múltiplos métodos com o mesmo nome em uma
classe, mas com diferentes parâmetros.
A sobrecarga ocorre quando você tem vários métodos com o mesmo nome em
uma classe, mas cada método possui uma assinatura diferente. A assinatura de
um método é composta pelo nome do método e pelos tipos e ordem dos
parâmetros.
Neste exemplo, temos a classe Calculadora com três métodos somar, todos
eles possuindo o mesmo nome, mas com diferentes tipos de parâmetros.
FUNÇÕES
As funções são chamadas de métodos. Os métodos são blocos de código que
são definidos dentro de uma classe e podem ser invocados para executar
ações específicas em objetos dessa classe.
Esses exemplos abaixo, são apenas exemplos básicos para ilustrar o conceito
de métodos em POO. Na prática, os métodos podem ter uma ampla variedade
de funcionalidades, desde simplesmente retornar valores até realizar
operações complexas e interagir com outros objetos.
Aqui vai um resumo dos principais pontos sobre métodos em POO que são
(Definição de métodos, Invocação de métodos, Passagem de parâmetros,
Retorno de valores, com exemplos:
Definição de métodos:
Neste código, temos uma classe chamada Exemplo. Dentro dessa classe,
definimos dois métodos: metodoSemRetorno e metodoComRetorno.
Neste exemplo, a classe Cachorro herda da classe Animal. Isso significa que a
classe Cachorro terá todos os atributos e métodos definidos na classe Animal,
além de poder adicionar seus próprios atributos e métodos exclusivos.
A herança permite vários benefícios na programação orientada a objetos:
Reutilização de código: A herança permite que você reutilize o código da
classe pai na classe filha, evitando a duplicação de código e promovendo a
organização e a manutenção do código.
Extensibilidade: A classe filha pode adicionar novos membros ou
comportamentos à classe pai, estendendo suas funcionalidades. Isso permite
que você crie classes mais especializadas e adaptadas às necessidades
específicas.
Polimorfismo: O polimorfismo é outro conceito importante em POO que é
viabilizado pela herança. Ele permite que um objeto de uma classe filha seja
tratado como um objeto da classe pai, permitindo substituições e execução
dinâmica de métodos.
Organização hierárquica: A herança permite organizar as classes em uma
hierarquia, representando as relações de especialização e generalização entre
elas. Isso ajuda na compreensão do design do sistema e facilita a manutenção
do código.
ABSTRAÇÃO:
A abstração é um conceito fundamental na programação orientada a objetos.
Ela envolve a simplificação e a modelagem de objetos do mundo real em
classes e objetos mais genéricos, identificando as características essenciais e
os comportamentos relevantes para o sistema em questão. A ideia é capturar
apenas as informações relevantes e ocultar os detalhes irrelevantes.
Na prática, a abstração é alcançada por meio da definição de classes abstratas
ou interfaces que estabelecem um contrato com as subclasses. Essas classes
abstratas fornecem uma visão simplificada dos objetos, descrevendo apenas
os atributos e métodos essenciais.
EXEMPLO DE ABSTRAÇÃO:
Suponha que estamos criando um sistema de gerenciamento de animais de um
zoológico. Podemos definir uma classe abstrata chamada "Animal" com
métodos como "mover()" e "emitirSom()". Esses métodos são abstratos, o que
significa que eles não têm implementação na classe abstrata. Em vez disso, as
subclasses concretas, como "Cachorro", "Gato" e "Elefante", devem
implementar esses métodos de acordo com suas características específicas. A
classe "Animal" fornece uma abstração que encapsula o comportamento
comum a todos os animais, sem se preocupar com as especificidades de cada
animal individual.
Nesse exemplo, a classe abstrata "Animal" define um método abstrato "emitirSom()",
que todas as subclasses concretas devem implementar. As subclasses "Cachorro" e
"Gato" estendem a classe abstrata "Animal" e fornecem suas próprias implementações
do método "emitirSom()". No código principal, podemos criar objetos das subclasses e
chamá-los para emitir seus respectivos sons.
ENCAPSULAMENTO:
O encapsulamento é um princípio da programação orientada a objetos que visa
proteger os dados e ocultar os detalhes internos de uma classe, fornecendo
interfaces controladas para acessá-los. Isso é feito definindo atributos como
privados e fornecendo métodos públicos (getters e setters) para acessar e
modificar esses atributos.
O encapsulamento permite que uma classe controle como seus dados são
manipulados e evita que outros objetos acessem e modifiquem diretamente
seus atributos internos. Isso promove uma melhor organização do código,
facilita a manutenção e possibilita a validação e aplicação de regras específicas
antes de alterar os dados.
Exemplo de Encapsulamento:
Considere a classe "Pessoa" com o atributo "nome". Podemos encapsular esse
atributo, tornando-o privado e fornecendo métodos públicos para acessá-lo e
modificá-lo, como "getNome()" e "setNome()". Dessa forma, o acesso direto ao
atributo "nome" é impedido, e qualquer manipulação desse valor precisa ser
feita por meio dos métodos fornecidos.