No internet connection
  1. Home
  2. Dúvidas Gerais

POO - Programação Orientada a Objetos

Por Victor Biguete @victorbiguete
    2023-11-24 00:05:19.501Z2023-11-24 00:41:38.296Z

    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.

    • 5 respostas
    1. Silvana Santos @sisi
        2023-11-28 22:47:05.228Z

        show ajudou bastante com as dicas

        1. Em resposta avictorbiguete:
          Christian Amsberg Janner @calemao
            2023-12-05 20:48:54.892Z

            Poxa que bacana! Isso vai incrementar tanto no meu curso, quanto na minha faculdade, obrigado mesmo!

            1. Em resposta avictorbiguete:

              No Java usamos as interfaces para auxiliar no processo de polimorfismo e tbm de heranças múltiplas, no C# tem o mesmo conceito?

              1. M
                Em resposta avictorbiguete:
                Marcos Vinícios Pereira @marcosvipe
                  2023-12-08 11:55:52.144Z

                  no C# será muito utilizados os conceitos abordados sobre POO. Excelente.

                  1. Em resposta avictorbiguete:

                    Excelente 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.