Conceitos e exemplos de POO que todo programador deve conhecer

Publicados: 2021-02-26

Neste artigo, abordaremos os conceitos básicos sobre Programação Orientada a Objetos e discutiremos os termos mais usados: Abstração, Encapsulamento, Herança e Polimorfismo.

Para começar, POO é uma metodologia de programação que exige que os programadores criem objetos e os utilizem em todo o programa dentro das funções que requerem tais objetos para sua operação. A razão pela qual o conceito OOPs é usado extensivamente em Java é que ele permite a reutilização do código enquanto mantém a segurança.

Antes de falarmos sobre os quatro pilares da programação orientada a objetos, vamos nos familiarizar com os termos genéricos que ouvimos com frequência ao usar qualquer uma das linguagens orientadas a objetos: Java, python, c++.

Índice

Classe

Uma classe é uma coleção de objetos que define um conjunto de propriedades comuns a todos os objetos de um determinado tipo. Também pode ser chamado de blueprint para criar objetos. Uma classe envolve os seguintes componentes:

Nome da classe: O nome dado a uma classe que começa com letras maiúsculas.

Modificadores: Com base na funcionalidade dos modificadores de classe podem ser públicos, privados ou padrão.

Body : O corpo da classe contém todos os códigos dos objetos presentes na classe. Isso pode variar desde declarar qualquer variável ou criar qualquer construtor ou método que contenha o funcionamento de um objeto.

Objeto

Um objeto é definido como uma instância de uma classe e contém entidades da vida real. Por exemplo, para uma classe chamada Animals, seus objetos serão um gato, cachorro, elefante e outros. Cada objeto tem sua própria identidade, atributo e comportamento. O código abaixo descreve o uso de classe, objeto e método durante a programação na linguagem java.

Métodos

Os métodos são definidos dentro de uma classe e são usados ​​para executar uma função específica. O método pode ou não conter um parâmetro de entrada. O código abaixo descreve o uso de classe, objeto e método durante a programação na linguagem java.

No código acima, Player é o nome dado à nossa classe, enquanto runs é um parâmetro passado no método Batsman que retorna as corridas pontuadas por ele quando chamado através de um objeto chamado myobj.

Modificadores de acesso

Os modificadores de acesso em Java definem a acessibilidade ou extensão de um método, construtor ou classe. Os quatro tipos de modificadores de acesso são:

  1. Public : O código escrito dentro de uma classe é acessível a outras classes.
  2. Private : O código escrito só é acessível dentro dessa classe específica.
  3. Padrão : O código escrito é acessível dentro do mesmo pacote.
  4. Protected : O código é acessível dentro de um pacote e também por meio de uma subclasse. Na ausência de uma classe filha, o código não pode ser acessado.

Agora vamos prosseguir e falar sobre o cerne da programação orientada a objetos.

Herança

O termo herança refere-se a herdar as propriedades de uma classe para outra. As propriedades referem-se aos atributos e métodos da classe pai. A classe pai é aquela classe cujas propriedades precisam ser herdadas por outras classes. As classes que herdam as propriedades da classe pai são chamadas de classe filha ou subclasse. Para herdar as propriedades da classe pai na classe filha, uma palavra-chave chamada extends é usada.

No exemplo acima, o Patrocinador é a classe pai com o proprietário sendo seu atributo. Criamos uma subclasse chamada Team que herda a classe pai-Sponsor. Criamos um objeto de Team que pode acessar as propriedades da classe pai. A saída do código acima é:

Polimorfismo

Como o nome sugere, o polimorfismo é a capacidade de uma variável ou função existir em várias formas. O polimorfismo permite que o programador execute diferentes tarefas usando a mesma variável ou função. Um exemplo real de polimorfismo seria considerar um terreno aberto, agora esse terreno pode ser usado para praticar esportes.

Além disso, também pode ser usado para organizar casamentos e concertos. Por último, o mesmo terreno pode ser utilizado para estacionamento de veículos. A partir disso, podemos inferir que uma única variável pode ter várias implementações dependendo de seu uso.

O polimorfismo que geralmente encontramos dois termos, a saber, sobrecarga de método e substituição de método .

Em Method Overloading , um único método pode ser usado de várias maneiras e executar diferentes funções. Os métodos terão o mesmo nome, mas parâmetros diferentes podem ser usados ​​como entrada.

Em Method Overriding , o método da classe pai pode ser substituído pela classe filha. Com isso, o mesmo método pode ter um desempenho diferente quando invocado pela classe pai e pela classe filha.

Um exemplo do polimorfismo é mostrado abaixo:

Neste exemplo, usando o mesmo método, podemos realizar várias tarefas. O mesmo método Voice quando usado em Bird produziria “Turr Turr” e quando usado com Duck produziria “Quack Quack”. O instantâneo da saída é mostrado abaixo-

Abstração

Abstração é o processo de ocultar certos dados dos usuários e mostrar apenas as informações necessárias para eles. Por exemplo, ao dirigir um carro, não estamos preocupados com funções ou mecanismos internos. O que nos é mostrado são a velocidade com que o carro está sendo conduzido e os litros de gasolina disponíveis. Todos os outros dados marginalizados não são exibidos ao driver.

A palavra-chave abstract é usada para métodos e classes durante a execução da abstração. Para uma classe abstrata, não podemos criar um objeto enquanto o método abstrato não deve incluir um corpo. Se alguma das duas regras for violada, a saída gerará um erro.

Aqui, criamos um objeto da subclasse-Duck que é herdado da classe principal- Bird. A saída é mostrada abaixo:

Encapsulamento

Encapsulamento é o processo de unir o código e os dados em uma única unidade. Aqui, as variáveis ​​de uma classe são ocultadas de outras classes (usando a palavra-chave private ), mas só podem ser acessadas por meio de uma função de membro. As funções setter e getter são usadas para acessar as variáveis ​​privadas de uma classe que é abstrata.

Até agora, cobrimos tudo e qualquer coisa relacionada à programação orientada a objetos usando Java. Antes de concluirmos, vejamos algumas das vantagens do conceito OOP.

  1. O código pode ser facilmente reutilizado e, portanto, economiza muito tempo e custo para o desenvolvimento de códigos.
  2. Ele ajuda a projetar o código de maneira bem estruturada para que qualquer novo programador não precise gastar longas horas para entender o código.
  3. Além de ajudar os usuários a escrever código de forma eficiente, garante que a segurança não seja comprometida.

Checkout: perguntas e respostas da entrevista OOPs

Aprenda cursos de software online das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.

Conclusão

Para concluir, neste blog abordamos os conceitos básicos de POO. Esses conceitos são usados ​​extensivamente na indústria e em outras aplicações. Para se tornar um programador proficiente, deve-se ter uma sólida compreensão desses conceitos. Nos próximos blogs, descobriremos vários outros conceitos essenciais de programação que ajudarão você a desenvolver conhecimentos nesse domínio.

Se você estiver interessado em aprender mais sobre desenvolvimento de software full-stack, confira o Programa PG Executivo do upGrad & IIIT-B em Desenvolvimento de Software Full-stack, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, mais de 9 projetos e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.]

O que é um fatorial?

Um fatorial é uma operação matemática que conta o produto de um determinado número e todos os números abaixo dele. Um fatorial é um produto que indica quantas vezes um número é multiplicado por um. Por exemplo, o fatorial de 5 é 5x4x3x2x1, que é igual a 120. O fatorial de 1 é 1 e o fatorial de 0 também é 1. O programa para encontrar um fatorial de um número é a pergunta mais comum da entrevista e é algo que deve estar nas pontas da sua mão.

Como escrever um programa de recursão fatorial?

O fatorial de um número n é definido como n! = 1 × 2 × 3 × 4 × … × n. O fatorial de 5 é 120. A função fatorial é definida como fatorial(5) = 120. Uma função recursiva é uma função que chama a si mesma. Este é um exemplo de uma função fatorial no estilo recursivo fatorial(n) = n * fatorial(n - 1). Escrever um programa de recursão fatorial é muito simples e o código é muito semelhante à versão iterativa. Para escrever a versão iterativa, usamos uma variável chamada n e a incrementamos por um e multiplicamos pela variável chamada prod, que registra os valores sucessivos de n. O valor de saída também é armazenado na variável chamada prod. Na versão recursiva, você ainda usa uma variável chamada n. No entanto, você não precisa de uma variável para armazenar o valor de prod e pode retornar diretamente prod da função.

O que é recursão em programação?

A palavra recursão é derivada da palavra latina recurrere, que significa retornar. Na maioria das linguagens de programação, uma função que chama a si mesma é chamada de recursão. Esse processo de loop continua até que o caso base seja alcançado, que não é definido em nenhuma função recursiva. A recursão é uma técnica eficaz para resolver um problema de forma estruturada e organizada. É uma boa estratégia de programação. Por exemplo, o problema da série de Fibonacci, o problema fatorial, etc., podem ser resolvidos tanto de maneira iterativa quanto recursiva.