interfaces e classes abstratas. conceitos de orientação a objeto
TRANSCRIPT
![Page 1: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/1.jpg)
Interfaces e classes abstratas
![Page 2: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/2.jpg)
Conceitos de Orientação a Objeto
![Page 3: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/3.jpg)
Classes Abstratas
![Page 4: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/6.jpg)
![Page 7: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/7.jpg)
![Page 8: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/8.jpg)
![Page 9: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/11.jpg)
![Page 12: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/12.jpg)
Associações de Herança
Exemplo de classe abstrata
![Page 13: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/15.jpg)
Interfaces
![Page 16: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/17.jpg)
Interfaces
![Page 18: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/18.jpg)
![Page 19: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/19.jpg)
![Page 20: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/20.jpg)
![Page 21: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/21.jpg)
código a seguir testa as classes
![Page 22: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/22.jpg)
Notação UML para representar interface
![Page 23: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/23.jpg)
![Page 24: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/24.jpg)
![Page 25: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/25.jpg)
![Page 26: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/26.jpg)
20/10/10
![Page 27: Interfaces e classes abstratas. Conceitos de Orientação a Objeto](https://reader035.vdocuments.pub/reader035/viewer/2022062404/552fc174497959413d8eef0b/html5/thumbnails/27.jpg)
20/10/10