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 - AtualizadoQuantidade 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 PythonQuantidade 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 PythonQuantidade 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 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 ArmadoQuantidade 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 ν < 0,30 -> pode ser adequado reduzir a seção transversal do pilar. b) Se ν > 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 (ρ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 |
Software 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 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 |