introdução à orientação a objetos - ufjf.br§ãoaula2-para-site... · comunicação serial com...
TRANSCRIPT
![Page 1: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/1.jpg)
Introdução à orientação a
objetos
João Tito Almeida Vianna
25/05/2013
![Page 2: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/2.jpg)
Roteiro – Aula 2
Motivação
Revisão dos conceitos da aula 1
Preparação para os exercícios
Exercícios propostos
2
![Page 3: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/3.jpg)
Motivação
A orientação a objetos pode facilitar muito a
tarefa do programador:
◦ Criação de interfaces:
3
![Page 4: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/4.jpg)
Motivação
A orientação a objetos pode facilitar muito a
tarefa do programador:
◦ Plotagem de gráficos:
4
![Page 5: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/5.jpg)
Motivação
A orientação a objetos pode facilitar muito a
tarefa do programador:
◦ Comunicação serial com circuito externo:
5
![Page 6: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/6.jpg)
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
![Page 7: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/7.jpg)
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
![Page 8: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/8.jpg)
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
![Page 9: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/9.jpg)
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
![Page 10: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/10.jpg)
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
![Page 11: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/11.jpg)
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.
![Page 12: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/12.jpg)
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
![Page 13: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/13.jpg)
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
![Page 14: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/14.jpg)
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
![Page 15: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/15.jpg)
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
![Page 16: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/16.jpg)
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
![Page 17: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/17.jpg)
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
![Page 18: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/18.jpg)
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)
![Page 19: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/19.jpg)
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.
![Page 20: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/20.jpg)
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
![Page 21: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/21.jpg)
Orientação a Objetos –
Herança Classe base
ou
Superclasse
Subclasse
21
![Page 22: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/22.jpg)
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
![Page 23: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/23.jpg)
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”
![Page 24: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/24.jpg)
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
![Page 25: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/25.jpg)
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
![Page 26: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/26.jpg)
Criando um projeto no Netbeans
26
Projeto criado
“Teste”
![Page 27: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/27.jpg)
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)
![Page 28: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/28.jpg)
Criando uma classe no Netbeans
“Arquivo”
“Novo Arquivo...”
Selecionar: “Java”; “Classe Java” (já selecionado por
padrão)
“Próximo”
Dar nome à classe
“Finalizar”
28
![Page 29: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/29.jpg)
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
![Page 30: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/30.jpg)
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
![Page 31: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/31.jpg)
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
![Page 32: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/32.jpg)
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
![Page 33: Introdução à orientação a objetos - ufjf.br§ãoAula2-Para-site... · Comunicação serial com circuito externo. ... Em java, o construtor é responsável pela alocação de](https://reader033.vdocuments.pub/reader033/viewer/2022052917/5abfbd507f8b9aa3088e6fab/html5/thumbnails/33.jpg)
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