Escolar Documentos
Profissional Documentos
Cultura Documentos
br
UNIVERSIDADE DE FRANCA
Chancelaria: Dr. Clovis Eduardo Pinto Ludovice
Reitoria: Prof.a Dr.a Ester Regina Vitale
Pr-Reitoria de Ensino: Prof. M.e Arnaldo Nicolella Filho
Pr-Reitoria de Pequisa: Prof.a Dr.a Katia Jorge Ciuffi
Pr-Reitoria de Extenso: Prof.a M.a Elisabete Ferro de Sousa Touso
COORDENAO EAD
Coordenao Geral de EAD: Prof.a Dr.a Ana Paula do Carmo Marcheti Ferraz
Coordenao Acadmica: Prof.a Dr.a Alessandra Aparecida Campos
Coordenao Pedaggica: Prof.a M.a Carmen Lucia Tozzi Mendona Conti
Universidade de Franca Av. Dr. Armando Salles Oliveira, 201 Parque Universitrio 14.404-600
Franca SP PABX: (16) 3711-8888 FAX (16) 3711-8886 0800 34 12 12 www.unifran.edu.br
Editora Unifran (16) 3711-8736/8842 editora@unifran.br
UNIDADE 1
FUNDAMENTOS DA LINGUAGEM DE PROGRAMAO JAVA
Nesta Unidade voc conhecer os fundamentos da linguagem de programao
Java. A linguagem Java uma das principais linguagens de programao que
adota o paradigma de programao orientado a objetos.
Introduo
A linguagem de programao Java foi criada por James Gosling na dcada de
90 e se tornou muito popular quando comeou a ser utilizada no cenrio da
internet. Atualmente, Java no representa apenas uma linguagem de
programa, mas uma plataforma completa para o desenvolvimento de
aplicaes nos mais variados contextos. Os programas desenvolvidos nesta
plataforma utilizam a filosofia write once, run anywhere, em outras palavras
escreva uma vez, execute em qualquer lugar.
A plataforma Java organizada em mdulos, os quais so escolhidos
pelo programador de acordo com o tipo de aplicao que ser desenvolvida.
Os trs mdulos da plataforma so denominados:
gerenciadas por uma mquina virtual conhecida como Java Virtual Machine, ou
simplesmente JVM. Essas aplicaes so executadas independentemente do
sistema operacional utilizado pelo usurio. Esta caracterstica torna a
2
linguagem de programao Java multiplataforma. Assim, cada operacional
capaz de executar uma aplicao Java possui a sua prpria mquina virtual.
A maneira mais simples de obter e instalar a mquina virtual Java
realizando download do Java Runtime Environment (JRE). Para isso, voc
pode acessar o endereo <java.com> e clicar no boto Download Gratuito do
Java, conforme ilustrado na Figura 1.
3
Agreement, em seguida, dever selecionar qual a verso do kit de
desenvolvimento mais adequada para o seu sistema operacional. A Figura 2b
ilustra as verses disponveis do Java Development Kit (JDK).
(a)
(b)
4
Finalizada a instalao dos softwares necessrios, o prximo passo a
criao de um novo projeto utilizando o ambiente NetBeans. Para isso, voc
dever iniciar o ambiente NetBeans e acessar o menu Arquivo Novo
Projeto...Na tela Novo Projeto, selecione a categoria Java e em Projetos
escolha Aplicao Java.Em seguida, clique no boto prximo. Neste momento
voc dever especificar o nome do projeto. Alm disso, voc poder informar a
localizao em que o projeto ser gravado. Utilizaremos o seguinte nome do
projeto ProgOrientObjetos. Por fim, voc dever remover a seleo do item
Criar Classe Principal, e clicar no boto Finalizar. A Figura 3 ilustra o ambiente
de desenvolvimento integrado NetBeans aps a criao do novo projeto.
5
selecione NovoClasse Java. No campo Nome da Classe especifique o nome
OlaMundo e, no campo Pacote define olamundo. Muita ateno para
definio dos nomes na linguagem Java. Uma conveno importante est
relacionada a nomeao de classes, em que o primeiro caractere de cada
palavra presente no nome da classe dever possuir a letra maiscula. Alm
disso, os nomes de pacotes devero sempre ser especificados com letras
minsculas. A Figura 4 ilustra a criao de uma nova classe no ambiente
NetBeans.
package olamundo;
2
3
4
5
6
6
System.out.println("Ol Mundo!");
8
9
2
3
//
// BLOCO PRINCIPAL
//
7
8
// Instrues do programa
7
9
10
11
12
8
1
package fundamentos;
2
3
import java.util.Scanner;
4
5
6
7
8
9
double a, b;
10
11
//comandos de sada
12
13
System.out.print("Este
um
exemplo
de
mensagem
utilizando\n");
14
15
16
//comandos de entrada
17
18
System.out.print("A= ");
19
20
a = entrada.nextDouble();
System.out.print("B= ");
b = entrada.nextDouble();
21
22
System.out.println(String.format("Soma
b)));
23
24
%.2f
\n", (a
import javax.swing.JOptionPane;
4
5
6
7
double a, b;
9
10
//comandos de sada
11
JOptionPane.showMessageDialog(null,
12
"Este
um
exemplo
de
mensagem
utilizando\n"
13
14
15
16
JOptionPane.INFORMATION_MESSAGE);
10
17
18
//comandos de entrada
a
Double.parseDouble(JOptionPane.showInputDialog("Entre
Double.parseDouble(JOptionPane.showInputDialog("Entre
=
com
JOptionPane.showMessageDialog(null,String.format("Soma
valor de B"));
20
22
package fundamentos;
11
3
4
5
6
7
// IF
10
11
}else if (b>c){
12
13
}else{
14
15
16
17
//SWITCH
18
int diasemana=2;
19
switch(diasemana){
20
21
22
23
24
25
26
27
default:
28
29
30
31
12
repeties
podem
ser
definidas
pelos
comandos
for,
while
package fundamentos;
2
3
4
5
6
7
//FOR
int num = 4;
10
System.out.println(String.format("%d
%d",i,num,(i*num)));
11
12
13
//WHILE
%d
13
14
int cont = 1;
15
16
System.out.println("Joo da Silva");
17
cont++;
18
19
20
//DO..WHILE
21
double soma = 0;
22
cont = 1;
23
do {
24
soma += Math.random()*100;
25
cont++;
26
27
System.out.println(String.format("Soma= %.2f",soma));
28
29
30
31
14
Referncias Bibliogrficas
DEITEL, Harvey M; DEITEL, Paul, J. Java: Como Programar. So Paulo:
Prentice-Hall, 2005.
ORACLE.
Java
SE
Technical
Documentation.
Disponvel
em
15
UNIDADE 2
CLASSES, OBJETOS, ATRIBUTOS E MTODOS
Nesta Unidade voc iniciar o estudo sobre os principais conceitos do
paradigma de programao orientado a objetos. Para isso, sero definidos e
apresentados exemplos dos conceitos de classes, de objetos, de atributos e de
mtodos.
Fundamentos da Programao Orientada a Objetos
O paradigma de programao orientado a objetos pode ser definido como uma
metodologia formal par ao desenvolvimento de software. Neste contexto, o
paradigma constitudo de um conjunto de especificaes formais que devem
ser adotadas pelos programas na construo dos projetos.
Este paradigma possui muitas diferenas em relao ao paradigma de
programao estruturado. A principal mudana est relacionada a organizao
do cdigo fonte. Enquanto na programao estruturada a aplicao
estruturada em um projeto monoltico em que os dados e as funes do
programa fazem parte de um nico processo, na programao orientada a
objetos a estrutura modular e todos os componentes do programa so
manipulados por objetos em memria.
Outro detalhe importante que merece destaque a reutilizao de
cdigo fonte. Este recurso facilmente implementado no paradigma orientado
a objetos por meio do conceito de herana. Este conceito ser apresentado nas
Unidades seguintes. No entanto, na programao estruturada a reutilizao de
cdigo dificultada, de forma que os cdigos construdos tendem a ser
empregados unicamente nos projetos.
Classes
O conceito fundamental da orientao a objetos denominado classe. Uma
classe representa um modelo formal para criao de objetos. Comumente as
16
classes so definidas como moldes para objetos. Assim, com a definio de
uma classe possvel criar inmeros objetos. Em termos dos paradigmas de
programao, uma classe pode ser definida como um tipo abstrato de dados
definido pelo usurio.
A especificao de uma classe realizada por meio da abstrao do
problema, em termos de suas caractersticas e comportamentos. Estes
conceitos so conhecidos em programao orientada a objetos como atributos
e mtodos.
Por exemplo, considere como problema a criao de uma classe para
descrever as caractersticas e comportamentos de um carro. Neste contexto,
as principais caractersticas de um carro podem ser: cor, potncia do motor,
ano de fabricao, modelo e fabricante. Alm disso, os comportamentos
essenciais de um carro podem ser: ligar o motor, desligar o motor, acelerar,
frear e trocar de marcha. Este problema pode ser modelado por meio de uma
representao grfica, conforme ilustrado na Figura 1.
Carro
Cor
Potncia do motor
Ano de fabricao
Caractersticas
Modelo
Fabricante
Ligar o motor
Desligar o motor
Acelerar
Comportamentos
Frear
Trocar de marcha
17
Cdigo 1
1
2
3
8
9
public Carro() {
10
11
12
13
System.out.println("Carro ligado");
14
15
16
17
System.out.println("Carro desligado");
18
19
20
21
System.out.println("Acelerando...");
22
23
24
25
System.out.println("Freando...");
26
27
28
29
System.out.println("Trocar marcha");
30
31
32
18
Objetos
Na programao orientada a objetos o conceito de objeto est relacionado a
instanciao de uma classe. Dessa forma, um objeto representa a
transformao da descrio formal da classe em um modelo lgico e funcional,
o qual denominado objeto.
Os
objetos
podem
caracterizados
por
meio
das
informaes
2
3
7
8
c1.ligar();
c1.trocarmarcha();
10
c1.desligar();
11
12
c2.ligar();
13
c2.acelerar();
14
15
c3.ligar();
16
c3.acelerar();
17
c3.frear();
18
19
19
20
Atributos
Os atributos so responsveis pelo armazenamento dos dados dos objetos. As
caractersticas dos dados so definidas na descrio da classe. Para cada
atributo contido na classe necessrio especificar o tipo de dados que ser
armazenado. Na linguagem os tipos de dados primitivos so boolean, char, int,
float e double. Alm disso, um atributo pode manipular dados abstratos como,
por exemplo, objetos de outras classes.
A listagem Cdigo 3 apresenta alguns atributos que podem ser definidos
para manipular dados a respeito de pessoas.
Cdigo 3
1
2
3
7
8
Mtodos
Os mtodos so utilizados para definir os comportamentos que sero
executados pelos objetos. A especificao de um mtodo realizada no
contexto da classe, assim, possvel definir quais aes sero realizadas
quando o mtodo for invocado.
A listagem Cdigo 4 demonstra a criao de uma classe para
manipulao de dados referente a pessoas. Neste exemplo, foram utilizados os
atributos apresentados no Cdigo 3 e foram includos os mtodos. Alm disso,
20
importante notar a definio de um mtodo especial denominado toString, o
qual retorna os atributos do objeto em formato texto.
Cdigo 4
1 public class Pessoa {
2
3
7
8
System.out.println("Andando...");
10
11
12
13
System.out.println("Falando...");
14
15
16
17
return altura;
18
19
20
@Override
21
22
24
25
21
Referncias Bibliogrficas
DEITEL, Harvey M; DEITEL, Paul, J. Java: Como Programar. So Paulo:
Prentice-Hall, 2005.
Consideraes Finais
Nesta Unidade voc conheceu os aspectos fundamentais da metodologia
orientada a objetos. Por meio de definies claras e exemplos prticos voc
aprendeu os conceitos de classes, objetos, atributos e mtodos.
22
UNIDADE 3
ENCAPSULAMENTO
Nesta Unidade voc aprender sobre o conceito de encapsulamento e como
essa tcnica pode ser empregada na construo de programas baseado no
paradigma de programao orientado a objetos. Voc estudar tambm os
mecanismos utilizados para definir a visibilidade dos atributos e mtodos
presentes nas classes.
Introduo
Uma das principais caractersticas do paradigma de programao orientado a
objetos a possibilidade de ocultao dos dados e comportamentos presentes
nos objetos. Com isso, possvel preservar as caractersticas dos objetos, bem
como, a maneira que os comportamentos foram implementados.
O conceito de encapsulamento pode ser definido como uma tcnica de
organizao dos atributos e mtodos que previne o acesso no-autorizado as
informaes ou funcionalidades contidas no objeto.
Um objeto pode ser caracterizado pelas operaes que ele realiza e,
pelos dados que ele armazena. Assim, um objeto contm uma interface de
comunicao que expe as aes que ele pode executar e a implementao,
que contm o armazenamento e a manipulao dos dados.
O encapsulamento permite criar regras de acesso a interface e a
implementao do objeto. Com isso, possvel impedir o acesso por qualquer
outro meio que no seja os mecanismos especificados. Alm disso, a tcnica
de encapsulamento garante a integridade dos dados contidos no objeto.
Em termos de programao, a especificao de classes utilizando a
tcnica de encapsulamento tem como objetivo ocultar os dados que so
manipulados pelo objeto e disponibilizar as funcionalidades por meio de
mtodos. Assim, o acesso aos atributos pode ser restrito ao objeto e os
23
mtodos podem ter acesso liberado de forma que os objetos possam se
comunicar.
Visibilidade (Restries de Acesso)
A definio de atributos ou mtodos encapsulados em uma classe utiliza como
base o conceito de visibilidade. A visibilidade determina quais restries de
acesso sero empregadas ao objeto a partir de trs nveis de acesso, os quais
so denominados (DEITEL & DEITEL, 2005):
pblico (public)
protegido (protected)
privado (private)
24
Smbolo
Visibilidade
pblico (public)
protegido (protected)
privado (private)
2
3
//ATRIBUTOS
25
6
9
10
//MTODOS MANIPULADORES
11
12
return nome;
13
14
15
16
this.nome = nome;
17
18
19
20
return idade;
21
22
23
24
25
26
27
28
return sexo;
29
30
31
32
this.sexo = sexo;
33
34
35
36
return peso;
37
38
26
39
40
this.peso = peso;
41
42
43
44
return altura;
45
46
47
48
this.altura = altura;
49
50
51
2
3
4
5
8
9
10
p1.setNome("Joo da Silva");
11
p1.setIdade(25);
12
p1.setSexo('M');
27
13
p1.setPeso(75);
14
p1.setAltura(1.85);
15
16
p2.setNome("Ana Maria");
17
p2.setIdade(34);
18
p2.setSexo('F');
19
p2.setPeso(62);
20
p2.setAltura(1.66);
21
22
//Exibio de informaes
23
24
25
26
27
atributos
28
altura
+
getNome
setNome
getIdade
setIdade
getSexo
setSexo
getPeso
setPeso
getAltura
setAltura
mtodos
2
3
29
9
10
return codigo;
11
12
13
14
this.codigo = codigo;
15
16
17
18
return nome;
19
20
21
22
this.nome = nome;
23
24
25
26
return quantidade;
27
28
29
30
this.quantidade = quantidade;
31
32
33
34
return preco;
35
36
37
38
this.preco = preco;
39
40
41
30
42
return ativo;
43
44
45
46
this.ativo = ativo;
47
48
//MTODOS
49
50
51
return (preco*quantidade);
52
53
@Override
54
55
56
return "Produto"
57
58
59
60
61
62
63
64
65
31
3
7
8
prod1.setCodigo(1);
prod1.setNome("Mouse sem-fio");
10
prod1.setQuantidade(12);
11
prod1.setPreco(38.50);
12
prod1.setAtivo(true);
13
14
prod2.setCodigo(2);
15
prod2.setNome("Monitor 21''");
16
prod2.setQuantidade(20);
17
prod2.setPreco(395.00);
18
prod2.setAtivo(true);
19
20
prod3.setCodigo(3);
21
prod3.setNome("Impressora Laser");
22
prod3.setQuantidade(5);
23
prod3.setPreco(450.80);
24
prod3.setAtivo(false);
25
26
System.out.println(prod1.toString());
27
System.out.println(prod2.toString());
28
System.out.println(prod3.toString());
29
30
32
Referncias Bibliogrficas
DEITEL, Harvey M; DEITEL, Paul, J. Java: Como Programar. So Paulo:
Prentice-Hall, 2005
Consideraes Finais
Nesta Unidade voc conheceu a tcnica de encapsulamento empregada na
definio dos atributos e mtodos da classe. Alm disso, aprendeu sobre a
visibilidade das caractersticas e comportamentos dos objetos, por meio de
regras de restrio de acesso.
33
UNIDADE 4
CONSTRUTORES
Nesta Unidade voc aprender sobre a utilizao dos construtores. Os
construtores representam um conceito muito importante do paradigma de
programao orientado a objetos e so utilizados na especificao da maioria
das classes.
Introduo
No paradigma de programao estruturado o primeiro bloco de instrues a ser
executado em um programa o bloco principal, geralmente conhecido como
main. Analogamente, no paradigma de programao orientado a objetos o
primeiro bloco de instrues a ser executado quando um objeto instanciado
um mtodo conhecido como construtor.
Os construtores podem ser definidos como mtodos especiais que so
responsveis por especificar aes necessrias para a existncia de um objeto
(DEITEL & DEITEL, 2005). Neles possvel, por exemplo, realizar a
inicializao dos atributos da classe. O nome do mtodo construtor deve ser
exatamente igual ao nome da classe, respeitando caracteres definidos como
maisculo ou minsculo.
A listagem Cdigo 1 apresenta a definio da classe Java contendo um
mtodo construtor. A classe tem como objetivo manipular dados a respeito de
Veculos. Note na especificao que o mtodo construtor possui o mesmo
nome da classe. Alm disso, o objetivo do mtodo construtor inicializar os
atributos do objetivo com os valores padro.
Cdigo 1
1
2
3
//ATRIBUTOS
34
4
8
9
//CONSTRUTOR
10
public Veiculo() {
11
System.out.println("Executando construtor");
12
this.marca = "";
13
this.modelo = "";
14
this.cor = "";
15
this.ano = 0;
16
17
18
//MTODOS
19
20
return marca;
21
22
23
24
this.marca = marca;
25
26
27
28
return modelo;
29
30
31
32
this.modelo = modelo;
33
34
35
36
return cor;
35
37
38
39
40
this.cor = cor;
41
42
43
44
return ano;
45
46
47
48
this.ano = ano;
49
50
51
@Override
52
53
return "Veiculo"
54
55
56
57
58
59
36
2
3
4
5
v1.setMarca("Fiat");
v1.setModelo("Uno");
v1.setCor("Prata");
v1.setAno(2002);
10
System.out.println(v1.toString());
11
12
13
v2.setMarca("Ford");
14
v2.setModelo("Fiesta");
15
v2.setCor("Preto");
16
v2.setAno(2005);
17
System.out.println(v2.toString());
18
19
37
classe o programador pode escolher qual construtor mais adequado para
utilizar na criao do objeto. Este conceito conhecido como sobrecarga de
construtores.
A sobrecarga de construtores uma caracterstica da orientao a
objetos e possibilita a definio de vrios mtodos construtores com o mesmo
nome. No entanto, para que os mtodos construtores sejam definidos como
sobrecarregados necessrio especificar parmetros diferentes para cada um
deles. Assim, a declarao da classe pode conter vrios construtores com o
mesmo nome, porm, com os parmetros diferentes.
Este conceito de sobrecarga de construtores tambm pode ser aplicado
para mtodos simples da classe. Por exemplo, possvel definir duas funes
responsveis pela soma de nmeros. Na primeira definio, a funo soma
pode receber como parmetro dois nmeros do tipo inteiro e, na segunda
definio, os parmetros da funo podem ser nmeros do tipo double.
Na listagem Cdigo 3 apresentado o conceito de sobrecarga de
construtores. No exemplo foram criados cinco construtores sobrecarregados,
cada qual, contendo uma lista de parmetros diferente.
Cdigo 3
1
2
3
7
8
public Funcionario() {
this.nome = "";
10
this.idade = 0;
11
this.funcao = "";
12
this.salario = 0;
13
38
14
15
16
this.nome = nome;
17
18
19
20
this.nome = nome;
21
this.idade = idade;
22
23
24
25
this.nome = nome;
26
this.idade = idade;
27
this.funcao = funcao;
28
29
30
double salario) {
31
this.nome = nome;
32
this.idade = idade;
33
this.funcao = funcao;
34
this.salario = salario;
35
36
37
38
return nome;
39
40
41
42
this.nome = nome;
43
44
45
39
46
return idade;
47
48
49
50
this.idade = idade;
51
52
53
54
return funcao;
55
56
57
58
this.funcao = funcao;
59
60
61
62
return salario;
63
64
65
66
this.salario = salario;
}
67
68
69
@Override
70
71
return "Funcionrio"
72
73
74
75
"\nSalrio=
%.2f",salario)
76
77
+ '\n';
}
"
String.format("R$
40
78
79
2
3
4
5
Funcionario
f4
new
Funcionario("Antnio
Lima",36,"Msico");
9
Funcionario
f5
Santos",42,"Turismlogo",2200.00);
10
11
f1.setNome("Joo da Silva");
12
f1.setIdade(25);
13
f1.setFuncao("Economista");
14
f1.setSalario(3850.00);
15
16
f2.setIdade(36);
17
f2.setFuncao("Arquiteta");
18
f2.setSalario(2600.00);
19
20
f3.setFuncao("Gegrafo");
21
f3.setSalario(4000.00);
22
23
f4.setSalario(3000);
new
Funcionario("Aldo
41
24
25
System.out.println(f1.toString());
26
System.out.println(f2.toString());
27
System.out.println(f3.toString());
28
System.out.println(f4.toString());
29
System.out.println(f5.toString());
30
31
32
33
42
DEITEL, Harvey M; DEITEL, Paul, J. Java: Como Programar. So Paulo:
Prentice-Hall, 2005
Consideraes Finais
Nesta Unidade voc aprendeu sobre os construtores do paradigma de
programao orientado a objetos. Voc conheceu a tcnica utilizada para
especificao de construtores, bem como, a metodologia usada para definio
de construtores sobrecarregados.
43
UNIDADE 5
HERANA
Nesta Unidade voc aprender como utilizar um dos principais conceitos do
paradigma de programao orientado a objetos denominado herana. Este
recurso utilizado na especificao de classes com o foco na reutilizao de
software.
Introduo
Na rea de desenvolvimento de software um dos principais desafios
encontrados pelos programadores a reutilizao de software. Em termos de
programao, o reuso de software tem como objetivo incorporar em um novo
projeto as codificaes de projetos j realizados. Em outras palavras, um novo
projeto criado a partir de fragmentos de projetos j existentes.
O processo de reutilizao de software depende essencialmente das
tcnicas de programao que foram empregadas no desenvolvimento.
Dependendo das tcnicas utilizadas a utilizao pode ser invivel. No
paradigma de programao estruturado, por exemplo, uma maneira de
reutilizar software especificar as funcionalidades do cdigo por meio de
mdulos utilizando a tcnica de programao modular. No entanto, os mdulos
precisam ser generalistas, e utilizar fundamentalmente a passagem de
parmetros, o que pode ser impraticvel dependendo do projeto.
O paradigma de programao orientado a objetos possui uma
metodologia clara e objetiva para reutilizao de software. Essa metodologia
conhecida como herana e permite a especificao de novas classes a partir
de definies de classes existentes. Neste contexto, as novas classes criadas
herdam caractersticas e funcionalidades de classes previamente especificadas
(DEITEL & DEITEL, 2005).
44
Na especificao de classes utilizando herana, o programador pode
construir novas classes a partir de definies existentes, alm disso, possvel
aprimorar as novas classes adicionando novos recursos.
No paradigma orientado a objetos a tcnica de herana pode ser
entendida como uma relao pai e filho. Em que a classe filha herda as
caractersticas e funcionalidades da classe pai.
Outra nomenclatura comumente utilizada a relao superclasse e
subclasse. Neste caso, a subclasse estende os recursos da superclasse.
Algumas linguagens de programao tambm utilizam da terminologia classe
base e classe derivada para determinar a herana.
A Figura 1 apresenta graficamente a relao de herana entre classes. A
superclasse contm os atributos e mtodos que sero compartilhados entre as
classes derivadas, as quais so denominadas subclasses.
Superclasse
atributos
classe pai
mtodos
Subclasse
atributos
mtodos
Subclasse
classes filhas
atributos
mtodos
45
de
mais
de
uma
superclasse.
Este
tipo
de
46
Pessoa
- Nome
- Endereo
+ setNome()
+ getNome()
+ set Endereo()
+getEndereo()
PessoaFisica
PessoaJuridica
- CPF
- CNH
- CNPJ
- IE
+ setCPF()
+ getCPF()
+ setCNH()
+ getCNH()
+ setCNPJ()
+ getCNPJ()
+ setIE()
+ getIE()
47
a declarao da classe PessoaJuridica, a qual tambm herda as caractersticas
e funcionalidades da classe Pessoa.
Na codificao das classes derivadas comum utilizar referncias aos
recursos da classe pai. Na linguagem de programao Java essas invocaes
so realizadas por meio da palavra reservada super.
Cdigo 1
1
2
3
5
6
public Pessoa() {
this.nome = "";
this.endereco = "";
10
11
12
this.nome = nome;
13
this.endereco = endereco;
14
15
16
17
return nome;
18
19
20
21
this.nome = nome;
22
23
24
25
return endereco;
26
48
27
28
29
this.endereco = endereco;
30
31
32
@Override
33
34
return
35
36
37
38
Cdigo 2
1
2
3
5
6
public PessoaFisica() {
super();
this.cpf = "";
9
10
this.cnh = "";
}
11
12
14
this.cpf = cpf;
15
16
17
this.cnh = cnh;
}
49
18
19
return cpf;
20
21
22
23
this.cpf = cpf;
24
25
26
27
return cnh;
28
29
30
31
this.cnh = cnh;
32
33
34
@Override
35
36
return
37
38
39
40
41
Cdigo 3
1
2
3
5
6
public PessoaJuridica() {
50
7
this.cnpj = "";
this.ie = "";
10
11
12
14
this.cnpj = cnpj;
15
this.ie = ie;
16
17
18
19
return cnpj;
20
21
22
23
this.cnpj = cnpj;
24
25
26
27
return ie;
28
29
30
31
this.ie = ie;
32
33
34
35
@Override
36
37
return
38
51
39
40
41
42
2
3
4
5
7
8
pf.setNome("Joo da Silva");
10
pf.setCpf("123.456.789-00");
11
pf.setCnh("012345789");
12
13
14
15
"Ana Maria",
16
17
"01.234.567/0001-89",
52
18
"012134567-8");
19
20
21
System.out.println(pf.toString());
22
System.out.println(pj.toString());
23
24
25
Referncias Bibliogrficas
DEITEL, Harvey M; DEITEL, Paul, J. Java: Como Programar. So Paulo:
Prentice-Hall, 2005
Consideraes Finais
A Unidade apresentou o conceito de herana e como esta metodologia pode
ser aplicada em projetos orientados a objetos. Voc aprendeu como especificar
classes com herana, alm de declarar objetos de classes derivadas.
UNIDADE 6
53
POLIMORFISMO
Nesta Unidade voc conhecer a utilizao, codificao e importncia do
conceito de polimorfismo. Este recurso faz parte do paradigma de programao
orientado a objetos e comumente utilizado em projetos de aplicaes
baseadas neste paradigma.
Introduo
O termo polimorfismo pode ser traduzido literalmente como algo contendo
muitas formas. Em programao de computadores, o conceito de polimorfismo
utilizado para referenciar objetos que contm caractersticas distintas para
cada filho e pode ser implementado de trs maneiras (DEITEL & DEITEL,
2005):
54
1
2
3
return (valor1+valor2);
6
7
return (valor1+valor2+valor3);
10
11
12
return (valor1+valor2);
13
14
15
valor3){
16
return (valor1+valor2+valor3);
17
18
19
20
double v1 = Double.parseDouble(valor1);
21
double v2 = Double.parseDouble(valor2);
22
return String.valueOf(v1+v2);
23
24
25
valor3){
26
double v1 = Double.parseDouble(valor1);
27
double v2 = Double.parseDouble(valor2);
28
double v3 = Double.parseDouble(valor3);
29
return String.valueOf(v1+v2+v3);
30
31
55
32
3
4
//Declarao do objeto
6
7
8
9
int res1;
10
res1 = soma.getSoma(10,20);
11
12
13
res1 = soma.getSoma(10,20,30);
14
15
16
double res2;
17
18
19
20
21
22
String res3;
23
24
25
26
56
27
28
57
Cdigo 3
1
2
3
5
6
public Aluno() {
this.nota1 = 0;
this.nota2 = 0;
10
11
12
this.nota1 = nota1;
13
this.nota2 = nota2;
14
15
16
17
return nota1;
18
19
20
21
this.nota1 = nota1;
22
23
24
25
return nota2;
26
27
28
29
this.nota2 = nota2;
30
31
32
/*
58
33
* MTODO: getMedia
34
35
36
*/
37
38
return (this.nota1+this.nota2)/2;
39
40
41
@Override
42
43
44
45
46
Cdigo 4
1
2
3
public AlunoGraduacao() {
super();
6
7
super(nota1, nota2);
10
11
12
/**
13
14
15
16
59
17
*/
18
19
@Override
20
21
return (super.getNota1()*0.40
22
+super.getNota2()*0.60);
23
24
25
@Override
26
27
28
super.toString();
29
30
31
Cdigo 5
1
2
3
5
6
public AlunoPosGraduacao() {
super();
this.notaProjeto = 0;
this.notaMonografia = 0;
10
11
12
super(nota1, nota2);
14
this.notaProjeto = notaProjeto;
60
15
this.notaMonografia = notaMonografia;
16
17
18
19
return notaProjeto;
20
21
22
23
this.notaProjeto = notaProjeto;
24
25
26
27
return notaMonografia;
28
29
30
31
this.notaMonografia = notaMonografia;
32
33
34
/**
35
36
37
38
39
*/
40
41
@Override
42
43
return ((super.getMedia())*0.50)
44
+ this.getNotaProjeto()*0.35
45
+ this.getNotaMonografia()*0.15;
46
47
61
48
@Override
49
50
51
super.toString();
52
53
2
3
4
5
a1.setNota1(8.50);
a1.setNota2(9.20);
System.out.println(a1.toString());
9
10
11
a2.setNota1(6.80);
12
a2.setNota2(7.40);
13
System.out.println(a2.toString());
14
15
16
a3.setNota1(9.30);
17
a3.setNota2(8.60);
18
a3.setNotaProjeto(9.80);
19
a3.setNotaMonografia(9.20);
20
System.out.println(a3.toString());
21
62
22
63
1
2
3
4
5
6
7
/*
10
11
*/
12
13
14
15
16
17
18
/*
19
* COERO
20
21
22
23
24
* ps-graduao.
25
*/
26
27
// Aluno 1
28
((AlunoPosGraduacao)aluno[1]).setNotaMonografia(9.50);
29
((AlunoPosGraduacao)aluno[1]).setNotaProjeto(9.90);
30
31
32
//Aluno 2
64
((AlunoPosGraduacao)aluno[2]).setNotaMonografia(8.80);
33
((AlunoPosGraduacao)aluno[2]).setNotaProjeto(9.20);
34
35
36
37
38
39
System.out.println(aluno[i].toString());
40
41
42
43
44
System.out.println("Nota
do
projeto...=
"
"
((AlunoPosGraduacao)aluno[i]).getNotaProjeto());
45
System.out.println("Nota
da
monografia=
((AlunoPosGraduacao)aluno[i]).getNotaMonografia());
46
47
48
49
50
65
Consideraes Finais
Nesta Unidade voc aprendeu como construir classes polimrficas. Esta
tcnica utilizada em projetos baseados no paradigma orientado a objetos e
pode ser implementada de trs formas: sobrecarga, sobreposio e
generalizao.
66
UNIDADE 7
CLASSES E MTODOS ABSTRATOS
Nesta Unidade voc aprender como criar classes e mtodos abstratos. Este
conceito faz parte do paradigma de programao orientado a objetos e pode
ser empregado na soluo de diversos tipos de problemas.
Introduo
Em projetos baseados no paradigma de programao orientado a objetos
comum criarmos classes que sero utilizadas como base para outras classes.
Essas classes so conhecidas como superclasses so herdadas por outras
classes denominadas subclasses. Este conceito conhecido como herana e
foi estudado na Unidade 5.
Geralmente a definio de uma superclasse serve de referncia para as
classes derivadas, as quais herdam os atributos e mtodos especificados na
classe base. A tcnica de classes abstratas permite ao programador declarar
classes que nunca sero instanciadas. Dessa forma, uma classe abstrata pode
ser utilizada apenas em situaes de herana e, no permitem que objetos
sejam diretamente criados.
Em termos de programao, uma classe abstrata utilizada para
oferecer as classes derivadas uma superclasse com total integridade em
relao aos seus atributos e mtodos. Com isso, as classes filhas podem
acessar as propriedades da classe pai de maneira apropriada. A especificao
de uma classe abstrata realizada por meio da palavra reservada
abstract(DEITEL & DEITEL, 2005).
Uma classe abstrata pode conter mtodos que sero utilizados como
base para as classes derivadas. Estes mtodos so conhecidos como
mtodos abstratos. Um mtodo abstrato no possui implementao, assim,
67
na definio da classe abstrata especificada apenas a assinatura do mtodo
abstrato. As classes que herdarem a classe abstrata devero realizar a
codificao do mtodo
A listagem Cdigo 1 apresenta a codificao de uma classe abstrata, a
qual contm mtodo abstratos que devero ser implementados pelas classes
derivadas. Neste exemplo, foi definida uma superclasse abstrata denominada
Funcionario.
Cdigo 1
1
2
3
// salrio base
5
6
public Funcionario() {
this.nome = "";
this.salario = 0.0;
10
11
12
this.nome = nome;
13
this.salario = salario;
14
15
16
17
return nome;
18
19
20
21
this.nome = nome;
22
23
24
68
25
this.salario = salario;
26
27
28
/*
29
* MTODO ABSTRATO
30
31
32
* derivadas.
33
*/
34
35
36
@Override
37
38
return
39
+ "\nSalrio= "
40
+ String.format("%.2f",getSalario());
41
42
43
2
3
4
69
5
public Vendedor() {
super();
this.totalvendas = 0;
9
10
public
Vendedor(String
nome,
double
salario,double
totalvendas) {
11
super(nome, salario);
12
this.totalvendas = totalvendas;
13
14
15
16
return totalvendas;
17
18
19
20
this.totalvendas = totalvendas;
21
22
23
24
/**
25
26
salrio
27
28
* de vendas do funcionrio.
29
*/
30
31
@Override
32
33
return super.salario +
34
35
(this.totalvendas*0.08);
}
70
36
37
Cdigo 4
1
2
3
4
5
public Gerente() {
super();
this.volumevendas = 0.0;
9
10
public
Gerente(String
nome,
double
salario,
double
volumevendas) {
11
super(nome, salario);
12
this.volumevendas = volumevendas;
13
14
15
16
return volumevendas;
17
18
19
20
this.volumevendas = volumevendas;
21
22
23
/**
24
25
salrio
26
71
27
* de vendas da loja.
28
*/
29
@Override
30
31
32
33
34
Para ilustrar o funcionamento das classes criadas uma nova classe foi
definida como TesteFuncionario. A listagem Cdigo 4 apresenta o contedo
dessa classe. Alm disso, a Figura 1 demonstra o resultado da execuo da
aplicao.
Cdigo 4
1
2
3
4
5
ved.setNome("Joo da Silva");
ved.setSalario(1000);
ved.setTotalvendas(15000);
System.out.println(ved.toString());
10
11
12
13
ger.setNome("Ana Maria");
14
ger.setSalario(1500);
15
ger.setVolumevendas(355800);
16
System.out.println(ger.toString());
17
18
72
19
Referncias Bibliogrficas
DEITEL, Harvey M; DEITEL, Paul, J. Java: Como Programar. So Paulo:
Prentice-Hall, 2005
Consideraes Finais
Nesta Unidade voc aprendeu como criar classes e mtodos abstratos. Alm
disso, voc conheceu detalhes especficos da codificao dessa tcnica
utilizando a linguagem de programao Java.
73
UNIDADE 8
INTERFACES E HERANA MLTIPLA
Nesta Unidade voc aprender como elaborar classes utilizando o conceito de
herana mltipla. No paradigma orientado a objetos a herana mltipla tem
como objetivo criar classes que sejam derivadas de mltiplos pais.
Introduo
Uma das principais caractersticas do paradigma de programao orientado a
objetos a possibilidade de reutilizao de software. Este recurso realizado
por meio da especificao de projetos que utilizam o conceito de herana. Na
orientao objetos a herana permite que classes sejam criadas a partir de
definies previamente existentes. Em outras palavras, as classes derivadas
podem ser definidas em funo de classes conhecidas como superclasses.
No paradigma orientado a objetos o conceito de herana pode ser
definido de duas maneiras denominadas: herana simples e herana mltipla.
No entanto, algumas linguagens de programao orientadas a objetos no
implementam nativamente a herana mltipla, como o caso da linguagem de
programao Java e C#. Para essas linguagens, a herana mltipla pode ser
definida utilizando um recurso denominado interfaces.
Interfaces
As interfaces so recursos das linguagens de programao que permitem a
especificao de mtodos que sero definidos por outras classes. Em outras
palavras, as interfaces permitem a definio de assinaturas de mtodos que
sero codificados por classes que implementam essas interfaces. Na
linguagem de programao Java este procedimento indicado no incio da
definio da classe com a palavra reservada implements(DEITEL & DEITEL,
2005). A listagem Cdigo 1 apresenta a especificao de uma interface na
linguagem de programao Java. Em seguida, a listagem Cdigo 2 demonstra
74
a implementao da interface criada e a codificao dos seus respectivos
mtodos.
Cdigo 1
1
2
3
8
9
Cdigo 2
1
2
3
5
6
public Calculadora() {
this.valor1 = 0;
this.valor2 = 0;
10
11
12
this.valor1 = valor1;
13
this.valor2 = valor2;
14
15
16
17
return valor1;
75
18
19
20
21
this.valor1 = valor1;
22
23
24
25
return valor2;
26
27
28
29
this.valor2 = valor2;
}
30
31
32
@Override
33
34
return this.valor1+this.valor2;
35
36
37
@Override
38
39
return this.valor1-this.valor2;
40
41
42
@Override
43
44
return this.valor1/this.valor2;
}
45
46
47
@Override
48
49
return this.valor1*this.valor2;
50
76
51
52
@Override
53
54
System.out.println("Resultados");
55
56
57
58
59
60
61
}
A listagem Cdigo 3 ilustra a codificao da classe de teste para
2
3
calc.setValor1(8);
calc.setValor2(10);
calc.exibirResultados();
9
10
77
Herana Mltipla
O conceito de herana mltipla no paradigma orientado a objeto representa a
especificao de subclasses a partir da herana de mltiplas superclasses. Na
linguagem de programao Java este recurso implementado utilizando
interfaces.
As listagens Cdigo 4, Cdigo 5 e Cdigo 6 demonstram a
implementao de herana mltipla na linguagem de programao Java. Note
que as subclasses (Cdigo 6 e Cdigo 7) herdam uma superclasse (Cdigo 4)
e implementa uma interface (Cdigo 5), caracterizando assim o conceito de
herana mltipla.
Cdigo 4
1
2
3
5
6
public Pessoa() {
this.nome = "";
this.salario = 0;
10
11
12
this.nome = nome;
13
this.salario = salario;
14
15
16
17
this.nome = nome;
18
19
20
78
21
return nome;
22
23
24
25
this.salario = salario;
26
27
28
29
return this.salario;
30
31
32
@Override
33
34
return
35
36
37
38
Cdigo 5
1
2
3
5
6
8
9
Cdigo 6
79
1
2
3
4
5
public Gerente() {
super();
this.volumevendas = 0;
9
10
public
Gerente(String
nome,
double
salario,
double
volumevendas) {
11
super(nome, salario);
12
this.volumevendas = volumevendas;
13
14
15
16
return volumevendas;
17
18
19
20
this.volumevendas = volumevendas;
}
21
22
23
@Override
24
25
return (super.salario)+(this.volumevendas*(COMISSAO/2));
26
27
28
@Override
29
30
31
32
80
33
Cdigo 7
1
public
class
Vendedor
extends
Pessoa
implements
IEmpregado{
2
3
5
6
public Vendedor() {
super();
this.totalvendas = 0;
this.horasextras = 0;
10
11
12
public
Vendedor(String
nome,
double
salario,
super(nome, salario);
14
this.totalvendas = totalvendas;
15
this.horasextras = horasextras;
16
17
18
19
return totalvendas;
20
21
22
23
this.totalvendas = totalvendas;
24
25
26
27
return horasextras;
double
81
28
29
30
31
this.horasextras = horasextras;
32
33
34
@Override
35
36
return (super.salario)+(this.totalvendas*COMISSAO)
37
38
+(this.horasextras*HORAEXTRA);
}
39
@Override
40
41
42
43
44
45
2
3
4
5
6
7
82
8
10
11
12
System.out.println(p[i].toString());
13
14
15
Referncias Bibliogrficas
DEITEL, Harvey M; DEITEL, Paul, J. Java: Como Programar. So Paulo:
Prentice-Hall, 2005
Consideraes Finais
83
Nesta Unidade voc aprendeu, por meio de exemplos de cdigos funcionais,
como elaborar projetos orientados a objeto utilizando o recurso de herana
mltipla. Alm disso, voc estudo como criar interfaces que podem ser
implementadas por outras classes.
www.cruzeirodosulvirtual.com.br
www.cruzeirodosulvirtual.com.br
Campus Liberdade
Rua Galvo Bueno, 868
CEP 01506-000 - So Paulo/SP Brasil
Tel: (55 11) 3385-3000