Módulo 2

Programação orientada a objeto

A imagem inicial contém códigos de programação onde parte da imagem está desfocada e outra parte om as linhas de códigos em cores alternadas entre azul e laranja.

Neste módulo, serão apresentados os conceitos relacionados à linguagem C# ligados à programação orientada a objetos, a qual é muito importante quando você estiver atuando como programador, sobretudo, ao criar softwares personalizados.
Partindo disso, você estudará sobre abstração e herança, polimorfismo e encapsulamento, classe abstrata e classe sealed.

Vamos começar?!

Abstração e herança

Para iniciar seus estudos sobre abstração e herança, ouça nosso podcast para obter maiores informações quanto aos conceitos.

Podcast

Confira o podcast sobre abstração e herança.

Confira aqui o que foi abordado no podcast.

Observe no código, o conceito inicial do processo de utilização de herança de determinada classe.

Herança (parte 1)

public class Professor
{

protected readonly float salariomaximo; 
float salarioatual;

1 referência 
public Professor(float salarioMaximo)
{
salariomaximo = salarioMaximo;
}

2 referências 
protected float Modificarsalario(float Modf)
{
float novoSalario = salarioatual + Modf;

if (novoSalario < 0)
{
salarioatual = 0;
}
else if (novoSalario > salariomaximo)
{
salarioatual = salariomaximo;
}
else
salarioatual = novoSalario;
}
return salarioatual;
}

2 referências 
public float AumentaSalario()
{
return Modificarsalario(+500);
}

0 referências 
public float DiminuiSalario()
{
return Modificarsalario(-500);
}

Esse projeto consiste em um algoritmo para controle de salário dos professores. Note que, inicialmente, foi criada a variável “salariomaximo” com característica “readonly ”, ou seja, que não pode ser modificada. Já o “salarioatual” serve para fazer a atualização do valor do salário do professor.

Observe os pontos principais quanto ao que foi realizado no projeto mencionado. Selecione cada um para conhecê-los!

Além de tudo isso, foram criados os métodos responsáveis por fazer o aumento ou a diminuição do salário, intitulados “AumentaSalario” e “DiminuiSalario”, respectivamente.

Agora, veja mais uma parte do código:

Herança (parte 2)

public class Prof : Professor
{

1 referência 
public Prof() : base (1400)
{
0 referências 
public static void Main()
{
Console.WriteLine("Professor 1: "); 
Prof profi = new Prof(); 
Console.WriteLine (prof1. AumentaSalario()); 
Console.WriteLine(prof1. AumentaSalario());

}
}

Note que foi criada uma classe “Prof” que herdará os métodos da superclasse “Professor”. Posteriormente, no main, criamos um objeto para a classe que herdou os métodos. Em seguida, utilizamos os métodos herdados com o objeto criado.

Na prática, os conceitos de abstração e herança ficam mais fáceis de serem entendidos, não é mesmo? Assim como a técnica utilizada, que o ajudará muito no desenvolvimento de seus projetos. Com o objetivo de complementar seus estudos, no próximo tópico apresentaremos o polimorfismo e o encapsulamento. Confira!

Polimorfismo e encapsulamento

O Polimorfismo e o Encapsulamento almejam tornar o futuro software não só mais flexível, como também facilita a sua modificação e criação de novas implementações.

Iniciando pelo Polimorfismo, pode-se dizer que ele se subdivide em estático ou dinâmico. Explore o recurso abaixo para entender a diferença entre os dois e ainda conhecer a definição do que é o encapsulamento, muito utilizado também no dia a dia da profissão!

Temos disponíveis quatro tipos de visibilidade. No caso do public, está relacionado ao que pode ser visto e acessado por todos. Já internal é aquilo que pode ser acessado apenas dentro do projeto. O protected está ligado ao que é passado por herança. Por fim, o private é aquilo que pode ser visto apenas pela classe.

Para entender o conceito de encapsulamento na prática, observe na parte 1 do código abaixo, a criação de uma variável do tipo private, a qual será acessada apenas pela classe responsável. Utilizaremos, também, os métodos get e set estudados anteriormente, demonstrando uma relação entre os conteúdos.

Encapsulamento (parte 1)

public class Mensagem
{
private String Texto;

1 referência 
public void Exibir()
{
Console.WriteLine(this.Texto);
}

0 referências 
public String getTexto()
{
return this.Texto;
}
1 referência 
public void setTexto(String txt)
{
this. Texto = txt;
}

Na parte 2 do código, note que o acesso aos métodos da classe é realizado a partir de objetos criados nessa mesma classe.

Encapsulamento (parte 2)

static void Main(string [] args)
{
Mensagem txt1, txt2;

txt1 = new Mensagem(); 
txt1.setTexto("CURSO AVANÇADO DE C#"); 
txt1. Exibir();

}

Após estudar sobre o Polimorfismo estático e dinâmico, bem como o Encapsulamento a partir de exemplos, você pode notar o quanto eles facilitam as possíveis modificações do software que será desenvolvido por você, como também o tornam mais eficaz no momento do uso.

Todavia, aliados a esses dois conceitos, você verá no próximo tópico sobre as classes abstrata e sealed.

Classes abstrata e sealed

Conforme você estudou, a classe é um bloco de construção básico na linguagem C#. Ela pode ser do tipo abstrata somente se houver outra classe que a herde, uma vez que esse tipo não pode ser instanciado. Entenda melhor com os conceitos apresentados na imagem.

No código a seguir, veja na prática a criação de uma classe abstrata com o nome “Telefone” e a criação, logo na sequência, de uma classe de nome “Xiaomi”, que herda os métodos da classe “Telefone”. No caso, a configuração override é utilizada quando desejamos sobrescrever um método.

Classe abstrata

public abstract class Telefone
{
1 referência 
public abstract string Tipo();
}

0 referências 
public class Xiaomi : Telefone
{
1 referência 
public override string Tipo()
{
return "Note 8 Pro";
}
}

Já a classe do tipo sealed é utilizada quando desejamos que seja proibido haver herança. A configuração é realizada conforme o exemplo a seguir, fazendo com que a classe “Escola” esteja selada.

01. sealed class Escola {
02. }

Parabéns! Você chegou ao final do módulo 2.

Nele, você estudou sobre os conceitos de abstração e herança, polimorfismo e encapsulamento, classe abstrata e classe sealed.

Agora, para que seus estudos fiquem completos, vamos aprender sobre expressões?

Na programação, elas são muito relevantes, porque auxiliam na construção das operações, viabilizando a aplicação da Linguagem C#, contribuindo diretamente para o seu futuro profissional.

Desta forma, acompanhe o último módulo do curso. Selecione o botão “Avançar” e confira!