POO - Classes Dilvan Moreira.

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto de Sistemas Diagramas de Atividades Prof. Edjandir Corrêa Costa
Advertisements

CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
TÉCNICO EM INFORMÁTICA Linguagem e Técnica de Programação III PROF. MARCELO N. SANTOS
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
Programação Orientada a Objetos em Python Dilvan Moreira.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
Introdução à Informática com Software Livre 12:58.
Lógica de Programação Aula 25 Prof. Auler Gomes. Introdução - subrotina Muitos problemas grandes ou nem tão grandes, mas de solução mais complexa podem.
1 Aula 06 – Funções Prof. Filipe Mutz Colocar mais exemplos de funções simples no começo.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
1 Programação em C Aula 7. 2 Um lojista atribui o preço de venda dos itens de sua loja com um número racional (uma fração de inteiros). Este comerciante.
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa
Algoritmos e Programação Prof. Marcos Saúde
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal
Polimorfismo e suas aplicações em C++.
Introdução ao Logisim Prof. Alberto F. De Souza LCAD/DI/UFES
Tuplas CHRISTOPHER FREIRE SOUZA EWERTON AMORIM DE OLIVEIRA
Banco de Registradores e ALU
(baseado em slides de ex-alunos)
Introdução OO.
Análise e Projeto de Sistemas II
IP – Listas Prof. Eduardo Falcão.
INE5408 Estruturas de Dados
Modelagem para Otimização:Aula 2
Módulo I Capítulo 2: IDE e Variáveis
Introdução Java.
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
FUNDAMENTO DE PROGRAMAÇÃO
FUNDAMENTO DE PROGRAMAÇÃO
Behaviour && attribute
Criação e manipulação de objetos
Introdução à programação orientada por objetos
Testes e Qualidade de Software
POO - Herança Dilvan Moreira.
Departamento de Estatística e Informática
Programação Orientada a Objetos em Python
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
XVIII Escola de Verão IAG/USP Funções e Objetos Marcelo Bianchi
INTRODUÇÃO A EDUCAÇÃO À DISTÂNCIA - EAD Módulo I
IP – Repetições for Prof. Eduardo Falcão.
Programação Orientada a Objetos
Python: Módulos Claudio Esperança.
4 CONCEITOS BÁSICOS EM POO
Modelagem de Banco de Dados através do ERwin
BANCO DE DADOS I.
Projeto Orientada a Objetos
Introdução a Arquitetura, HTML e CSS
Aula 22 Modularização 22/10/08.
Rosemary Silveira Filgueiras Melo
Prof. Elisson de Andrade
3.2 Sobrecarga de Métodos (Overloading)
Programação Orientada a Objetos
3.1.7 Variáveis de Classe e Instância
Programação Orientada a Objetos
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
Professora Roberta Bonamichi Guidi Garcia
Prof.: Bruno Rafael de Oliveira Rodrigues
Introdução ao Logisim Prof. Alberto F. De Souza LCAD/DI/UFES
Rosemary Silveira Filgueiras Melo
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Tipos Primitivos de Dados
JUROS & FLUXO DE CAIXA.
Python: Exceções, Iteradores e Geradores
Algoritmos.
Compilação de Linguagens OO
A interface java.util.List
Python: Funções Claudio Esperança.
Sobre a linguagem Criado em 1995 por Brendan Eich da Netscape nomeada inicialmente de Mocha, posteriormente LiveScript e por fim JavaScript. É um linguagem.
Transcrição da apresentação:

POO - Classes Dilvan Moreira

Lembrando:

Objetivos Aprender a criar Classes em Python. Leitura: do livro “Introduction to Programming using Python” - Pasteur Institute Cap. 18

DNA Vamos descrever o DNA como um objeto: Atributos são representados pelos retângulos internos:

Métodos DNA até o momento foi representado como um registro de dados. Podemos usar uma lista ou dicionário: >>> seq_record = {’name’: ’seq1’, ’seq’: ’aaacaacttcggtata’} >>> seq_record[’name’] ’seq1’

Métodos Um objeto é mais que um registro de valores. Ele pode fazer coisas, saber coisas ou ter um comportamento associado. Os comportamentos são associados a funções, associadas ao objeto, e comumente chamamos de métodos.

Métodos Nossa classe DNA pode executar operações: >>> s1.gc() Ex. pode traduzir sua seqüência ou calcular a porcentagem GC por uma chamada de função: >>> s1.gc() 0.26

Método Os métodos disponíveis são aspectos importantes de um objeto. A figura abaixo demonstra os métodos associados ao objeto DNA: Atenção: Um objeto é componente constituído de um grupo de valores e operações sobre esses valores!

Criando Objetos DNA Instanciando o objeto DNA: Ao chamar a DNA(), retorna uma instancia da classe DNA na variável s1. Nós podemos também fornecer mais informações a instanciação: >>> s2 = DNA(’seq2’, ’acaagatgcgcccagtt’)

Criando Objetos DNA Alterando a forma de informar os paramentos: >>> s2 = DNA(name=’seq2’, seq=’acaagatccattgtcccccggcc’) Após a instância do objeto, podemos usar os métodos disponíveis dessa classe. >>> s2.gc() 0.66

Criando Objetos DNA O método setname permite mudar o valor de um atributo de nosso objeto: >>> s2.setname(’SonicHedgeHog’) >>> s2.name ’SonicHedgeHog’

Definindo nossa Classe DNA class DNA: def __init__(self, name=None, seq=None): self.name = name self.seq = lower(seq) def gc(self): count_c = self.seq.count(’c’) count_g = self.seq.count(’g’) return float(count_c + count_g) / len(self.seq) def setname(self, name):

Definindo nossa Classe DNA O parâmetro self representa o próprio objeto. Usamos self sempre que queremos nos referenciar ao objeto. Veja o código do método gc: def gc(self): count_c = self.seq.count(’c’) count_g = self.seq.count(’g’) return float(count_c + count_g) / len(self.seq)

Definindo nossa Classe DNA Definições de métodos devem ter um primeiro parâmetro self. Isso é necessário para acessarmos as variáveis e métodos do objeto dentro do método. Mas não é necessário especificar o argumento self na chamada do método, o python faz automaticamente isso.

Definindo nossa Classe DNA Exemplo: >>> s2.gc() 0.66 É equivalente: >>> DNA.gc(s2)

Definindo nossa Classe DNA Veja o código do método __init__: def __init__(self, name=None, seq=None): self.name = name self.seq = lower(seq) Ele é chamado na instanciação da classe, exemplo: >>> s2 = DNA(name=’seq2’, seq=’acaagatgccattgtcccccg’)

Definindo nossa Classe DNA Para alterar um valor de um atributo, usamos um método, veja o setname abaixo: def setname(self, name): self.name = name

Um objeto para Proteína Programas são feitos da combinação de vários objetos. A classe proteína, por exemplo, pode ser criado a partir de uma seqüência inicial de amino-ácidos, ou calculados pelo método translate do DNA. O objeto proteina poderia ter outros metodos, como hydrophobicity ou molecular weight.

Um objeto para Proteína Diagrama da classe proteína.

Um objeto para Proteína class Protein: weight = {"A":71.08,"C":103.14 ... default_prosite_file = ’prosite.dat’} def __init__(self, name=None, seq=None): self.name = name self.seq = upper(seq) def mw(self): molW = 0 for aa in self.seq: molW += Protein.weight[aa] #add water at the end of protein molW += 18.02 #convert in Kda molW = molW / 1000 return molW def setname(self, name):

Um objeto para Proteína weight e default_prosite_file são variáveis que serão usadas em todas as instancias. No objeto Proteína, podemos colocar um objeto DNA. Isso vai ajudar na analisar da seqüência da Proteína mais tarde.

Um objeto para Proteína Novo diagrama para Proteína:

Um objeto para Proteína Novo método __init__ da classe Protein : def __init__(self, name=None, seq=None, dna=None): self.name = name self.seq = upper(seq) self.dna = dna

Namespaces Classes e instâncias têm os seus próprios namespaces. Que é acessível com o operador ponto ('.'). Esses namespaces são implementados por dicionários. Um para cada instância, e outra para a classe.

Namespaces 1º - Atributos de Instâncias : >>> s1.name ’seq1’ Como vimos, uma classe pode definir atributos para as suas instâncias. Por exemplo, os atributos de s1, como o nome, estão disponíveis diretamente através do operador de ponto. >>> s1.name ’seq1’

Namespaces O dicionário das instância de atributos também é acessível por sua variável __dict__, ou pela função vars() >>> s1.__dict__ {’seq: ’aaacaacttcgtaagtata’, ’name’: ’seq1’} >>> vars(s1) {’seq’: ’aaacaacttcgtaagtata’, ’name’: ’seq1’}

Namespaces O comando dir() lista mais atributos. >>> dir(s1) [’__doc__’, ’__init__’, ’__module__’, ’gc’, ’translate’, ’name’, ’seq’] Variáves + métodos

Namespaces É possível adicionar novos atributos a uma instância Como o atributo annotation a seguir: >>> s1.annotation = ’an annotation’ >>> s1.__dict__ {’seq’: ’aaacaacttcgtaagtata’, ’name’:’seq1’, ’annotation’: ’an annotation’} Atenção: Só a instância s1 tem esse novo atributo!

Namespaces Adicionando atributos a objetos on-the-fly não é possível na maioria das linguagens de programação orientada a objetos! Atenção: Isso deve ser usado com cuidado, é perigoso: Ter instâncias da mesma classe que têm funcionalidade diferentes. Considerando que a lista de atributos definem uma funcionalidade.

Namespaces Atributos de Classes: Na classe Protein: Também é possível definir atributos no nível de classe. Esses atributos serão compartilhadas por todas as instâncias. Na classe Protein: class Protein: weight = {"A":71.08,"C":103.14 ... default_prosite_file = ’prosite.dat’} def __init__(self, name=None, seq=None): self.name = name self.seq = upper(seq) ...

Namespaces Para acessar estes atributos é usado o ponto. >>> Protein.default_prosite_file ’prosite.dat’ >>> Protein.weight {"A":71.08,"C":103.14 , ... ,"H":137.15} Você também pode acessar este atributo através desse exemplo: >>> p1.default_prosite_file

Namespaces Não se pode alterar o atributo, como no exemplo: >>> p1.default_prosite_file = ’myfile.dat’ >>> Protein.default_prosite_file ’prosite.dat’

Perguntas?