47
Programação Orientada a Objetos Prof. Diemesleno Souza Carvalho | [email protected] | http://www.diemesleno.com.br

Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Embed Size (px)

Citation preview

Page 1: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Programação Orientada a ObjetosProf. Diemesleno Souza Carvalho | [email protected] | http://www.diemesleno.com.br

Page 2: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Programação Orientada a Objetos

Na aula passada, vimos:

Classes Abstratas

Page 3: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Programação Orientada a Objetos

Na aula de hoje, veremos:

Interfaces

Page 4: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Page 5: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Padronização

Page 6: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Padronização

No dia a dia, estamos acostumados a utilizar aparelhos que dependem de energia elétrica.

Esses aparelhos possuem um plugue que deve ser conectado a uma tomada para obter a energia necessária.

Page 7: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Padronização

Diversos empresas fabricaram aparelhos elétricos com plugues.

Analogamente, diversas empresas fabricam tomadas elétricas.

Page 8: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Padronização

Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará.

Teríamos uma infinidade de tipos de pulgões e tomadas que tornaria a utilização dos aparelhos elétricos uma experiência extremamente desagradável.

Page 9: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Padronização

Inclusive, essa falta de padrão pode gerar problemas de segurança aos usuários.

Os formatos dos pulgões ou das tomadas pode aumentar o risco de uma pessoa tomar um choque elétrico.

Page 10: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Padronização

Page 11: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Padronização

Com o intuito de facilitar a utilização dos consumidores e aumentar a segurança dos mesmos, o governo através dos órgãos responsáveis estabelece padrões para os pulgões e tomadas.

Page 12: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Padronização

Esses padrões estabelecem restrições que devem ser respeitadas pelos fabricantes dos aparelhos e das tomadas.

Em diversos contextos, padronizar pode trazer grandes benefícios. Inclusive, no desenvolvimento de aplicações.

Veremos agora como a ideia de padronização pode ser contextualizada nos conceitos de orientação a objetos.

Page 13: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Contratos

Page 14: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Contratos

Em um sistema orientado a objetos, os objetos interagem entre si através de chamadas de métodos (trocas de mensagens).

Page 15: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Contratos

Podemos dizer que os objetos se “encaixam" através dos métodos públicos assim como um plugue se encaixa em uma tomada através dos pinos.

Page 16: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Contratos

Para os objetos de uma aplicação “conversarem" entre si mais facilmente é importante padronizar o conjunto de métodos oferecidos por eles.

Assim como os plugues encaixam nas tomadas mais facilmente graças aos padrões definidos pelo governo.

Page 17: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Contratos

Um padrão é definido através de especificações ou contratos.

Nas aplicações orientadas a objetos, podemos criar um “contrato" para definir um determinado conjunto de métodos que deve ser implementado pelas classes que “assinarem" este contrato.

Page 18: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Contratos

Em orientação a objetos, um contrato é chamado de interface.

Uma interface é composta basicamente por métodos abstratos.

Page 19: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

No sistema do banco, podemos definir uma interface (contrato) para padronizar as assinaturas dos métodos oferecidos pelos objetos que representam as contas do banco.

Page 20: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

No sistema do banco, podemos definir uma interface (contrato) para padronizar as assinaturas dos métodos oferecidos pelos objetos que representam as contas do banco.

Page 21: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

No sistema do banco, podemos definir uma interface (contrato) para padronizar as assinaturas dos métodos oferecidos pelos objetos que representam as contas do banco.

Page 22: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Os métodos de uma inter face não possuem corpo (implementação) pois serão implementados nas classes vinculadas a esta interface.

Page 23: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

TODOS os métodos de uma interface devem ser públicos e abstratos.

Os modificadores public e abstract são opcionais.

Page 24: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

As classes que definem os diversos tipos de contas que existem no banco devem implementar (assinar) a interface Conta.

Page 25: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

As classes que definem os diversos tipos de contas que existem no banco devem implementar (assinar) a interface Conta.

Page 26: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

As classes que definem os diversos tipos de contas que existem no banco devem implementar (assinar) a interface Conta.

Page 27: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

As classes que definem os diversos tipos de contas que existem no banco devem implementar (assinar) a interface Conta.

Page 28: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

As classes concretas que implementam uma interface são obrigadas a possuir uma implementação para cada método declarado na interface. Caso contrário, ocorrerá um erro de compilação.

Page 29: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

A primeira vantagem de utilizar uma interface é a padronização das assinaturas dos métodos oferecidos por um determinado conjunto de classes.

A segunda vantagem é garantir que determinadas classes implementem certos métodos.

Page 30: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interfaces

Se uma classe implementa uma interface, podemos aplicar a ideia do polimorfismo assim como quando aplicamos herança.

Desta forma, outra vantagem da utilização de interfaces é o ganho do polimorfismo.

Page 31: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Page 32: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

As vantagens e desvantagens entre interface e herança, provavelmente, é um dos temas mais discutidos nos blogs, fóruns e revistas que abordam desenvolvimento de software orientado a objetos.

Page 33: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Muitas vezes, os debates sobre esse assunto se estendem mais do que a própria importância desse tópico.

Muitas pessoas se posicionam de forma radical defendendo a utilização de interfaces ao invés de herança em qualquer situação.

Page 34: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Normalmente, esses debates são direcionados na análise do que é melhor para manutenção das aplicações: utilizar interfaces ou aplicar herança.

Page 35: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

A grosso modo, priorizar a utilização de interfaces permite que alterações pontuais em determinados trechos do código fonte sejam feitas mais facilmente pois diminui as ocorrências de efeitos colaterais indesejados no resto da aplicação.

Page 36: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Por outro lado, priorizar a utilização de herança pode diminuir a quantidade de código escrito no início do desenvolvimento de um projeto.

Page 37: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Em Java não existe herança múltipla, e muitas vezes, interfaces são apresentadas como uma alternativa para obter um grau maior de polimorfismo.

Page 38: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Implemente a classe Funcionario com os atributos:

- nome (String);

- dataContratacao (LocalDate);

- salario (double);

getters, setters e construtores.

Page 39: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Implemente a classe Cliente com os atributos:

- nome (String);

- telefone (String);

- codigo (int);

Faça com que toda vez que um cliente for instanciado o código seja incrementado.

getters, setters e construtores.

Page 40: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Crie a interface Acesso com os métodos:

void login();

void logout();

Page 41: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Implemente a classe Segurança que extenda Funcionario;

Page 42: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Implemente a classe PessoaFisica que extenda Cliente;

Page 43: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Implemente a classe Gerente que extenda Funcionario e implemente a interface Acesso;

Page 44: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Implemente a classe Empresa que extenda Cliente e implemente a interface Acesso;

Page 45: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Interface e Herança

Crie um programa e faça testes com as classes criadas.

Page 46: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Programação Orientada a Objetos

Dúvidas?

Page 47: Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta própria o formato dos pulgões ou das tomadas que fabricará. Teríamos uma infinidade

Programação Orientada a ObjetosProf. Diemesleno Souza Carvalho | [email protected] | http://www.diemesleno.com.br