H.E.P.A.
- #.NET C#
- #POO
Os quatro principais pilares da programação orientada a objetos (POO). Depois que se aprende toda a parte básica, é normal que esbarramos em empecilhos como: códigos repetitivos e longos, falta de organização, baixa proteção etc. Contudo, a orientação a objetos entra para solucionar esses problemas.
Herança
public class Vilan: Heroi
{
public int numVitimas;
public Vilan(string name, int level, int health, string type):base(name,level,health,type){}
}
Usada principalmente para reaproveitar objetos já existentes, permite que classes herdem atributos de outras classes, evitando a repetição de comandos. Exemplo: O objeto: Vilão, herda do objeto: Herói, já que ambos possuem características em comum como o nome.
Encapsulamento
private string IdentidadeSecreta()
{
return "Bruce Wayne";
}
Serve para restringir o alcance de dados de métodos ou atributos, afim de protegê-los. Só poderão ser acessados dentro do próprio objeto ou por meio de outros métodos como: getters and setters. Exemplo: somente a classe Herói tem acesso ao método IdentidadeSecreta.
Polimorfismo
public virtual void AtaqueEspecial(int damage, Heroi vilan)
{
damage += moral;
vilan.Health -= damage;
Console.WriteLine($"Você atingiu o Vilão: {vilan.Name} com o Ataque Especial");
Console.WriteLine($"Você causou: {damage} de dano com o Ataque Especial ao Vilão: {vilan.Name}");
}
public override void AtaqueEspecial(int damage, Heroi heroi)
{
damage += numVitimas;
heroi.Health -= damage;
Console.WriteLine($"Você atingiu o Herói: {heroi.Name} com o Poder Maligno!");
Console.WriteLine($"Você infligiu: {damage} de dano com o Poder Maligno ao Herói: {heroi.Name}");
}
É uma reciclagem, permite que métodos já implementados em uma classe, possam ser reutilizados em outra. Podemos fazer alterações na sua estrutura e utilizar em outro contexto. Exemplo: A classe Vilão, subscreveu o método AtaqueEspecial da classe Herói e alterou a forma de como é calculado o dano.
Abstração
public class Heroi
{
public string Name;
public int Level;
public int Health;
public string Type;
public int moral;
}
Pegar exemplos do mundo real e implementá-los na máquina, descartando coisas irrelevantes. É uma maneira de extrair somente o essencial e deixar tudo o menos complexo possível. Exemplo: Todo herói tem um nome, então não precisamos criar uma classe para cada herói com nome diferente.