Conceito de programação orientada a objetos em Python

Publicados: 2020-12-01

Orientado a Objetos é um paradigma de programação que segue o conceito de classes e objetos no lugar de funções e lógica. Também é conhecido como a maneira sofisticada de codificação que organiza o código de uma maneira que aumenta a legibilidade e a manutenção do código. O conceito OOP é um tópico importante na programação e ajuda a construir módulos reutilizáveis ​​para uma variedade de tarefas em Data Science.

Isso geralmente é um pré-requisito ao criar modelos de aprendizado profundo usando várias bibliotecas, como Pytorch, onde o modelo base é reutilizado para adicionar camadas personalizadas. Vamos explorar o que esse conceito ensina e como aplicá-lo em casos de uso práticos.

Índice

Qual é o conceito de POO?

Considere um smartphone que pode ser de qualquer marca, mas são uma variedade de coisas comuns entre todas elas. Todos têm telas, alto-falantes, botões e, no nível do software, quase todos são movidos a Android. Agora considere um caso em que toda empresa está fazendo seu software do zero, até mesmo o kernel que controla a maioria dos componentes de hardware.

Isso se tornaria um processo tedioso e caro, portanto, aumentando o preço dos dispositivos. E se houver um modelo abstrato ou generalizado que possa ser alterado ao longo do tempo por qualquer fabricante de acordo com suas necessidades? Este conceito tenta capturar este método baseado em classes onde o código é estruturado em classes com diferentes métodos de acesso.

O que são classes e objetos?

As classes são os projetos do que deve ser implementado. Se considerarmos nosso exemplo anterior, podemos ter funcionalidades para ligar para uma pessoa, receber chamadas, mensagens, tocar música ou fazer outras coisas.

Todas essas coisas são comuns para todos os smartphones, seu funcionamento interno também é semelhante e podem ser considerados como uma classe de funções do smartphone ou uma classe. Objetos podem ser definidos como todas as marcas de smartphones que usarão essa implementação comum em seus produtos com modificações.

Pode haver várias instâncias dessa classe base e cada instância pode conter um estado diferente de valores sem interferir em outros objetos. Em Python, uma classe pode ser declarada usando a palavra-chave reservada class. Além disso, o construtor __init__ é usado para inicializar as variáveis ​​de classe.

classe Empresa:

def __init__ (auto):

self.name = 'upGrad'

def display_name (self):

print(f"O nome da empresa é: {self.name}")

cm = Empresa()

cm.display_name()

Leia também: Salário do desenvolvedor Python na Índia

Diferentes Pilares da POO

Agora que estamos familiarizados com os blocos de construção básicos desse paradigma, vejamos alguns dos recursos/características mais importantes desse conceito:

Encapsulamento

Isso afirma que os métodos (ou funções) da classe e os dados associados a ela são encapsulados ou protegidos contra acesso acidental ou externo. Isso significa que os atributos definidos no escopo privado ou protegido não são acessíveis fora da classe.

Existe uma preocupação com o Python de que não há conceito de variáveis ​​privadas nesta linguagem, então os atributos são acessíveis fora da classe.

Existe uma maneira de reconhecer atributos privados usando um sublinhado duplo no início da declaração e se você tentar acessar isso fora da classe através do objeto da mesma, será solicitado AttributeError porque o Python aplica o desmembramento de nomes sempre que detecta uma variável privada. Isso não dá nenhuma segurança aos seus atributos porque eles ainda estão acessíveis.

Herança

Como a palavra sugere, ele está levando uma parte de uma classe existente chamada classe pai para uma nova classe chamada classe filha com pouca ou nenhuma alteração. Podemos conectar isso ao nosso exemplo de forma que todas as marcas de smartphones herdem uma classe de telefone genérica que os ajudará a executar funções básicas, além de poderem adicionar seus códigos extras para aprimorar a experiência do usuário de acordo com suas necessidades. Em Python, herdar uma classe é feito por:

classe A:

algum conteúdo

classe B(A):

conteúdo da classe derivada

Existe outro conceito relacionado à herança chamado substituição de função. Suponha que a função de câmera do smartphone genérico não seja tão boa, e o fabricante tenha uma solução melhor para isso. Eles podem substituir diretamente essa função definindo-a novamente na classe filha e aplicar as alterações nela.

Abstração

Ele define o blueprint ou uma interface para as implementações das subclasses. Isso significa que alguns métodos são definidos na classe base que não está totalmente implementada e apenas uma visão abstrata é definida. Ele pode ajudar no rastreamento dos vários recursos do módulo e submódulos a serem criados.

Por exemplo, alguns smartphones suportam NFC (Near Field Connectivity) e esta funcionalidade pode ser definida na classe base e sua implementação pode ser codificada na classe filha do telefone resultante. Dessa forma, a classe base abstrata pode fornecer a visão geral do módulo e das implementações subsequentes. Aqui está um exemplo:

Telefone da turma:

câmera def(auto):

passar

def NFC(auto):

passar

classe Xyz (Telefone):

def NFC(auto):

retornar Verdadeiro

Saiba mais sobre: ​​Principais ferramentas Python

Polimorfismo

Se formos pelo significado da raiz, significa múltiplas formas da mesma coisa. O polimorfismo define as funções com base no número ou tipos de argumentos passados. Por exemplo, a função length em Python pode receber qualquer tipo de iterável ou objeto e retornar o tamanho inteiro.

Isso também pode ser citado como sobrecarga de função, mas aqui está um problema na linguagem Python. Não podemos definir funções de mesmo nome com argumentos diferentes e, se feito, considera apenas a última entrada.

Casos de uso práticos de POO

Vimos do que se trata esse conceito e quais recursos ele oferece. Dê uma olhada em alguns exemplos onde você pode aplicar este conceito:

Jinja Templating: Se você tem alguma experiência com o framework Flask do Python, que lida com as rotas e o lado do servidor, esse modelo ajuda a lidar com esses dados no front-end. Geralmente, é criado um arquivo HTML básico que é herdado por todas as páginas para ter o mesmo layout em todo o site.

Kivy Applications: Esta é uma biblioteca que permite que você crie aplicativos python baseados em GUI de plataforma cruzada (android e IOS) e aqui a maior parte da programação é baseada no conceito OOP.

ORM: Mapeadores relacionais de objeto oferece uma maneira de definir os bancos de dados relacionais no código do aplicativo usando qualquer linguagem. Por exemplo, no Django, você pode definir diferentes tipos de modelos usando classes para diferentes tipos de usuários.

Conclusão

Neste artigo, discutimos o que é o conceito OOP, seus blocos de construção (classes e objetos), diferentes pilares, e destacamos alguns exemplos onde esse paradigma é adotado. Existem vários lugares onde esse método de programação é considerado devido ao melhor gerenciamento de código, colaboração e fornecimento de funcionalidades abstratas a outros programas dependentes disso.

Se você está curioso para aprender sobre python, ciência de dados, confira o PG Diploma in Data Science do IIIT-B & upGrad, criado para profissionais que trabalham e oferece mais de 10 estudos de caso e projetos, workshops práticos práticos, orientação com especialistas do setor, 1-on-1 com mentores do setor, mais de 400 horas de aprendizado e assistência de trabalho com as principais empresas.

O que é POO?

A programação orientada a objetos, abreviada como OOP, é uma técnica de programação de computadores que organiza projetos de software de acordo com dados, em vez de organizá-los de acordo com funções e lógica. A POO se concentra nos objetos, ou seja, campos de dados com propriedades e comportamentos distintos que os desenvolvedores desejam controlar, em vez da lógica necessária para gerenciá-los. Este método de programação é ideal para aplicativos grandes e complicados que são constantemente atualizados ou mantidos. OOP abrange iniciativas de fabricação, design e aplicativos móveis. Outras vantagens dessa linguagem são a reutilização de código, escalabilidade e eficiência.

Quais são as diferentes linguagens em OOP?

As linguagens de programação orientadas a objetos compõem várias das linguagens de codificação mais usadas na indústria de computadores atual. As linguagens OOP são encontradas em todos os lugares. Essas linguagens fazem uso de objetos que contêm dados e código. Encapsulamento, abstração, polimorfismo e herança são ideias de programação orientada a objetos. As linguagens de programação orientadas a objetos populares incluem Java, Python, C++, Lisp e Perl. Eles auxiliam na programação utilizando o paradigma de classes e objetos. Outras linguagens que suportam princípios orientados a objetos são Perl, Objective-C, Dart, Lisp, JavaScript e PHP.

Por que os OOPs são preferidos?

Há muitas razões pelas quais as OOPs são preferidas. Os desenvolvedores podem reutilizar o código orientado a objetos. Você também pode usar a herança para duplicar informações e funcionalidades que foram criadas anteriormente. Isso economiza tempo, simplifica o código, economiza espaço e facilita a codificação em nossos dedos. Como a maior parte do código está em um local e é chamada e reutilizada, é consideravelmente mais fácil de manter. Embora a maioria das linguagens ofereça algum nível de segurança, as linguagens orientadas a objetos são mais convenientes, pois o encapsulamento inclui segurança. As linguagens de programação orientadas a objetos dividem um programa em objetos e classes. Isso é vantajoso, pois fornece ao seu aplicativo uma estrutura mais modular.