
























Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Classe e POO em python
Tipologia: Notas de estudo
1 / 32
Esta página não é visível na pré-visualização
Não perca as partes importantes!

























Um objeto é uma unidade de software que encapsula algoritmos e os dados sobre o qual os algoritmos atuam
Polimorfismo Abstração Herança
Em particular, não precisamos conhecer a implementação dos seus métodos
Assim, podemos atribuir objetos ou passar objetos como argumentos, sem necessariamente saber como o objeto está implementado
Isso permite o reuso de software já que objetos especializados herdam dos objetos genéricos uma série de atributos comuns
Um polígono é uma forma geométrica, Portanto, herda todas as características de formas geometricas Deve suportar também características específicas como número de lados e comprimento de arestas
class nome : var = valor ... var = valor def metodo (self , ... arg): ... def metodo (self , ... arg): ... As variáveis e os métodos são escritos precedidos pelo nome da classe e por um ponto (.) Assim, uma variavel v definida numa classe c é escrita c. v Os métodos sempre têm self como primeiro argumento self se refere a uma instância da classe
class C: a = 2 b = 3 def f(self,x): return C.a*x+C.b
C.a 2 C.b 3 obj=C() obj.f(7) 17
class C: def init(self,a=2,b=3): self.a = a self.b = b def f(self,x): return self.a*x+self.b
obj1 = C() obj1.init(2,3) obj2 = C() obj2.init(8,1) obj1.f(7) 17 obj2.f(7) 57
class C: a = 1 def f(self,x): self.a += x
c = C() c.f(2) c.a 3 C.a 1
class C: def init(self,a=2,b=3): self.a = a self.b = b def f(self,x): return self.a*x+self.b
obj1 = C() obj2 = C(8,1) obj1.f(7) 17 obj2.f(7) 57
Para fazer uma classe C herdar de outra B , basta declarar C como: class C ( B ):
... Diz-se que C é sub-classe (ou derivada ) de B ou que B é super-classe (ou base ) de C
C herda todos os atributos de B
A especialização de C se dá acrescentando-se novos atributos (variáveis e métodos) ou alterando-se métodos
Se, ao escrever um método de C, precisamos invocar um método m de B , pode-se usar a notação B.m para diferenciar de m simplesmente, que se refere a C.m
Permite inicializar os elementos de C não específicos a D Usa-se a notação C.init(self, ...)
class C: obj1.f(7) 17 >>> obj2.f(7) 57 ## Atributos herdados da classe ## Se uma classe define atributos de classe, as ## instâncias herdam esses atributos da classe como ## atributos de instância ## Ex.: >>> class C: a = 1 def f(self,x): self.a += x >>> c = C() >>> c.f(2) >>> c.a 3 >>> C.a 1 ## Exemplo >>> class C: def init(self,a=2,b=3): self.a = a self.b = b def f(self,x): return self.a*x+self.b >>> obj1 = C() >>> obj2 = C(8,1) >>> obj1.f(7) 17 >>> obj2.f(7) 57 ## Especialização de classes Para fazer uma classe C herdar de outra B , basta declarar C como: class C ( B ): ... Diz-se que C é sub-classe (ou derivada ) de B ou que B é super-classe (ou base ) de C C herda todos os atributos de B A especialização de C se dá acrescentando-se novos atributos (variáveis e métodos) ou alterando-se métodos Se, ao escrever um método de C, precisamos invocar um método m de B , pode-se usar a notação B.m para diferenciar de m simplesmente, que se refere a C.m ## Construtores de classes derivadas ## O construtor de uma classe D derivada de C precisa ## chamar o construtor de C Permite inicializar os elementos de C não específicos a D Usa-se a notação C.init(self, ...) ## Construtores de classes derivadas ## Exemplo: >>> class C: ... def init(self): ... self.x = 1 ... class D(C): ... def init(self): ... C.init(self) ... self.y = 2 ... d=D() d.x 1 d.y 2
class C(A,B): ...
No exemplo acima, se A e B possuem um atributo x, então C.x se refere ao que foi herdado de A
class C: def init(self,a,b): self.a, self.b = a,b def f(self,x): return self.a*x+self.b class D: def init(self,legenda): self.legenda = legenda def escreve(self,valor): print self.legenda,'=',valor class E(C,D): def init(self,legenda,a,b): C.init(self,a,b) D.init(self,legenda) def escreve(self,x): D.escreve(self,self.f(x)) e = E("f",10,3) e.escreve(4) f = 43