0% acharam este documento útil (0 voto)
21 visualizações34 páginas

Aula 04

O documento discute conceitos de programação orientada a objetos em Java como atributos e métodos de classe, pacotes, herança, reescrita de métodos e sobrecarga de métodos. Explica como esses conceitos podem ser aplicados em um sistema bancário para modelar classes como Funcionário e Gerente.

Enviado por

serginho12cross
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
21 visualizações34 páginas

Aula 04

O documento discute conceitos de programação orientada a objetos em Java como atributos e métodos de classe, pacotes, herança, reescrita de métodos e sobrecarga de métodos. Explica como esses conceitos podem ser aplicados em um sistema bancário para modelar classes como Funcionário e Gerente.

Enviado por

serginho12cross
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 34

Disciplina: Programação Orientada a Objetos em

Java
Professor: Wolney Henrique Queiroz Freitas
Roteiro de Aula
• Atributos e Métodos de Classe
• Pacotes
• Herança
Atributos e Métodos de Classe
• No sistema do banco, se desejássemos registrar o total de
contas criadas, qual a melhor forma de fazer isso na POO?
Atributos e Métodos de Classe
• Solução: utilizando o recurso de atributos e métodos de classe,
também conhecidos como de atributos/métodos estáticos:
Atributos e Métodos de Classe
• Quando declaramos um atributo ou método como static, ele
passa a não ser mais um atributo de cada objeto, e sim um
atributo da classe, a informação fica guardada pela classe e
não mais de forma individual para cada objeto;

• Uma variável estática é compartilhada por todos os objetos da


classe. Desse maneira, quando uma variável estática muda de
valor através de um objeto, outros objetos enxergam o mesmo
valor.
Atributos e Métodos de Classe
• Questionamento: o código a seguir compila?
Pacotes
• Pacotes agrupam classes de funcionalidades similares ou
relacionada;

• Exemplo:

– O Java possui o pacote java.util que agrupa as classes Date,


SimpleDateFormat e GregorianCalendar

– Todas elas trabalham com datas de formas diferentes.


Pacotes
Pacotes
• Pacotes são relacionados a diretórios no sistema operacional
– Arquivos com o mesmo nome não podem ocupar o mesmo
diretório

Se a classe Cliente se localiza no pacote:

br.com.nomedaempresa.nomedoprojeto.entidades

Significa que está no diretório:

br/com/nomedaempresa/nomedoprojeto/entidades
Pacotes
• A classe Cliente, que se localiza no pacote mencionado
(br.com.nomedaempresa.nomedoprojeto.entidades), deve ser
escrita da seguinte forma:

• A palavra chave package indica qual o pacote/diretório contém esta classe.


– Um pacote pode conter nenhum ou mais subpacotes e/ou classes dentro
dele.
Pacotes
• Nomenclatura dos pacotes

• Para evitar conflitos, o padrão da sun para dar nome aos pacotes é relativo
ao nome do domínio da empresa que desenvolveu a classe:

– Domínio:
• nomedaempresa.com.br
– Pacotes do projeto:
• br.com.nomedaempresa.nomedoprojeto
• br.com.nomedaempresa.nomedoprojeto.subpacote
• br.com.nomedaempresa.nomedoprojeto.subpacote.subpacote2

• Os pacotes só possuem letras minúsculas, não importa quantas palavras


estejam contidas nele.
Pacotes
• Import

• Para usar uma classe do mesmo pacote, basta fazer referência a ela
simplesmente escrevendo o próprio nome da classe:
Pacotes
• Import

• Caso a classe seja utilizada em uma classe que esteja em um pacote


diferente, é necessário importar a classe por meio da palavra chave
import:
Pacotes
• Import

• Também podemos chamar o nome completo da classe (pacote + nome)


para utiliza-la sem o comando import, mas isso normalmente é feito
quando usamos classes que possuem o mesmo nome e estão em pacotes
diferentes;

• O nome completo da classe é conhecido como Fully Qualified Name.


Pacotes
• Import
Pacotes
• Import

• É possível importar um pacote inteiro (todas as classes do pacote, exceto


os subpacotes) através do coringa *:

import java.util.*;

• Importar todas as classes de um pacote não implica em perda de


performance, mas pode trazer problemas com classes de mesmo nome;

• E importar as classes de um em um é considerado boa prática.


Herança
• Imagine o sistema de uma empresa, como no nosso exemplo,
um banco;

• Toda empresa possui funcionários, dessa forma, em nosso


sistema, precisamos modelar a classe Funcionario:
Herança
• Na empresa podem existir outros tipos de funcionários;

• Gerentes por exemplo, possuem os mesmos atributos e


comportamentos de um funcionário comum, mas possuem
seus próprios atributos e comportamentos específicos;

• Como modelamos a classe Gerente?


Herança
• Classe Gerente:
Herança
• E se tivermos dezenas de tipos de funcionários?

• Criamos uma classe para cada um?

• Criamos apenas uma classe Funcionario e colocamos todos os


atributos e comportamentos de todos os funcionários nela?

• Utilizamos um atributo flag para diferenciar cada tipo de


funcionário e utilizar apenas o que é necessário?
Herança
• É necessário centralizar as informações principais do
funcionário em um único lugar;

• Para isso, é utilizado o recurso de Herança, onde uma classe


herda tudo que a outra tem;

• No nosso caso, Gerente precisa ter tudo que um Funcionario


tem, e mais os seus próprios atributos e comportamentos;

• Conseguimos isso por meio da Herança, fazendo de Gerente


uma extensão de Funcionario.
Herança
• Para isso, utilizamos a palavra chave extends:
Herança
• Em todo momento que criarmos um objeto do tipo Gerente,
este objeto possuirá também os atributos definidos na classe
Funcionario, pois um Gerente é um Funcionario:
Herança
• Quando criamos um Gerente, podemos utilizar atributos e
métodos que um gerente herda de Funcionario:

* Prestar a atenção nos modificadores de acesso.


Herança
• Nomenclaturas:

– Classe mãe e classe filha;


– Superclasse e subclasse.

* Em Java, uma classe pode herdar apenas de uma outra classe.


Reescrita de Método
• No Java, quando herdamos uma classe de outra, podemos
mudar o comportamento dos métodos herdados da classe
mãe;

• Isso é conhecido como reescrita de método (sobrescrita,


override).
Reescrita de Método
• Imagine que na nossa empresa, um funcionário ganhe uma
bonificação que corresponde a 10% do seu salário;

• Já os gerentes, ganham uma bonificação de 15% de seu


salário;

• Por meio da reescrita de método, garantimos o


comportamento adequado quando chamarmos o método
getBonificacao() de um Funcionario, e quando o chamarmos
de um Gerente, que é uma especialização de Funcionario.
Reescrita de Método
• Classe Funcionario:
Reescrita de Método
• Classe Gerente:
Reescrita de Método
• Utilizando o método getBonificacao() em Funcionario e em
Gerente:
Reescrita de Método
• E se a bonificação do Gerente for a mesma do funcionário,
adicionando apenas R$ 500,00 a mais?
Reescrita de Método
• A forma adequada, já que se o bonificação do funcionário
mudar, isso deverá se refletir no gerente também:

• A palavra chave super faz referência ao método da superclasse


/ classe mãe.
Sobrecarga de Método
• Ocorre quando temos métodos com o mesmo nome, mas com
assinaturas (parâmetros) levemente diferentes:
Referências:

• Caelum (FJ-11: Java e Orientação a Objetos)

• GAMMA, E, et al, Padrões de projeto: soluções reutilizáveis de


software orientado a objetos. [S.L.]: Bookman, 2000.

Você também pode gostar