Escolar Documentos
Profissional Documentos
Cultura Documentos
Classes e Objetos
Agenda
1 Introdução
Agenda
1 Introdução
Agenda
1 Introdução
3 Classes
Agenda
1 Introdução
3 Classes
4 Objetos
Agenda
1 Introdução
3 Classes
4 Objetos
Introdução
Introdução
Origens
Evolução
Consolidação
Popularização
Nos anos 1990, a POO tornou-se dominante. A introdução do Java em 1995 foi
um marco significativo, promovendo a portabilidade (escreva uma vez, execute
em qualquer lugar) e segurança como características centrais.
Java foi projetada para ser fácil de usar e acessível a um público mais amplo
de desenvolvedores, o que ajudou a acelerar a adoção da POO.
Outras linguagens, como C#, Python e Ruby, também adotaram a POO e con-
tribuíram para sua popularização.
Atualidade
Classes
Definição
Classes
Definição
Definição
Classes, no contexto da programação orientada a objetos (POO), são estrutu-
ras que combinam estado (dados) e comportamento (métodos ou funções) em
uma única entidade. Elas servem como "moldes"ou "modelos"a partir dos quais
os objetos são criados. Uma classe define as propriedades (atributos) que os
objetos baseados nela possuirão e os métodos (ações) que esses objetos po-
dem executar.
Classes
Componentes Principais de uma Classe
• Atributos:
• Métodos:
Classes
Componentes Principais de uma Classe
Continuação:
• Destrutor:
Classes
Características das Classes
Classes
Características das Classes
Continuação:
Exemplos
Classes
Exemplos
p u b l i c c l a s s Carro {
/ / Atributos
p r i v a t e S t r i n g marca ;
p r i v a t e S t r i n g modelo ;
p r i v a t e i n t ano ;
p r i v a t e double v e l o c i d a d e = 0 ;
/ / Construtor
p u b l i c Carro ( S t r i n g marca , S t r i n g modelo , i n t ano ) {
t h i s . marca = marca ;
t h i s . modelo = modelo ;
t h i s . ano = ano ;
}
...
/ / Metodos
p u b l i c double g e t V e l o c i d a d e ( ) {
return t h i s . velocidade ;
}
p u b l i c v o i d a c e l e r a r ( double a c e le r a c a o ) {
t h i s . velocidade = t h i s . velocidade + ( aceleracao * 3 . 6 ) ;
}
}
Prof. Fabrício Barros Gonçalves Classes e Objetos 16
Introdução Breve Histórico da POO Classes Objetos Membros de uma Classe
Exemplos
Classes
Exemplos
c l a s s Carro {
/ / Atributos
S t r i n g _marca = " " ;
S t r i n g _modelo = " " ;
i n t _ano = 0 ;
double _ v e l o c i d a d e = 0 ;
/ / Construtor
Carro ( S t r i n g marca , S t r i n g modelo , i n t ano ) {
t h i s . marca = marca ;
t h i s . modelo = modelo ;
t h i s . ano = ano ;
}
...
/ / Metodos
f l o a t get velocidade {
return t h i s . velocidade ;
}
void a c e l e r a r ( f l o a t aceleracao ) {
t h i s . velocidade = t h i s . velocidade + ( aceleracao * 3 . 6 ) ;
}
}
Prof. Fabrício Barros Gonçalves Classes e Objetos 17
Introdução Breve Histórico da POO Classes Objetos Membros de uma Classe
Objetos
Definição
Objetos
Definição
Definição
Objetos são instâncias de classes, que representam a unidade fundamental da
programação orientada a objetos (POO). Eles encapsulam dados e comporta-
mentos relacionados a esses dados através de atributos e métodos, respecti-
vamente. Um objeto é uma concretização de uma classe; enquanto uma classe
oferece a estrutura e define o que os objetos dela derivados devem ter e como
devem se comportar, um objeto é uma entidade individual construída com base
nessa estrutura.
Instanciação de Classes
Objetos
Instanciação de Classes
Definição
A instanciação de uma classe é o processo de criação de um objeto a par-
tir de uma classe. Em programação orientada a objetos (POO), uma classe
serve como um modelo ou blueprint para objetos; ela define um conjunto de
propriedades (atributos) e comportamentos (métodos) que os objetos criados
a partir dela possuirão. Quando você instancia uma classe, está essencial-
mente criando uma instância concreta desse modelo, com seu próprio espaço
de memória reservado para os atributos definidos pela classe e a capacidade
de executar os métodos definidos.
Criando Objetos
Objetos
Criando Objetos
i m p o r t s t a t i c org . j u n i t . j u p i t e r . a p i . A s s e r t i o n s . * ;
i m p o r t org . j u n i t . j u p i t e r . a p i . Test ;
c l a s s CarroTest {
@Test
void test_criando_objeto ( ) {
/ / Criacao de um o b j e t o da c l a s s e Carro
Carro c a r r o = new Carro ( "GM" , " Cruze " , 2023 ) ;
/ / Testando se a v a r i a v e l c a r r o p o s s u i uma r e f e r e n c i a de o b j e t o ;
assertNotNull ( carro ) ;
/ / Testando se o a t r i b u t o v e l o c i d a d e f o i i n i c i a l i z a d o c o r r e t a m e n t e ;
assertEquals ( 0 , carro . getVelocidade ( ) ) ;
/ / Invocando o metodo a c e l e r a r para aumentar a v e l o c i d a d e de c a r r o
com a c e le r a c a o de 5 m/ s .
carro . acelerar ( 5) ;
/ / Testando se a v e l o c i d a d e do c a r r o aumentou para 18 km / h .
a s s e r t E q u a l s ( 18 , c a r r o . g e t V e l o c i d a d e ( ) ) ;
}
Prof. Fabrício Barros Gonçalves Classes e Objetos 21
Introdução Breve Histórico da POO Classes Objetos Membros de uma Classe
Criando Objetos
Objetos
Criando Objetos
v o i d main ( ) {
t e s t ( " Criando o b j e t o " , ( ) {
/ / Criacao de um o b j e t o da c l a s s e c a r r o
Carro c a r r o = new Carro ( "GM" , " Cruze " , 2023 ) ;
/ / Testando se a v a r i a v e l c a r r o p o s s u i uma r e f e r e n c i a de o b j e t o .
expect ( c a r r o , i s N o t N u l l ) ;
/ / Testando se o a t r i b u t o v e l o c i d a d e f o i i n i c i a l i z a d o c o r r e t a m e n t e .
expect ( c a r r o . v e l o c i d a d e , equals ( 0 ) ) ;
/ / Invocando o metodo a c e l e r a r para aumentar a v e l o c i d a d e do c a r r o
com a c e le r a c a o de 5m/ s .
carro . acelerar ( 5) ;
/ / Testando se a v e l o c i d a d e do c a r r o aumentou para 18 km / h .
expect ( c a r r o . v e l o c i d a d e , equals ( 18 ) ) ;
}) ;
}
Visibilidade
Visibilidade
• Pública;
• Privada;
• Protegida.
Visibilidade
Visibilidade
Membros privados são acessíveis apenas dentro da própria classe em que são
declarados. Isso restringe o acesso aos detalhes internos da implementação
da classe e é uma forma de aplicar o encapsulamento, protegendo o estado
interno do objeto de modificações externas não controladas.
Visibilidade
Este nível de visibilidade é útil quando você quer permitir que classes herdeiras
tenham mais acesso à classe base do que o mundo exterior, mas ainda quer
restringir o acesso geral.
Atributos
Eles representam dados ou estado que cada objeto da classe pode manter.
Atributos
• Tipo de Dado: Atributos podem ser de tipos primitivos (int, float, char,
boolean, String, etc.) ou tipos abstratos de dados (classes);
• Valor Inicial: Atributos podem ser inicializados com um valor padrão quando
o objeto é criado, e este valor pode ser alterado ao longo do ciclo de vida
do objeto.
Atributos
p u b l i c c l a s s Carro {
...
p r i v a t e S t r i n g marca ;
p r i v a t e S t r i n g modelo ;
p r i v a t e i n t ano ;
p r i v a t e double v e l o c i d a d e = 0 ;
...
}
Atributos
c l a s s Carro {
...
S t r i n g _marca = " " ;
S t r i n g _modelo = " " ;
i n t _ano = 0 ;
double _ v e l o c i d a d e = 0 ;
...
}
Métodos
Eles atuam sobre os dados (atributos) contidos nos objetos, podendo modificar
esses dados, realizar operações com eles ou facilitar a interação entre diferen-
tes objetos.
Métodos
Métodos
Continuação:
Métodos
p u b l i c c l a s s Carro {
...
p u b l i c double g e t V e l o c i d a d e ( ) {
return t h i s . velocidade ;
}
p u b l i c v o i d a c e l e r a r ( double a c e le r a c a o ) {
t h i s . v e l o c i d a d e = t h i s . v e l o c i d a d e + ( a c e l e ra c a o * 3 . 6 ) ;
}
...
Métodos
c l a s s Carro {
...
f l o a t get velocidade {
return t h i s . velocidade ;
}
void a c e l e r a r ( f l o a t aceleracao ) {
t h i s . v e l o c i d a d e = t h i s . v e l o c i d a d e + ( a c e l e ra c a o * 3 . 6 ) ;
}
...
}
Construtores
Eles preparam o novo objeto para uso, configurando valores iniciais para seus
atributos e executando qualquer outra inicialização necessária no momento da
criação do objeto.
Construtores
Construtores
Construtores
p u b l i c c l a s s Carro {
...
p u b l i c Carro ( S t r i n g marca , S t r i n g modelo , i n t ano ) {
t h i s . marca = marca ;
t h i s . modelo = modelo ;
t h i s . ano = ano ;
}
...
}
Construtores
c l a s s Carro {
...
Carro ( S t r i n g marca , S t r i n g modelo , i n t ano ) {
t h i s . marca = marca ;
t h i s . modelo = modelo ;
t h i s . ano = ano ;
}
...
}
Métodos de Acesso
Métodos de Acesso
Métodos de Acesso
Métodos de Acesso
p u b l i c c l a s s ContaBancaria {
p r i v a t e double saldo , l i m i t e C h e q u e E s p e c i a l ;
p u b l i c double getSaldo ( ) {
r e t u r n t h i s . saldo ;
}
p u b l i c v o i d s e t L i m i t e C h e q u e E s p e c i a l ( double l i m i t e C h e q u e E s p e c i a l ) {
t h i s . limiteChequeEspecial = limiteChequeEspecial ;
}
p u b l i c double g e t L i m i t e C h e q u e E s p e c i a l ( ) {
return t h i s . limiteChequeEspecial ;
}
}
Prof. Fabrício Barros Gonçalves Classes e Objetos 47
Introdução Breve Histórico da POO Classes Objetos Membros de uma Classe
Métodos de Acesso
c l a s s ContaBancaria {
double _saldo = 0 , _ l i m i t e _ c h e q u e _ e s p e c i a l = 0 ;
double g e t s a l d o {
r e t u r n t h i s . _saldo ;
}
v o i d s e t l i m i t e _ c h e q u e _ e s p e c i a l ( double l i m i t e _ c h e q u e _ e s p e c i a l ) {
t h i s . _limite_cheque_especial = limite_cheque_especial ;
}
double g e t l i m i t e _ c h e q u e _ e s p e c i a l {
return t h i s . _limite_cheque_especial ;
}
}
Prof. Fabrício Barros Gonçalves Classes e Objetos 48
Introdução Breve Histórico da POO Classes Objetos Membros de uma Classe
Membros de Classe
Membros de Classe
Membros de Classe
p u b l i c c l a s s Carro {
...
s t a t i c p r i v a t e i n t qtdeCarros = 0 ;
s t a t i c p u b l i c i n t getQtdeCarros ( ) {
r e t u r n Carro . qtdeCarros ;
}
...
}
Membros de Classe
c l a s s Carro {
...
s t a t i c i n t _qtde_carros = 0 ;
Classes e Objetos