Você está na página 1de 52

Programação Orientada a

Objetos com JAVA

Professor: Cícero Lima Costa


Contato: ciceroclc.ptc@gmail.com
História

 Porque Java?

Não existe muito consenso entre os escritores americanos com relação ao porque do
nome “Java”, mas a história mais comum é a seguinte:
O nome surgiu de uma ida a cafeteria. Em algumas bibliografia conta que o nome
Java é referente a cidade de origem de um café importado, tal café era vendido em
uma cafeteria visitada por uma equipe da Sun.
História

 Segundo (Furgeri, 2002), “Originalmente, a linguagem foi concebida para


utilização em pequenos dispositivos eletrônicos inteligentes; entretanto, com as
dificuldades de financiamento desse setor na época e, principalmente, devido ao
surgimento da internet a partir de 1993, novas oportunidades apareceram e a Sun
“entrou de cabeça” nessa área.”
Características da linguagem Java

 Orientação a Objetos: Permite maior abstração do mundo real e reaproveitamento


de código.
 Portabilidade: Java é multiplatarforma, ou seja, um aplicativo desenvolvido em
Java pode ser executado em qualquer sistema operacional.
 Multithreading: Em um aplicativo Java é possível executar eventos simultâneos.
 Suporte a comunicação: Java oferece várias classes para o desenvolvimento de
sistema que irão trabalhar em rede.
 Acesso remoto a banco de dados: Java oferece um conjunto de classes para
acesso a banco por meio da criação de ponte de comunicação entre drivers JDBC
e ODBC.
Instalação

 Para preparar o ambiente de desenvolvimento Java é preciso instalar o seguintes


componentes:
 JDK: Java Development Kit possuí as condições básicas para desenvolver e executar
um aplicativo Java.
 JRE: Caso não baixe a JDK com a JRE é preciso baixá-la separadamente e fazer sua
instalação anteriormente a JDK.
 IDE: É o ambiente integrado de desenvolvimento, este fornece ferramentas de
desenvolvimento como editor, depurador, testes automatizados, etc.
 IDE de desenvolvimento utilizada no curso será o Netbeans.

 Link para download:


http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html?ssSourceSiteId
=otnes
Configuração do Sistema

 Criar variável de ambiente: JAVA_HOME


 Valor: Endereço da JDK;
 Variável: CLASSPATH
 Valor:
%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_H
OME%\lib\htmlconverter.jar;%JAVA_HOME%\jre\lib;%JAVA_HOME%\jre\lib\rt.jar;

 Em path adicione:

 ;%JAVA_HOME%\bin
Ambiente de execução

http://cmsc411.com/sites/default/files/files/vm/processvm.gif
Ambiente de execução

 Resumidamente:
 O código Java é criado em um editor e armazenado com a extensão .java.
 Quando o arquivo .java é passado para o compilador, este cria bytecodes e os
armazena com a extensão .class.
 O arquivo .class é lido pela Java Virtual Machine (JVM) e os bytecodes contidos nesse
arquivo são traduzidos para uma linguagem que o computador possa entender.
 A Java Virtual Machine (ou Maquina Virtual Java) é o que permite que uma aplicação
Java seja multiplataforma. Um aplicativo Java pode rodar em qualquer sistema
operacional, desde que haja uma Maquina Virtual Java para traduzir os bytecodes de
acordo com o sistema operacional existente.
Testando Ambiente de execução

public class OlaMundo


{
public static void main(String[] args)
{
System.out.println(“Olá Mundo!");
}

}
Código

 Por padrão os métodos e variáreis começam com letra minúscula e caso o nome
do método ou da variável seja composto, os nomes subsequentes ao primeiro
começam com letras maiúsculas.
 Ex:
 int variavel
 public void metodo()
 int variavelComposta
 public void metodoComposto()
 É importante realizar endentação do código e comentários para facilitar o
entendimento por toda equipe de desenvolvimento.
Código

 Comandos de linha:
 Finalizados com “;”
 Comandos de bloco:
 Iniciados com “{”
 Finalizados com “}”
Entrada e Saída através do prompt

 Entrada:
 Scanner entrada = new Scanner(System.in);

 Saída:
 System.out.println(Saida);
Variáveis

 Variáveis: Uma
variável é simplesmente um espaço vago,
reservado e rotulado para armazenar dados.

 Local: Acessada apenas pelo método ao qual pertence.

 Global: Acessada por todos o métodos de uma classe.


Tipos de dados

 Apenas alguns mais comuns:


 Int: recebe numero do tipo inteiro.
Ex: int nroInteiro = 6;

 Float: recebe numeros do tipo ponto flutuante.


Ex: float nroFloat1 = 6.00; ou float nroFloat2 = 6.45;

 String: recebe seqüência de caracteres.


Ex:
String nome = “Cícero”; ou String letra = “C”; ou
String nome2 = “C3c2r4”;
 Boolean: Pode assumir o valor true ou o valor false
Vetores
 Declarar vetor
int vetNro[];
float vetNro2[];
String vetLetras[];

 Definir tamanho do vetor


vetNro = new int[3];
vetNro2 = new float[3];
vetLetras = new String[3];

 Armazenar elementos no vetor


vetNro[0] = 1;
vetNro2[2] = 7;
vetLetras[1] = “C”;

 Atribuição direta
float nota[] = { 7.8, 8.4, 4.2, 1.8, 6.4 };
Estrutura de decisão
 If e Else
if (x == 0)
{
System.out.println(“teste!”);
}
else
{
System.out.println(“O valor de x é = “+ x);
}
Estrutura de decisão

 Switch
switch(op)
{
case 1: System.out.println(“op = "+op);
break;
case 2: System.out.println("op= "+op);
break;
default: System.out.println("default: op nao esta no limite1..2");
}
Estrutura de repetição

 for
for(int x = 0; x < 10; x++)
{
System.out.println(" " + x);
}

 while
int x = 5;
while(x > 0)
{
System.out.println(" " + x);
x--;
}
Classes

 As classes são modelos que definem as características e comportamento de um


objeto.
 Ex:
Um carro possuí características como modelo, marca, modelo, ano, cor, placa etc. O carro
também apresenta comportamentos com ligar, desligar, acelerar e frear.
Portanto, uma classe carro seria um modelo capaz de armazenar tais característica e
representar tais comportamentos.

Esta imagem representa apenas um modelo de carro que


pode ser reformulado de acordo com as características
desejadas pelo projetista.

http://thumbs.dreamstime.com/x/projeto-do-carro-modelo-do-fio-meus-pr%C3%B3prios-projeto-15380435.jpg
Classe
 Local onde reside as variáveis e os métodos
Ex:
public class Calculadora
{
//variáveis
int total;

//Métodos
public void somar()
{
//Variáveis
int nro1 = 5;
int nro2 = 2;
//Adição
total = nro1 + nro2;
}
}
Instâncias

 Instâncias são características que uma classe pode assumir em momentos


distintos. São os objetos que poderão ser representados por meio da classe.

A partir do modelo é possível, por exemplo, representar os carros das imagens apresentadas.

http://2.bp.blogspot.com/-iPs7MnJ-1JA/UbFczRsmCwI/AAAAAAABCac/DanmI2P-Ldg/s640/Novo-Toyota-Corolla-2014-lateral.jpg
http://cdn.teckler.com/images/josivaldo37/f2b9f9eac7abc789ce5ab592394b2a30_thumb.jpg
Orientação a Objetos

 Visa representar o mundo real por meio de classes e instâncias.


Atributos e Métodos

 Os atributos são as características de um objeto.

 Métodos serão as ações que a classe poderá realizar.


Utilização de métodos

 Método que não recebe parâmetro.


public void confirma()
{
System.out.println(“A solicitação foi confirmada!”);
}

 Método que recebe parâmetro.


public void soma(int valor1, int valor2)
{
int total;
total = valor1 + valor2;
}
Utilização de métodos
 Métodos que não retornam valor.
public void confirma()
{
System.out.println(“A solicitação foi confirmada!”);
}

 Métodos que retornam valor.


public int soma(int valor1, int valor2)
{
int total;
total = valor1 + valor2;
return total;
}
Acesso a métodos

 Um método criado em uma classe pode ser acessado a partir de outra da seguinte
forma:

nomeClasse variavel = new nomeClasse();


variavel.nomeMetodo();

ou

new nomeClasse().nomeMetodo();
Get e Set

 Get: resgata valor.

 Set: atribui valor.


Encapsulamento

 O encapsulamento é a junção de atributos e métodos em uma classe e, a


restrição quanto a nível de acesso das informações.

 Define como os atributos e métodos de uma classe podem ser vistos por outras.
Modificadores de acesso

 Public: Os valores public de uma classe “x” podem ser acessados por todas as
classes onde “x” for instanciada.

 Private: O valores private podem ser visualizados apenas na classe onde foram
declarados.

 Protected: Os valores podem ser utilizado em implementação de subclasses e em


classes do mesmo pacote.
Pacotes

 Diretórios que armazenam um conjunto de classes.


Classes do Pacote Swing

 As classes do pacote swing são utilizadas para o desenvolvimento de interfaces


gráficas.

 As classes desse pacote são uma evolução das classes do pacote awt.

 O swing permite a criação de GUI’s.


 GUI: Graphical User Interface, ou seja, são interface gráficas para melhor interação com
o usuário.
Componentes Swing
 JFrame;

 JLabel;

 JButton;

 JTextField;

 JComboBox;

 Etc;
Métodos Construtores

 O método construtor é bloco de código que possuí o mesmo nome da classe.

 Esse método é o primeiro a ser executado quando a classe é chamada.


Sobrecarga de Métodos

 A sobrecarga permite que métodos com o mesmo nome, porém, com diferentes
parâmetros sejam criados.

 Os métodos com o mesmo nome devem ser diferentes em relação ao número,


tipos ou ordem dos parâmetros.
Herança

 Segundo (Furgeri, 2002), “Em Java, a herança ocorre quando uma classe passa a
herdar características (atributos e métodos) definidas em uma outra classe,
especifica como sendo sua ancestral ou superclasse. A técnica da herança
possibilita o compartilhamento ou reaproveitamento de recursos definidos
anteriormente em uma outra classe. A classe fornecedora dos recursos recebe o
nome de superclasse e a receptora dos recursos de subclasse.”
Herança

Pessoa

Pessoa -nome
+cadastrar()
-nome
-cpf
-inscr_Estadual
-cnpj
-rg Pessoa_Fisica Pessoa_Juridica
-cpf -cnpj
+cadastrar() -rg -inscr_Estadual
+cadastrar() +cadastrar()
Herança

 A herança no desenvolvimento em Java pode ser definida pela palavra extends.


 Ex:
class Pessoa class Pessoa_Fisica extends Pessoa
{
{
String cpf;
String nome; public void cadastrar()
{
public void cadastrar()
{ }
}

}
}
Super e This

 “super” se refere a superclasse.

 “this” se refere à própria classe.


Polimorfismo

 Segundo (Santos, 2013), “Polimorfismo permite a manipulação de instâncias de


classes que herdam de uma mesma classe ancestral de forma unificada:
podemos escrever métodos que recebam instâncias de uma classe C, e os
mesmos métodos serão capazes de processar instâncias de qualquer classe que
herde da C, já que qualquer classe que herde de C é um tipo de C.”
Classes e métodos abstratos

 Métodos abstratos são declarados sem o bloco que contem os comandos que
serão executados.

 O modificador para uma classe abstrata é o “abstract”.

 Se uma classe tiver algum método declarado como abstrato, a classe também
deverá ser declarada como abstrata.

 Classes abstratas não podem ser instanciadas. Utilizada quando não é desejável
a criação de instância de uma classe.
Interfaces

 Quando todos os métodos de uma classe são abstratos, pode-se criá-la como
uma interface.

 Interface são declaradas de forma diferente da classe.

 Uma interface não pode ser instanciada.

 Todos o métodos em uma interface são declarados sem o bloco de código.


Diferença entre Classes Abstratas e
Interfaces
 Segundo (Santos, 2013), “Uma diferença fundamental entre classes abstratas e
interfaces é que uma classe somente pode herdar de uma única classe (abstrata
ou não), enquanto qualquer classe pode implementar várias interfaces
simultaneamente. Interfaces são, então, um mecanismo simplificado de
implementação de herança múltipla em Java, permitindo que mais de uma
interface determine os métodos que uma classe herdeira deve implementar.”
Tratamento de exceção

 Segundo (Deitel, 2005), Uma exceção é uma indicação de um problema que


ocorre durante a execução de um programa.
Tratamento de exceção

 O tratamento de exceções permite aos programadores remover


da “linha principal” de execução do programa o código de
tratamento de erro.
 Aprimora a clareza do programa e destaca sua capacidade de
modificação
 Os programadores podem decidir tratar a exceção que eles
escolherem:
 Todas as exceções;
 Todas as exceções de certo tipo ou;
 Todas as exceções de um grupo de tipos relacionados.
 Essa flexibilidade reduz a probabilidade de que erros serão
negligenciados, tornando assim os programas mais robustos.
 O Java permite aos programadores lidar facilmente com o
tratamento de exceções desde o princípio do projeto.
Tratamento de exceção

 Para que o programa trate as exceções é preciso a presença de alguns blocos.


Tratamento de exceção

 Bloco try
 Usado para incluir o código que pode lançar (throw) uma exceção e o código
que não deve ser executado se ocorrer uma exceção – se uma exceção
ocorrer, o código restante no bloco try será pulado.

try{
// instruções

}
Tratamento de exceção

 Bloco catch
 Também chamado de cláusula catch ou handler catch.
 Captura e trata uma exceção.

catch( UmTipoDeExceção exception1){


// instruções de tratamento de exceções

}
Tratamento de exceção

 Blocos finally
 Em geral, contém código de liberação de recursos.
 O Java garante que um bloco finally executará se uma exceção for lançada no bloco
try correspondente ou quaisquer de seus blocos catch correspondentes.

finally{
// instruções
// instruções de liberação de recursos

}
Tratamento de exceção

 Instrução throw
 Executada para indicar a ocorrência de uma exceção.
 Especifica um objeto a ser lançado.
 O operando de um throw pode ser de qualquer classe derivada da classe Throwable.
Arquivos em Java

 File
Cria uma instância da classe file que aponta para uma determinada url
File file = new File("/",url);//inicializa arquivo
//cria diretórios para armazenar o arquivo
file.mkdirs();
//verifica existência de arquivo
file.exists();
Arquivos em Java

 Properties
Properties props = new Properties();
FileOutputStream fos = new FileOutputStream(urlFile);
props.setProperty(propriedade, valor);
props.store(fos, "Configurações do properties");
fos.close();
Referências

 SANTOS, Rafael. Introdução à programação orientada a objetos usando


Java. 2ed. Rio de Janeiro: Elsevier, 2013.

 DEITEL, Paul; DEITEL, Harvey. Java: como programar. 6 ed. São Paulo: Pearson
Prentice Hall, 2005.

 FURGERI, Sérgio. Java 2: Ensino didático: Desenvolvendo e Implementando


Aplicações. São Paulo: Editora Érica, 2002.