-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathorientacao_a_objetos_em_python.py
113 lines (89 loc) · 3.86 KB
/
orientacao_a_objetos_em_python.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# -*- coding: utf-8 -*-
"""Orientacao_a_objetos_em Python.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/11kYPWNKFgj5SW1MYYhT2J9lqCjgIwf4X
Orientação a objetos é um paradigma de programação que usa a abstração de classes para estruturas os dados e a funcionalidade do programa. O código abaixo mostra a criação de uma classe em Python. O método __init__ é o método construtor, ou seja, executado na criação de cada instância da classe. É no método init que os atributos dos objetos são criados.
"""
class Funcionario:
def __init__(self, nome, idade):
self.nome=nome
self.idade=idade
"""O primeiro atributo do contrutor é a palavra reservada "self" que é indicador da instância, análogo ao "this" do Java e C#. Os parâmetros nome e idade são variáveis locais do método, mas self.nome e self.idade são atributos que vão compor a instância da classe (o objeto). Para testar a classe acima vamos criar uma instância:"""
func1=Funcionario("Frodo",111)
print(func1.nome,func1.idade)
"""Atributos de classes possuem apenas um valor para toda a classe, independentemente da instância"""
class Planeta:
quant_criados=0
def __init__(self,d):
self.diametro=d
Planeta.quant_criados=Planeta.quant_criados+1
p1=Planeta(10)
p2=Planeta(20)
print(Planeta.quant_criados)
"""Métodos são funções que operam sobre valores dos atributos e podem usar "return" para retonar valores"""
class Planeta:
quant_criados=0
def __init__(self,d):
self.diametro=d
Planeta.quant_criados=Planeta.quant_criados+1
def circunferencia(self):
c=self.diametro*3.14
return c
p1=Planeta(10)
p2=Planeta(20)
print(p1.circunferencia(),p2.circunferencia())
"""Exemplo: Crie uma classe Retângulo, com os atributos fundamentais que definem um retângulo e um método que devolve como resultado a área do retângulo. Crie duas instâncias diferentes para demostrar a classe."""
class Retangulo:
def __init__(self,largura, altura):
self.largura=largura
self.altura=altura
def calc_area(self):
return self.largura*self.altura
r1=Retangulo(2,3)
print(r1.calc_area())
r2=Retangulo(2,5)
print(r2.calc_area())
print(r1)
"""Em Python, métodos com sublinados no início e no fim, como o caso do __init__, são os chamados métodos dunder, ou métodos mágicos, que efetuam processos especícos no objeto. Outro exemplo de método dunder é o __str__, que é chamado automaticamente quando o objeto é convertido em string. No exemplo acima, imprimir a instância do objeto não traz uma informação muito útil, vamos mudar isso."""
class Retangulo:
def __init__(self,largura, altura):
self.largura=largura
self.altura=altura
def __str__(self):
return "retângulo com largura="+str(self.largura)+" e altura="+str(self.altura)
def calc_area(self):
return self.largura*self.altura
r1=Retangulo(2,3)
print("O objeto é um "+str(r1))
"""Herança é Python é realizada adicionando o nome da superclasse entre parênteses, como exemplo abaixo. Para acessar métodos da super classe, usamos a função super()."""
class Transporte:
def __init__(self,velocidade):
self.velocidade=velocidade
def __str__(self):
return "transporte genérico"
class TransporteTerrestre(Transporte):
def __init__(self,velocidade,quant_rodas):
super().__init__(velocidade)
self.quant_rodas=quant_rodas
def __str__(self):
return "transporte terrestre com "+str(self.quant_rodas)+" rodas"
class TransporteAereo(Transporte):
def __init__(self,velocidade,jato):
super().__init__(velocidade)
self.jato=jato
def __str__(self):
if self.jato:
return "um avião a jato"
else:
return "um avião turboélice"
t1=Transporte(10)
t2=TransporteTerrestre(80,4)
t3=TransporteAereo(800,True)
print(t1)
print(t2)
print(t3)
print(t3.velocidade)
lista=[]
lista.append(t1)
lista.append(t2)