27
Interfaces e classes abstratas

Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Embed Size (px)

Citation preview

Page 1: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Interfaces e classes abstratas

Page 2: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Conceitos de Orientação a Objeto

Page 3: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Classes Abstratas

Page 4: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Uma classe abstrata é uma classe que não pode ser instanciada diretamente. Em vez disso, você instancia uma instância de uma subclasse. Normalmente, uma classe abstrata tem uma ou mais operações abstratas . Uma operação abstrata não tem nenhuma implementação; ela é uma declaração pura para que os clientes possam se ligar à classe abstrata.

Livro texto: UML Essencial 3ª edição, pagina 80

Classes Abstratas

Page 5: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Classes AbstratasEm uma hierarquia de classe, quanto mais

alta a classe, mais abstrata é sua definição

Uma classe no topo da hierarquia pode definir apenas o comportamento e atributos que são comuns a todas as classes

Em alguns casos, a classe nem precisa ser instanciada diretamente e cumpre apenas o papel de ser um repositório de comportamentos e atributos em comum

É possível definir classes, métodos e propriedades abstratas em C#

Page 6: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 7: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 8: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 9: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Em Python

exceção NotImplementedError Essa exceção é derivado RuntimeError . Em definidas classes base do usuário, métodos abstratos devem levantar essa exceção quando necessitam de classes derivadas para substituir o método.

Page 10: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

de Adones Cunha <[email protected]>responder a [email protected] [email protected] 22 de agosto de 2010 16:59assunto Re: [pug-pe] Como defino interfaces/classes abstratas em python?

“Acho importante ressaltar que interfaces ou classes abstratas são mais do que uma feature de uma determinada linguagem. São abstrações de responsabilidades que você atribui a uma classe. Esse tipo de "contrato" é implementado mesmo em linguagens que não dão o mesmo tipo de suporte que Java e C# dão.

Claro que em cada linguagem isso é feito de uma maneira diferente. Apenas não devemos confundir padrões de orientação a objetos com palavras reservadas de uma determinada linguagem.

Percebo que se fala muito de ser "pythonico", seguir o "ruby way" ou qualquer coisa desse tipo, ignorando padrões e convenções adotados por comunidades de linguagens diferentes das que usamos. Acho que esses padrões devem ser entendidos e até mesmo usados quando for apropriado.

No caso da implementação de classes abstratas, por exemplo, por mais que não fosse estritamente necessário a versão 2.6 vem com o módulo abc para especificar métodos abstratos. Se vocês lerem a proposta da adição desse método, verão que a motivação está puramente centrada em facilitar o seguimento de padrões de orientação a objeto...”

Page 11: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 12: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Associações de Herança

Exemplo de classe abstrata

Page 13: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Associações de HerançaClasses abstratas

As classes concretas geram instâncias

As classes abstratas NÃO geram instâncias,

apenas simplificam a hierarquia de herança

Definem atributos e métodos para serem herdados

Possui ao menos um método abstrato (que não possui implementação)

Page 14: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

A maneira mais comum de iniciar uma classe ou operação abstrata na UML é colocar o nome em itálico. Você pode tornar propriedades abstratas indicando uma propriedade abstrata ou métodos de acesso. As palavras em itálicos são chatas de escrever em um quadro branco; portanto, você pode usar o rotulo : {abstract}

Livro texto: UML Essencial 3ª edição, pagina 80-81

Page 15: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Interfaces

Page 16: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Interfaces

Uma interface é uma classe que não tem nenhuma implementação; isto é, todas as suas propriedades são abstratas as interfaces correspondem diretamente às interfaces das linguagens C# e Java e são um dia leto comum em outras linguagens tipadas.

Livro texto: UML Essencial 3ª edição, pagina 81

Page 17: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Interfaces

Page 18: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 19: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 20: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 21: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

código a seguir testa as classes

Page 22: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

Notação UML para representar interface

Page 23: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 24: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 25: Interfaces e classes abstratas. Conceitos de Orientação a Objeto
Page 26: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

20/10/10

Page 27: Interfaces e classes abstratas. Conceitos de Orientação a Objeto

20/10/10