Você está na página 1de 66

Disciplina: Estrutura de dados em Java

Programao

Orientada a Objetos

Hello World !

Linguagem Java Componentes da Resoluo de Professor: Armando Hage

linguagem Java

Problemas

Histrico
Linguagens de Programao Simula67:linguagem projetada para simulao

Famlia de linguagens Smalltalk. Smaltalk 72-80


Maior divulgao a partir de 1986 com a 1 WorkShop em Programao Orientada a Objetos C++

Java

Motivos que influenciaram

Avanos na tecnologia de arquitetura de computadores, suportando sofisticados ambientes de programao e interfaces homemmquina. Avanos na rea de linguagem de programao como modularizao, ocultamento de informao.

Crise do software- Termo utilizado para descrever problemas associados ao modo como o software desenvolvido, como a manuteno em como acompanhar a demanda por mais software(Pressman 1995)

Vantagens da tecnologia de Objetos

Facilita a reutilizao de cdigo.

Os modelos refletem o mundo real de maneira mais aproximada.


Pequenas mudanas no implicam em grande alteraes no sistema.

Conceitos de POO

Modelos So representaes simplificadas de objetos do mundo real. Dados Como o mesmo uma simplificao do mundo real, os dados contidos no modelo so somente os relevantes abstrao do mundo real. Operaes Um modelo contm operaes e procedimentos associados a ele. Abstrao- Uma abstrao descreve as caractersticas essenciais de uma entidade que a distinge de todos os outros tipos de entidades. Pessoa como empregado de Empresa Dados (nome, cargo, salrio e horasExtrasTrabalhadas) Operaes(calcularSalrio,aumentaSalrio) Pessoa como paciente de uma clnica mdica Dados(nome,sexo,altura,peso, histrico)

O modelo de Objetos

Objetos, Mtodos e Variveis Agregao

Mtodos
Classes e Instncias Encapsulamento Herana

Conceitos de POO

POO um paradigma para o desenvolvimento de software que baseiam-se na utilizao de componentes individuais(objetos)que colaboram para construir sistemas mais complexos. Exemplo de um modelo utilizando (UML).

Conceitos de POO
/* Modelo Lmpada representa uma lmpafa em uso */ Inicio do Modelo dados estado; operao acende() inicio estado=aceso Fim operao apaga() inicio estado=apagado fim Cont. operao mostra_estado() inicio se(estado==aceso) imprime(Almpadaest acesa) seno imprime(Almpadaest apagada) fim fim.

Objetos,mtodos e variveis

Classes So estruturas das linguagens de programao OO que contem, para determinado modelo, os dados que devem ser representados e as operaes que devem ser efetuadas com estes dados. A classe envolve, associa, funes e dados, controlando o acesso a estes.Defini-l implica em especificar os seus atributos (dados) e seus mtodos (funes). Ex:Interface controladora de um motor eltrico. Classe:motor Atributos: temperatura, velocidade, tenso aplicada.

Objetos,mtodos e variveis
Objeto ou instncia Representa uma materializao da classe. um pacote de software contendo dados e procedimentos(cdigo)relacionado. A parte superior do diagrama representa o nome da classe, e a inferior,sua interface.Possui estado,identidade nica e comportamento.

Variveis-So os dados dos objetos. Atributos Dados contidos em uma classe, cada qual tendo um tipo. Mtodos- Operaes realizadas.

Objetos,mtodos e variveis

Agregao(ou composio)- a idia de que o o estado de um objeto formado por outros objetos. A relaodeagregraochamadadetemum,como emumcarrotemummotor. Mtodos As operaes contidas em uma classe, so chamadas mtodos de uma classe. Argumentos mtodos podem opcionalmente receber argumentos. Retorno de valores mtodos podem retornar valores ou instancias de classes.

Encapsulamento
Os dados privados, por sua vez, s podem ser acessados atravs do cdigo presente nos mtodos do objeto. Por isso, costuma-se dizer que os dados so encapsulados.

Capacidade de um objeto possui uma parte privada,acessvel somente atravs dos mtodos definidos na sua classe.

Benefcios: O cdigo do cliente pode usar apenas a interface para a operao A implementao do objeto pode mudar,para corrigir erros,aumentar a performance, sem que seja necessrio modificar o cdigo do cliente Manuteno mais fcil e menos custosa.

Herana

o mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe, adquirindo imediatamente toda a funcionalidade de uma classe existente. Uma classe que herda de outra classe chamada de subclasse e a classe que fornece a herana chamada de superclasse.

Classe A

Classe B

Classe C

Classe D

Classe E

Comparaes entre linguagens imperativas e OO Paradigma Objetos


Paradigma Procedural Tipos de dados Varivel Funo/Procedimento Chamada de funo

Classes Objeto / Instncia Operao / Mtodo Envio de Mensagem

A linguagem Java

Histrico 1991:Projeto Green: Base para dispositivos eletrnicos inteligentes. Principais Caractersticas Simples desenvolvimento de software pequeno que possa executar de forma independente em mquina pequena. Parecida com C e C++, embora a filosofia seja diferente. Caractersticas herdadas de muitas outras linguagens de programao :Smalltalk, Eifell, Modula-3. Coleta de lixo automtica. Poucas palavras de reserva.

Caractersticas

Orientada a Objetos Com exceo de seus tipos primitivos, tudo orientado a objetos. Independente de Plataforma Os programas Java so compilados para uma forma intermediria de cdigo chamada bytecode. A mquina virtual Java(JVM-Java Virtual Machine) um interpretador de bytecodes. Sem ponteiros Java no usa ponteiros,isto , no permite a manipulao direta de de endereos de memria nem exige que os objetos criados sejam destrudos. Performance Java compacta, independente de plataforma e serve para a utilizao em redes. Segura Considerando aplicaes que podem rodar na internet, possui mecanismo de segurana que podem evitar qualquer operao de sistema na mquina alvo,reduzindo os problemas de segurana. Multithreading Pode executar e sincronizar vrias rotinas concorrentes.

Java independente de Arquitetura


Desenvolvimento Tradicional Compilador(Intel)

Cdigo Binrio (Intel)


Cdigo Binrio (PowerPC)

Compilador(Power PC) Cdigo Fonte Compilador(SPARC)

Cdigo Binrio (SPARC)

Java independente de Arquitetura


Desenvolvimento em Java
Compilador(Intel)

Cdigo Binrio (Intel)


Cdigo Binrio (PowerPC) Cdigo Binrio (SPARC)

Compilador(Power PC)

Cdigo Fonte
Compilador(SPARC)

JVM

Funcionamento

O processo para traduzir e executar programas Java combina o uso do compilador e do interpretador. OCompiladorJavaconverteocdigofonte(JAVA)emJAVABYTECODE, que uma representao do programa em linguagem de baixo nvel, similar ao cdigo em linguagem de mquina.

Funcionamento
Escrevaumavez,executeemqualquerlugar.

Obs:JAVAumaarquiteturaneutra,oBYTECODEJAVAno associado a uma plataforma de Hardware particular, ele pode ser executado em qualquer mquina com um interpretador Java.

Programas Java

Aplicativos
Programas Convencionais Execuo e feita diretamente atravs do interpretador No possui restrio de segurana

Applets
Programas sem autonomia Embutidos em pginas HTML Sua execuo feita por browsers Possui restrio de segurana

Java e a Internet
Java pode ser acesso via WEB como Applets ou pginas em Java Server Paga (JSP) . Applets - Usurios fazem download de bytecodes java pela Internet e executam-os em suas prprias mquinas. Para usar uma Applet necessrio um navegador Web com capacidade Java, o qual ir interpretar os bytecodes.
Pginas JSP Usurios acessam pginas que podem gerar processos , como consultas em banco de dados, no servidor WEB.

Plataforma Java

Java Virtual Machine (Java VM).

a base para a plataforma Java disponvel sobre vrias plataformas de hardware.

Java Application Programming Interface (Java API).


A

API Java agrupada em bibliotecas de classes e interfaces, essas bibliotecas so conhecidas como pacotes.

Tipos Primitivos

Variveis,operadores e estruturas de controle

Inteiros

byte(-128 a +128), short(-32768 a +32768), int(-2147483648 a +2147483648), long(-9223372036854775808 a +9223372036854775808)

Flutuante float,double Caractere char,String


Caracteres especiais \=aspas \=apstrofo \\=backslash \b=backspace \t=tabulao \r=retorno de carro \n=nova linha

Lgico true, false

Operadores
Operador + Operao Mais unrio Menos unrio Operador Significado == != < Igual a No igual a Menor que

* / %
+ +

Multiplicao Diviso Resto


Adio Subtrao Concatenao de strings

<=
> >=

Menor ou igual a
Maior Maior ou igual

Operadores
Operador ++ Uso Descrio

incrementao / decrementao:
var++ Incrementa var em 1, avalia o valor de var antes de incrementar ++var Incrementa var em 1,avalia o valor de var depois de incrementar var-- Decrementa var em 1,avalia o valor de var antes de decrementar

++

--

--

--var Decrementa var em 1,avalia o valor de var depois de decrementar

Varivel
A sintaxe geral para declarao de variveis : tipo_de_dado nome_da_varivel; A atribuio realizada da seguinte forma: nome_da_varivel = expresso;

Ex: String nome; String nome=Aplicao Teste; long i; int x,y,z;

Strings

As strings soseqnciasdecaracteres,comoola.A linguagem Java no tem um tipo string nativo. Cada string entres aspas uma instancia da classe String. Stringe=;umastringvazia Stringsaudacoes=Ola; Concatenao Stringola=Ol; Stringmundo=Mundo;!!! String mensagem=expletivo+PG13; OlMundo!!! Substrings Stringsaudacao=Bem-vindo; String s = saudacao.substring(0,3); s=Bem

A Classe String

A classe String em Java contm 50 mtodos. A seguir apresenta-se alguns mtodos interessantes. java.lang.String boolean equals(String outra) Retorna true se a string for igual a outra. boolean equalsIgnoreCase(String outra) Retorna true se a string for igual a outra, no diferenciando maiscula de minscula. String substring(int indiceInicio, indicefim) Retorna uma nova string em todos os caracteres a partir de indiceInicio at o final da string ou at indiceFim.

Converso de Tipo
Em Java esta converso s pode ser explicita, ou seja, ela tem de ser informada atravs de cdigo, para isso, colocamos o tipo (entre parnteses) para o qual queremos converter na frente da estrutura a ser convertida. A sintaxe para este cdigo pode ser a seguinte: (tipo) Estrutura

Ex:double x = 5.56; int y; y = (int)x;

Converso de Tipo Mtodos de converso da Classe Boolean


booleanValue( ), retorna o contedo de um objeto Boolean para uma varivel ou mtodo, ou evento ou objeto, etc., como um valor do tipo bsico boolean. Exemplo: Boolean objetoB = new Boolean(true ); boolean B = objetoB.booleanValue( ); valueOf(String s) O mtodo valueOf converte um objeto s do tipo String para um objeto do tipo Boolean. Exemplo: Boolean objetoC; String objetoS = true; Boolean objetoB = Boolean.valueOf(objetoS); objetoC = Boolean.valueOf(objetoS);// O mtodo valueOf ser sempre chamado pela classe Boolean.

Converso de Tipo
Classe integer
intValue() Converte o valor do objeto Integer em um tipo bsico int. Exemplo: Integer objI = new Integer(14); int varI = objI.intValue( ); toHexString(int i) Converte o numero inteiro (1254) em hexadecimal (4e6) e depois transforma em um objeto String com a representtao (4e6). Exemplo: String varTexto = Integer.toHexString(1254); toOctalString(int i) Converte o numero inteiro i em um objeto String que representa o numero inteiro i em base 8(Octadecimal). Exemplo: String varTexto = Integer.toOctalString(1254); toBinaryString(int i) Converte o numero inteiro i em um objeto String que representa o numero inteiro i em base 2(Binaria). Exemplo:String varText = Integer.toBinaryString(1254); parseInt(String s) Converte um objeto String s para um nmero inteiro de base 10. Exemplo: int varint = Integer.parseInt(76); parseInt(String s, int radix) Converte um objeto String s que tem a base especificada por radix (Decimal = 10, Hexadecimal = 16, Octal = 8, Binria = 2) para um inteiro de base 10. Exemplo: int varInt = Integer.parseInt("10101011",2);

Instalando o Software Development Kit


Atualmente, o SDK 1.3 ou 1.4 est disponvel para as seguintes plataformas:Windows 32, Solaris e Linux Podem ser obtidas em http://www.javasoft.com Configurao mnima:Processador Pentium de 166 MHZ, 32 MB de memria e 65 MB de espao em disco. Procedimentos para instalao Instalar os arquivos em um subdiretrio especfico(padro jdk1.3).Para facilitar seu trabalho pode-se nomear o diretrio com java2 durante a instalao. Em ambiente Windows acrescentar no AUTOEXEC.BAT:
SET JAVA_HOME=C:\java2 SET JDK_HOME=%JAVA_HOME% PATH=%PATH%;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin SET CLASSPATH=.; %JAVA_HOME%\lib;%JAVA_HOME%

\jre\lib

Estrutura Bsica
/* Teste de arquivo em Java */ import java.io.*;
public class teste{ public static void main(String args[ ]){ System.out.println("Ol Java !"); System.out.println("Teste concludo com xito"); } }

Estrutura Bsica

public um especificador de acesso que indica que qualquer classe pode ver o mtodo main. static Indica que o mtodo deve ser compartilhado por todos os objetos criados que so criados a partir desta classe. void Funo no retorna nenhum valor (String args[ ]) Argumento de main um vetor de strings que formado quando so passados ou no argumentos atravs da invocao do nome do programa na linha de comando do SO. System.out.println Chama o mtodo println para o atributo out da classe ou objeto System. O mtodo println parte da API de JAVA que um conjunto de classes padres que podem ser usadas em qualquer programa Java.

Palavras reservadas
abstract double do implements private throw boolean else import protected throws breaak

Instanceof public transient


return true case long native switch

byte
false

extends

int

interface short

try catch final char finally float new

static void super volatile while continue class for

null

synchronized default if package

this

Estrutura Bsica

Comentrios- Os comentrios podem ocupar uma ou mais linhas. Podem ser: // - Indicam que o comentrio dura at o final daquela linha). /* (incio) e */ (fim) - O comentrio dura at os caracteres */ serem encontrados. /** (incio) e */(fim)- Commetrio para documentao. O nome do arquivo para um programa java deve ser o mesmo ao da classe que contm o mtodo main, com a extenso .java. No exemplo anterior seria teste.java.

Compilao
Qualquer editor pode ser utilizado para a compilao. Compilao: javac nome_da_classe.java Ex: javac teste.java Execuo : java nome_da_classe Ex: java teste.java
Podem ser usandos argumentos em linha de comando. System.out.println("Teste concluido com exito" + args[0]);

java teste Armando


Ola Java ! Sada: Teste concludo com xito Armando

O Ambiente Java
javac :Compila programas fonte e gera arquivos de classe no formato bytecode. java : Interpreta aplicaes escritas em Java. jdb :Faz depurao da execuo de aplicaes e applets Java. javap : Desassemblador de bytecodes. javadoc : Gerador de documentao HTML a partir de programas fonte Java. appletviewer : Carregador de applets sem usar web browsers.

API Java
As classes da API JAVA so agrupadas em pacotes, sendo todos eles agrupados em um pacote simples denominado java.

java.applet

Contm as classes que suportam o desenvolvimento de Applets

java.awt

Possibilita o uso de grficos em um programa Java s e para criar Interface grfica para usurios (GUI).
Servios de entrada e sada Define os tipos primitivos automaticamente importado em todos os programas Java. Clculos com alta preciso (max, min, seno, tangente..) Servios de internet Interao com banco de dados (SQL). Utilidade geral (vrias estruturas de dados e servios).

java.io java.lang

java.math java.net java.sql java.util

Mdulos/Pacotes

Um conjunto de classes relacionadas podem ser


agrupadas em mdulos, chamados de pacotes. Mdulos definem restries de acesso de seu contedo para clientes fora do mdulo. Tudo que pode ser acessado publicamente est

declarado na sua interface pblica.

O conceito de mdulo muito til para o ocultamento de detalhes de implementao.

Mdulos/Pacotes

Mdulos implementam o conceito de tipos abstratos de dados. Eles consistem em duas partes: uma parte de especificao (definio do mdulo) e outra de implementao (corpo do mdulo) Em Java, mdulos podem ser definidos usando-se a palavra reservada package.

Objetos em Java

O operador new usado em Java para se criar objetos.

Ex.:Date d1 = new Date(); Lampada l2 = new Lamapada();

Pode-se solicitar servios(enviar mensagens ou acessar os dados) de um objeto antes que ele seja instanciado com new Voc pode criar tantos objetos quanto necessrio ao seu programa.

Objetos em Java
import java.util.Date; public class objdata{ public static void main(String args[]){ Date dt = new Date(); System.out.println("Hoje e " + dt.toString()); System.out.println("O ano e " + dt.getYear()); dt = new Date(1997,11,25);

System.out.println("Hoje e " + dt.toString());


System.out.println("O ano e " + dt.getYear()); System.out.println("O ms e " + dt.getMonth()); System.out.println("O dia e " + dt.getDate()); } }

System.out.println("O ms e " + dt.getMonth());


System.out.println("O dia e " + dt.getDate()); System.out.println("\n Mudana de dia ");

Obs:toString mtodo que retorna a informao Sem o new no inicio o programa no compilaria dt uma instncia de Date

Classe em Java

uma descrio de um grupo de objetos com propriedades similares(atributos),comportamento comum(operaes),relacionamentos com outros objetos e semnticas idnticas. Todo objeto instncia de uma classe

Ex.: int a;
Pessoa p;

Objeto- Entidade concreta que executa um papel no sistema Classe- Captura a estrutura e comportamento comum a todos objetos que esto realcionados. Objetos podem ser agrupados em classes.

Mtodos em Java

Utiliza-se a palavra-chave public que permite que qualquer parte do programa acesse este mtodo. A implementao interna pode ser alterada sem alterar qualquer cdigo alm das operaes da classe.

Ex.: public int getSaldo()(return saldo); public int getCPF()(return cpf); public String getTitular()(return titular); public void setSaldo(int s)(saldo=s;); Public void setTitular(String n)(titular=n;);

Mtodos em Java

Chamando mtodos Notao: nomedoobjeto.nomedometodo(argumentos); Chamadas aninhadas Ex.:myObject.getClasse().getName(); myObject.var.methodTwo(arq1,arq2); System.out.println(arq1);

Herana em Java
Documento autor dataDeChegada imprimir() editar()

Carta transporte anexar()

Telegrama hora registrar() pagar()

Herana em Java

Classe Derivada ou Subclasse ou Classe Filha: uma classe que herda parte dos seus atributos e mtodos de outra classe. Classe Base ou Superclasse ou Classe Pai: uma classe a partir da qual classes novas podem ser derivadas. Classes Ancestrais so aquelas das quais uma superclasse herda. Classes Descendentes so aquelas que herdam de uma subclasse.

Exemplo de herana
Conta Bancria

Conta Corrente

ContaDe Poupana

AplDe Curto Prazo

Exemplo de herana
class ContaBancaria { private double saldo;
// saldo corrente public ContaBancaria (double sal){ saldo = sal; } public void deposita(double valor){ saldo += valor; } public double retornaSaldo() { return saldo; } };

Exemplo de herana
class ContaDePoupanca extends ContaBancaria { private double indice;

public double calcula();


public double retira(); };

Exemplo de herana
class ContaCorrente extends ContaBancaria { private double limite; private double taxa; public double descontaCheque(double valor);

};

Exemplo de herana
class AplCurtoPrazo extends ContaDePoupanca { private double fundoDisponivel;

public double retornaFundoDisponivel(){ return fundoDisponivel; }


};

Herana de implementao
Classes Lista objeto Lista Objetos AdicionaInicio() RemoveInicio() AdicionaFim() RemoveFim()

Mensagens AdicionaInicio() RemoveInicio() AdicionaFim() RemoveFim()

AdicionaInicio()
usa AdicionaFim() Pilha objeto Pilha RemoveInicio() AdicionaFim()

Empilha()
usa RemoveFim() Desempilha()

RemoveFim()
Empilha() Desempilha()

Herana de comportamento

O mecanismo de herana empregado para construo de hierarquias de tipos. Uma hierarquia de tipos composta de subtipos e supertipos. Definio de Subtipo: Um tipo S um subtipo de T se e somente se S proporciona pelo menos o comportamento de T. Um objeto do tipo T pode ser substitudo por um objeto do tipo S.

Herana de comportamento

Em Ada, uma varivel do tipo SMALLINT herda todas as propriedades do tipo INTEGER. A noo de tipo/subtipo assemelha-se noo de conjunto/subconjunto. Todos os objetos Baleia um subconjunto dos objetos Mamfero.

Herana de comportamento
mamifero humano baleia

gato

Mamifero

Humano

Baleia

Gato

Controle de fluxo
If, else if (expresso) { Declaraes ou blocos } else { Declaraes ou blocos }

switch switch (expresso)// Esta expresso deve ser int ou char { case cond01: declaraes; break; case cond02: declaraes; break; case cond03: declaraes; break; }

Controle de fluxo
for (expr_inicial; condio_boolean; incremento) { Declaraes ou blocos; }

while(condio_boolean) { Declaraes ou blocos; }


do{ Declaraes ou blocos; } while(condio_boolean);

/* @author:Armando Hage @version:1.0 Exemplo de um programa em java que l uma varivel via console */ import java.io.*; public class lenome{ public static void main(String args[ ])throws IOException{ //Varivel de entrada de Dados BufferedReader entra=new BufferedReader (new InputStreamReader(System.in)); String nome="Seu nome ficar aqui";

Lendo Entradas-Strings

System.out.print("Digite seu nome:");


nome=entra.readLine();//Leitura da String System.out.println("Ola "+nome);

}
}

Lendo Entradas-Valores Numricos


import java.io.*; public class somavalores{ public static void main(String args[ ])throws IOException{ //Varivel de entrada de Dados double a,b,c; System.out.print("Entre com primeiro valor:"); a=Double.parseDouble(entra.readLine()); System.out.print("Entre com segundo valor:"); b=Double.parseDouble(entra.readLine());

BufferedReader entra=new BufferedReader(new InputStreamReader(System.in));

System.out.print("Entre com terceiro valor:");


c=Double.parseDouble(entra.readLine()); double soma=a+b+c; System.out.println("Soma=" + soma); }}

Exemplos
/* SOMA DOS NUMEROS DE 1 ate 10 UTILIZANDO O COMANDO WHILE*/ public class soma100 { public static void main(String args[ ]) { int i=0; while(i<=100){ System.out.println(i); i++; } System.out.println("Fim do programa"); }}

Exemplos
/* SOMA DOS NUMEROS DE 1 ate 10 UTILIZANDO O COMANDO FOR*/ public class soma100for { public static void main(String args[ ]) { int i=0; for(i=0; i<=100; i++){ System.out.println(i); i++; } System.out.println("Fim do programa"); } }

Exemplos
import java.io.*; public class areatriangula{ public static void main(String args[ ])throws IOException{ //Varivel de entrada de Dados BufferedReader entra=new BufferedReader(new InputStreamReader(System.in)); float base,altura,area; System.out.print("Digite a base:"); base=Float.parseFloat(entra.readLine()); System.out.print("Digite a altura:"); altura=Float.parseFloat(entra.readLine()); area = (base * altura) / 2; System.out.println("area = " + area + "\n"); } }

Exerccio
Desenvolva uma classe que leia um nome a idade o sexo do usurio e mostre em uma nica frase. Faa uma classe que leia a temperatura em F e mostre em C (Obs.: C= 5*( (F-32)/9 )

Usando switch faa uma classe que a partir de um valor numrico digitado mostre qual o ms correspondente.
Gerar 100 nmeros aleatrios e calcular sua mdia(Obs.: int num = (int)(Math.random()*10); Faa um programa que calcule o delta e as razes de uma equao do 2 grau.

Bibliografia: Programando em Java(Oliva,Alexandre.) Dominando Java(Naughton,Patrick.)