POO - Programação Orientada a Objetos
Boa dia, boa tarde e boa noite a todos, nas ultimas aulas e até no LiveHelp podem ter surgido muitas duvidas referentes a Orientação Objeto e quero "tentar" dar uma ajuda a todos.
Programação Orientada a Objeto é uma técnica de programação que consiste em utilizar alguns métodos para a criação do código, esses métodos consistem em:
Abstração - Abstração é eu trazer coisas do mundo real para o virtual, essas coisas possuem propriedades ou atributos , o nome varia pra cada linguagem de programação mas é a mesma coisa, e esses atributos são características que são relevantes pro programa por exemplo:
Uma empresa possui Clientes e cada cliente possui um Nome, Endereço, Idade e etc. Se trazermos isso para POO Clientes é a classe e Nome, Endereço, Idade e etc são os Atributos.
Herança - Herança é quando uma classe herda atributos/propriedades de uma outra classe permitindo assim o desenvolvedor reutilizar aqueles atributos/propriedades em outras classes, exemplo:
Partindo da mesma ideia do exemplo anterior, a empresa possui Clientes e Funcionários ambos possui coisas em comuns como um Nome, Endereço, Idade e etcs. Essas coisas em comum podem ser criadas em uma classe a parte que seria Pessoa e as classes Clientes e Funcionario criam seus proprios atributos/propriedades que os diferenciam e dessa forma podem Herdar os atributos/propriedades em comum.
Polimorfismo - na programação em si não é permitido a criação de métodos com mesmo nome porem ao mesmo tempo é extremamente complicado em um programa com muitas e muitas linhas de código se lembrar qual método usar em determinada situação se os mesmos estiverem usando nome parecidas como Soma1(x,x), Soma2(x,x,x). Para facilitar esse processo o Polimorfismo permite criar métodos com o mesmo nome porém o que vai diferenciar eles é a quantidade de parâmetros, exemplo:
Posso ter varios metodos com o nome de Soma(), porem cada uma deles vai ter quantidade de parametros diferentes, Soma(x,x), Soma(x,x,x).
Encapsulamento - o encapsulamento permite eu restringir ou não o acesso aos atributos da minha classe, essas restrições variam e podem ser:
Get e Set - get e sets são metodos que nos permite utlizar os atributos/propriedades de uma classe. Como dito anteriormente o encapsulamento restringe o acesso diretamente a aquela variavel, por exemplo:
public class Pessoa{
int idade;
}
Nesse caso eu poderia acessar da seguinte forma:
Pessoa p = new Pessoa();
p.idade=18;
Porém isso não é muito seguro por isso usamos o encapsulamento:
public class Pessoa{
private int idade;
}
Dessa forma eu não consigo ler muito menos atribuir um valor ao atributo Idade, para isso usamos os Gets e Sets:
Get - get vem de Pegar, ou seja, eu uso ela para "Pegar" o valor da variavel e exibir APENAS, GETS são usados apenas para exibição
Set - set é um metodo usado para atribuir valor a aquele atributo correspondete.
Porem as formas de gets e sets variam de linguagem. No Java por exemplo voce cria o metodo Get e Set e coloca a logica dentro deles:
**public class Pessoa{
private int idade;
public int GetIdade()
{
return idade;
}
public void SetIdade(int x)
{
Idade = x;
}
}**
Já no CSharp(C#) é diferente, durante a declaração do atributo você consegue colocar em seguida os gets e sets:
public class Pessoa{
public int idade {get;set;}
}
Nesse caso do C# nós chamamos de Auto Properties, propriedades auto implementadas, então podem ser chamadas ou atribuídas de forma padrão mesmo sem a criação de métodos específicos.
Mas afinal quando de fato algo vira um OBJETO ?
Uma variavel se torna de fato um objeto quando ela é INSTANCIADA, ou seja, quando ela recebe o New:
var p = new Pessoa();
Nesse caso p se tornou um Objeto de Pessoa e assim posso acessar as informações inseridas durante o New através de um construtor ou inseridas através de Sets ou métodos específicos de inserção.
O que é um construtor ?
Construtores são métodos que recebem o nome da classe e são chamados sempre através do New. Esses construtores podem possuir N elementos em seus parâmetros e geralmente quando não possuem nada são chamados de Construtores de Inicialização tornando assim todos os atributos daquele classe em vazios, nulls ou 0. exemplo de construtores:
**public class Pessoa{
public int idade {get;set;}
public string Nome {get;set;}
public Pessoa(){}
public Pessoa(int idade)
{
Idade=idade;
}
public Pessoa(int idade, string nome)
{
Idade=idade;
Nome=nome;
}
}**
Como pode ser observado, construtores usam de Polimorfismo para serem diferenciados.
No mais esse é uma básico sobre POO caso tenham mais duvidas escrevam embaixo para quem souber poder responder.
Em resposta avictorbiguete⬆:Christian Amsberg Janner @calemaoPoxa que bacana! Isso vai incrementar tanto no meu curso, quanto na minha faculdade, obrigado mesmo!
Em resposta avictorbiguete⬆:Aline Fernanda Da Silva Vieira @Aline.VieiraNo Java usamos as interfaces para auxiliar no processo de polimorfismo e tbm de heranças múltiplas, no C# tem o mesmo conceito?
- MEm resposta avictorbiguete⬆:Marcos Vinícios Pereira @marcosvipe
no C# será muito utilizados os conceitos abordados sobre POO. Excelente.
Em resposta avictorbiguete⬆:Marcele Eller Gusmão Moura @marceleellerExcelente explicação sobre Programação Orientada a Objeto! É sempre valioso esclarecer conceitos fundamentais para quem está aprendendo ou revisando. As analogias utilizadas, como a comparação entre objetos do mundo real e classes em POO, facilitam a compreensão.
