Python Orientado a Objetos - Introdução

As linguagens de programação estão surgindo constantemente, assim como diferentes metodologias. A programação orientada a objetos é uma dessas metodologias que se tornou bastante popular nos últimos anos.

Este capítulo fala sobre os recursos da linguagem de programação Python que a torna uma linguagem de programação orientada a objetos.

Esquema de classificação de programação de linguagem

Python pode ser caracterizado sob metodologias de programação orientada a objetos. A imagem a seguir mostra as características de várias linguagens de programação. Observe os recursos do Python que o tornam orientado a objetos.

Aulas de Langauage Categorias Langauages
Paradigma de Programação Processual C, C ++, C #, Objective-C, java, Go
Scripting CoffeeScript, JavaScript, Python, Perl, Php, Ruby
Funcional Clojure, Eralang, Haskell, Scala
Classe de Compilação Estático C, C ++, C #, Objective-C, java, Go, Haskell, Scala
Dinâmico CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang
Classe de tipo Forte C #, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala
Fraco C, C ++, C #, Objective-C, CoffeeScript, JavaScript, Perl, Php
Classe de Memória Gerenciou Outras
Não gerenciado C, C ++, C #, Objective-C

O que é programação orientada a objetos?

Object Orientedsignifica direcionado para objetos. Em outras palavras, significa funcionalmente direcionado para a modelagem de objetos. Esta é uma das muitas técnicas usadas para modelar sistemas complexos, descrevendo uma coleção de objetos que interagem por meio de seus dados e comportamento.

Python, uma programação orientada a objetos (OOP), é uma forma de programação que se concentra no uso de objetos e classes para projetar e construir aplicativos. Os principais pilares da Programação Orientada a Objetos (OOP) são Inheritance, Polymorphism, Abstraction, de Anúncios Encapsulation.

Análise Orientada a Objetos (OOA) é o processo de examinar um problema, sistema ou tarefa e identificar os objetos e as interações entre eles.

Por que escolher a programação orientada a objetos?

Python foi projetado com uma abordagem orientada a objetos. OOP oferece as seguintes vantagens -

  • Oferece uma estrutura de programa clara, que facilita o mapeamento de problemas do mundo real e suas soluções.

  • Facilita a fácil manutenção e modificação do código existente.

  • Aumenta a modularidade do programa porque cada objeto existe de forma independente e novos recursos podem ser adicionados facilmente sem perturbar os existentes.

  • Apresenta uma boa estrutura para bibliotecas de código onde os componentes fornecidos podem ser facilmente adaptados e modificados pelo programador.

  • Proporciona capacidade de reutilização de código

Programação orientada a objetos vs. programação procedimental

A programação baseada em procedimentos é derivada da programação estrutural baseada nos conceitos de functions/procedure/routines. É fácil acessar e alterar os dados na programação orientada a procedimentos. Por outro lado, a Programação Orientada a Objetos (OOP) permite a decomposição de um problema em uma série de unidades chamadasobjectse construir os dados e funções em torno desses objetos. Ele enfatiza mais os dados do que procedimentos ou funções. Também na OOP, os dados estão ocultos e não podem ser acessados ​​por procedimento externo.

A tabela na imagem a seguir mostra as principais diferenças entre a abordagem POP e OOP.

Diferença entre Programação Orientada a Procedimentos (POP) vs. Programação Orientada a Objetos (OOP).

Programação Orientada a Procedimentos Programação orientada a objeto
Baseado em No Pop, todo o foco está em dados e funções Oops é baseado em um cenário do mundo real. Todo o programa é dividido em pequenas partes chamadas de objeto
Reutilização Reutilização limitada de código Reutilização de código
Aproximação Abordagem de cima para baixo Design focado no objeto
Especificadores de acesso Nenhum Público, privado e protegido
Movimentação de dados Os dados podem se mover livremente de funções para funções no sistema Em Oops, os dados podem se mover e se comunicar uns com os outros por meio de funções de membro
Acesso de dados No pop, a maioria das funções usa dados globais para compartilhamento que podem ser acessados ​​livremente de função para função no sistema Em Ops, os dados não podem se mover livremente de um método para outro, podem ser mantidos em público ou privado para que possamos controlar o acesso aos dados
Ocultação de dados No pop, uma forma tão específica de ocultar dados, um pouco menos segura Ele fornece ocultação de dados, muito mais seguro
Sobrecarregando Não é possivel Sobrecarga de funções e operador
Linguagens de exemplo C, VB, Fortran, Pascal C ++, Python, Java, C #
Abstração Usa abstração no nível do procedimento Usa abstração em nível de classe e objeto

Princípios da Programação Orientada a Objetos

A Programação Orientada a Objetos (OOP) é ​​baseada no conceito de objects ao invés de ações, e dataem vez de lógica. Para que uma linguagem de programação seja orientada a objetos, ela deve ter um mecanismo que permita trabalhar com classes e objetos, bem como a implementação e uso dos princípios e conceitos fundamentais da orientação a objetos, nomeadamente herança, abstração, encapsulamento e polimorfismo.

Vamos entender cada um dos pilares da programação orientada a objetos em breve -

Encapsulamento

Esta propriedade oculta detalhes desnecessários e facilita o gerenciamento da estrutura do programa. A implementação e o estado de cada objeto estão ocultos por trás de limites bem definidos e isso fornece uma interface limpa e simples para trabalhar com eles. Uma maneira de fazer isso é tornar os dados privados.

Herança

A herança, também chamada de generalização, nos permite capturar uma relação hierárquica entre classes e objetos. Por exemplo, uma 'fruta' é uma generalização de 'laranja'. A herança é muito útil de uma perspectiva de reutilização de código.

Abstração

Esta propriedade permite ocultar os detalhes e expor apenas as características essenciais de um conceito ou objeto. Por exemplo, uma pessoa que dirige uma scooter sabe que ao apertar a buzina, um som é emitido, mas ela não tem ideia de como o som é realmente gerado ao apertar a buzina.

Polimorfismo

Polimorfismo significa muitas formas. Ou seja, uma coisa ou ação está presente de diferentes formas ou modos. Um bom exemplo de polimorfismo é a sobrecarga do construtor nas classes.

Python orientado a objetos

O coração da programação Python é object e OOP, no entanto, você não precisa se restringir ao uso da OOP organizando seu código em classes. OOP adiciona a toda a filosofia de design do Python e incentiva uma forma limpa e pragmática de programação. OOP também permite escrever programas maiores e complexos.

Módulos vs. Classes e Objetos

Módulos são como “dicionários”

Ao trabalhar em Módulos, observe os seguintes pontos -

  • Um módulo Python é um pacote para encapsular código reutilizável.

  • Os módulos residem em uma pasta com um __init__.py arquivo nele.

  • Os módulos contêm funções e classes.

  • Os módulos são importados usando o import palavra-chave.

Lembre-se de que um dicionário é um key-valuepar. Isso significa que se você tiver um dicionário com uma chaveEmployeID e você deseja recuperá-lo, então você terá que usar as seguintes linhas de código -

employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])

Você terá que trabalhar em módulos com o seguinte processo -

  • Um módulo é um arquivo Python com algumas funções ou variáveis ​​nele.

  • Importe o arquivo que você precisa.

  • Agora, você pode acessar as funções ou variáveis ​​nesse módulo com o '.' (dot) Operador.

Considere um módulo chamado employee.py com uma função chamada employee. O código da função é fornecido abaixo -

# this goes in employee.py
def EmployeID():
   print (“Employee Unique Identity!”)

Agora importe o módulo e acesse a função EmployeID -

import employee
employee. EmployeID()

Você pode inserir uma variável nele chamada Age, como mostrado -

def EmployeID():
   print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”

Agora, acesse essa variável da seguinte maneira -

import employee
employee.EmployeID()
print(employee.Age)

Agora, vamos comparar isso com o dicionário -

Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable

Observe que há um padrão comum em Python -

  • Dê uma key = value recipiente de estilo

  • Obtenha algo com o nome da chave

Ao comparar o módulo com um dicionário, ambos são semelhantes, exceto com o seguinte -

  • No caso do dictionary, a chave é uma string e a sintaxe é [chave].

  • No caso do module, a chave é um identificador e a sintaxe é .key.

As aulas são como módulos

Módulo é um dicionário especializado que pode armazenar código Python para que você possa acessá-lo com o caractere '.' Operador. Uma classe é uma maneira de pegar um agrupamento de funções e dados e colocá-los dentro de um contêiner para que você possa acessá-los com o operador '.'.

Se você tiver que criar uma classe semelhante ao módulo de funcionário, você pode fazer isso usando o seguinte código -

class employee(object):
   def __init__(self):
      self. Age = “Employee Age is ##”
   def EmployeID(self):
      print (“This is just employee unique identity”)

Note- As classes são preferíveis aos módulos porque você pode reutilizá-los como estão e sem muita interferência. Enquanto com módulos, você tem apenas um com o programa inteiro.

Objetos são como mini-importações

Uma classe é como um mini-module e você pode importar de uma maneira semelhante à que faz para as classes, usando o conceito chamado instantiate. Observe que quando você instancia uma classe, você obtém umobject.

Você pode instanciar um objeto, semelhante a chamar uma classe como uma função, conforme mostrado -

this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age

Você pode fazer isso de uma das três maneiras a seguir -

# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)