A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação Orientada a Objetos JAVA - NETBEANS. Agenda  Programação Orientada a Objeto (POO)  Conceitos sobre POO  Pilares da POO  Objeto  Classe.

Apresentações semelhantes


Apresentação em tema: "Programação Orientada a Objetos JAVA - NETBEANS. Agenda  Programação Orientada a Objeto (POO)  Conceitos sobre POO  Pilares da POO  Objeto  Classe."— Transcrição da apresentação:

1 Programação Orientada a Objetos JAVA - NETBEANS

2 Agenda  Programação Orientada a Objeto (POO)  Conceitos sobre POO  Pilares da POO  Objeto  Classe  Construtores  Troca de Mensagens  Encapsulamento

3 Programação Orientada a Objetos (POO)  A Programação Orientada a Objetos (POO) é um paradigma de programação de computadores que usa os conceitos de Objetos e Classes como elementos centrais para representar e processar dados usados nos programas.  Você sabe o que um Paradigma?  Segundo o dicionário Houaiss, paradigma significa modelo, padrão, exemplo.

4 Programação Orientada a Objetos (POO)  Os conceitos da programação orientada a objetos (POO) surgiram no final da década de 1960, com a linguagem Simula-68.  Posteriormente amadurecidos e aprimorados durante a década de 1970 pela linguagem de programação Smalltalk.  A popularização da POO só se deu ao longo da década de 80 e 90, com as linguagens C++ e Java.

5 Programação Orientada a Objetos (POO)  Um dos principais pesquisadores que introduziu os conceitos de POO, foi o cientista Alan Kay da Xerox, um dos criadores da linguagem Smalltalk.  Durante suas pesquisas, Alan desenvolveu a ideia de que poderíamos construir um programa usando conceitos e abstrações do mundo real, como objetos, troca de mensagens.

6 Agenda  Programação Orientada a Objeto (POO)  Conceitos sobre POO  Pilares da POO  Objeto  Classe  Construtores  Troca de Mensagens  Encapsulamento

7 Conceitos da Programação Orientada a Objetos  A Programação Orientada a Objetos está sedimentada sobre quatro pilares derivados do princípio da abstração, são eles:  Encapsulamento,  Herança,  Composição e  Polimorfismo.

8 Conceitos da Programação Orientada a Objetos  O princípio da abstração é a capacidade de abstrair a complexidade de um sistema e se concentrar em apenas partes desse sistema.  Exemplo: um médico torna-se um especialista em algum órgão do corpo (exemplo, o coração). Ele abstrai sem desconsiderar as influências dos outros órgãos e foca apenas sua atenção nesse órgão.

9 Objetos  Na programação OO, objetos são usados para representar entidades do mundo real ou computacional.  Se observarmos ao nosso redor, veremos várias entidades ou abstrações as quais podem ser representadas como objetos no nosso programa.  As pessoas e seus carros podem ser vistas como objetos.

10 Objetos  Os objetos possuem:  Características pelas quais os identificamos e  Finalidades para as quais os utilizamos.

11 Objetos: Atributos  Características são tipicamente chamadas de atributos.  O objeto Pessoa possui RG, nome, data de nascimento, etc.  O objeto Carro possui tipo, cor, quantidade de portas.

12 Objetos: Métodos  Objetos podem também ter comportamentos associados.  Um objeto do tipo Pessoa pode andar, correr ou dirigir carros.  Um objeto do tipo Carro pode ligar, desligar, acelerar, frear.

13 Objetos  Na POO os objetos possuem características e comportamentos.  As características também podem ser chamadas de dados ou atributos.  Enquanto os comportamentos também podem ser chamados de operações ou métodos.

14 Objetos

15 Classes  Carros sempre possuirão os atributos tipo, cor e número de portas.  Pessoas sempre possuirão nome, data de nascimento e, possivelmente, um RG.

16 Classes  A modelagem e programação de um conjunto de objetos que possuem características (atributos) e comportamentos (métodos) comuns é feita na POO usando o conceito de Classe.  Cada classe funciona no fundo como um molde para a criação de um dado objeto.  Os objetos são vistos como representações concretas (instâncias) das classes.

17 Classes  A classe define que objetos devem ter tipo, cor, placa e número de portas, mas não indica explicitamente quais são seus valores.

18 Classes  Dois diferentes carros foram criados tomando como base a estrutura da classe.

19 A classe é o modelo ou molde de construção de objetos. O modelo define as características e comportamentos que os objetos irão possuir. A classe é abstrata (não existe concretamente). Criação de Classes  A classe não serve para organizar no sentido de guardar os objetos, ela serve de modelo de construção.

20 Criação de Classes  Vamos criar a classe Carro em Java. 1. Crie um nome Projeto chamado de POO. 2. Adicione uma nova classe java denominada Carro, clicando com o botão direito do mouse em cima do pacote poo. Palavra obrigatória para indicar a criação de uma classe. Nome da classe escolhido pelo programador. Por padrão, utiliza-se sempre a primeira letra maiúscula. Conjunto de características dos objetos da Classe Carro.

21 Criação de Classes  Perceba que não inserimos no código nada sobre o comportamento dos carros, como andar para frente ou para trás, virar a esquerda/direita, frear etc.  Vamos criar a classe Pessoa em Java. 1. Adicione uma nova classe java denominada Pessoa, clicando com o botão direito do mouse em cima do pacote poo.

22 Adicionando Comportamento  Os objetos das classes Carro e Pessoa, precisam não só de suas características, mas também de ações possíveis de serem executadas.  Um carro precisa oferecer funções para que as pessoas os manobrem.  E pessoas, por sua vez, precisam desempenhar suas atividades, como andar, correr, estudar etc.

23 Adicionando Comportamento  Observe que adicionamos novas linhas ao código, agora com dois métodos setCor(String cor) e getCor().  Esses métodos servem, respectivamente, para alterar o valor do atributo “cor” e retornar o valor desse atributo.

24 Adicionando Comportamento

25

26 Atividade  Faça o mesmo para a classe Pessoa.

27 Criando um Objeto  Vá para o programa principal, onde existe o método main.

28 Criando um Objeto  Vamos criar um objeto da classe Carro, no mundo da programação orientada a objetos chamamos isso de instanciação, ou seja, criaremos uma instância da classe Carro.  Um objeto ou instância é criado através do operador new.

29 Criando um Objeto  Toda a manipulação e consulta dos atributos do objeto serão feitas através de sua referência, ou seja, da variável.  Define-se os atributos do carro utilizando os métodos da classe Carro.  Utiliza-se o conjunto de métodos setAtributo(valor).

30 Criando um Objeto  Exibindo cada atributo com seu respectivo método getAtributo().

31 Criando um Objeto - MAIN

32 Atividades 1. Instancie um objeto da classe Pessoa. 2. Atribuia aos métodos set’s seus valores. 3. Imprima os valores através dos métodos get’s.

33 Métodos Construtores  E se eu quiser, no momento da criação do objeto, passar valores para alguns de seus atributos, como placa e cor, por exemplo? É possível?  É sim!!  Para isso, define-se um tipo especial de método chamado construtor.  E como seu próprio nome diz, ele constrói e objeto e nesse instante pode definir quaisquer atributos que desejarmos.

34 Métodos Construtores  O método construtor é aquele chamado em um objeto, quando ele é criado.  new Carro();  Se a classe não tiver método construtor? O objeto ainda pode ser criado usando a instrução new.  Definindo os construtores, pode-se estabelecer valores iniciais para os atributos do objeto.

35 Métodos Construtores  Após os atributos da classe Carro, adicione o construtor abaixo.  Observe que esse método possui o mesmo nome da Classe Carro e não possui tipo de retorno.

36 Métodos Construtores  Existem duas maneiras de se construir um objeto derivado da classe Carro, ou do tipo Carro:  Com ou Sem inicialização dos valores dos atributos.

37 Métodos Construtores  Observe na classe Main.java as duas formas de construir objetos:  As formas de acessos são as mesmas usando os métodos get’s. Os métodos set’s também funcionam para alterar os atributos em qualquer um dos casos.

38 Atividades  Crie os construtores da classe Pessoa.  Instancie dois objetos, cada um com um construtor diferente.  Acesse os dois objetos, imprimindo seus valores.

39 Troca de Mensagens  Os objetos estão relacionados a outros, pois nenhum faz tudo sozinho, nem mesmo meu computador de última geração, pois sem a tomada na parede ele não é nada.  Os objetos precisam se “comunicar”, ou seja, um objeto aciona um método de outro.  Essa comunicação é realizada através do mecanismo de troca de mensagem.

40 Troca de Mensagens  Vejamos outro exemplo:  Esse código escrito dentro da classe Main envia uma mensagem para definir um atributo e outra para recuperar a placa do carro.  Em Java, a troca de mensagem representa:  A mudança ou leitura do estado interno do objeto através da alteração de um de seus atributos; ou  A chamada a um dos métodos do objeto que representam seu comportamento e as tarefas que são capazes de desempenhar.

41 Troca de Mensagens  Bem, quando relacionamos coisas no mundo real fazemos isso de forma natural e espontânea.  Vejamos, quantas pessoas cabem em um automóvel?  Na maioria deles, a lotação é de no máximo 5 pessoas, incluindo seu condutor. Mas uma pessoa pode estar em quantos automóveis ao mesmo tempo? Até onde as leis da física permitem, só em um, de cada vez!  Chamamos esse relacionamento de um-para-muitos, um (automóvel) para muitos (pessoas).  Em outras situações, vemos que um marido é para uma, e somente uma, esposa, e a recíproca é verdadeira, temos então um relacionamento um- para-um.  A outra combinação possível seria muitos-para-muitos, no exemplo computador e impressora, o computador pode imprimir em várias impressoras e cada uma dessas podem receber documentos dos outros computadores do escritório.

42 Troca de Mensagens  Vamos ligar a classe Carro à classe Pessoa, fazendo com que uma pessoa possua um carro e esse carro só possa pertencer a uma única pessoa.  É o que chamados de relação um-para-um.  A classe Carro precisa “saber que pertence” a alguém.  Iremos adicionar um atributo chamado dono, que é do tipo Pessoa.

43 Troca de Mensagens  E os respectivos métodos get e set:

44 Troca de Mensagens  Vamos utilizar esse relacionamento no exemplo seguinte:

45 Trabalho  Faça um sistema de Biblioteca  Livros  Atributos: Título, Autores, Área, Editora, Ano, Edição, Número de Folhas.  Métodos: set’s e get’s  Usuários:  Atributos: Nome, Idade, Sexo, Telefone.  Métodos: set’s e get’s  Empréstimos:  Atributos: Data do Empréstimo, Hora do Empréstimo, Livro(Relacionamento) e Usuário (relacionamento)  Insira os objetos do programa principal e imprima o empréstimo.  Não se esquece do construtor.

46 Troca de Mensagens  Os sistemas OO precisam de métodos mais complexos, que verifiquem a validade dos dados, realizem atualizações em outras entidades, pesquisem em banco de dados, escrevam em arquivos de log, atualizem objetos da interface etc. 1. Colocando um pouco de complexidade do mundo real no programa?! 1. Adicionar os métodos ligar(), desligar(), acelerar(), frear() à classe Carro.

47 Troca de Mensagens

48 2. Adicione à classe Carro, ainda, um atributo câmbio que indicará qual a “marcha” que o carro está em um dado momento, para tanto, tal atributo irá guardar um valor inteiro de 0 (zero) a 5 (cinco).  0 – neutro (ponto morto)  1 a 5 – marchas

49 Troca de Mensagens 3. Colocar uma referência do automóvel dentro da classe Pessoa.

50 Troca de Mensagens 4. Adicione outros métodos à classe Pessoa para interagir (trocar mensagens) com seu carro.

51 Troca de Mensagens 5) Vamos ao Main! Nosso programa precisa:

52 Troca de Mensagens

53  O que podemos ver é que o método Main envia uma mensagem para o objeto Pessoa, que, por sua vez, manda ou repassa essa mensagem para seu objeto da classe Carro, que executa a ação final desejada, que consiste em guiá-lo.

54 Continuação do Trabalho  Adicione na classe Livro:  Um atributo booleano denominado emprestimo.  Crie os métodos is e set para este atributo.  No construtor da classe, atribua o valor false para o atributo acima.  Crie os métodos abrir e fechar livro, escrevendo uma mensagem que o livro está aberto ou fechado para leitura.  Adicione na classe Usuário:  Um método lerLivro(), do qual enviará uma mensagem na tela dizendo o usuário está lendo o livro.  Adicione na classe Emprestimo:  Um método denominado devolverLivro, do qual fará com que o atributo emprestimo da classe livro seja true, e escreva uma mensagem na tela de livro devolvido.  Adicione na classe principal:  Acesse os métodos criados acima (abrir, ler, fechar e devolverLivro) através da classe Empréstimo.

55 Continuação do Trabalho  Saída

56 Agenda  Programação Orientada a Objeto (POO)  Conceitos sobre POO  Pilares da POO  Objeto  Classe  Construtores  Troca de Mensagens  Pilares da POO  Encapsulamento

57 Encapsulamento  Encapsulamento se deriva de cápsula que nos lembra qualquer forma pequena que protege algo em seu interior, como um medicamento,.  O encapsulamento, ajuda a desenvolver programas com maior qualidade e flexibilidade para mudanças futuras.

58 Encapsulamento  Encapsulamento é a característica da OO capaz de ocultar partes (dados e detalhes) de implementação interna de classes do mundo exterior.

59 Encapsulamento  Graças ao encapsulamento, podemos ver as classes apenas pelos serviços (métodos) que elas devem oferecer para quem as utiliza.  Não visualizamos, nesse caso, de que forma (como) o serviço (método) está implementado internamente na classe.  No fundo, o encapsulamento da classe acaba definindo um contrato que determina o que o mundo exterior pode fazer com objetos daquela classe.

60 Encapsulamento  Na Figura, podemos ver que um objeto que possui a característica de encapsulamento fica protegido por uma cápsula.  Essa cápsula, que chamamos de interface, serve para ocultar e proteger de outros objetos, os detalhes de implementação daquele objeto.  Dessa maneira, o objeto só disponibiliza, através da interface, as funcionalidades que ele deseja receber através de solicitações de outros objetos.

61 Encapsulamento  Exemplo:  Objeto Automóvel disponibiliza para um objeto Pessoa a direção como parte da sua interface.  Através da direção, a Pessoa solicita ao Automóvel esse serviço, sem saber COMO serão feitos ou estão implementados.  Apenas o Automóvel sabe que mecanismos serão acionados para atender a solicitação da Pessoa.

62 Encapsulamento  Nesse caso, aplica-se a característica de encapsulamento ao objeto Automóvel, pois oculta-se do objeto Pessoa os detalhes da implementação dos serviços oferecidos pelo Automóvel.  Como isso acontece na prática?  Por meio dos Modificadores de Acesso da linguagem Java.

63 Encapsulamento  Modificadores de Acesso:  Os Modificadores de Acesso são palavras chave ou reservadas da linguagem Java cuja utilidade é permitir ou proibir o acesso aos atributos e/ou métodos das classes. public: o atributo ou método pode ser acessado por qualquer outra classe. private: o atributo ou método pode ser acessado apenas por métodos da mesma classe. protected : funciona como o private exceto que as classes filhas ou derivadas também terão acesso ao atributo ou método. Package ou Friendly: Os atributos e métodos são chamados de Package ou Friendly, quando não possuem modificadores, ou seja, são os atributos e métodos declarados sem modificadores. Isso significa que podem ser acessados por todas as classes pertencentes a um mesmo pacote.

64 Encapsulamento  Exemplo:  Agenda: guardar uma data e uma anotação importante a ser lembrada. 1. Crie um novo projeto denominado Agenda. 1. Não crie a classe principal 2. Clique com o botão direito do mouse em cima do Pacote Padrão e adicione um nova classe Java denominada Agenda. 3. Adicione o código:

65 Encapsulamento  Crie um método “anote” que anotará a descrição do dia.

66 Encapsulamento  É importante também verificar se a data da anotação é uma data válida.  Se for uma data válida registra-se a anotação, caso contrário a anotação recebe uma informação de data inválida

67

68 Encapsulamento  Onde está o encapsulamento?  Calma! O objetivo desse exemplo é mostrar a fragilidade do código que não usa o encapsulamento.

69 Encapsulamento  Para isso, criaremos dois objetos com a classe Agenda: agenda1 e agenda2.  agenda1 – uma anotação com uma data válida, e  agenda2 – uma data inválida.  Finalmente, consultaremos os dados dos atributos de cada objeto, em especial a anotação que foi registrada, utilizando o método mostraAnotacao().

70 Encapsulamento 1. Clique com o botão direito do mouse em cima do Pacote Padrão e adicione um nova classe Java denominada Main. 2. Adicione o método main para que possamos executar a aplicação:

71 Encapsulamento  Adicione o código abaixo para testarmos a fragilidade do código que não usa o encapsulamento.  Resultado:

72 Encapsulamento  Veja o que acontece se fizéssemos uma pequena modificação no método main(). Adicione o código:  Resultado:

73 Encapsulamento  Veja que sua Agenda permitiu que você inserisse uma data inválida para uma anotação. Isso significa que seu código está susceptível a falhas.  Qual é a solução?  Encapsulamento.

74 Encapsulamento  Codificar em OO usando o encapsulamento nada mais é que aplicar os modificadores de acesso às classes.

75 Encapsulamento Sem Modificadores de Acesso

76 Encapsulamento  A classe Agenda não usa nenhum dos modificadores de acesso de forma explícita.  Implicitamente ela é Package ou Friendly.  O modificador de acesso Package permite que classes do mesmo pacote acessem atributos ou métodos que estejam com tal modificador.  Considerando que a classe Principal está no mesmo pacote (veja sobre pacotes na classificação de Package), então, ele tem acesso aos atributos e métodos da classe Agenda.

77 Encapsulamento  Quando a classe Principal teve acesso aos atributos da classe Agenda? O método main da classe principal está acessando os atributos, dia, mes, ano e anotacao da classe Agenda. E está modificando informações sem passar pelo teste de validade da data.

78 Encapsulamento  Aplicando o encapsulamento:  Private para os atributos e o método validaData(),  Public para os métodos anote() e mostraAnotacao().

79

80 Encapsulamento  Agora, o compilador já não aceita usar os comandos abaixo. Isso causaria erro! Ou seja, os atributos da classe Agenda agora são privados apenas para a uso da própria classe Agenda.

81 Encapsulamento  Com essa modificação, só é possível inserir uma anotação na classe Agenda usando o método anote().  O método anote() garante que a data inserida para a anotação será validada com o método validaData(), que também é privado ao uso apenas da classe Agenda.

82 Atividades 1. Aborde encapsulamento na classe Carro e Pessoa. Tente acessar os atributos na classe principal. 2. Aborde encapsulamento na classe Emprestimo, Livro e Usuário. 3. Sem consultar o material responda: O que você entende por encapsulamento? Para que serve? E como aplicar? 4. Antes de rever os conceitos, para que servem os modificadores de acesso: public private package 1. Desenvolva um programa: 1. Cria uma classe candidato com nome e a quantidade de votos. 2. Implemente o método para acrescentar voto, onde somará 1 ao atributo quantidade de votos. 3. Implemente o métodos gets e sets. 4. Inclua o encapsulamento de tal forma que a votação só será realizada por meio do método acrescentar voto. 5. Teste o programa, usando o programa principal.

83 Agenda  Programação Orientada a Objeto (POO)  Conceitos sobre POO  Pilares da POO  Objeto  Classe  Construtores  Troca de Mensagens  Pilares da POO  Encapsulamento  Composição

84 Composição ou Agregação  Compor, juntar, reunir, formar, constituir... Essas ações é chamada Composição.  Possibilita a reutilização de código e  Um objeto mais complexo pode ser composto de partes mais simples.

85 Composição ou Agregação  Composição ou Agregação é um mecanismo de reaproveitamento (reutilização) de classes utilizado pela POO para aumentar a produtividade e a qualidade no desenvolvimento de software.

86 Composição ou Agregação  Reaproveitamento ou reutilização de classes: usar uma ou várias classes para compor outra classe.  Aumento de produtividade: não é necessário reescrever código de determinadas classes, se já existe algum classe com atributos e comportamento similar.  Composição: é possível também aumentar a qualidade dos sistemas gerados, porque há a possibilidade de reutilizar classes que já foram usadas em outros sistemas, e, portanto, já foram testadas e têm chances de conter menos erros.

87 Composição ou Agregação  Vejamos um exemplo: um carro é um objeto COMPOSTO por vários outros objetos. Ele é composto pelos objetos motor, pneus, direção, faróis etc.

88 Composição ou Agregação  Você pode criar um objeto a partir de vários outros objetos.  Veja o computador que você está usando, ele é um objeto composto por outros objetos: teclado, monitor, placa mãe, memória, mouse etc.

89 Composição ou Agregação  Exemplo Prático: Dado uma classe Automóvel que é composta pelas classes Direção e Motor.

90 Composição ou Agregação 1. Crie um novo projeto denominado Composicao 2. Crie as classes, com os respectivos atributos e métodos: 1. Direcao: 1. Atributos: cor, tamanhoRaio e kitMultimida do tipo booleano; 2. Métodos: get’s, set’s e is; 3. Construtores; 4. Implemente o encapsulamento. 2. Motor: 1. Atributos: potencia, combustivel e chassi; 2. Métodos: get’s, set’s; 3. Construtores; 4. Implemente o encapsulamento. 3. Automovel 1. Atributos: motor e direcao de acordo com seus respectivos tipo; 2. Métodos: get’s, set’s; 3. Construtores; 4. Implemente o encapsulamento. 4. Main 5. Objetos: Automovel 6. Setar os valores dos atributos 7. Imprimir os valores dos atributos

91 Observação  Construtor  Atribuir valores constantes aos atributos nos construtores das classes Motor e Direcao.  Imprimir os valores do atributos após a instaciação do objeto automovel no método main.  Modificadores de Acesso  Alterar o modificar de acesso dos atributos das classes Automovel, acessá-los no método main.

92 Atividades 1. Sem consultar o material, responda: 1. O que você entendeu por Composição? 2. Quais são as vantagens de se usar a Composição? 3. Como você omitiria a presença da composição para quem irá criar os objetos das classes que usa a composição? 4. Crie as classes apresentadas no diagrama abaixo e aplique a Composição para a classe Pessoa, que além de possuir um atributo Nome será composta pelas classes Data, Endereço e Contato para os atributos dataNasc, endereco e contato, respectivamente.

93 Atividades

94 Agenda  Programação Orientada a Objeto (POO)  Conceitos sobre POO  Pilares da POO  Objeto  Classe  Construtores  Troca de Mensagens  Pilares da POO  Encapsulamento  Composição  Herança

95 Herança

96  Herança é o mecanismo que permite a uma classe herdar todos os atributos e métodos de outra classe.

97 Herança  Como exemplo, observe a Figura a seguir.

98 Herança  Considere capacidade como um atributo da classe Transporte, que indica a quantidade de pessoas que o transporte em questão pode transportar.  número de rodas como um atributo da classe Terrestre.  cor, número de portas e placa como atributos da classe Automóvel.  A Figura apresenta um exemplo de Herança, onde:  As classes Aquático, Terrestre e Aéreo herdam da classe Transporte.  A classe Barco herda da classe Aquático.  A classe Automóvel herda de Terrestre.  E, finalmente, Avião de Aéreo.

99 Herança  Toda classe que herda de uma outra, acaba herdando também os seus atributos e métodos.  Por exemplo:  A classe Transporte possui um atributo chamado capacidade.  A classe Aquático, como ela herda de Transporte, pode-se dizer que também possui o atributo capacidade.  E Barco, como herda de Aquático, também possui o atributo capacidade.

100 Herança  Usando a mesma lógica, responda: Quantos e quais são os atributos da classe Terrestre? E da classe Automóvel? Respondendo: a classe Terrestre possui dois atributos: capacidade (de Transporte) e número de rodas. A classe Automóvel possui cinco atributos: capacidade (de Transporte), número de rodas (de Terrestre), cor, número de portas e placa.

101 Herança  Quanto mais alta classe na hierarquia, mais ela tende a ser abstrata, ou menos definida, menos atributos e métodos.  Isso garante que a classe tenha mais chance de ser reusada por outras classes.  Entendeu? Não.  Suponha que a classe Transporte, além do atributo capacidade, possuísse também o atributo número de rodas.  Nesse caso, não seria interessante nem faria sentido para a classe Aquático herdar os atributos de Transporte.

102 Especialização e Generalização  Especialização e Generalização: O mesmo que mais classes mais Abstratas e Concretas.  Na Generalização, há classes mais genéricas e abstratas disponíveis, as quais podem ser usadas para outras descenderem delas.  Já a Especialização, há classes que estão numa posição inferior na hierarquia possuem estado e comportamento mais especializados.

103 Especialização e Generalização  Classes em posição inferior como Automóvel, representam especializações de classes em posição superior (Transporte, Terrestre).  Classes em posição superior como Transporte, representam generalizações de classes em posições inferiores (Automóvel, Terrestre).

104 Herança Múltipla e Simples  Herança Múltipla: é a capacidade de uma classe possuir mais de uma superclasse e herdar os atributos e métodos de todas as superclasses.  Para simular a herança múltipla em Java, usa-se Interfaces.  Herança Simples: Cada classe pode ter apenas uma superclasse.  Na linguagem Java usa-se a palavra reservada extends para declarar que uma classe é herdeira de outra.

105 Herança  Curiosidades:  Todas as classes em Java descende de uma classe, chamada Object.  Quando uma classe usa a relação de Herança, essa classe possui um relacionamento chamado “É um”.  Exemplo: Automóvel “é um” transporte Terrestre, assim como que Terrestre “é um” Transporte. 

106 Herança em Java  Em Java a palavra-chave extends é usada para indicar que uma dada classe herda de outra.  Crie um projeto Java denominado Herança.  Crie as classes abaixo.

107 Herança em Java

108

109

110

111 Atividade  Crie uma classe chamada ExercicioHeranca.  Implemente as classes com os métodos  Animal  CalculadoraSimples (somar, subtrair)  float somar(float a, float b);  float subtrair(float a, float b);  CalculadoraComplexa (raiz)  float raiz(float a);

112 Atividade 1. Das opções abaixo, qual se refere ao conceito de Herança? a) Herança é a capacidade de reaproveitar outras classes para compor uma nova classe. b) Herança é a característica da OO de ocultar partes da implementação interna de classes do mundo exterior. c) Herança é a habilidade de objetos de classes diferentes responderem a mesma mensagem de diferentes maneiras. d) Herança é o mecanismo que permite a uma classe herdar todos os atributos e métodos de outra classe.

113 Herança II  Objetivos  Ao final desta aula, você deve ser capaz de:  relacionar a herança e o modificador de acesso protected;  entender o uso da palavra-chave super no contexto de herança entre classes;  saber como funciona a herança para os métodos, durante a execução do programa.

114 Herança II  A Herança e o Protected  Tipos de modificadores de acesso: public, private e protected.  Esse último, ficou para explicar melhor.  O modificador protected determina que apenas as classes filhas de uma determinada classe poderão ter acesso aos atributos e métodos declarados com esse modificador.

115 Herança II  Veja o exemplo abaixo: Substituição do private pelo pretected

116 Herança II  Adicione um método na classe Automóvel.  Esse método faz acesso aos atributos protected capacidade e numRodas, definidos nas classes Transporte e Terrestre, respectivamente.  Observe que tais atributos são acessados e usados livremente no método imprimeDadosAutomovel().

117 Herança II

118  O programa abaixo mostra uma tentativa frustrada de acesso aos atributos capacidade e numRodas herdados pela classe Automóvel, dentro de um método main().

119 Herança II Calma! Se não deu erro, tente colocar em pacotes diferentes. Veja os próximos slides.

120 Herança II  O seu não deu erro? Coloque em pacotes diferentes.

121 Herança II  A Herança e o super  A palavra super refere-se à classe classe mãe ou super-classe.  Ela é usada nos construtores.

122 Herança II

123

124  O super é usado para chamar o método construtor da classe mãe.  Na classe Transporte, como a classe mãe de Transporte é Object, o super não tem parâmetro.  Já no construtor da classe Terrestre, o super tem como parâmetro a capacidade exigida no construtor da classe Transporte. Portanto, a chamada a super na classe Terrestre é no fundo a chamada ao construtor de Transporte.  Já o construtor da classe Automóvel, o super tem como parâmetros a capacidade e o numRodas exigidos pelo construtor da classe Terrestre.

125 Herança II  No programa principal você pode chamar pelo método construtor das duas formas. 1. Como feito anteriormente 2. Com os valores sendo iniciados ao intanciar o objeto Automovel.

126 Herança II  Um pergunta: será que a Herança também permite o uso de outros métodos diferentes dos get e set para as classes descendentes?  A resposta é sim, como vimos anteriormente no método imprimeDadosAutomovel().  Se um método estiver com modificador private, esse método não estará acessível para classes filhas.  Se um método for public ou protected, estarão acessíveis para classes filhas.

127 Atividades 1. Crie um pacote denominado Heranca2. 2. Acrescente as classes utilizando o princípio da Herança, obedecendo à hierarquia da figura abaixo:. 1. Obs: Substitua na figura o tipo Calendar por String 3. Acrescente encapsulamento do tipo protected nos atributos das classes mãe. 4. Acrescente os métodos gets e sets. 5. Acrescente os construtores com a palavra chave super.

128 Atividades

129 a) Insira os seguintes métodos, para apresentar os valores dos atributos das classes, mostrarChefe() e mostrarAluno(), respectivamente, às classes ChefeDepartamento e Aluno. a) Para imprimir os atributos, use o método System.out.println() em cada um dos métodos. b) Crie uma classe TestaTudo com um método main(), que instancia um objeto das classes ChefeDepartamento e Aluno e exibe os valores dos atributos através de chamadas aos métodos mostrarChefe() e mostrarAluno().

130 Polimorfismo  O poliformismo deriva da palavra polimorfo, que significa multiforme, ou que pode variar a forma.  Para a POO, polimorfismo é a habilidade de objetos de classes diferentes responderem a mesma mensagem de diferentes maneiras. Ou seja, várias formas de responder à mesma mensagem.

131 Polimorfismo

132  Vejamos o seguinte exemplo:  um dono de uma fábrica de brinquedos solicitou que seus engenheiros criassem um mesmo controle remoto para todos os brinquedos de sua fábrica.  A única restrição era que cada brinquedo atendesse aos comandos específicos definidos pelo controle.

133 Polimorfismo

134  Assim quando o brinquedo recebe o sinal MOVER, ele se move de acordo com a sua função.  Para o avião, mover significa VOAR;  Para o barco significa NAVEGAR, e  Para o automóvel CORRER.  Observe que os brinquedos respondem ao mesmo sinal de formas diferentes.

135 Polimorfismo  O Polimorfismo permite que diferentes objetos (avião, barco, automóvel) respondam uma mesma mensagem (mover) de formas diferentes (voar, navegar e correr).

136 Polimorfismo  Tipos de polimorfismo  O Polimorfismo pode ser classificado de três maneiras:  Polimorfismo de Sobrecarga  Polimorfismo de Sobreposição  Polimorfismo de Inclusão

137 Polimorfismo  Polimorfismo de Sobrecarga  Permite que um método de determinado nome tenha comportamentos distintos, em função de diferentes parâmetros que ele recebe. Cada método difere no número e no tipo de parâmetros.

138 Polimorfismo  Veja no exemplo uma aplicação prática do uso do polimorfismo de sobrecarga.

139 Polimorfismo  A sobrecarga e os construtores  O polimorfismo de sobrecarga normalmente acontece sobre os métodos construtores, pois é comum para uma classe ter várias maneiras de instanciá-la.  O programa abaixo ilustra um exemplo de polimorfismo de sobrecarga nos construtores da classe Pessoa.

140 Polimorfismo  Observe que são declarados 3 construtores e todos eles têm o mesmo nome da classe. Entretanto, cada um deles recebe um número diferente de parâmetros.

141 Polimorfismo  Polimorfismo de Sobreposição  É a redefinição de métodos em classes descendentes. Ou seja, um método de uma classe filha com o mesmo nome de um método de uma classe mãe irá sobrepor esse último.  Vejamos o exemplo.

142 Polimorfismo  O polimorfismo de sobreposição em Java  Considere que a classe Brinquedo possui como descendentes as classes Carro, Avião e Barco, conforme ilustra a Figura.  Observe que as classes filhas sobrepõem o método mover() da classe Brinquedo.

143 Polimorfismo  Vejamos então como ficam essas classes codificadas em Java.

144 Polimorfismo  Considerando o método mover() de cada classe filha, como poderíamos chamar o método mover() do brinquedo (classe) correto? Ou seja, como o ControleRemoto saberá que método mover ele deve chamar se ele tem disponível três tipos de mover diferentes (um para cada brinquedo)?

145 Polimorfismo  Vamos ver inicialmente como fica a implementação do Controle Remoto.

146 Polimorfismo  O programa mostra como fica a classe Principal que instancia um objeto controleRemoto e um objeto carro para ser controlado automaticamente.  Foi criado um brinquedo do tipo Carro, e o ControleRemoto.  Foi enviado o objeto carro para o objeto controleRemoto através da chamada ao seu construtor.  Assim, quando acionado o comando controleRemoto.mover(), será chamado o método mover() do carro.

147 Atividade  Implemente as classes da hierarquia da classe Figura Geometrica mostrada na Figura abaixo em Java, aplicando o polimorfismo de sobreposição para o método desenha().  Em seguida, crie uma classe Principal com um método main que cria um objeto de cada uma das classes e chama seus respectivos métodos desenha().

148 Polimorfismo  Polimorfismo de Inclusão  No exemplo visto anteriormente, em que na classe Principal, foi criado um objeto do tipo Carro e outro do tipo ControleRemoto, utilizou-se o polimorfismo de inclusão.  Isso foi feito substituindo a classe Brinquedo pela classe Carro dentro da classe ControleRemoto.

149 Polimorfismo  Veja a Figura.

150 Polimorfismo  Observe que a classe ControleRemoto está relacionada com a classe Brinquedo, pois possui um atributo do tipo Brinquedo.  Mas, como as classes Carro, Avião e Barco são do tipo Brinquedo, elas podem substituir a classe Brinquedo em qualquer método que a utilize.  A capacidade do objeto (brinquedo) do tipo Brinquedo da classe ControleRemoto de receber qualquer um objeto de subclasses da classe Brinquedo é que caracteriza o polimorfismo de inclusão.

151 Trabalho  Faça um exemplo prático para apresentar os seguintes conceitos em Java.  Static  Interface, Implements e Abstract

152 Referências  BARNES, David J.; KÖLLING Michael.Programação orientada a objetos com Java. São Paulo: Editora Pearson Prentice Hall,  DEITEL, H. M.; DEITEL, P. J. Java como programar. Porto Alegre: Bookman,  LEMAY, Laura. Aprenda Java em 21 dias. Tradução: Daniel Vieira. Rio de Janeiro: Campos,  SANTOS, Rafael. Introdução à programação orientada a objetos usando Java. São Paulo: Editora Campus,  SINTES, Anthony. Aprenda a programar orientada a objeto em 21 dias. Tradução: João Eduardo Nóbrega Tortello. São Paulo: Pearson Education do Brasil,  THE JAVA: tutorials. [Tutorial Oficial Java]. Disponível em:. Acesso em: 13 maio 

153 Referências  THE JAVA: tutorials. [Tutorial Oficial Java]. Disponível em:. Acesso em: 13 maio  About the Java Technology. Disponível em:. Acesso em: 13 maio  WIKIPÉDIA. Máquina virtual Java. Disponível em:. Acesso em: 13 maio  DEITEL, H. M.; DEITEL, P. J. Java como programar. Porto Alegre: Bookman,  SANTOS, Rafael. Introdução à programação orientada a objetos usando Java. Rio de Janeiro: Editora Campus, 2003.


Carregar ppt "Programação Orientada a Objetos JAVA - NETBEANS. Agenda  Programação Orientada a Objeto (POO)  Conceitos sobre POO  Pilares da POO  Objeto  Classe."

Apresentações semelhantes


Anúncios Google