Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Prof. Wellington Rodrigo Monteiro Linguagem de Programação Aula 3 Conversa Inicial Transpondo conceitos da vida real em código Programação Orientada a Objetos (POO) Mudando paradigmas Um problema para ser resolvido pela Programação Orientada a Objetos Método até agora: programação estruturada Receita de bolo Funções Estruturas de seleção Estruturas de repetição Entrada e saída de dados Programação estruturada Segurança Confiança Sistemas corporativos Internet Banking E-commerce Sistemas contábeis Sistemas corporativos (ERPs) Programação Orientada a Objetos 2 Noções de Programação Orientada a Objetos Unified Modeling Language (UML) Programação Orientada a Objetos (POO) Structured Query Language (SQL) Programação Orientada a Objetos "Coisas" da vida real Dois objetos não ocupam o mesmo lugar ao mesmo tempo Estados Características Objetos Estados Variáveis: atributos Comportamentos Ações: funções (métodos) Objetos "Manual" (blueprint) para se criarem objetos Receita de bolo, não o bolo Planta da casa, não a casa Instância de classe: objeto Classes Classe "Cachorro" Métodos Latir Comer Dormir Exemplo Atributos Cor Nome Brinquedo favorito 3 Objeto "Kora": instância de "Cachorro" Objeto "Pippoca": instância de "Cachorro" Objeto "Dexter": instância de "Cachorro" Herança de classes Classes especializadas Herdam métodos e atributos Heranças Carro Caminhonete Furgão Minivan Heranças Bicicleta BMX Bicicleta de Carga Bicicleta de Pista Residência Sobrado Casa de Praia Apartamento Heranças Cliente de Internet Banking Conta simples Conta premium Conta empresarial Classe "Cachorro" Métodos Latir Comer Dormir Atributos Cor Nome Brinquedo favorito Exemplo Classe "Cão Farejador" Métodos Farejar Sentar Atributos Tempo de Treinamento Aeroporto Raça Classes podem usar interfaces Interfaces listam os métodos que uma classe que a usa deve ter Interfaces não implementam métodos Interfaces 4 Classes e Objetos em Python class [nome da classe] Atributos Métodos self Criando uma classe class Bolo: peso = 0 def atribuir_peso(self, peso_a_atribuir): self.peso = peso_a_atribuir bolo_aniversario = Bolo() print(bolo_aniversario.peso) bolo_aniversario.atribuir_peso(2) print(bolo_aniversario.peso) Exemplo def __init__ Inicializando uma classe class Bolo: peso = 0 def __init__(self, peso_inicial=0): self.peso = peso_inicial def atribuir_peso(self, peso_a_atribuir): self.peso = peso_a_atribuir bolo_aniversario = Bolo() print(bolo_aniversario.peso) bolo_aniversario.atribuir_peso(2) print(bolo_aniversario.peso) Exemplo Polimorfismo 5 Implementações diferentes do mesmo método Parâmetros diferentes Resultados diferentes Polimorfismo Veículo: estacionar Carro: estacionar Moto: estacionar Caminhão: estacionar Bicicleta: estacionar Polimorfismo Closures e Decorators Funções dentro de funções Redução de casos de variáveis globais Encapsulamento e isolamento da lógica Encapsulamento Funções que: Ficam dentro de outras funções e Usam variáveis atribuídas a elas Closures def calcular_volume_area_base(area_base): constante = 3 def calcular_volume_piramide(altura): return (area_base * altura)/constante return calcular_volume_piramide Closures Função interna 6 def calcular_volume_area_base(area_base): constante = 3 def calcular_volume_piramide(altura): return (area_base * altura)/constante return calcular_volume_piramide # closure piramide = calcular_volume_area_base(15) # area base piramide(2) # altura Closures Closures que podem ser inseridas no código sem alterações estruturais Uso do "@" @staticmethod @classmethod Decorator class Bolo: peso = 0 def __init__(self, peso_inicial=0): self.peso = peso_inicial def atribuir_peso(self, peso_a_atribuir): self.peso = peso_a_atribuir @staticmethod def calcular_porcoes_por_ovo(numero_ovos): return round(numero_ovos * 3) Decorators
Compartilhar