objeto

Propaganda
• Tudo no mundo real pode ser representado por meio do
conceito de "objeto": uma planta, uma mesa, uma pessoa,
um sentimento, uma nota. Da mesma forma, Java também
permite modelar e abstrair cada entidade da aplicação em
um objeto;
• Cada objeto existente pode ser enquadrado em uma
categoria mais genérica, que representa um conjunto de
elementos com características comuns. Assim, um tubarão é
um objeto que pertence à família dos peixes, pois ele
apresenta algumas características comuns a todos os peixes.
Um aluno é um objeto de um grupo mais genérico conhecido
como "pessoas", já que um aluno apresenta alguns elementos
comuns a todas as pessoas;
• Esta categoria mais geral, à qual cada objeto pertence,
denominamos de classe;
IFSC/POO + JAVA - prof. Herval Daminelli
• Todo objeto, em Java, é uma instância da classe;
• Todo objeto cria uma relação do tipo "é-um(a)" com sua classe.
Assim, um tubarão é um peixe e um aluno é uma pessoa;
• Objetos herdam métodos (funções) e atributos (características) de
suas classes;
• Uma classe pode utilizar métodos e atributos de objetos que
pertencem a outra classe (talvez, até mesmo, criada por outra
pessoa). Esta classe é chamada de classe cliente ou classe usuária;
• Diferentemente do mundo real, em Java, é possível termos uma
classe sem a necessidade de criarmos um objeto (instanciarmos) a
partir desta classe;
• Um objeto pode enviar mensagens (interface) para outros objetos
requisitando alguma tarefa ou serviço;
• Em Java, uma classe é apenas uma descrição abstrata daquilo que um
objeto poderá vir a ser.
IFSC/POO + JAVA - prof. Herval Daminelli
• Em Java, por definição, objeto é tudo aquilo que representa
uma entidade do mundo real e pode ser identificado
distintamente de qualquer outra coisa. Todo objeto tem
identidade, estado e comportamento específicos;
• O estado do objeto (também conhecido como propriedades ou
atributos) é representado por variáveis (campos de dados) que
armazenam valores;
• O comportamento de um objeto (também denominado de
ações ou métodos) são as tarefas ou serviços ou atividades ou
ações que um objeto pode desempenhar;
• Objetos do mesmo tipo compõem uma classe;
• Todo objeto é criado por um método especial de uma classe
chamado de construtor.
IFSC/POO + JAVA - prof. Herval Daminelli
Ao criar uma classe, você precisa definir...
 O nome da classe
 Os métodos e atributos da classe (dentro do corpo)
 Um especificador de acesso opcional – public, private, etc...
 A palavra-chave class
 O corpo da classe, entre um par de chaves { }
• Então, poderíamos criar um classe "Empregado" com um dado
chamado cargo e dois métodos: "definirCargo() e obterCargo() – veja
gráfico no próximo eslaide;
• Atributos em uma classe também são chamados de campos de dados;
• Em Java, uma classe que contém o método main() e, portanto, pode
ser executada, é chamada de classe principal. Toda classe é um tipo
de dado composto;
• Classes são também chamadas de tipos abstratos de dados ou tipos
de dados definidos pelo programador.
IFSC/POO + JAVA - prof. Herval Daminelli
• Em Java, para cada campo de dado que você cria em uma
classe, há a necessidade de se ter dois métodos públicos que
permitirão que outras classes acessem este campo de dado (ler
– get) ou modifiquem este dado (escrever – set). Não é
obrigatório, mas convenciona-se iniciar o nome do método que
define o dado com a palavra set e o nome que obtém o dado
com a palavra get;
• Assim, na nossa classe de exemplo "Empregado", poderíamos
renomear os dois métodos para getCargo() e setCargo();
• A classe criada na página anterior pode ser compilada
normalmente em Java, mas a aplicação não poderá ser
executada. Isto porque esta aplicação não contém nenhum
método main(). Classes criadas desta forma têm o objetivo de
serem usadas como um tipo de dado para instanciarem objetos
dentro de outras classes.
IFSC/POO + JAVA - prof. Herval Daminelli
• modificador public – classes públicas podem ser usadas por QUALQUER
objeto na aplicação. São a base para outras classes mais específicas
(herança);
• modificador private – impede que qualquer classe externa modifique o
campo de dados cargo. Este atributo só pode ser modificado pelos
métodos da própria classe Empregado. Esta técnica é conhecida como
"ocultação de dados" ou encapsulamento ou abstração.IFSC/POO + JAVA - prof. Herval Daminelli
Tipo
public
default
private
Aplica-se a
Significado
• Classes
• Métodos
• Campos de dados
Podem ser acessados de qualquer outra
classe, na mesma aplicação ou em ou em
outra aplicação
• Classes
• Métodos
• Campos de dados
Podem ser acessados por qualquer classe
que pertença ao mesmo pacote. Java
atribui automaticamente o modificador
default quando você não especifica
nenhum
• Classes (somente
para classes internas)
• Métodos
• Campos de dados
Elementos privado só podem ser
acessados de dentro de sua própria classe
Os modificadores de visibilidade determinam como uma classe
ou seus membros podem ser acessados de fora da classe.
IFSC/POO + JAVA - prof. Herval Daminelli
• O código na próxima página cria duas classes. A classe TesteCirculo,
pública, que contém o método main – e é a classe principal, de onde
parte toda a execução da aplicação; e a classe Circulo, dentro da
classe principal, criada para instanciar métodos e atributos de um
objeto circulo.
• Quando você cria duas ou mais classes em um mesmo arquivo,
somente UMA delas pode ser pública. Uma classe pode ser privada
somente se ela estiver DENTRO de outra classe. Recomenda-se,
sempre, termos uma única classe por arquivo.
• Campos de dados e métodos de uma classe definidos como private só
podem ser acessados de dentro da própria classe;
• A classe pública principal deve ter o MESMO NOME do arquivo salvo;
• Então, em nosso exemplo a seguir, o arquivo deverá ser salvo como
TesteCirculo.java e cada classe também gerará arquivos individuais
.class;
• Em nosso exemplo, teremos, após a compilação, TesteCirculo.class e
Circulo.class.
IFSC/POO + JAVA - prof. Herval Daminelli
TesteCirculo.class
Gera
Compilado por
Compilador
Java
Gera
Circulo.class
• Nota: quando uma classe (a classe cliente) faz uso de outra
classe (externa) que não está na mesma pasta, deve-se
utilizar a diretiva import no topo do arquivo que contém a
classe cliente e que utiliza a classe externa.
IFSC/POO + JAVA - prof. Herval Daminelli
• Suponha a criação da classe TV representada pelo modelo UML
abaixo e implementação de objetos utilizando seus atributos e
Modelando uma classe com UML
métodos.
TV
• O sinal +
representa
canal: int
métodos de acesso volume: int
público;
ligada: boolean
+TV(): void
• O método TV() é
+desligar(): void
especial e é o
método usado para +ligar(): void
instanciar (criar) o +mudarCanal(novoCanal: int): void
+mudarVolume(novoVolume: int): void
objeto, chamado
+aumentarCanal(): void
de construtor.
+diminuirCanal(): void
Uma classe pode
+aumentarVolume(): void
ter mais de um
+diminuirVolume(): void
construtor.
IFSC/POO + JAVA - prof. Herval Daminelli
IFSC/POO + JAVA - prof. Herval Daminelli
continuação
IFSC/POO + JAVA - prof. Herval Daminelli
• Criar um objeto em Java é um processo de duas etapas:
• Primeiro, você declara um tipo para o objeto, seguido de um nome;
• Depois, você reserva memória do computador para criar o objeto.
Empregado algumEmpregado = new Empregado();
Tipo de referência
Variável de referência (objeto)
Método construtor
TV tv1 = new TV();
• Note que o nome do método construtor é sempre igual ao nome da
classe onde está definido o construtor;
• Depois que um objeto é instanciado, ele pode acessar outros métodos
e atributos da classe através da notação do ponto.
algumEmpregado.pedirRecisao(); ou
algumEmpregado.salario = 5000,00.
variável de instância
IFSC/POO + JAVA - prof. Herval Daminelli
• Quando você cria uma classe, tal como Peixe, e instancia um
objeto com uma declaração igual a Peixe tubarao = new
Peixe();, você, de fato, está chamando o construtor da
classe Peixe. Se você não criou o construtor diretamente em
sua classe, o compilador Java fornece um construtor-padrão,
sem nenhum argumento, criado automaticamente sempre que
você constrói uma classe, e inicializa campos de dados do
objeto com os valores em destaque:
• Qualquer construtor deve ter o
MESMO nome de sua classe;
• Um construtor NUNCA deve ter
um tipo de retorno. Uma classe
pode ter mais de um
construtor;
• numéricos = 0;
• caracteres = Unicode '\u0000';
• booleanos = false;
• outros objetos = null.
• Geralmente, construtores são
métodos públicos.
IFSC/POO + JAVA - prof. Herval Daminelli
• Um método construtor de uma classe pode realizar qualquer tarefa,
mas, geralmente, ele inicializa os campos de dados do objeto (seus
atributos);
• Lembre-se de que se você não definir um método construtor, o
próprio Java fornece um construtor-padrão quando você cria o
objeto. Esse você criar seu construtor na classe, mas sem nenhum
argumento, ele também é chamado de construtor-padrão;
• Construtores são métodos que nunca tem um tipo de valor de
retorno, nem mesmo void;
• Construtores são invocados por meio do operador new;
• Construtores podem ser sobrecarregados, isto, podemos ter
construtores com o mesmo nome, mas com diferentes assinaturas;
• Quando, em uma classe, você define um construtor que não recebe
nenhum argumento (isto é, Circulo();), ele é denominado de
construtor sem argumentos;
IFSC/POO + JAVA - prof. Herval Daminelli
Campo de dado da classe
Dois métodos construtores da classe
Dois métodos simples da classe
IFSC/POO + JAVA - prof. Herval Daminelli
Circulo
-raio: double
cor: string
Significado das convenções
1. Todo campo de dado ou método
sem sinal tem visibilidade padrão;
2. Todo campo ou método com o sinal
de + é público;
3. Todo campo ou método com o sinal
de – é privado;
+Circle()
+CalcularPerimetro(): double
-AtribuirRaio(novoRaio: double): void
TrocarCor(novaCor: string): void
4. Todo campo ou método
sublinhado é estático (só pode
ser usado por uma classe e não por
um objeto);
5. Todo campo de dado deve
especificar seu tipo;
6. Todo método deve especificar seu
tipo de retorno e o nome e o tipo de
cada parâmetro dentro dos
parênteses.
IFSC/POO + JAVA - prof. Herval Daminelli
• Classes podem ser agrupadas em pacotes. Um pacote ou
biblioteca de classes é apenas uma pasta criada para
proporcionar um agrupamento conveniente e organizado de
classes. Podemos criar nossos próprios pacotes e armazenarmos
neles as classes que construímos em nossa aplicação;
• A própria linguagem Java já traz muitas classes pré-escritas e
prontas para serem utilizadas, organizadas em pacotes. Um
pacote que contém uma coleção muito útil de classes e que já
é automaticamente carregado pela JVM é java.lang;
• Outros pacotes precisam ser importados para podermos usar
suas classes – por exemplo, javax.swing (caixas de diálogo);
• Para importar uma classe, você pode usar as declarações:
import nome_do_pacote.*; ou import nome_do_pacote.nome_da_classe;
• A primeira importa TODAS as classes dentro da biblioteca. A
segunda importa somente a classe mencionada.
IFSC/POO + JAVA - prof. Herval Daminelli
Download