Você está na página 1de 31

Lógica em Java

Orientado a Objetos
Apostila

Material desenvolvido por


COTI Informática

Av. Rio Branco, 185 - Sala 901 - Rio de Janeiro / RJ


Tel. 21-2262-9043 / contato@cotiinformatica.com.br
Apostila de Lógica em Java Orientado a Objetos

Quem Somos
A escola Coti Informática é hoje uma fábrica de inserir
alunos no Mercado de Trabalho.

Coordenado pelos Professores Edson Belém e Fernanda


Nunes a Coti Informática oferece cursos nas áreas de
Programação, Banco de Dados, Análise de Sistemas e
Web Design.

Nossos cursos têm como principal objetivo a


especialização e a preparação plena de nossos alunos
para o Mercado de Trabalho. A credibilidade junto aos
alunos, e a qualidade de ensino são preocupações
constantes, que fazem da Coti Informática referência
no ensino em Programação, Web Design, Análise de
Sistemas e Banco de Dados.

Coti Informática.
Aqui o aluno é tratado como aluno.

Nesta Apostila você irá


aprender sobre...
• O que é o Java e porque ele tournou-se uma linguagem aplamente difundida.

• Como é programar de forma Orientada a Objetos.

• Desenvolver seus primeiros programas em Java.

• Entender conceitos de Orientação a Objetos como Encapsulamento e Polimorfismo.

Ao final das lições você


será capaz de...
• Criar e executar programas na linguagem Java.
Bons
Estudos
• Desenvolver programas utilizando o paradigma

Orientado a Objetos

• Escrever programas que utilizam Encapsulamento,

Herança e Polimosfismo

COTI INFORMÁTICA E-LEARNING


2
Apostila de Lógica em Java Orientado a Objetos

Lição 1

Introdução
ao Java
Muito hoje em dia é falado sobre Java e toda a revolução
que ele vem provocando no way-of-life de
programadores, analistas e internautas. Mas o que é
Java, afinal? Quais são suas origens e seus propósitos?
De onde vem todo esse sucesso?

O Java é uma linguagem Orientada a Objetos (significa linguagem orientada a execução de


classes), sua criação foi realizada pela empresa Sun, e foi desenvolvida a partir da linguagem
C++. O maior Boom do java no mercado é sua utilização na web, 80% de suas aplicações são
desenvolvidas para a internet, onde hoje no mundo inteiro a adotou virando a maior e mais
utilizada linguagem de programação do mundo.

Comentários Adicionais

O porquê de utilizar o Java ? apesar de ser feito para web, ele possui
robustez para trabalhar com 3d, aplicações matemáticas, redes, pode criar
compiladores e até aplicações locais como java swing.

Importante Conhecimento

Para utilizar o Java primeiro é necessário a instalação do jdk, depois a Ide que você irá utilizar,
por exemplo Netbeans ou Eclipse.

No momento em que instalo o jdk (que é o compilador, ele também instala a máquina virtual
Java JVM que é o seu interpretador ele roda os arquivos .class) O JVM é independente a
plataforma pois ele fica em uma camada superior a S.O., como ele não afeta o Sistema
Operacional qualquer plataforma o executa (Windows, Linux, Mac) .

A IDE é utilizada para ajudar na programação, ela possui compilação dos códigos na própria
linha quando os dados forem digitados mostrando o erro ou não, possui o teste de código, e
possui um depurador para verificar onde e como ocorreu o erro .

COTI INFORMÁTICA E-LEARNING


3
Apostila de Lógica em Java Orientado a Objetos

Entendendo melhor o Java

• Java é compilado, o código fonte é protegido ele possui um


arquivo .java que é a classe com o programa, e quando
compilado ele cria um arquivo .class, o cliente só poderá ter
acesso ao .class, onde o java fica com a fábrica de software
(quem desenvolve)

• A maior ramificação do java no Brasil é para o trabalho na


web, criação de sites.

• O Java é completamente Orientado a Objetos, facilitando a


utilização da Linguagem de Modelagem Unificada (UML)

• O Java foi aceito pela academia (Universidades) e pelo


comércio (Empresas).

• O Java é muito grande, para aprendizagem devido suas ramificações e frameworks em


constantes desenvolvimentos.

• FrameWorks (São programas que irão ajuda-los a montar um projeto utilizando um


pattern pronto como Struts que irá trabalhar bem com o MVC

• A Ide mais utilizada no mundo é o Eclipse, apesar do Netbeans possuir milhares de


seguidores assim como eu professor Belém da Coti Informática.

• O Mercado de trabalho utiliza muito o Java, logo um grande programador não ficará
nunca desempregado (estamos no ano 2010).

Porque o Java é independente de plataforma?

Java é uma linguagem independente de plataforma pois os


programas Java são compilados para uma forma intermediária
de código denominada bytecodes que utiliza instruções e tipos
primitivos de tamanho fixo, ordenação big-endian e um
biblioteca de classes padronizada.

Os bytecodes são como uma linguagem de máquina destinada


a uma única plataforma, a máquina virtual Java (JVM Java
Virtual Machine), um interpretador de bytecodes.

Pode-se implementar uma JVM para qualquer plataforma assim temos que um mesmo programa
Java pode ser executado em qualquer arquitetura que disponha de uma JVM.

COTI INFORMÁTICA E-LEARNING


4
Apostila de Lógica em Java Orientado a Objetos

Construindo sua
primeira aplicação
Java na IDE NetBeans

Instalação dos softwares necessários

Primeiro você deverá instalar o JDK (Kit de desenvolvimento Java) e, em seguida a IDE
(Ambiente integrado de desenvolvimento) que desejar utilizar para desenvolver seus programas

Siga os passos abaixo:

1. Obtendo e instalando o JDK:

Acesse o site http://java.sun.com/javase/downloads/widget/jdk6.jsp , efetue o download


e instale o aplicativo

COTI INFORMÁTICA E-LEARNING


5
Apostila de Lógica em Java Orientado a Objetos

2. Obtendo e instalando o NetBeans

Acesse o site http://netbeans.org/downloads/index.html e selecione a opção de


download da IDE para distribuição Java

3. Criando um primeiro programa em NetBeans

ƒ Selecione a opção Arquivo / Novo Projeto

ƒ Escolha Java / Aplicativo Java

ƒ Coloque o nome do projeto de Exemplo, em seguida, selecione o local que


deseja gravar o projeto.

ƒ Desmarque também a opção criar classe principal, pois isto será feito em
seguida nos próximos passos.

Seu projeto será exibido ao lado esquerdo, o diretório que você utilizará para criar seus
arquivos de código-fonte (Classes) chama-se “Pacotes de Código-Fonte”.

COTI INFORMÁTICA E-LEARNING


6
Apostila de Lógica em Java Orientado a Objetos

Para criar uma Classe, antes é necessário que você crie um pacote. Pacotes são
utilizados para armazenar Classes (arquivos .java) para criar um pacote clique com o
direito em pacotes de código-fonte e scolha a opção novo / pacote java.

ƒ Coloque o nome do pacote de aula

ƒ Para criar uma Classe dentro do pacote, clique com o direito no pacote e
selecione novo / classe java

ƒ Coloque o nome da Classe de Aluno (Primeira letra em caixa-alta)

Será exibido um escopo do arquivo com o principal para considera-lo como Classe.

Defina dois atributos na Classe (apenas para teste, pois os conceitos de Orientação a
Objetos serão exemplificados melhor adiante)

package aula;

public class Aluno {

private String nome;


private int idade;

public void recebeDados(String n, int i){


nome = n;
idade = i;
}

public void imprimeDados(){


System.out.println("Nome..: " + nome);
System.out.println("Idade.: " + idade);
}
}

Para executar a Classe Aluno, será necessário a criação de uma Classe principal
(chamada de Main). Para tal, clique com o direito no pacote aula e selecione novamente
novo / classe java

Coloque o nome da Classe de Main

COTI INFORMÁTICA E-LEARNING


7
Apostila de Lógica em Java Orientado a Objetos

Para que esta Classe deja utilizada para executar a aplicação é necessário a criação de
um método chamado main. Este método é utilizado pelo compilador para rodar sua
aplicação.

Mais adiante, será abordado com mais profundidade o uso deste método, por enquanto,
basta cria-lo conforme a seguir:

Para fazer com que a Classe Aluno torne-se objeto, digite o código abaixo:

Através do objeto criado “a” podemos utilizar os atributos definidos na Classe Aluno, por
exemplo atribuir valor a estes:

Para imprimir os valores da Classe, utilizou-se o comando System.out.println() no


metodo imprimeDados(). Para executar o programa clique com o direito e depois em
“Executar Arquivo”

Será exibido o resultado abaixo:

Pronto! Você está apto para acompanhar o restante deste material utilizando a IDE
NetBeans

COTI INFORMÁTICA E-LEARNING


8
Apostila de Lógica em Java Orientado a Objetos

Lição 2

Principais conceitos de
orientação a objetos
Java é uma linguagem orientada a objetos e, com isso,
não é possível desenvolver nenhum programa sem seguir
tal paradigma.

O que significam Classes, Atributos e Métodos ?

Classes são programa que possuem um nome em caixa alta, que acompanham o nome do
arquivo, quando a classe for public, a classe representa a regra de negócio que o seu nome irá
mencionar, por exemplo : Se a classe for Pessoa você não poderá fazer programas matemáticos
dentro da classe Pessoa, o nome deve possuir uma coesão com a programação, dentro da classe
pessoa você deverá ter programas que irá representar o nome

public class Pessoa{

private String nome;


private String email;

public String getNome(){


return nome;
}

public void setNome(String nome){


this.nome = nome;
}

public String getEmail(){


return email;
}

public void setEmail(String email){


this.email = email;
}
}

Observações sobre a classe Pessoa :

Atributos
Ela possui dois atributos, que são “variáveis” globais de
uma classe” todos os subprogramas (métodos) irão
visualizar o nome e o email, eles são privates,
Ou seja outras classes não irão visualiza-los, eles estão
fechados para outras classes, mais sempre serão visíveis a
própria classe

COTI INFORMÁTICA E-LEARNING


9
Apostila de Lógica em Java Orientado a Objetos

Métodos
São subprogramas das classes, setNome(parametro), getNome(), setEmail(parametro),
getEmail(). Todo método possui parênteses frise sempre isso.

Repare que no método set ele é sempre criado com o void, que significa sem retorno, e o
método getNome() ele criado com o tipo do atributo o nome foi criado que foi o String.

Atributos (Variáveis)

private String nome;


Qualificador identificador atributo

Qualificadores
Qualificador podem ser (public, protected, private, default (em branco))

public - é um qualificador que irá representar aberto para todas as classes,


qualquer classe quando o atributo

protected - significa proteger o atributo em um pacote que representa o


diretório onde estão as classes.

default (em branco) - Ele significa proteger também o atributo em um


pacote só que ele é mais fechado do que o protected ele protege até a classe
com herança.

private - Significa fechado para todas as classes, nenhuma classe irá ter
acesso ao atributo do tipo private,

Cometário é reprentado por //


Exemplo:

private int idade;


//a idade estará fechada para outras classes.

protected String nome;


// o nome está protegido no pacote (todas as classes do pacote o visualizam

char letra ;
// A letra é do tipo default fechado no pacote

COTI INFORMÁTICA E-LEARNING


10
Apostila de Lógica em Java Orientado a Objetos

Identificadores
Primeiro os primitivos:

Inteiros
byte - menos 2 elevado 7 até 2 elevado a 7 -1 (Exemplo -128 a 127)
short - menos 2 elevado 15 até 2 elevado a 15 -1
int - menos 2 elevado 31 até 2 elevado a 31 -1
long - menos 2 elevado 63 até 2 elevado a 63 -1

Reais ou flutuantes
float - menos 2 elevado 31 até 2 elevado a 31
double - menos 2 elevado 63 até 2 elevado a 63

Texto
String - representa qualquer tipo de caracter, ele não é do tipo primitivo porque
é uma classe que vem do pacote java.lang; que já vem interno ao java
char - representa um caracter

Booleano
boolean - representa true ou false

Tipo Global
Object - Classe representa qualquer tipo de dado, pode ser número, String,
data, qualquer tipo de classe desejada.

private String nome=”belém”;


private int idade=37;
private char sexo=’m’;

Operadores

Operador Significado Categoria de Operador


+ Soma Aritmético
- Subtração Aritmético
* Multiplicação Aritmético
/ Divisão Aritmético
% Módulo Aritmético
== Igualdade Relacional
!= Desigualdade Relacional
< Menor Relacional
> Maior Relacional
<= Menor Igual Relacional
>= Maior Igual Relacional
= Atribui Valor de Atribuição
&& AND Lógico
|| OR Lógico
! NOT Lógico
^ XOR Lógico

COTI INFORMÁTICA E-LEARNING


11
Apostila de Lógica em Java Orientado a Objetos

Observação:

No java não utilizamos os atributos diretamente. Eles geralmente


são representados por métodos, repare que sempre que os declaro
utilizo private, para que nenhuma classe o consiga visualizar.

Os métodos de representação são :

public String getNome(){


return nome;
}
public void setNome(String nome){
this.nome = nome;
}

Repare que...

O Método getNome() foi declarado como String pois ele irá retornar o atributo
Nome que foi declarado como String, o get é do mesmo tipo do Atributo, ele
representa o próprio atributo (Ele é o método de Saída, de retorno)

O Método setNome(parâmetro) , é o método de entrada que significa irei


passar um nome para o atributo da classe

Exemplo :
this.nome = parâmetro;
tradução: atributo da classe nome recebe o parâmetro.

public static void main(String[] args)

É o método que inicia a execução do programa Java. Ele chama todos os demais métodos de
outras classes. É o método que é visto inicialmente pelo Java Local e sugere-se que seja o
primeiro método a ser procurado quando se lê um programa Java, assim como a classe “Main”
deve ser a primeira classe a ser procurada.

Para executar Pessoa é necessário uma Classe que que contenha um método padrão que
representa a execução de um programa escrito em Java. Este método é chamado de main.
Exemplo:

COTI INFORMÁTICA E-LEARNING


12
Apostila de Lógica em Java Orientado a Objetos

public class Teste{

public static void main(String args[]){

//Classe Pessoa tornando-se objeto

Pessoa p = new Pessoa();

//Entrada de dados nos atributos da Classe

p.setNome(”Belem”);
p.setEmail(“belem@gmail.com”);

//Para imprimir os dados de Pessoa utilize o código abaixo:

System.out.println(p.getNome());
System.out.println(p.getEmail());

}
}

Repare que dentro método "main" não é realizado nenhuma


operação de cálculo.

As operações de calculo ou de banco de dados etc. podem


ser feitas sim na “main”, mas NÃO devem, pois quebraria o
modelo de orientação a objeto.

Por esta diretriz, deve haver um número pequeno de


instruções, se possível estas instruções devem se limitar à
chamada de métodos de outras classes.

É como se a “main” fosse um chefe. O chefe pode realizar tarefas, mas não deve fazê-lo quem
deve fazer são seus subordinados, neste caso, os métodos de outras classes.

Lembre-se que Java é "case sensive", ou seja, o fato de a letra ser maiúscula e minúscula faz
diferença. "Main" e "main" são coisas distintas, o primeiro é classe principal e o segundo método
principal.

COTI INFORMÁTICA E-LEARNING


13
Apostila de Lógica em Java Orientado a Objetos

Entendo melhor
os objetos

Um objeto é como se fosse um clone ou uma cópia da classe. No programa de referência veja as
seguintes instruções: Pessoa p = new Pessoa() . O new (novo, se refere a um novo

objeto) faz a chamada do construtor Pessoa() ao mesmo tempo em que cria um objeto
baseado na classe Pessoa. Tudo o que você precisa entender é que p é como se fosse uma cópia
da classe Pessoa e, portanto, p tem todos atributos e métodos advindos da classe Pessoa.

Vamos supor um livro que tenha espaços em branco para serem preenchidos. Ninguém vai usar
o livro original até porque fazer um livro original dá muito trabalho, por isto, vai para prensa o
molde original para fazer cópias.

O livro original escrito diretamente pelo autor é a classe, a cópia é o objeto.

Se o livro cópia, como é o caso, tem espaços em branco para serem preenchidos pelos alunos,
cada exemplar poderá assumir uma forma diferente, pois diferentes alunos preencherão os
espaços em branco (como se cada cópia assumisse um novo estado) e cada aluno fará o que
quiser com seu exemplar, desde que o livro original ofereça este recurso, pode-se ler somente
os capítulos que lhe interessa e fazer os exercícios que estão disponíveis que o professor
mandou. Assim também é o objeto, teve uma forma original advinda da classe, mas pode ser
usado como quiser pelo usuário.

A definição mais correta de objeto é: o local da memória onde é armazenado o


Estado da Classe. Todavia, entendemos que esta definição é pouco assimilável para um
aluno iniciante em Java. Caso fique mais fácil entender por esta definição ou por outra definição,
fique a vontade.

COTI INFORMÁTICA E-LEARNING


14
Apostila de Lógica em Java Orientado a Objetos

Lição 3

Encapsulamento e
herança

Encapsulamento e Herança são duas características que


definem a Orientação a Objetos como um paradigma
flexível e consistente para modelar o mundo real. Vamos
conhecê-los melhor nesta lição

Criando sua
primeira aplicação
Java na IDE Eclipse

Para fazer o download do Eclipse, acesse o seguinte site:

http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galile
o/SR2/eclipse-jee-galileo-SR2-win32.zip

Não é necessário fazer a instalação do Eclipse. Basta apenas descompactá-lo e executálo através
do arquivo eclipse.exe

COTI INFORMÁTICA E-LEARNING


15
Apostila de Lógica em Java Orientado a Objetos

Ao abrir o eclipse será necessário informar qual o diretório de trabalho a ser utilizado pela IDE.
Este diretorio e chamado de workspace e irá armazenar os projetos e configurações realizados
no Eclipse

Para criar um novo projeto, selecione a opção file / new / java project

Para criar um novo pacote, clique com o direito em src e depois em new / package coloque o
nome de aula

Clique com o direito no pacote aula / new / class e dê o nome de Pessoa

Crie dois atributos privados “nome” e “idade”

COTI INFORMÁTICA E-LEARNING


16
Apostila de Lógica em Java Orientado a Objetos

Para encapsular os atributos, clique com o direito na classe depois em source / generate getters
and setters. Marque todos os atributos que serão encapsulados e dê ok

package aula;

public class Pessoa {

private String nome;


private int idade;

public String getNome() {


return nome;
}

public void setNome(String nome) {


this.nome = nome;
}

public int getIdade() {


return idade;
}

public void setIdade(int idade) {


this.idade = idade;
}

Para criar a Classe Main, dê um direito sobre o pacote aula de depois new / class

Ao criar a Classe você já pode marcar a opção de incluir o método static void main conforme
abaixo:

COTI INFORMÁTICA E-LEARNING


17
Apostila de Lógica em Java Orientado a Objetos

Execute na Main a classe Pessoa conforme abaixo:

COTI INFORMÁTICA E-LEARNING


18
Apostila de Lógica em Java Orientado a Objetos

package aula;

public class Main {

public static void main(String[] args) {

Pessoa p = new Pessoa();


p.setNome("Edson Belem");
p.setIdade(50);

System.out.println(p.getNome());
System.out.println(p.getIdade());
}
}

Para executar a Classe Main, clique com o direito sobre ela e depois run as / java
application

Será exibido o resultado abaixo:

O que significa Encapsulamento?

Apesar de ser possível declarar os atributos como públicos,


não é conveniente em termos de segurança. Por isto, é
necessário que as variáveis continuem privativas as
classes.

Mas como então as demais classes poderão


usar as variáveis se elas estão privadas?

A solução é criar métodos que recebam os valores das variáveis ou mandem valores para
variáveis e só trabalhar com eles. Além disso, os métodos podem ser tratados e modificados
sem alterar fundamentalmente as propriedades da variável. Os métodos passam a representar
os atributos como se tivessem uma "procuração" deles. Dois tipos de métodos são criados para
o encapsulamento um que começa com "get" que seria responsável por exibir os valores do
atributo e "set" seria responsável receber novos valores e repassá-lo para o atributo.

COTI INFORMÁTICA E-LEARNING


19
Apostila de Lógica em Java Orientado a Objetos

O objetivo principal do encapsulamento é proteger os atributos de uma Classe, ou seja, o acesso


aos atributos dever ser feito de forma indireta através de métodos que realizem a entrada e
saída dos dados para os atributos.

Veja o exemplo:

public class Funcionario{


public String nome;
public double salario;
}

Ao tornarmos a classe em objeto, seus atributos (declarados como públicos) ficam acessíveis e
portanto, sem nenhum tipo de proteção contra algum tipo de dado inválido. Observe:

Funcionario f = new Funcionario();


f.nome = “joao@bol.com.br”;
f.salario = 200.0;

Observe que não há coerencia nos dados passados ao atributo da Classe.


Eis o exemplo da mesma Classe de forma encapsulada:

public class Funcionario{

//Atributos qualificados como private


private String nome;
private double salario;

//Métodos de entrada
public void setNome(String nome){
this.nome = nome;
}

public void setSalario(double salario){


this.salario = salario;
}

public String getNome(){


return nome;
}

public double getSalario(){


return salario;
}
}

COTI INFORMÁTICA E-LEARNING


20
Apostila de Lógica em Java Orientado a Objetos

Observações importantes!

Note que os atributos foram declarados com qualificados


private. Isto significa que o seu acesso só é permitido dentro
da própria classe Funcionario.

Para cada atriubuto declarado como provate, foram escritos


métodos de entrada e saída de dados denominados por
convenção de get e set.

Os metodos declarados com prefixo set são utilizados para realizar a entrada de dados nos
atribuitos de forma que seu valor seja atribuido indiretamente.

Os metodos declarados com prefixo get são utilizados para realizar o retorno ou saída dos
valores dos atribuitos.

Desta forma qualquer tipo de regra de validação de entrada de dados ou saída de dados poderia
ser facilmente implementada nos métodos set e get tornando assim, os atributos protegidos e
garantindo a integridade e coerencia das informações armazenadas pelo objeto da classe.

Dessa forma, a utilização da Classe seria feito da seguinte maneira:

Funcionario f = new Funcionario();


f.setNome(“Joao”);
f.setSalario(2000.0);

//ou para retorno e impressão dos valores

System.out.println(f.getNome());
System.out.println(f.getSalario());

COTI INFORMÁTICA E-LEARNING


21
Apostila de Lógica em Java Orientado a Objetos

Herança

Herança é o mecanismo pelo qual uma classe obtém


características (métodos e atributos) de outra classe. A classe
"filho" que recebe estas características é chamada de "subclasse"
e a classe "pai" que passa estas características são chamadas de
"superclasse".

O uso da herança está diretamente relacionado ao reuso de


código. Diz-se que uma classe pode extender ou herdar outra
Classe quando, em termos de modelagem de dados, consegue-
se conjugar o verbo “ser” entre estas classes. Por exemplo:

Analista é um Funcionario (Logo Analista pode ser considerado


herança de funcionário)

Departamento tem Funcionario (Neste caso não configura-se herança, a demonstração de


relacionamentos que utilizam o verbo “ter” será mostrado em outra aula.)

A herança é o primeiro e mais comum tipo de relacionamento existente entre classes. Podemos
representa-la da seguinte maneira:

public class Funcionario{

private String nome;


private double salario;

public void setNome(String nome){


this.nome = nome;
}

public void setSalario(double salario){


this.salario = salario;
}

public String getNome(){


return nome;
}

public double getSalario(){


return salario;
}

COTI INFORMÁTICA E-LEARNING


22
Apostila de Lógica em Java Orientado a Objetos

public class Analista extends Funcionario{

private String tipo;

public void setTipo(String tipo){


this.tipo = tipo;
}

public String getTipo(){


return tipo;
}
}

public class Programador extends Funcionario{

private String ambiente;

public void setAmbiente(String ambiente){


this.ambiente = ambiente;
}

public String getAmbiente(){


return ambiente;
}
}

A representação destas classes em forma de diagrama é conforme uma arvore, onde


podemos afirmar que Funcionario é uma superclasse e Analista e Programador são
subclasses pois denotam o conceito de hierarquia (relacionamento vertical)

Veja, no diagrama abaixo, a representação da herança realizada:

COTI INFORMÁTICA E-LEARNING


23
Apostila de Lógica em Java Orientado a Objetos

Programaticamente, a herança é realizada através

do uso da palavra reservada extends

Obs: Em Java não é permitido o uso de herança multipla, ou seja, uma classe filha
somente pode ter 1 única classe pai.

A execução das Classes poderia ser feita da seguinte forma:

public class Teste{

public static void main(String args[]){

Analista a = new Analista();

a.setNome(“Pedro”);
a.setSalario(4000.0);
a.setTipo(“Senior”);

Programador p = new Programador();

p.setNome(“Joao”);
p.setSalario(5000.0);
p.setAmbiente(“Web”);

//Impressão dos dados dos objetos


System.out.println(“Analista : ” + a.getNome());
System.out.println(“Salario : ” + a.getSalario());
System.out.println(“Tipo : ” + a.getTipo());

System.out.println(“Programador : ” + p.getNome());
System.out.println(“Salario : ” + p.getSalario());
System.out.println(“Ambiente : ” + p.getAmbiente());

Repare que o programa anterior realiza a criação de objetos para Analista e


Programador. Atraves da herança, ambos compartilham dos mesmos dados (nome e
salario) pois são herança as mesma classe: Funcionario.

COTI INFORMÁTICA E-LEARNING


24
Apostila de Lógica em Java Orientado a Objetos

Herança: segundo exemplo

Crie uma Classe Cliente seguindo o padrão de encpsulamento conforme abaixo:

public class Cliente {

private String nome;


private String email;

public String getNome() {


return nome;
}

public void setNome(String nome) {


this.nome = nome;
}

public String getEmail() {


return email;
}

public void setEmail(String email) {


this.email = email;
}

Agora, criaremos uma Classe PessoaFisica herdando de Cliente

public class PessoaFisica extends Cliente{

private String cpf;

public String getCpf() {


return cpf;
}

public void setCpf(String cpf) {


this.cpf = cpf;
}

COTI INFORMÁTICA E-LEARNING


25
Apostila de Lógica em Java Orientado a Objetos

Execute-a na Main conforme abaixo:

public class Main {

public static void main(String[] args) {

PessoaFisica pf = new PessoaFisica();


pf.setNome("Sergio Mendes");
pf.setEmail("sergio.coti@gmail.com");
pf.setCpf("1234567890");

System.out.println("Pessoa Física......: " + pf.getNome());


System.out.println("Email..............: " + pf.getEmail());
System.out.println("CPF................: " + pf.getCpf());

Para praticar ...


Desenvolva as classes segundo o diagrama abaixo e
demonstre sua execução na Main

COTI INFORMÁTICA E-LEARNING


26
Apostila de Lógica em Java Orientado a Objetos

Lição 4

Interfaces e
Polimorfismo
A palavra Polimorfismo vem do grego e significa muitas
formas. Em programação está relacionado a técnica de
colocar métodos diferentes com o mesmo nome para
realizar tarefas semelhantes. Nesta lição vamos aprender
a utilizar este conceito efetivamente!

O que são Interfaces?

Em orientação a objetos, uma interface é utilizada como meio de padronizar a implementação de


várias Classes. Em termos simples, uma interface define uma obrigação ou contrato que deverá
ser seguido por todas as classes que a implementarem.

Por exemplo:

public interface Tributavel{


public double calcularImposto(double valor);
}

Note que métodos declarados em interfaces não possuem corpo, apenas a sua
declaração ou assinatura.

Diz-se que uma classe implementa uma interface quando utiliza o operador
“implements”. Ao contrário da herança, uma Classe pode implementar várias interfaces
simultaneamente, desde que implemente todos os métodos contidos nas interfaces.
Exemplo:

public class Produto implements Tributavel{


public double calcularImposto(double valor){
return valor – (valor * 0.18);
}
}

public class Servico implements Tributavel{


public double calcularImposto(double valor){
return valor – (valor * 0.09);
}
}

COTI INFORMÁTICA E-LEARNING


27
Apostila de Lógica em Java Orientado a Objetos

Note que quando as classes implementam a interface, o método calcularImposto torna-


se obrigatório. Desta forma a interface tornou-se um meio de padronizar o uso das
classes Produto e Servico.

Através do uso de interfaces, a execução do programa pode ser feita de uma maneira
mais flexível, por exemplo:

public class Teste{


public static void main(String args[]){
Tributavel t = new Produto();
System.out.println(t.calcularImposto(1000.0));
}
}

Ou poderia ser executado assim:

public class Teste{


public static void main(String args[]){
Tributavel t = new Servico();
System.out.println(t.calcularImposto(1000.0));
}
}

Note que, como ambas as classes implementam a


mesma interface, a criação do objeto poder ser feito
utilizando o nome da interface à esquerda e à direita
apenas definindo a instância, ou seja, o tipo de tributavel
que deseja-se criar. Este conceito será abordado de
forma mais aprofundada em uma próxima aula, mas é
chamado de polimorfismo.

COTI INFORMÁTICA E-LEARNING


28
Apostila de Lógica em Java Orientado a Objetos

Interfaces: segundo exemplo

public interface Financiavel

//Assinatura do Método (declaração)


public void calcularFinanciamento(double valor);

/*
* Todas as classes que implementarem desta interface deverão fornecer
* corpo para o método calcularFinanciamento
*/
}

Agora, vamos implementar a interface acima:

public class Automovel implements Financiavel{

public void calcularFinanciamento(double valor) {

System.out.println("Valor do Automovel .: " + valor);


System.out.println("Parcelado em 12x ...: " + (valor / 12));
}

Execute na main o seu programa:

public class Main {

public static void main(String args[]){

Financiavel f = new Automovel();


f.calcularFinanciamento(30000.0);
}
}

Note que, através da palavra reservada implements, é executa a


obrigatoriedade da Classe implementar o que foi definido na
interface. A execução da classe Automovel pode ser feita, como
demonstrado acima, através da interface Financiavel

Financiavel f = new Automovel();

COTI INFORMÁTICA E-LEARNING


29
Apostila de Lógica em Java Orientado a Objetos

A execução do objeto f carrega o tipo Financiavel mas foi


incializado como Automovel, o que implica que a execução do
calcularFinanciamento devolva a resposta do que foi implementado
na Classe Automovel. Configurando, então, o uso do polimorfismo
pois podemos dizer que a Classe Automovel está sendo executada
como comportamento para a interface Financiavel.

O Polimorfismo vem do grego e significa muitas formas. Em


programação está relacionado a técnica de colocar métodos
diferentes com o mesmo nome para realizar tarefas semelhantes
em princípio (se for mau programado podem fazer coisas
completamente distintas).

Para praticar...

• Implemente o diagrama abaixo:

Crie uma interface Forma com


um metodo obterArea.

Crie duas classes


implementando Forma:
Retangulo e Triangulo, nestas
classes programe o metodo
obterArea de acordo com o
tipo de calculo que deverá ser
realizado para cada uma delas

Demonstre na main a execução das classes Retangulo e Triangulo


através do uso de polimorfismo

COTI INFORMÁTICA E-LEARNING


30
Apostila de Lógica em Java Orientado a Objetos

Vamos
Praticar
Este é momento em que você,
aluno, deverá colocar em
prática o que foi abordado nas
lições anteriores!

1. Crie um programa em Java que demonstre o uso de uma Classe Produto com
os atributos nome, marca e preco. Utilize encapsulamento para os atributos.

2. Crie um programa em Java que implemente as seguintes Classes: Usuario,


Aluno e Professor. Crie um relacionamento de herança entre as Classes e
demonstre sua execução.

3. Descreva os seguintes tipos de dados:


a. int
b. float
c. long
d. short
e. double
f. boolean
g. char
h. string

4. Explique a diferença entre os qualificadores private, protected, package e


public.

5. Crie um programa que demonstre uma interface Pagamento e duas Classes


que a implementam: Funcionario e Estagiario. Crie um metodo
obterPagamento e escreva-o para cada Classe da hierarquia. Demonstre a
execução da interface através do conceito de polimorfismo.

COTI INFORMÁTICA E-LEARNING


31

Você também pode gostar