Escolar Documentos
Profissional Documentos
Cultura Documentos
PROGRAMAÇÃO _ FRONT-END _
DATA SCIENCE _ INTELIGÊNCIA ARTIFICIAL _
DEVOPS _ UX & DESIGN _
MOBILE _ INOVAÇÃO & GESTÃO _
HERANÇA
Imagine agora que nosso banco realize depósitos e saques de
acordo com o tipo da conta. Se a conta for poupança, o cliente
deve pagar 0.10 por saque. Se a conta for corrente, não há
taxa.
Para implementar essa regra de negócio, vamos colocar um if
no método Saca :
public void Saca(double valor)
{
if(this.Tipo == ???????????)
{
this.Saldo -= valor + 0.10;
}
else
{
this.Saldo -= valor;
}
}
Podemos criar um atributo na Conta , que especifica o MATRICULE-SE
tipo da
conta como, por exemplo, um inteiro qualquer onde o número 1
representaria "conta poupança" e 2 "conta corrente".
A implementação seria algo como:
public class Conta
{
public int Numero { get; set;}
public double Saldo { get; private set; }
Veja que uma simples regra de negócio como essa fez nosso
código crescer muito. E poderia ser pior: imagine se nosso
banco tivesse 10 tipos de contas diferentes. Esse if seria
maior ainda.
Precisamos encontrar uma maneira de fazer com que a criação
de novos tipos de conta não implique em um aumento de
complexidade.
Reaproveitando código com a Herança MATRICULE-SE
// Arquivo ContaPoupanca.cs
public class ContaPoupanca : Conta
{
public override void Saca(double valor)
{
this.Saldo -= (valor + 0.10);
}
}
// ...
}
Polimorfismo
Nosso banco tem relatórios internos para saber como está a
saúde financeira da instituição, além de relatórios sobre os
clientes e contas. Em um deles, é necessário calcular a soma
do saldo de todas as contas (correntes, poupanças, entre
outras) que existem no banco. Começando com "zero reais":
public class TotalizadorDeContas
{ MATRICULE-SE
public double ValorTotal { get; private set; }
}
Institucional A Alura
Sobre nós Formações
Trabalhe conosco Como Funciona
Para Empresas Todos os cursos
Para Sua Escola Depoimentos
Política de Privacidade Instrutores(as)
Compromisso de Integridade Dev em <T>
Termos de Uso Luri by ChatGPT
Status
Novidades e Lançamentos
Email* ENVIAR
CURSOS
Cursos de Programação
Lógica | Python | PHP | Java | .NET | Node JS | C | Computação | Jogos | IoT
Cursos de Front-end
HTML, CSS | React | Angular | JavaScript | jQuery
Cursos de Data Science
Ciência de dados | BI | SQL e Banco de Dados | Excel | Machine Learning | NoSQL | Estatística
Cursos de Inteligência Artificial
IA para Programação | IA para Dados
Cursos de DevOps
AWS | Azure | Docker | Segurança | IaC | Linux
Cursos de UX & Design
Usabilidade e UX | Vídeo e Motion | 3D
Cursos de Mobile
React Native | Flutter | iOS e Swift | Android, Kotlin | Jogos
Cursos de Inovação & Gestão
Métodos Ágeis | Softskills | Liderança e Gestão | Startups | Vendas