Você está na página 1de 99

Programação Orientada a Objetos

Prof. Jeangrei Veiga


jeangrei@visionnit.com.br
AGENDA

➢Elementos de POO

➢Pilares do POO

➢Vantagens do Uso de POO

➢Outros Conceitos Utilizados em POO

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 2


PROGRAMAÇÃO ORIENTADA A
OBJETOS
ELEMENTOS

Introdução a Programação de Computadores - Prof. Jeangrei Veiga


3
PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO
• A Programação Orientado a Objetos ou POO é o mais
difundido entre todos os paradigmas existentes para
programação.
• POO diz respeito a um padrão de desenvolvimento que é
seguido por muitas linguagens, como C#, Java, Python entre
outros.

Fonte (adaptado): https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 4


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO
A POO é formada por alguns itens, dentre os quais destacamos:
• Classes,
• Objetos,
• Atributos,
• Modificadores de Acesso;
• Métodos:
o Métodos e Atributos Estáticos
o Métodos Getters e Setters
o Método Construtor
o Metodo toString
o Métodos hasCode e equals
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 5
PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO: CLASSE, CLASSES ABSTRATAS E INTERFACES

Interfaces
Classes
• Assinaturas dos métodos
• Atributos
• Métodos
Classes Abstratas
• Atributos
• Métodos
• Assinatura de métodos
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 6
PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE
• As classes de programação são projetos de um objeto,
aonde têm características e comportamentos, ou seja,
permite armazenar propriedades e métodos dentro dela.
• Para construir uma classe é preciso utilizar o pilar da
abstração.
• Uma classe geralmente representa um substantivo, por
exemplo: uma pessoa, um lugar, algo que seja “abstrato”.

Fonte (adaptado): https://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 7


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE
• Uma classe descreve uma família de objetos do mundo
real
• Uma classe é a estrutura para n objetos
• Um objeto é uma instância de uma classe

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 8


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE
• Características das classes:
o Toda classe possui um nome;
o Possuem visibilidade, exemplo: public, private, protected;
o Possuem membros como: Características e Ações;
o Para criar uma classe basta declarar a visibilidade + digitar a palavra reservada
class + NomeDaClasse + abrir e fechar chaves { }.

Fonte (adaptado): https://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 9


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE
• Características:

Nome da classe

Atributos (características)

Métodos (ações)

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 10


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE ABSTRATA
• Pode-se dizer que as classes abstratas servem como
“modelo” para outras classes que dela herdem, não
podendo ser instanciada por si só. Para ter um objeto de
uma classe abstrata é necessário criar uma classe mais
especializada herdando dela e então instanciar essa nova
classe. Os métodos da classe abstrata devem então serem
sobrescritos nas classes filhas.

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 11


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE ABSTRATA
• Por exemplo, é definido que a classe abstrata “Conta” seja
herdada pelas subclasses “ContaPoupanca”, mas ela mesma
nunca pode ser instanciada.

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 12


PROGRAMAÇÃO ORIENTADA A OBJETOS

Atividade 1

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 13


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE ABSTRATA
Atividade 1.a
• Criar um projeto Java chamado JavaApplicationPOO
• Criar uma classe abstrata Conta no pacote br.com.aulajava.abstrato.

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 14


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE ABSTRATA
Atividade 1.a
• Criar uma classe ContaPoupanca no pacote br.com.aulajava.abstrato.
• Criar uma classe ContaTeste no pacote br.com.aulajava.abstrato.

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 15


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE ABSTRATA
Atividade 1.b
• Implementar a classe
abstrata Conta.

Os métodos que são abstratos têm


um comportamento diferente, por
isso não possuem corpo. Ou seja,
as subclasses que estão herdando
precisam desse método mas não
de forma genérica, aonde permite
inserir as particularidades de cada
subclasse.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 16


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE ABSTRATA
Atividade 1.c
• Criar uma classe ContaPoupanca no pacote br.com.aulajava.
• Estender (herda) a classe Conta.
• Reescrever o método abstrato imprimirExtrato() Definindo que a
classe
ContaPoupanca
herda Conta

Annotation para
sobrescrever o
método da
superclasse

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 17


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE ABSTRATA
Atividade 1.d
• Criar uma classe ContaTeste no pacote br.com.aulajava.
• Implementar o teste.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 18


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : INTERFACE
• As interfaces são padrões definidos através de contratos ou
especificações.
• Um contrato define um determinado conjunto de métodos
que serão implementados nas classes que assinarem esse
contrato.
• Uma interface é 100% abstrata, ou seja, os seus métodos são
definidos como abstract, e as variáveis por padrão são
sempre constantes (static final).

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 19


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : INTERFACE
• Uma interface é definida através da palavra reservada
“interface”. Para uma classe implementar uma interface é
usada a palavra “implements”.
• Como a linguagem Java não tem herança múltipla, as
interfaces ajudam nessa questão, pois bem se sabe que uma
classe pode ser herdada apenas uma vez, mas pode
implementar inúmeras interfaces. As classes que forem
implementar uma interface terão de adicionar todos os
métodos da interface ou se transformar em uma classe
abstrata
Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 20


PROGRAMAÇÃO ORIENTADA A OBJETOS

Atividade 2

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 21


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : INTERFACE
Atividade 2.a
• Criar e implementar a interface ContaInter no pacote
br.com.aulajava.inter.

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 22


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : INTERFACE
Atividade 2.b
• Criar a classe ContaCorrenteImpl no pacote br.com.aulajava.inter.
• Criar a classe ContaPoupancaImpl no pacote br.com.aulajava.inter.
• Criar a classe ContaGeradorExtrato no pacote br.com.aulajava.inter.
• Criar a classe ContaInterTeste no pacote br.com.aulajava.inter.

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 23


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : INTERFACE
Atividade 2.c
• Implementar a classe
ContaCorrenteImpl

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 24


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : INTERFACE
Atividade 2.d
• Implementar a classe
ContaPoupancaImpl

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 25


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : INTERFACE
Atividade 2.e
• Implementar a classe GeradorExtrato

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 26


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : INTERFACE
Atividade 2.f
• Implementar a classe
ContaInterTeste

Fonte (adaptado): https://www.devmedia.com.br/polimorfismo-classes-abstratas-e-interfaces-fundamentos-da-poo-em-java/26387

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 27


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : OBJETO
• São instâncias de uma classe.
• Uma classe pode ser instância utilizando o comando new.

Fonte (adaptado): https://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 28


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : ATRIBUTOS
• Valores que caracterizam objetos de uma classe
• Tem um tipo: inteiro, real, booleano, enumerado, string

Fonte (adaptado): https://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 29


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS
• Descrevem o comportamento
da classe, isto é, os serviços
disponibilizados.
• Definem as funcionalidades
dos objetos.
• Um método pode receber n
parâmetros e retornar apenas
um valor.

Fonte (adaptado): https://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 30


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MODIFICADORES DE ACESSO
• A visibilidade define o tipo de acesso aos atributos e métodos, sendo:
• public: que permite que métodos e atributos sejam acessados diretamente de
qualquer classe;
• private: que permite que métodos e atributos sejam acessados apenas dentro
da classe;
• protected: que permite que métodos e atributos sejam acessados apenas
dentro da própria classe e em classes filhas;
• tipo de acesso padrão, que permite que métodos e atributos sejam acessadas
por qualquer classes que esteja no mesmo pacote.

Fonte (adaptado): https://www.devmedia.com.br/principais-conceitos-da-programacao-orientada-a-objetos/32285

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 31


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MODIFICADORES DE ACESSO

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 32


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS E ATRIBUTOS STÁTICOS
• Atributos e métodos declarados como ‘static’ existem antes de existir
qualquer objeto da classe.
• Só existe uma variável estática, independente do número de objetos
criados na classe.
• Atributos e métodos podem ser chamados externamente diretamente
pelo nome da classe.
• Podem também ser chamadas através da referência de um objeto.

Fonte (adaptado): https://www.devmedia.com.br/principais-conceitos-da-programacao-orientada-a-objetos/32285

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 33


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS E ATRIBUTOS STÁTICOS
Não é necessário
instanciar um objeto do
tipo Pessoa

Classe Pessoa Classe PessoaTeste

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 34


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS GETTERS e SETTERS

Métodos Get e Set


São utilizados para acessar ou modificar do
atributo (variável) de um objeto.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 35


PROGRAMAÇÃO ORIENTADA A OBJETOS

Atividade 3

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 36


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : CLASSE
Atividade 3.a
• Adicionar novas classes ao projeto no pacote br.com.aulajava, conforme
estrutura abaixo:

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 37


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS GETTERS e SETTERS
Atividade 3.b
• Na classe Pessoa, adicionar os atributos conforme apresentados na imagem.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 38


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS GETTERS e SETTERS
Atividade 3.c
• Na classe Pessoa, gerar os métodos Getters and Setters

Atalho: Ctrl + 3

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 39


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS GETTERS e SETTERS
Atividade 3.d
• Na classe Pessoa, gerar os métodos Getters and Setters

Definir quais atributos


serão gerados os Getters
and Setters

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 40


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO
Atividade 3.e
• Na classe Pessoa, gerar os métodos Getters and Setters

RESULTADO...

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 41


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO CONSTRUTOR

Métodos Contrutores
São métodos responsáveis por
criar/instanciar a classe definida.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 42


PROGRAMAÇÃO ORIENTADA A OBJETOS

Atividade 4

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 43


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO CONSTRUTOR
Atividade 4.a
• Na classe Pessoa, gerar os métodos Contrutores

Atalho: Ctrl + 3

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 44


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO CONSTRUTOR
Atividade 4.b
• Na classe Pessoa, gerar os métodos Contrutores

Definir quais atributos


serão incluídos no
construtor

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 45


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO CONSTRUTOR
Atividade 4.c
• Na classe Pessoa, gerar os métodos Contrutores

RESULTADO...

Somente com id como


argumento

Todos atributos como


argumento

Sem argumento
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 46
PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO CONSTRUTOR
Atividade 4.d
• Testar na classe PessoaTeste o uso dos métodos construtores.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 47


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO TOSTRING

Método toString
Retorna uma representação String
de um Object.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 48


PROGRAMAÇÃO ORIENTADA A OBJETOS

Atividade 5

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 49


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO TOSTRING
Atividade 5.a
• Testando SEM a implementação do método toString na classe Pessoa.

Retorna a referencia
do objeto

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 50


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO TOSTRING
Atividade 5.b
• Gerando o método toString na classe Pessoa.

Atalho: Ctrl + 3

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 51


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO TOSTRING
Atividade 5.c
• Gerando o método toString na classe Pessoa.

Definir quais
atributos irão
compor o método

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 52


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO TOSTRING
Atividade 5.d
• Gerando o método toString na classe Pessoa.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 53


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODO TOSTRING
Atividade 5.f
• Testando COM a utilização do método toString da classe Pessoa.

String resultando do
método toString

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 54


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS HASHCODE e EQUALS

Métodos hashCode e Equals


• O hashCode é uma ferramenta da JVM usada para
montar a tabela de hash de modo correto. Tabela Hash é
uma tabela onde as informações são armazenadas
conforme um "numero hash" calculado com base nas
propriedades da informação. Isso permite que seja
muito rápido recuperar uma informação na tabela.
• A ideia do equals é garantir que dois objetos são
"significativamente iguais", ou seja, que os objetos tem
uma valor igual dadas as suas propriedades.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 55
PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS HASHCODE e EQUALS
Método hashCode e Equals
• Métodos hashCode e equals andam juntos! Se implementado um DEVE
fazer o mesmo com o outro. Não vai dar erro se não o fizer, mas a chance de
alguma lógica dar errado por conta disso é muito grande.
• A maior vantagem em sobrescrever esses métodos é melhorar a busca
dos objetos.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 56


PROGRAMAÇÃO ORIENTADA A OBJETOS

Atividade 6

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 57


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS HASHCODE e EQUALS
Atividade 6.a
Testando a classe Pessoa
SEM a implementação
dos métodos HashCode e
Equals.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 58


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS HASHCODE e EQUALS
Atividade 6.b
• Gerando método hashCode e Equals

Atalho: Ctrl + 3

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 59


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS HASHCODE e EQUALS
Atividade 6.c
• Gerando método hashCode e Equals

Atalho: Ctrl + 3

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 60


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS HASHCODE e EQUALS
Atividade 6.d
• Gerando método hashCode e Equals

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 61


PROGRAMAÇÃO ORIENTADA A OBJETOS
Elementos de POO : MÉTODOS HASHCODE e EQUALS
Atividade 6.e
• Testando COM a implementação dos métodos HashCode e
Equals na classe Pessoa.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 62


PROGRAMAÇÃO
ORIENTADA A OBJETOS
PILARES DO POO

Introdução a Programação de Computadores - Prof. Jeangrei Veiga


63
PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: PARADIGMA ESTRUTURADO vs POO
• Comparação, no que diz respeito a dados:
• Estruturado - os procedimentos (ou funções) são aplicados globalmente nas
aplicação
• POO – os métodos(procedimentos) são aplicados aos dados de cada objeto

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 64


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO
• Abstração – representação de um objeto
do mundo real.
• Encapsulamento – principal técnica que
define a programação orientada a objetos.
• Herança – o reuso de código é uma das
vantagens da programação OO.
• Polimorfismo – os
métodos(procedimentos) são aplicados aos
dados de cada objeto.

Fonte (adaptado): https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 65


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: ABSTRAÇÃO
• Consiste em um dos pontos mais importantes dentro de
qualquer linguagem Orientada a Objetos.
• Construção de um modelo para representação de uma
realidade.
• Para implementar abstração, utilizamos:
• Classe: como modelo que irá representar os objetos instanciados.
• Objeto: que é a representação abstrata de uma classe.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 66


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: ABSTRAÇÃO
Abstração da classe
Classe

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 67


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: ENCAPSULAMENTO
• É uma das principais técnicas que define a
programação orientada a objetos.
• Se trata de um dos elementos que
adicionam segurança à aplicação em uma
programação orientada a objetos pelo fato
de esconder as propriedades.
• Elimina dependência de implementação
específica por parte do cliente Mudanças
internas não têm impacto sobre os clientes.
Fonte (adaptado): https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 68


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: ENCAPSULAMENTO
• Um objeto pode encapsular seus dados de forma que os outros objetos
não tenham acesso direto aos dados.
• Isso nos da a oportunidade de efetuarmos validações durante as
interações entre os objetos.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 69


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: ENCAPSULAMENTO
• Para encapsularmos um dado, devemos torná-lo privado, isto é, nenhum
objeto poderá ter acesso aos dados diretamente
• Data com encapsulamento:

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 70


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: ENCAPSULAMENTO
• Por padrão, acessamos
/modificamos os valores dos
atributos utilizando os
métodos (Gets e Sets) ou
criamos métodos específicos
para retornar.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 71


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: HERANÇA
• O reuso de código é uma das grandes vantagens da
programação orientada a objetos.
• Muito disso se dá por uma questão que é conhecida como
herança.
• Essa característica otimiza a produção da aplicação em tempo
e linhas de código.

Fonte (adaptado): https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 72


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: HERANÇA
• Para entendermos essa característica, vamos
imaginar uma família: a criança, por exemplo, está
herdando características de seus pais.
• Os pais, por sua vez, herdam algo dos avós, o que
faz com que a criança também o faça, e assim
sucessivamente.
• Na orientação a objetos, a questão é exatamente
assim.

Fonte (adaptado): https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 73


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: HERANÇA
• Exemplo:
• Durante a modelagem de um sistema, identificamos que existem
tanto pessoa física quanto jurídica.
• Temos alguns atributos comum (id, nome, endereco) que pode ser
utilizado tanto pela Física quanto pela Jurídica.
• E temos atributos específicos para pessoa física (cpf e senha) e um
atributo para pessoa jurídica (cnpj).

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 74


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: HERANÇA
Exemplo:
• A solução que promove o
reuso, seria implementar
Herança, conforme
apresentado no diagrama
de classes:

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 75


PROGRAMAÇÃO ORIENTADA A OBJETOS

Atividade 7

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 76


Definindo que a classe
PROGRAMAÇÃO ORIENTADA A OBJETOS PessoaFisica esta
herdando atributos e
Pilares do POO: HERANÇA métodos de Pessoa.
Atividade 7.a
Implementar na
classe PessoaFísica o
código apresentado
na imagem.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 77


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: HERANÇA
Atividade 7.b
Implementar na classe
PessoaJurídica o código
apresentado na imagem.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 78


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: HERANÇA
Atividade 7.d
Na classe PessoaTeste,
adicionar o método
testandoUsoHeranca() e
chamar o mesmo no
método main.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 79


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: POLIMORFISMO
Poli = muitas
Morfo = formas
• Polimorfismo significa "muitas formas", é o termo definido em linguagens
orientadas a objeto, como por exemplo Java, C# e C++, que permite ao
desenvolvedor usar o mesmo elemento de formas diferentes.
• Polimorfismo denota uma situação na qual um objeto pode se comportar
de maneiras diferentes ao receber uma mensagem.

Fonte (adaptado): https://www.devmedia.com.br/uso-de-polimorfismo-em-java/26140

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 80


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: POLIMORFISMO
• No Polimorfismo temos dois tipos:
o Polimorfismo Estático ou Sobrecarga
Se dá quando temos a mesma operação implementada várias vezes na mesma classe.
A escolha de qual operação será chamada depende da assinatura dos métodos
sobrecarregados.
o Polimorfismo Dinâmico ou Sobreposição
O Polimorfismo Dinâmico acontece na herança, quando a subclasse sobrepõe o
método original. Agora o método escolhido se dá em tempo de execução e não mais
em tempo de compilação. A escolha de qual método será chamado depende do tipo
do objeto que recebe a mensagem.

Fonte (adaptado): https://www.devmedia.com.br/uso-de-polimorfismo-em-java/26140

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 81


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: POLIMORFISMO
Estático - Sobrecarga
• Podemos escrever métodos em
classes com o mesmo nome e
diferentes argumentos.

Mesmo nome do método

Argumentos diferentes.
Observe que o tipo é diferente
do método anterior.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 82


PROGRAMAÇÃO ORIENTADA A OBJETOS

Atividade 8

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 83


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: POLIMORFISMO
Estático - Sobrecarga

Atividade 8.a
• Implementar na
classe Calculadora o
código apresentado
na imagem.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 84


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: POLIMORFISMO
Estático - Sobrecarga

Atividade 8.b
• Testar o uso da
calculadora
implementando
método na classe
CalculadoraTeste.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 85


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: POLIMORFISMO
Estático - Sobrecarga

Atividade 8.c
• Testar o uso da calculadora implementando método na
classe CalculadoraTeste.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 86


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO: POLIMORFISMO
Dinâmico - Sobreposição (reescrita de métodos)
• Como um exemplo, temos um objeto genérico “Eletrodoméstico”.
• Esse objeto possui um método, ou ação, “Ligar()”.
• Temos dois objetos, “Televisão” e “Geladeira”, que não irão ser ligados da mesma
forma.
• Assim, precisamos, para cada uma das classes filhas, reescrever o método “Ligar()”.
Eletrodoméstico
ligado
voltagem
ligar()
voltagem()
...

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 87


PROGRAMAÇÃO ORIENTADA A OBJETOS
Pilares do POO
Dinâmico - Sobreposição (reescrita de métodos)
• Em Java, quando herdamos um método, podemos alterar o
comportamento do mesmo(override).

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 88


PROGRAMAÇÃO ORIENTADA A
OBJETOS
VANTAGENS DO USO DE POO

Introdução a Programação de Computadores - Prof. Jeangrei Veiga


89
PROGRAMAÇÃO ORIENTADA A OBJETOS
Vantagens do Uso de POO
• A POO traz uma ideia muito interessante: a representação de cada
elemento em termos de um objeto, ou classe.
• Esse tipo de representação procura aproximar o sistema que está sendo
criado ao que é observado no mundo real, e um objeto contém
características e ações, assim como vemos na realidade.
• Esse tipo de representação traz algumas vantagens muito interessantes
para os desenvolvedores e também para o usuário da aplicação

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 90


PROGRAMAÇÃO ORIENTADA A OBJETOS
Vantagens do Uso de POO
• Principais vantagens:
• Promove a reutilização de código;
• Facilidade na manutenção do código, visto que as representações se aproximam do
mundo real.
• A criação de bibliotecas é outro ponto que é muito mais simples com a orientação a
objetos.
• Entretanto, nem tudo é perfeição na programação orientada a objetos. A execução de
uma aplicação orientada a objetos é mais lenta do que o que vemos na programação
estruturada, por exemplo. Isso acontece devido à complexidade do modelo, que traz
representações na forma de classes.

Fonte (adaptado): https://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 91


PROGRAMAÇÃO ORIENTADA A
OBJETOS
OUTROS CONCEITOS UTILIZADOS EM POO

Introdução a Programação de Computadores - Prof. Jeangrei Veiga


92
PROGRAMAÇÃO ORIENTADA A OBJETOS
Outros Conceitos Utilizados em POO: MODULARIZAÇÃO
• Decomposição de um problema em pequenos
pedaços, para gerenciar complexidade
• Cada conceito independente deve ser
representado por um módulo
• Construção de módulos desacoplados
• Dividir para conquistar...

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 93


PROGRAMAÇÃO ORIENTADA A OBJETOS
Outros Conceitos Utilizados em POO: MODULARIZAÇÃO
• Além das classes, Java provê um recurso
adicional que ajuda a modularidade: o uso
de pacotes.
• Um pacote é um conjunto de classes e outros
pacotes
• Pacotes permitem a criação de espaços de
nomes, além de mecanismos de controle de
acesso.
• O nome do pacote qualifica os nomes de
todas as classes e outros pacotes que o
compõem.
• São tipicamente implementados como
diretórios 94
PROGRAMAÇÃO ORIENTADA A OBJETOS
Outros Conceitos Utilizados em POO: MODULARIZAÇÃO
• Dividir uma
implementação
complexa em
métodos.

95
PROGRAMAÇÃO ORIENTADA A OBJETOS
Outros Conceitos Utilizados em POO: COESÃO E ACOPLAMENTO
• Os conceitos de coesão e acoplamento são geralmente abordados juntos
porque estão correlacionados
• Um baixo grau de coesão geralmente acarreta em um forte acoplamento e
vice-versa
• Possuem um grande impacto na qualidade de sistemas.
• São geralmente desconhecidos ou negligenciados pode desenvolvedores
iniciantes de sistemas orientados a objetos
• Software com alta coesão e fraco acoplamento facilita, entre outras coisas,
a manutenção e o reuso.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 96


PROGRAMAÇÃO ORIENTADA A OBJETOS
Outros Conceitos Utilizados em POO: COESÃO E ACOPLAMENTO
• Coesão
• Classe altamente coesa tem responsabilidades próprias e propósitos claros e bem
definidos.
• Classe baixa coesão tem muitas responsabilidades diferentes e pouco relacionadas.
• Uma classe com baixa coesão, possui responsabilidades que deveriam ser de outras
classes e, assim sendo, deverá ser acessada por essas outras classes para que essas
possam cumprir suas tarefas, fortalecendo assim o acoplamento.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 97


PROGRAMAÇÃO ORIENTADA A OBJETOS
Outros Conceitos Utilizados em POO: COESÃO E ACOPLAMENTO
• Coesão
• Exemplo de reuso da classe Cliente, da locadora de vídeos, em um sistema bancário.

Esse método não faz


sentido quando a
classe Cliente é
reutilizada em um
sistema bancário

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 98


PROGRAMAÇÃO ORIENTADA A OBJETOS
Outros Conceitos Utilizados em POO: COESÃO E ACOPLAMENTO
• Acoplamento
• O acoplamento refere-se ao quanto uma unidade funcional(método ou classe)
depende de outra para funcionar.
• Quanto maior a dependência entre as unidades funcionais, mais fortemente
acopladas elas estão.
• Problemas em sistemas com forte acoplamento:
• Mudanças em uma classe forçam mudanças em classes relacionadas
• Difícil entender as classes isoladamente
• Baixo reuso.

MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 99

Você também pode gostar