Programação Orientada a Objetos
description
Transcript of Programação Orientada a Objetos
![Page 2: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/2.jpg)
2
Conteúdos Abordados
− Programação Orientada a Objetos− Como modelar com Orientação a Objetos(OO)− Modelos, seus dados e comportamentos− Definição de classes− Definição de tipos primitivos e não primitivos− Construtores− Criação de Objetos− Sobrecarga− Interação entre Objetos− Generalização− Especialização− Herança
![Page 3: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/3.jpg)
3
O que é POO?
• Programação Orientada a Objetos é uma metodologia de desenvolvimento de software.
• Sua principal vantagem é a proximidade com a forma que os seres humanos visualizam e entendem o mundo ao seu redor.
• Tem como principal objetivo facilitar a modelagem e desenvolvimento de sistemas, através da interação entre objetos.
![Page 4: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/4.jpg)
4
Como podemos modelar com OO?• Vamos imaginar a seguinte situação:
− A esposa de um jovem casal, se encontra no segundo mês de gravidez. No meio da noite, a grávida acorda com uma azia terrível. Como é natural, a mulher pede que seu marido providencie um antiácido para ela.
![Page 5: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/5.jpg)
5
Como podemos modelar com OO?• Como poderíamos representar esse
problema sobre a ótica dos Objetos?
− o objeto marido recebe uma mensagem do objeto esposa.
− O objeto marido responde a essa mensagem mediante a uma ação: buscar antiácido.
− A esposa não tem que dizer a ele onde ele deve procurar, é responsabilidade do marido a ação de procurar o antiácido.
− Ao objeto esposa basta ter emitido uma mensagem ao marido.
![Page 6: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/6.jpg)
6
Modelos e Dados
• Os modelos na POO são chamados de classes.
• As classes especificam as características dos
objetos materializados a partir delas.
• Tais características são chamados de
atributos.
• Ao ser materializado um objeto dizemos que
criamos uma Instância da classe.
• Instâncias distintas de uma mesma classe
possuem os mesmos atributos, entretanto
com possíveis diferenças de valores.
![Page 7: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/7.jpg)
7
Modelos e Dados
• Os objetos são diferenciadas pelos seus
nomes de referência e não pelo valor de
seus atributos.
![Page 8: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/8.jpg)
8
Modelos e Comportamento
• Em muitas situações os problemas do mundo
real ao serem modelados para o mundo
computacional, necessitam ser fragmentados
de acordo com as ações que esse modelo
especificará para a representação do
problema.
• Objetos possuem comportamentos os quais
são representados nas classes através dos
métodos.
![Page 9: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/9.jpg)
9
Modelos e Comportamento
• A fragmentação permite que o problema seja
representado por um conjunto de métodos,
os quais representam as ações do modelo.
• Vantagens de ter vários métodos em um
modelo:− facilidade em escrever o modelo;− utilizações repetidas de um mesmo método;− facilidade em dar manutenção;− utilização de parametrizações;− utilização adequada de recursos.
![Page 10: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/10.jpg)
10
Abstraindo dados e Comportamentos
![Page 11: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/11.jpg)
11
Abstraindo dados e Comportamentos
![Page 12: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/12.jpg)
12
Definição de uma classe em Java
![Page 13: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/13.jpg)
13
Definição de Tipos
• Os tipos aparecem tanto nas declarações de
atributos como na declaração de métodos.
• Os tipos podem ser primitivos: − int, float, char, double, byte, boolean.
• Os tipos podem ser Não primitivos (nomes de
outras classes previamente definidas)− String, Mamiferos
Classes também são tipos!
![Page 14: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/14.jpg)
14
Exemplos da utilização de Tipos• Para definição de Atributos:
![Page 15: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/15.jpg)
15
Exemplos da utilização de Tipos• Para a construção de Métodos:
![Page 16: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/16.jpg)
16
Construtores
• Um construtor é um método que possui o mesmo nome da classe onde ele está declarado.
• Seu objetivo é inicializar o estado interno de um objeto (seus atributos).
• O construtor não possui retorno de nenhum tipo, nem mesmo void.
• Um construtor sempre é chamado através do operador new no momento de se instanciar um objeto.
![Page 17: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/17.jpg)
17
Criando Objetos
![Page 18: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/18.jpg)
18
Sobrecarga de Métodos e Construtores• Diferentes métodos podem ter o mesmo
nome, porém com listas de parâmetros (assinaturas) diferentes.
• Esse conceito é chamado de sobrecarga.
• Este fato muitas vezes é necessário para modelarmos comportamentos semanticamente semelhantes, porém alimentados com dados diferentes.
![Page 19: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/19.jpg)
19
Exemplo de Sobrecargaclass soma { int calculo(int numero1, int numero2) { int resposta; resposta = numero1 + numero2;
return resposta; }
int[] calculo(int vetor1[], int vetor2[]) { int[] resposta = new int[vetor1.length]; int i;
for (i=0; i < vetor1.length; i++) { resposta[i] = vetor1[i] + vetor2[i]; } return resposta;
}}
![Page 20: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/20.jpg)
20
Interação entre Objetos
• Modelagens complexas necessitam da interação entre vários objetos para a solução do problema.
• A idéia é chamada de “Dividir para conquistar”.
• Em POO, podemos ter várias classes com objetivos específicos, as quais ao interagirem através de seus objetos solucionam problemas mais abrangente.
![Page 21: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/21.jpg)
21
Exemplo de Interação entre Objetos
Controlede
Estoque
![Page 22: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/22.jpg)
22
Generalização
• Dona Cicinha quer evoluir o sistema para controlar o faturamento.
• Para isso será necessário controlar os quitutes vendidos.• Ao ser criadas as classes quitutes e
bebidas, podemos notar que alguns atributos e métodos são iguais.
• A criação de uma classe chamada produtos poderia agrupar as semelhanças.
![Page 23: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/23.jpg)
23
Generalização
![Page 24: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/24.jpg)
24
Generalização
• Através da generalização podemos agrupar em uma classe um conjunto de definições comuns a diferentes classes.
![Page 25: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/25.jpg)
25
Especialização
• A especialização é o caminho inverso da generalização. Partindo de um modelo mais genérico podemos acrescentar novas características e comportamentos aos já existentes.
![Page 26: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/26.jpg)
26
Herança
• Herança é um dos mecanismos fundamentais de relação entre classes na orientação a objetos.
• Ela relaciona uma classe pai (superclasse) com outras classes filhas (subclasses) de forma hierárquica.
• As subclasses herdam todos os atributos e métodos da superclasse e podem criar os seus próprios métodos e atributos.
![Page 27: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/27.jpg)
27
Herança
• A definição de herança em uma classe ocorre na linguagem Java através da palavra “extends” colocada logo após o nome da classe que herda de outra.
• Uma subclasse para referenciar os métodos ou atributos da superclasse utilizamos a palavra reservada super.
![Page 28: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/28.jpg)
28
Herança
![Page 29: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/29.jpg)
29
Assuntos para a próxima Aula
• Modificadores de acesso a Atributos e Métodos
• Polimorfismo
• Classes Abstratas
• Interfaces
• Pacote de Classes
![Page 30: Programação Orientada a Objetos](https://reader030.fdocuments.net/reader030/viewer/2022033022/5681593f550346895dc67ed9/html5/thumbnails/30.jpg)
30
Bibliografia
• BARNES, D e Kölling, M. Programação Orientada a Objetos com Java. 2a Edição: Editora Pearson Education. 2007.
• DEITEL, H. M. e DEITEL, P. J. Java como Programar. 4a Edição: Editora Bookman. 2003.
• SANTOS, R. Introdução à Programação Orientada a Objetos Usando Java. 1a Edição: Editora Campus. 2003.