Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Conceitos básicos de orientação a objetos
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012
2
Introdução Forma de programar Programação não estruturada
Programas simples e pequenos Ex: Cartões Programação Estruturada (ou Modular) Programas divididos em módulos Módulos com estruturas de dados internas
3
Introdução Programação Orientada à Objetos
Programas estruturados pelos dados e não pelas operações Dados, chamados de classe, especificam as operações válidas Módulos agrupados por dados e suas representações Unifica as ideias de algoritmos e estruturas de dados através do conceito de Objeto Programas organizados pelo comportamento dos objetos e não como uma simples sequência de comando e chamadas desconectadas.
4
Classe É a representação de um tipo abstrato de dados Especifica:
Atributos Métodos (funções) Define as propriedades e o comportamento dos conjuntos de objetos.
5
Objeto É uma instância de uma classe
Identificado univocamente pelo seu nome Possui estado, determinado pelo valor dos atributos ao longo do tempo Estado modificado pela aplicação dos métodos Mudança de estados define comportamento do objeto
6
Orientação a objetos em Python
Classe “Fábrica” de objetos A rigor, em Python, uma classe também é um objeto Uso de módulo.método é uma forma de usar um módulo como um objeto. O mesmo se aplica às classes Definição de uma classe class nome: var = valor ... def metodo (self, ... arg):
7
Definição de classes Na definição dos métodos, os atributos são chamados como nome_da_classe.atributo O primeiro argumento de qualquer método é sempre self O self é uma referência a própria instância da classe É uma forma de a classe dizer que se refere a si mesma Atributos da classe podem ser chamados também como self.atributo Um objeto de uma classe é criado usando nome_da_classe()
8
Exemplos – Criação de classes
9
Exemplos – Criação de classes
10
Exemplos (o que não fazer)
11
Exemplos – Uso do self
12
Exemplos – Atributos internos e externos
13
Exemplos - Reescrevendo
Atenção: o.extra() daria erro. Por que?
14
Exercícios Crie uma classe que represente um carro. Essa classe deve ter pelo menos dois atributos (placa e cor) e pelo menos três métodos: seguir, virar_esquerda, virar_direita Crie uma classe motorista, que deve ter o método dirigir(carro, direção) Crie um script que faça um motorista, em posse de um carro, dirigir gerando 3 eventos consecutivos. O evento, que pode ser seguir em frente, virar à esquerda ou virar à direita, deve ser escolhido aleatoriamente. Os métodos de cada um dos objetos criados devem imprimir uma mensagem na tela toda vez que forem evocados.
15
Construtores em Python
Chamados automaticamente na criação de instâncias Utilizados declarando-se um método __init__
16
Exemplo
17
Exemplo
18
Destrutores A linguagem Python já apresenta um ‘coletor de lixo’
Gerenciamento de memória alocada feita de forma automática Uso dos destrutores para: Fechar sockets Fechar conexões com banco de dados Fechar arquivos Etc; Formato: __del__ Destrutores são chamados após o fim do escopo no qual o objeto está inserido
19
(mensagens impressas apenas no sys.stderr )
Atenção: As mensagens do destrutor podem não aparecer no console que você está usando. (mensagens impressas apenas no sys.stderr ) Se houver necessidade de criar logs, usar arquivos e colocar exit no final do código.
20
Herança e Polimorfismo
Para uma classe herdar atributos e métodos de outra, basta declarar isso na definição da classe Formato: Class Filha(Classe_Pai): Filha é uma sub-classe ou uma derivada de Classe_Pai e Classe_Pai é uma superclasse ou base de C É possível adicionar novos métodos e atributos à classe Filha, assim como é possível modificar métodos da Classe_Pai.
21
Herança e Polimorfismo
Caso um método ou um atributo seja redefinido e seja necessário chamar esse método ou atributo da superclasse, colocar essa chamada de forma explicita Construtores e destrutores da classe e da superclasse precisam ser chamados pelo construtor da nova classe
22
Declaração de herança Declaração de novos atributos Redefinição de método Atributo definido na classe pai Uso da função pela definição do pai e do filho
24
Redefinição de atributo
Uso de atributo do pai e do filho
25
Descomentando a linha pai.__init__(self)
26
Construtores e herança
O construtor da classe pai apenas atua sobre os atributos da classe filha Os atributos do pai chamados como pai.atributo não serão impactados pelo construtor do pai Cuidado ao sobrescrever indevidamente atributos
28
Herança de múltiplas classes
Uma classe pode ter vários pais Herda os atributos e métodos de todas as classes pais Se duas classes pais possuírem o mesmo método ou o mesmo atributo, vale o atributo da classe declarada primeiro
30
Exercício Crie uma calculadora, utilizando o esquema de classes a seguir. Calculadora Divisão Soma Subtração Multiplicação
31
Módulo operador Permite reescrever o uso de comparações de objetos, operações lógicas e matemáticas, operações de sequência e testes de tipo abstrato Com isso, é possível reescrever o que deve ser feito quando se deseja somar ou subtrair dois objetos, por exemplo
33
Módulo operador Principais funções
operator.lt(a, b) ou operator.__lt__(a, b) operator.le(a, b) ou operator.__le__(a, b) operator.eq(a, b) ou operator.__eq__(a, b) operator.ne(a, b) ou operator.__ne__(a, b) operator.ge(a, b) ou operator.__ge__(a, b) operator.gt(a, b) ou operator.__gt__(a, b)
34
Módulo operador Principais funções operator.is_(a, b) = Return a is b
operator.abs(obj) operator.__abs__(obj) operator.add(a, b) operator.__add__(a, b) operator.and_(a, b) operator.__and__(a, b) operator.div(a, b) operator.__div__(a, b) operator.mod(a, b) operator.__mod__(a, b)
35
Módulo operador Mais informações em:
36
Exercício Crie uma classe matriz que, com seu construtor, cria uma matriz m x n. Essa classe deve sobrescrever os métodos para adição, subtração, multiplicação e divisão, de tal forma que as operações sejam realizadas nas matrizes de forma adequada.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.