Você está aqui: Python ::: Dicas & Truques ::: Programação Orientada a Objetos

Programação orientada a objetos em Python: Classes, objetos, métodos e variáveis de instância - Atualizado

Quantidade de visualizações: 13889 vezes
A melhor forma de entender a programação orientada a objetos (OOP) é começar com uma analogia simples. Suponha que você queira dirigir um carro e fazê-lo ir mais rápido pressionado o acelerador. O que deve acontecer antes que você seja capaz de fazer isso? Bem, antes que você possa dirigir um carro, alguém tem que projetá-lo. Um carro geralmente começa com desenhos feitos pelos engenheiros responsáveis por tal tarefa, tal qual a planta de uma casa. Tais desenhos incluem o projeto de um acelerador que possibilita ao carro ir mais rápido. O pedal do acelerador "oculta" os mecanismos complexos responsáveis por fazer o carro ir mais rápido, da mesma forma que o pedal de freio "oculta" os mecanismos que fazem o carro ir mais devagar e o volante "oculta" os mecanismos que fazem com que o carro possa virar para a direita ou esquerda. Isso permite que pessoas com pequeno ou nenhum conhecimento de motores possam facilmente dirigir um carro.

Infelizmente, não é possível dirigir o projeto de um carro. Antes que possamos dirigí-lo, o carro deve ser construído a partir do projeto que o descreve. Um carro já finalizado tem um pedal de aceleração de verdade, que faz com que o carro vá mais rápido. Ainda assim, é preciso que o motorista pressione o pedal. O carro não acelerará por conta própria.

Agora vamos usar nosso exemplo do carro para introduzir alguns conceitos de programação importantes à programação orientada a objetos. A execução de uma determinada tarefa em um programa exige um método. O método descreve os mecanismos que, na verdade, executam a tarefa. O método oculta tais mecanismos do usuário, da mesma forma que o pedal de aceleração de um carro oculta do motorista os mecanismos complexos que fazem com que um carro vá mais rápido. Em Python, começamos criando uma unidade de programa chamada classe para abrigar um método, da mesma forma que o projeto de um carro abriga o design do pedal de acelerador. Em uma classe fornecemos um ou mais métodos que são projetados para executar as tarefas da classe. Por exemplo, a classe que representa uma conta bancária poderia conter muitos métodos, incluindo um método para depositar dinheiro na conta, outro para retirar dinheiro, um terceiro para verificar o saldo, e assim por diante.

Da mesma forma que não podemos dirigir o projeto de um carro, nós não podemos "dirigir" uma classe. Da mesma forma que alguém teve que construir um carro a partir de seu projeto antes que pudessémos dirigí-lo, devemos construir um objeto de uma classe antes de conseguirmos executar as tarefas descritas nela.

Quando dirigimos um carro, o pressionamento do acelerador envia uma mensagem ao carro informando-o da tarefa a ser executada (neste caso informando-o de que queremos ir mais rápido). Da mesma forma, enviamos mensagens aos objetos de uma classe. Cada mensagem é uma chamada de método e informa ao objeto qual ou quais tarefas devem ser executadas.

Até aqui nós usamos a analogia do carro para introduzir classes, objetos e métodos. Já é hora de saber que um carro possui atributos (propriedades) tais como cor, o número de portas, a quantidade de gasolina em seu tanque, a velocidade atual, etc. Tais atributos são representados como parte do projeto do carro. Quando o estamos dirigindo, estes atributos estão sempre associados ao carro que estamos usando, e cada carro construído a partir do projeto sofrerá variações nos valores destes atributos em um determinado momento. Da mesma forma, um objeto tem atributos associados a ele quando o usamos em um programa. Estes atributos são definidos na classe a partir da qual o objeto é instanciado (criado) e são chamados de variáveis de instância da classe.

Veremos agora como definir uma classe em Python e usar um objeto desta classe em um programa. Veja o trecho de código abaixo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# Definição da classe Cliente 
class Cliente:
  "Minha primeira classe Python"
  # define a propriedade nome
  _nome = None
 
  # um método que permite definir o nome do cliente
  def definir_nome(self, nome):
    self._nome = nome
 
  # um método que permite obter o nome do cliente
  def obter_nome(self):
    return self._nome
# Fim da definição da classe Cliente
 
def main():
  # Cria uma instância da classe Cliente
  cliente = Cliente()
 
  # Define o nome do cliente
  cliente.definir_nome("Osmar J. Silva")
 
  # Obtém o nome do cliente
  print(cliente.obter_nome())

if __name__== "__main__":
  main()

Em mais dicas dessa seção você aprenderá mais sobre a programação orientada a objeto em Python.

Link para compartilhar na Internet ou com seus amigos:

Python ::: Dicas & Truques ::: Lista (List)

Apostila de Python - Como ordenar uma lista de inteiros em ordem crescente ou decrescente usando o método sort() do objeto List do Python

Quantidade de visualizações: 17995 vezes
Nesta dica veremos como usar a função sort() do objeto List da linguagem Python para ordenar um vetor de inteiros em ordem crescente ou decrescente. Veja que, para ordenar o vetor em ordem descrecente, tudo que fiz foi fornecer o valor "reverse=True" para a função sort().

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

def main():
  # cria uma lista de inteiros
  valores = [2, 5, 12, 2, 3, 32, 18]
 
  # exibe a lista na ordem original
  print(valores)
 
  # ordena a lista em ordem crescente
  valores.sort()
  # exibe a lista ordenada em ordem crescente
  print(valores)

  # ordena a lista em ordem decrescente
  valores.sort(reverse=True)
  # exibe a lista ordenada em ordem decrescente
  print(valores)

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

[2, 5, 12, 2, 3, 32, 18]
[2, 2, 3, 5, 12, 18, 32]
[32, 18, 12, 5, 3, 2, 2]


Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico

Exercício Resolvido de Python - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em Python

Quantidade de visualizações: 1289 vezes
Pergunta/Tarefa:

Escreva um programa Python para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo.

Sua saída deverá ser parecida com:

Informe um número inteiro: 16
O número informado foi: 16
O antecessor é 15
O sucessor é: 17
Resposta/Solução:

Veja a resolução comentada deste exercício usando Python:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# função principal do programa
def main():
  # vamos pedir para o usuário informar um número inteiro
  numero = int(input("Informe um número inteiro: "))
    
  # vamos calcular o sucessor do número informado
  sucessor = numero + 1
    
  # vamos calcular o antecessor do número informado
  antecessor = numero - 1
    
  # e agora mostramos os resultados
  print("O número informado foi: {0}".format(numero))
  print("O antecessor é {0}".format(antecessor))
  print("O sucessor é: {0}".format(sucessor))
  
if __name__== "__main__":
  main()



Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural

Como calcular a Força Normal Adimensional ou Força Normal Reduzida de um pilar em Python - Python para Estruturas de Concreto Armado

Quantidade de visualizações: 74 vezes


A Força Normal Adimensional de um pilar, também chamada de Força Normal Reduzida, é representada pela letra grega ν (ni) e nos dá uma idéia da magnitude da força normal que está sendo aplicada na seção transversal de um pilar.

A fórmula para o cálculo da Força Normal Adimensional pode ser representada da seguinte forma:

\[\nu = \frac{N_\text{sd}}{A_\text{c} \cdot \frac{f_\text{ck}}{\gamma _\text{c}}} \]

Onde:

ν é a Força Normal Adimensional sem unidade;

Nd é a força normal de projeto, em kN.

fck é a resistência característica do concreto em kN/cm2. Para converter de Mpa para kN/cm2 nós só precisamos dividir por 10.

γc é o fator de ponderação do concreto e, em geral, possui o valor 1,4. Ao dividirmos o fck pelo γc nós chegamos ao fcd, que é resistência de cálculo do concreto.

Note que o valor encontrado para a força normal adimensional ν (ni) é o valor que, junto com o μ (mi), forma a dupla de fatores para o ábaco de VENTURINI que nos retornará o valor de ω (ômega) que nos ajudará a calcular a área de aço (As) do pilar.

Há duas considerações importantes em relação à Força Normal Adimensional ν de um pilar:

a) Se &#957; < 0,30 -> pode ser adequado reduzir a seção transversal do pilar.

b) Se &#957; > 1,30 -> pode ser conveniente aumentar a seção transversal do pilar.

Agora vamos ver o código Python? Note que pediremos para o usuário informar as dimensões do pilar nas direções x e y em centímetros, a carga total no pilar em kN e o fck do concreto em Mpa e retornaremos o valor da força normal adimensional:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# método principal
def main():
  # vamos pedir as dimensões do pilar
  hx = float(input("Informe a dimensão do pilar na direção x (em cm): "))
  hy = float(input("Informe a dimensão do pilar na direção y (em cm): "))

  # vamos pedir a carga total no pilar em kN
  Nk = float(input("Informe a carga total no pilar (em kN): "))

  # agora vamos obter o FCK do concreto em MPa
  fck = float(input("Informe o FCK do concreto (em MPa): "))
  # vamos converter MPa para kN/cm2
  fck = fck / 10

  # vamos obter o menor lado do pilar (menor dimensão da seção transversal)
  if (hx < hy):
    b = hx
  else:
    b = hy

  # agora vamos calcular a área do pilar em centímetros quadrados
  area = hx * hy
 
  # a área está de acordo com a norma NBR 6118 (ABNT, 2014)
  if (area < 360):
    print("A área do pilar não pode ser inferior a 360cm2")
    return

  # vamos calcular a força normal de projeto Nd
  yn = 1.95 - (0.05 * b) # de acordo com a norma NBR 6118 (ABNT, 2014) Tabela 13.1
  yf = 1.4 # regra geral para concreto armado
  Nd = yn * yf * Nk

  # vamos fixar o fator de ponderação do concreto em 1.4
  yc = 1.4

  # e agora calculamos a força normal adimensional do pilar
  fna = Nd / (area * (fck / yc))

  # e mostramos o resultado
  print("\nA Força Normal Adimensional do pilar é: {0}".format(round(fna, 2)))

if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

Informe a dimensão do pilar na direção x (em cm): 40
Informe a dimensão do pilar na direção y (em cm): 19
Informe a carga total no pilar (em kN): 841.35
Informe o FCK do concreto (em MPa): 30

A Força Normal Adimensional do pilar é: 0.72


Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

valor = 5
contador = 0
while valor < 20:
  valor = valor + 3
  contador = contador + 1

print("O laço while repetiu {0} vezes.".format(contador))

A) O laço while repetiu 7 vezes.

B) O laço while repetiu 6 vezes.

C) O laço while repetiu 4 vezes.

D) O laço while repetiu 5 vezes.

E) O laço while repetiu 8 vezes.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Cisalhamento e detalhamento de vigas

A NBR 6118 (ABNT, 2014) determina que todos os elementos lineares submetidos à força cortante devem conter armadura transversal mínima (&#961;SW) constituída por estribos.

Nesse contexo, marque a alternativa correta:

A) O diâmetro da barra que constitui o estribo não pode exceder 20% da menor largura da viga.

B) O diâmetro da barra que constitui o estribo deve ser exatamente de 5mm ou menor.

C) Nos estribos em que as barras são lisas, o diâmetro não pode ser superior a 10mm.

D) O espaçamento máximo entre as barras transversais dos estribos não deve ser superior a 20cm.

E) O espaçamento mínimo adequado dos estribos deve ser aquele que permita a introdução do vibrador.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Sistema domiciliar de abastecimento de água

Há diversas opções de materiais empregados nas instalações de água fria. Cada tipo de material se enquadra às condições em que será utilizado. Nas instalações residenciais do Brasil, o material mais empregado é o PVC, por apresentar diversas vantagens.

Quais das opções a seguir apresentam as principais características desse tipo de material?

I. Leve (1,4g/cm3), o que facilita seu manuseio e aplicação.

II. Por ser tóxico, apresenta risco à saúde humana.

III. Sólido e resistente a choques.

IV. Durável: sua vida útil em construções é superior a 50 anos.

As afirmações corretas são:

A) I e II, apenas.

B) I, III e IV, apenas.

C) I, II e III, apenas.

D) II e III, apenas.

E) I, II, III e IV.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual o resultado da execução do seguinte código Python?

valor = 5
contador = 0
while valor < 20:
  valor = valor + 3
  contador = contador + 1

print("O laço while repetiu {0} vezes.".format(contador))

A) O laço while repetiu 7 vezes.

B) O laço while repetiu 6 vezes.

C) O laço while repetiu 4 vezes.

D) O laço while repetiu 5 vezes.

E) O laço while repetiu 8 vezes.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

As bacias hidrográficas do Brasil, em razão da sua extensão, abarcam ainda países vizinhos ao território brasileiro. São exemplos de bacias localizadas no Brasil e em partes dos países vizinhos:

A) Bacia Amazônica e São Francisco.

B) Bacia do Uruguai e Nordestina.

C) Bacia do São Francisco e Platina.

D) Bacia Amazônica e Platina.

E) Bacia do Tocantins e Paraguaia.
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Python

Veja mais Dicas e truques de Python

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 5 usuários muito felizes estudando em nosso site.