Programação Orientada
a Objetos
AULA 8 –
CLASSES, MÉTODOS E ATRIBUTOS
RAFAEL BALDIATI PARIZI – 2014/1
PROGRAMAÇÃO ORIENTADA A OBJETOS ::: JAVA
Orientação a Objetos:
Fornece mecanismos de abstração e composição para o desenvolvimento de software
Abstração:
Classes, atributos, métodos, interfaces
Composição:
PROGRAMAÇÃO ORIENTADA A OBJETOS ::: JAVA
Com abstração, pode-se representar os conceitos do mundo real ou do mundo computacional para:
Prover estado Prover comportamento
Ocultar os detalhes de implementação Encapsular conceitos similares / relacionados
PROGRAMAÇÃO ORIENTADA A OBJETOS ::: JAVA
CLASSES
Principal mecanismo de abstração
Englobam estado e comportamento (relacionados)
CLASSES EM JAVA
A linguagem Java permite a criação de classes Públicas e Privadas
Públicas:
Podem ser acessadas por outras classes definidas em outros arquivos
Privadas:
São acessíveis somente no arquivo no qual elas estão defindas
O comum é a criação de uma classe por arquivo (classe pública)
PROGRAMAÇÃO ORIENTADA A OBJETOS ::: JAVA
Definição de uma classe
A classe Conta poderá ser usada em outras classes
Exemplo:
public class
Conta {
}
public class Programa {
public static void main(String[] args) { Conta c;
PROGRAMAÇÃO ORIENTADA A OBJETOS ::: JAVA
Criando objetos da classe
Um classe serve como um template para a criação de objetos
Para criar objetos de uma classe são usados os chamados construtores
public class
Programa {
public static void
main(String[] args) {
Conta c = new
Conta();
}
}
PROGRAMAÇÃO ORIENTADA A OBJETOS ::: JAVA
Para a classe ter utilidade, precisa:
Manter estado e/ou
Desempenhar alguma funcionalidade
OBJETOS guardam estado com seus
atributos
Os atributos possuem a seguinte sintaxe:
[modificadores] tipo nome [=valor];
public class
Conta {
int
numero;
String
dono
;
double
saldo;
Para usar os atributos (leitura ou escrita)
Sintaxe = objeto.atributo public class Conta {
private int numero; private String dono; private double saldo; private double limite; public String getDono() {
return dono; }
public void setDono(String dono) { this.dono = dono;
} }
No entanto, normalmente os atributos são acessados indiretamente, através de métodos de leitura e escrita (gete set). public class Programa {
public static void main(String[] args) { Conta c = new Conta();
c.setDono("Rafael"); }
}
PROGRAMAÇÃO ORIENTADA A OBJETOS ::: JAVA
No ECLIPSE, para gerar os métodos GET e SET, basta:
ALT + SHIFT + S
Generate Methods Get e Set
O uso de métodos de leitura (get) e escrita (set) visam desacoplar os atributos de uma classe dos clientes que a utilizam.
Modificadores de Visibilidade
Existem alguns modificadores de visibilidade para classes, métodos e atributos em Java.
Os principais são:
public – Visível para todas as classes private – Visível apenas dentro da classe protected – Visível somente para as sub-classes
(sem modificador) Visível para todas as classes no pacote (diretório)
Adicionando Comportamento
Métodos gete set representam comportamentos, embora simples. No entanto, as classes precisam normalmente de mais métodos
De forma a implementar as funcionalidades para as quais ela foi criada.
Para a classe Conta, por exemplo, métodos precisariam ser criados para: sacar, transferir, depositar, ..
Métodos: sintaxe
Métodos são similares a procedimentos ou funções em linguagen estruturadas. A sintaxe é a normalmente a seguinte:
[modificadores] tipoRetorno nome(parametros){ // Corpo do método ...
}
PROGRAMAÇÃO ORIENTADA A OBJETOS ::: JAVA
public class TesteConta {
public static void main(String[] args) { Conta c = new Conta();
System.out.println(c.getSaldo());
c.setSaldo(100);
System.out.println(c.getSaldo());
c.sacar(40);
System.out.println(c.getSaldo());
} }
Método sacar chamado na Classe Main
COMO SERIA O MÉTODO TRANSFERIRPARA UMA CONTA 2?
public void transferirPara (Conta destino, double valor){ destino.saldo = destino.saldo + valor;
saldo = saldo - valor; }
Métodos: sintaxe
Alguns atributos não são únicos, e sim, coleções de dados ou objetos.
Desta forma, podemos armazenar valores de atributos como: Vetores ou Coleções
Trataremos disso em uma aula específica. No entanto, para os exercícios usaremos uma coleção chamada ArrayList..
public class Agencia {
String nome; String endereco;
private Collection<Conta> contas = new ArrayList<Conta>();
public void adicionar(Conta c){
contas.add(c);
}
public void removerConta(Conta c){
contas.remove(c);
}
public int retornaNumeroContas(){
return this.contas.size();
} }
//criando um objeto de Agencia Agencia agBB = new Agencia(); agBB.setNome("Banco do Brasil");
agBB.setEndereco("Rua general Marques, 1140");
Conta c = new Conta(); c.setDono("Rafael"); c.setNumero(000001); c.setLimite(50); c.setSaldo(200000); Conta c2 = new Conta(); c2.setDono("Joao"); c2.setNumero(000002); c2.setLimite(500); c2.setSaldo(200000); agBB.adicionar(c); agBB.adicionar(c2);
System.out.println("A Agencia "+agBB.getNome()+" tem "+agBB.retornaNumeroContas()+" contas");
} }
Construtores
Os métodos para a criação de objetos de uma classe são chamados de construtores.
A linguagem Java fornece um construtor padrão, que não recebe parâmetros.
Somente quando outro não for declarado.
No entanto, podemos criar novos construtores ou modificarmos o construtor padrão existente.
public class Agencia { String nome; String endereco;
private Collection<Conta> contas = new ArrayList<Conta>(); public Agencia(String nomes){
public class
TestaAgencia {
public static void
main(String[] args) {
Agencia agencia = new
Agencia(
"Jaguari"
);
Exercícios
Modifique a classe Conta de forma a adicionar os seguintes atributos:
–Agencia
–Número da Conta
Exemplifique o uso destes atributos.
2. Modifique a classe Conta de forma a adicionar os seguintes métodos:
Crie uma classe para manter os dados de um aluno. Devem ser mantidos os seguintes dados: matrícula, nome, endereço, ano de ingresso, semestre de ingresso. Exemplifique o uso da classe.
Crie uma classe que mantenha os dados de um curso de graduação. São necessários os seguintes dados: sigla, nome, turno, ingressantes por ano.
Crie uma classe que mantenha os dados de uma disciplina de graduação. São necessários os seguintes dados: código, nome, pré-requisitos.
Considerando as classes dos exercícios anteriores e outras possíveis novas classes, implemente os seguintes requisitos:
1. Deve ser possível criar currículos para os cursos de graduação (cadeiras em cada curso). 2. Deve ser possível associar um aluno a um ou mais cursos de graduação.
3. Deve ser possível criar turmas de graduação.
4. Deve ser possível matricular os alunos nas turmas disponíveis para o curso.
5. Deve ser possível manter a nota final, a nota do exame do aluno e sua frequência em cada uma das aulas de uma disciplina ofertada.
6. Deve ser possível mostrar os alunos aprovados e reprovados em uma turma, bem como sua frequência.