introdução à orientação a objetos - ufjf.br§ãoaula2-para-site... · comunicação serial com...
TRANSCRIPT
Introdução à orientação a
objetos
João Tito Almeida Vianna
25/05/2013
Roteiro – Aula 2
Motivação
Revisão dos conceitos da aula 1
Preparação para os exercícios
Exercícios propostos
2
Motivação
A orientação a objetos pode facilitar muito a
tarefa do programador:
◦ Criação de interfaces:
3
Motivação
A orientação a objetos pode facilitar muito a
tarefa do programador:
◦ Plotagem de gráficos:
4
Motivação
A orientação a objetos pode facilitar muito a
tarefa do programador:
◦ Comunicação serial com circuito externo:
5
Motivação
A orientação a objetos pode facilitar muito a tarefa do programador:
◦ Criação de interfaces;
◦ Plotagem de gráficos;
◦ Comunicação serial com circuito externo.
Em java, o download de uma biblioteca e o estudo das funções disponíveis na mesma podem tornar todas essas bem mais simples, quando comparadas com a programação estruturada.
6
Revisão –
Orient. a objetos x Prog.Estruturada
Orientação a
objetos
Programação
Estruturada
Enfoque Objetos Ações
Unidade básica Classe Função
7
Revisão –
Orientação a Objetos
Classe:
◦ estrutura de dados que contém tanto campos de
dados (variáveis próprias) como seus próprios
métodos (funções).
Objeto:
◦ É uma instância de classe.
8
Classe: define a estrutura.
Objeto: instância.
Revisão –
Orientação a Objetos
9
Programação estruturada Orientação a objetos
int x; Conta contaCorrente;
Tipo da variável
Nome da Variável
Nome da classe
Nome do objeto
Orientação a Objetos –
Classe
Atributos = variáveis.
Métodos = funções.
Programação Estruturada Orientação a objetos
Struct Classe
• Variáveis • Atributos
• Métodos
• Construtor
10
Orientação a Objetos –
Construtor
Método que deve ser chamado antes de qualquer outro.
Em java, o construtor é responsável pela alocação de memória de todos os atributos da classe.
O construtor tem obrigatoriamente o mesmo nome da classe.
É possível programar mais de um construtor, devendo os diferentes construtores receberem parâmetros diferentes.
Aluno var1= new Aluno();
11
* Declaração de objeto da classe “Aluno”, com chamada de construtor em Java.
Orientação a Objetos –
Classe Em java:
public class Aluno
{
private String nome;
private int numeroDeMatricula;
private int[] dataDeNascimento = new int[3];
private String curso;
public Aluno(String N, int Mat, int[] Nasc, String cur)
{
nome = N;
numeroDeMatricula = Mat;
dataDeNascimento = Nasc;
curso = cur;
}
. . .
Atributos
Construtor
de classe
12
* Mesmo nome
da classe
Orientação a Objetos –
Classe
public void setNumeroMatricula(int novo)
{
numeroDeMatricula = novo
}
public void setCurso(String cur)
{
curso = cur;
}
public String getNome()
{
return nome;
}
}
Métodos da
classe
13
Orientação a Objetos –
Encapsulamento
Proteção dos atributos da classe, tornando-os
acessíveis somente através de suas próprias
funções.
14
Orientação a Objetos –
Encapsulamento
Especificadores de acesso a membro:
◦ public: membro pode ser acessado de
qualquer parte do programa.
◦ private: membro só é acessível através dos
métodos da classe.
◦ protected: membro acessível à classe e às
suas subclasses.
15
Orientação a Objetos –
Encapsulamento
“[Através do encapsulamento] o objeto é
disponibilizado ao usuário com toda a sua
funcionalidade, sem a necessidade de
conhecermos seu funcionamento ou
armazenamento interno.” http://www.devmedia.com.br
16
Orientação a Objetos –
Encapsulamento
Procedimento “básico”:
◦ Atributos todos private.
◦ Criação da função “getAtributo()” tipo public,
a qual devolve o valor do atributo.
◦ Criação da função “setAtributo(input)” do
tipo public, a qual altera o valor do atributo.
17
Orientação a Objetos –
Encapsulamento Em java:
public class Aluno
{
private String nome;
private int numeroDeMatricula;
private int[] dataDeNascimento = new int[3];
private String curso;
public Aluno(String N, int Mat, int[] Nasc, String cur)
{
nome = N;
numeroDeMatricula = Mat;
dataDeNascimento = Nasc;
curso = cur;
}
. . .
Atributos
Construtor
de classe
18
privados
public
(sempre)
public void setNumeroMatricula(int novo)
{
numeroDeMatricula = novo
}
public String getNome()
{
return nome;
}
public int getNumeroDeMatricula()
{
return numeroDeMatricula;
}
}
Orientação a Objetos –
Encapsulamento
19
* Um “setVariavel” para cada
variável “editável” (definido do
programador).
* Um “getVariavel” para
CADA variável.
Orientação a Objetos –
Herança
Herança: Definição de uma classe como extensão da
outra.
o Melhor aproveitamento do código.
o Evita duplicação.
o Facilita manutenção.
• A subclasse herda todos os métodos e atributos da
superclasse e pode definir seus próprios.
20
Orientação a Objetos –
Herança Classe base
ou
Superclasse
Subclasse
21
Preparação para exercícios
Declaração de classe:
public class Conta
{
// PROGRAMAÇÃO AQUI
}
Declaração de variável
private int numeroDaConta;
22
Especificador
de acesso
Nome da classe
Nome da variável
Tipo da variável
Preparação para exercícios
Declaração de método:
public int setSaldo (int input1 , double input2)
{
//Código aqui
return numero;
}
23
Especificador de
acesso
Nome do método
Tipo de variável
retornada pelo método
Argumentos recebidos
pelo método
Tipo do argumento
Nomes dos argumentos
Como declarado, o método deve
retornar uma variável do tipo “int”
Preparação para exercícios Tipo de variáveis:
◦ int
◦ double
◦ boolean
◦ String
◦ char
Tipo de variável retornada por método:
◦ Tipos citados acima;
◦ void (para o caso em que não há nada a retornar)
Especificadores de acesso:
◦ public
◦ private
◦ protected
Comando de impressão:
◦ System.out.println(“Hello world!”);
Declaração de subclasse
◦ public class contaCorrente extends conta { //Código aqui }
24
Criando um projeto no Netbeans
“Arquivo”
“Novo projeto...”
Selecionar: “Java”; “Aplicação Java” (já selecionado por
padrão)
“Próximo”
Dar nome ao projeto
“Finalizar”
25
Criando um projeto no Netbeans
26
Projeto criado
“Teste”
Criando um projeto no Netbeans
27
Função principal de um programa Java.
SEMPRE tem a forma:
public static void main()
(Como o “main” da linguagem C)
Criando uma classe no Netbeans
“Arquivo”
“Novo Arquivo...”
Selecionar: “Java”; “Classe Java” (já selecionado por
padrão)
“Próximo”
Dar nome à classe
“Finalizar”
28
Exercício
Criar uma classe “conta” ◦ Atributos: Número da conta
Nome do dono da conta
Saldo
Limite
◦ Métodos: Encapsulamento de variáveis
Extrato
Saque
Depósito
Imprime o nome do dono
Transferência entre contas
29
Exercício
Declarar 3 contas com os seguintes dados:
Criar um construtor para a classe;
Fazer um depósito de 1000,00 na conta de Maria;
Transferir 1500,59 da conta de João para a de José;
Sacar 5000,00 da conta de José;
Sacar -200,00 da conta de Maria.
30
Número Cliente Saldo Limite
76521 João 50520,00 1000,00
98213 José 2500,00 300,00
32466 Maria 530,00 200,00
Exercício
Criar uma classe “cliente” que contenha ao atributos (fazendo as adequações necessárias)
◦ Nome
◦ Sobrenome
◦ CPF
Substituí-la no lugar do atributo “nomeDoCliente”, criado na classe “Conta”.
31
Exercício
Crie o atributo “taxa” na classe “conta” e o método “aplicaTaxa”.
Crie as subclasses de “conta”: “contaCorrente” e “contaPoupança”
◦ Em “contaPoupança” o método “aplicaTaxa” deve aplicar um rendimento 3 vezes maior;
◦ Em “contaCorrente” o método “aplicaTaxa” deve aplicar um rendimento 2 vezes maior;
◦ Em “contaCorrente” deve-se cobrar 0,10 por saque.
32
Referências
[1] Reis, G. R., Material do minicurso: "C++ e Programação Orientada a Objetos", ministrado na XXXIII Semana da Engenharia, 2010.
[2] Bohm, Corrado; and Giuseppe Jacopini (May 1966). "Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules". Communications of the ACM 9 (5): 366–371.
[3] Dijkstra, E. "Go-to statement considered harmful", em Commun. ACM 11 (1968), 3: 147–148. (http://www.cs.utexas.edu/~EWD/ewd02xx/EWD215.PDF)
33