Buscar

Programação Orientada a Objetos em Java

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 31 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Java 
Programação Orientada a Objetos
Java
Java é multiplataforma, ou seja, um programa escrito em Java pode ser executado em qualquer plataforma sem necessidade de alterações no código fonte. 
Java é uma arquitetura aberta, extensível, com várias implementações, o que a torna independente do fornecedor.
Robusta e segura
Java pode ser baixada gratuitamente
Linguagem Independente de plataforma que pode ser utilizada em vários produtos eletrônicos, tais como torradeiras e refrigeradores.
Orientação a objetos com forte suporte a técnicas adequadas de engenharia de software
Programação Orientada a Objetos
POO é um paradigma de programação
Usam classes e objetos, criados a partir dos modelos
Modelos
Modelos são representações simplificadas de objetos, pessoas, itens, tarefas, processos, conceitos, ideias etc.
Um modelo normalmente contém operações ou procedimentos associados a ele, por exemplo:
Inclusão de um pedido para uma mesa
 Modificação do status de um pedido
 Encerramento dos pedidos de uma mesa
Operações são listas de comandos que processarão os dados contidos no modelo.
Exemplos de modelos
Uma conta bancária simplificada
Aspectos práticos de contas reais
 (senhas, taxas) foram deixados de lado.
ContaBancariaSimplificada
nomeDoCorrentista
saldo
contaÉEspecial 
abreConta(nome,deposito,éEspecial)
abreContaSimples(nome)
deposita(valor)
retira(valor) 
mostraDados()
Classe
São usadas por linguagens OO para modelar tipos compostos. são estruturas para conter, em determinado modelo, os dados e as operações que devem ser efetuadas nos dados. 
Definem um conjunto de características e comportamentos comuns. 
Exemplo: Receita de bolo; Planta do prédio que descreve o prédio, mas não corresponde fisicamente a ele.
Objeto 
Um objeto ou instância é a materialização da classe;
Possuem valores para as características (olhos verdes, calda de chocolate, cor azul) e podem realizar o comportamento(correr, ser comido, abrir a porta);
Exemplo: um bolo feito com a receita, uma casa construída a partir da planta
Variáveis e Funções 
Uma	classe pode ter dois tipos de membro:
– Variáveis (em jargão OO: “atributos”);
– Funções (em jargão	OO: “métodos”).
Atributos são	como partes deum tipo composto;
Métodos são funções que são executadas no contexto de uma classe/objeto
Os dados contidos em uma classe são conhecidos como campos ou atributos daquela classe.
Cada campo deve ter um nome e ser de um tipo de dado nativo ou uma classe existente.
Métodos podem receber argumentos.
Variáveis|Atributos 
Definidos como variáveis no escopo da	classe:
	int numero;
	String dono;
	double saldo;
	double limite;
	// ...
	}
Funções|Métodos 
Um método é	uma função que opera no contexto de uma classe (mensagem	que o objeto recebe)
É a maneira (método) de se fazer algo num objeto:
class Conta {
// Atributos já declarados...
	void sacar(double qtd) {
	double novoSaldo = this.saldo - qtd;
	this.saldo = novoSaldo;
	}
	void depositar(double qtd) {
	this.saldo += qtd;
	}
}
Referências 
São variáveis do “tipo” da classe.
Analogia:
	– A TV é	o objeto;
	– O controle é a referência;
	– Você só carrega a referência;
	– A referência pode existir sem o objeto.
 public class Coordenadas {
 int x;
 int y;
 int z;
 public static void main(String[] args) {
	 Coordenadas coord; // Só a referência.
	 // Não dá pra fazer nada...
	 // Agora temos um objeto, podemos usá-lo.
 coord = new Coordenadas();
 coord.x = 10;
 coord.y = 15;
 coord.z = 18;
 	}
 }
 Exemplo :
Criando classes em Java
Sintaxe básica
Uma classe em Java será declarada com a palavra-chave class seguida do nome da classe.
 O nome não pode conter espaços;
 Deve começar com uma letra;
 Deve ser diferente das palavras reservadas;
 Caracteres maiúsculos e minúsculos são diferenciados;
 Conteúdo da classe limitado pelas chaves { };
Declaração de campos de classes
Campos podem ser referências a uma classe. Sintaxe básica:
NomeDaClasse nomeDaReferencia = new NomeDaClasse();
Exemplo: 
	class RegistroAcademico {
	String nomeDoAluno;
	int numeroDeMatricula;
	Data dataDeNascimento = new Data(); // referencia a classe data
	}
Construtor
É um tipo especial de membro de classe chamados automaticamente quando instâncias são criadas através da palavra chave new
Construtores são úteis para:
inicializar os atributos de uma classe
realizar rotinas complexas de inicialização
realizar inicializações segundo parâmetros passados no momento da criação do objeto
Caso o programador não forneça uma versão explícita do construtor, Java utiliza uma versão de construtor implícita que não recebe nenhum parâmetro
Declarando um construtor
Construtores devem ter exatamente o mesmo nome da classe
Construtores não possuem tipo de retorno
Construtores são, normalmente, públicos
class Ponto{
float x; 
float y; 
public Ponto(float pX,float pY){
 x = pX;
 y = pY;
 }
 }
Sobrecarga
Um método pode ter o mesmo nome que outro método na mesma classe.
Isto é usual quando existem duas ou mais formas diferentes de se realizar a mesma tarefa
Neste caso diz-se que o método está sobrecarregado
Uma sobrecarga é válida se a assinatura do método difere no número ou no tipo dos parâmetros
Java admite também, que se sobrecarregue os construtores de uma classe.
Pode-se se referir de dentro de um construtor sobrecarregado para outro, através do uso da palavra reservada this
Fazendo Sobrecargas
class Ponto{
 float x; 
 float y; 
 public Ponto(float pX,float pY){
 x = pX;
 y = pY;
 }
 void mover(float novoX,float novoY){
 x = novoX;
 y = novoY;
 } 
 void mover(){
 x = 0;
 y = 0;
 } 
}
A referência this
A referência this é usada para:
referência ao próprio objeto
acesso a variáveis do objetos
passagem do objeto como parâmetro
class Circulo{//classe Círculo 
 float raio = 0;
 void alterarRaio(float raio){
 this.raio = raio;
 }
}
Encapsulamento
Interação entre objetos sem conhecimento do funcionamento
O encapsulamento pode trazer diversas vantagens:
Protege os dados contra acessos indevidos;
Tende a criar sistemas mais coesos;
Facilita o reuso;
Facilita a manutenção;
Facilita a evolução;
Implementação do encapsulamento 
Modificadores de acesso 
Java permite a restrição ao acesso a campos em métodos por intermédio de modificadores de acesso que são declarados dentro das classes.
Existem quatro modificadores de acesso:
public: garante que o campo ou método da classe declarado com este modificador poderá ser acessados ou executado a partir de qualquer outra classe.
Private: só podem ser acessados, modificados ou executados por métodos da mesma classe, sendo ocultos para o programador usuário que for usar instâncias desta classe ou criar classes herdeiras ou derivadas.
protected: funciona como o modificador private, exceto que classes herdeiras ou derivadas também terão acesso ao campo ou método.
Get e Set
Na OO temos um padrão de métodos para atualizar e consultar dados ocultos (privados) em uma classe
Get: utilizados para obter (consultar) o valor do atributo oculto.
Set: utilizado para alterar o valor de um atributo oculto.
	public class Aluno{//classe Aluno
	...
	public Aluno(int matricula, String nome, String curso, float mensalidade){
	this.matricula = matrcula;
	};
 	public void setMatricula(int matricula){
 	this.matricula=matricula;
	} 
	public int getMatricula(){
	return this.matricula;
	}
Herança na OO
Na POO classes também podem herdar características (atributos e métodos) de outras classes.
Herança é possível definirmos classes genéricas que agreguem um conjunto de definições comuns a um grande número de objetos (Generalização).
A partir destas especificações genéricas podemos construir novas classes, mais específicas, que acrescentem novas características e comportamentos aos já existentes (Especialização).
Herança em java
Usa-se a palavra reservada extends para implementar herança em Java.
Class Pessoa{
 protected string cpf, nome;
 public Pessoa (String cpf, String nome){
 this.cpf=cpf;
 this.nome=nome;}
 // gets e sets
}
Class Funcionario extends Pessoa{
 protected float salario;
 public Funcionario (String cpf, String nome, float Salario){
 super(cpf, nome);
 this.salario=salario;
 }
 //gets e sets
} 
Class Professor extends Funcionario{
 protected string titulacao;
 
 public Professor (String cpf, String nome, float Salario, String titulacao){
 super(cpf, nome, salario);
 this.titulação = titulação;
 }
 // gets e sets
}
Vantagens de se usar Herança
Algumas vantagens do uso de herança são:
Criação de uma hierarquia de classes
Reuso de características entre classes
Facilita a inserção de novas classes (evolução do sistema)
Favorece o aumento da qualidade 
Herança Múltipla
Quando uma classe herda características de duas ou mais classes temos herança múltipla.
Em Java NÃO temos como implementar herança múltipla usando extends. Temos como simular a herança múltipla usando o conceito de Interface que estudaremos nas próximas aulas.
Classes Abstratas
São classes compostas por implementações genéricas e especificações de procedimentos. Como não são totalmente implementadas, não produzem instâncias, ou seja, não podemos criar objetos dessas classes. Elas agrupam características e comportamentos que serão herdados por outras classes e fornecem padrões de comportamento que serão implementados nas subclasses.
Para se definir classes abstratas usa-se a palavra chave abstract.
Um método abstrato será apenas o molde de uma implementação a ser provida pelas classes filhas concretas.
As classes que derivarem de um classe abstrata devem obrigatoriamente implementar todos os métodos abstratos definidos na classe Pai.
Classes Abstratas
 abstract class Figura
{ int x; // coordenada x
 int y; // coordenada y
 public Figura (int x1, int y1)
 { x = x1;
 y = y1;
 }
 public abstract void desenha();
 public abstract void apaga();
 public void move (int x1, int y1) 
 { apaga();
 x = x1;
 y = y1;
 desenha();
 }
 }
Definição da classe abstrata, através da palavra abstract.
A classe pode ter um construtor, mesmo que não possa instanciar objetos.
Declaração dos métodos abstratos. Esses métodos devem obrigatoriamente ser implementados nas classes derivadas.
Declaração de um método normal que poderá ser utilizado pelos objetos de classes derivadas.
Classes Abstratas
 class Quadrado extends Figura
{ public Quadrado(int x1, int y1)
 { super(x1, y1);
 }
 public void desenha()
 { System.out.println("Desenhando quadrado (" + x + "," + y + ")"); 
 }
 public void apaga()
 { System.out.println("Apagando quadrado (" + x + "," + y + ")");
 }
}
Utilização do construtor da classe Pai.
Implementação obrigatória dos métodos definidos na classe abstrata.
Classe para testar o exemplo.
class TesteAbstract
{ public static void main (String args[])
 { Quadrado q = new Quadrado(10,10);
 q.desenha();
 q.move(50,50);
 q.apaga();
 }
}
Interface
Classes abstratas podem conter métodos abstratos e não abstratos
Se uma classe abstrata tiver APENAS métodos abstratos, podemos criá-la como uma Interface
Interface não pode ser instanciada
Todos os métodos são implicitamente abstract e public
Atributos serão implicitamente static e final e devem ser inicializados na declaração
Para criar uma interface usar a palavra interface NÃO usa a palavra class
Os métodos não precisam de modificador pois são public e abstract
Interfaces NÃO tem construtores
Interface pode usar outras classes como tipo de dado
Interface
 interface objetoGeometrico
 
{ double calculaArea();
 double calculaPerimetro();
 Ponto2D centro();
}
Class circulo implements ObjetoGeometrico
{ private Ponto2D centro;
 private double raio;
 
 
 public Circulo (Ponto2D centro, double raio){
 setCentro (centro);
 setRaio(raio);
} 
 public Ponto2D centro(){
 return getCentro;
}
 public double calculaArea(){
 return 3.14*getRaio()*getRaio();
}
 public double calculaPerimetro(){
 return 2*3.14*getRaio();
}
}
Pacotes
Muitas aplicações são formadas por diversas classes
É importante agrupar estas classes para organizá-las de acordo com uma relação específica.
Ex. Um sistema pode usar classes de outros sistemas (reutilização)
package Calendario;
public class Data{
private byte dia, mês;
private short ano;
public Data(){
}
... gets e sets ....
}
package calendario;
public class Hora{
private byte hora, min, seg;
public Hora(){
}
... gets e sets ....
}
Import Calendario.*;
Class DemoCalendario{
Public static void main (String[] args){
Data d1= new Data();
}
}

Outros materiais