-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathorientação_a_objetos_python.py
104 lines (84 loc) · 3.22 KB
/
orientação_a_objetos_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
# -*- coding: utf-8 -*-
"""orientação_a_objetos_python.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1Beb5V2DbPDAODaOmwZD2PJGCW5BwyIfi
Orientação à objetos é um paradigma de programação que usa a abstração de classes para estruturar 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 de 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
def metodo(self):
self.noma="x"
"""O primeiro atributo do construtor é 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)
func1.metodo()
print(func1.nome,func1.noma)
"""Atributos de classes possuem apenas um valor para toda a classe, indepedentemente 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)
"""Também é possível criar métodos dentro das classes."""
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())
"""Os métodos dunder, ou mágicos, vem de "double underscore" e são métodos que permitem interagir com elementos da própria linguagem Python."""
class Retangulo:
def __init__(self,alt,larg):
self.alt=alt
self.larg=larg
def __str__(self):
return "retângulo com largura="+str(self.larg)+" e altura="+str(self.alt)
def area(self):
area=self.alt*self.larg
return area
r1=Retangulo(5,10)
print(r1.area())
r2=Retangulo(2,5)
print(r2.area())
print(r1)
print(r2)
print("O objeto é um "+str(r1))
"""Herança em Python é realizada adicionando o nome da superclasse entre parênteses, como no exemplo abaixo. Para acessar métodos da superclasse, usamos a função super()."""
class Transporte:
def __init__(self,velocidade):
self.velocidade=velocidade
def __str__(self):
return "um veículo terrestre com velocidade "+str(self.velocidade)
class TransporteTerreste(Transporte):
def __init__(self,velocidade,quant_rodas):
super().__init__(velocidade)
self.quant_rodas=quant_rodas
def __str__(self):
return "um veículo terrestre com velocidade "+str(self.velocidade)
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 turbohélice"
t1=Transporte(10)
t2=TransporteTerreste(80,4)
t3=TransporteAereo(800,True)
print(t1)
print(t2)
print(t3)
print(t3.velocidade)