Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta...
-
Upload
nguyenmien -
Category
Documents
-
view
216 -
download
0
Transcript of Programação Orientada a Objetos - diemesleno.com.br · Suponha que cada empresa decida por conta...
![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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/1.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/2.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/3.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/4.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/5.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/6.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/7.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/8.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/9.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/10.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/11.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/12.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/13.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/14.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/15.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/16.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/17.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/18.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/19.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/20.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/21.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/22.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/23.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/24.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/25.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/26.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/27.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/28.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/29.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/30.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/31.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/32.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/33.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/34.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/35.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/36.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/37.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/38.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/39.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/40.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/41.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/42.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/43.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/44.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/45.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/46.jpg)
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](https://reader033.fdocumentos.tips/reader033/viewer/2022052715/5c012d8109d3f252338c36e7/html5/thumbnails/47.jpg)
Programação Orientada a ObjetosProf. Diemesleno Souza Carvalho | [email protected] | http://www.diemesleno.com.br