Programação Orientada a Objetos
description
Transcript of Programação Orientada a Objetos
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
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.
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.
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.
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.
7
Modelos e Dados
• Os objetos são diferenciadas pelos seus
nomes de referência e não pelo valor de
seus atributos.
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.
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.
10
Abstraindo dados e Comportamentos
11
Abstraindo dados e Comportamentos
12
Definição de uma classe em Java
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!
14
Exemplos da utilização de Tipos• Para definição de Atributos:
15
Exemplos da utilização de Tipos• Para a construção de Métodos:
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.
17
Criando Objetos
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.
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;
}}
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.
21
Exemplo de Interação entre Objetos
Controlede
Estoque
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.
23
Generalização
24
Generalização
• Através da generalização podemos agrupar em uma classe um conjunto de definições comuns a diferentes classes.
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.
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.
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.
28
Herança
29
Assuntos para a próxima Aula
• Modificadores de acesso a Atributos e Métodos
• Polimorfismo
• Classes Abstratas
• Interfaces
• Pacote de Classes
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.