Universidade do Vale do Paraíba
Colégio Técnico Antônio Teixeira Fernandes
Disciplina Programação Orientada a Objetos - III
Material I-Bimestre
Fundamentos da linguagem Java
(Programação Orientada a Objetos)
Site : http://www1.univap.br/~wagner
Prof. Responsável
Wagner Santos C. de Jesus
Introdução a Linguagem Java
Linguagem Java tem origem com nome
Inspirado em uma xícara de café quente por
durante as fases de projeto da linguagem os
programadores tomavam muito café.
Símbolo
Mascote
Aplicações
•
•
•
•
•
Genéricas (comercial ou científica)
Criação de servidores (redes)
Criação de Interfaces para jogos
Criação de Framewoks
Criação de softwares para área de
Biociências.
• Criação de softwares para celulares
• Criação de softwares embarcados
A Linguagem Java
• Desenvolvida
na
década de 90 por uma
equipe
de
programadores
chefiada por James
Gosling, na empresa
Sun Microsystems.
Os mentores do projeto
eram Patrick Naughton,
Mike Sheridan, e James
Gosling.
Programador Canadense
Foto 2005
Histórico sobre (Java)
A linguagem Java se tornou oficial a todo o
mundo em 1995, depois que a Netscape a
licenciou para o uso do navegador
Navigator. Atualmente existem outras
opções para a Web mais quando a
linguagem Java foi criada ela revolucionou
a natureza de páginas na web. Os (Applets)
Java. Essa linguagem e um produto criado
pela empresa norte americana Sun
Microsystem.
As ferramentas de programação Rad
(Desenvolvimento Rápido de Aplicações) para Java.
 Jbuilder empresa (Borland)
 Forte empresa (Sun) FreeWare
 SunSoft (Sun)
 Java WorkShop (sun)
 JDK, JSDK (Sun) FreeWare (*)
 Visual Café (Symantec)
 VisualAge for Java (IBM)
 LJ-Java (Colégio Técnico A.T.F.) Univap - 2002
Principais Características da Linguagem Java
•
•
•
•
•
•
•
•
•
•
•
•
•
A linguagem Java foi projetada tendo em vista os seguintes objetivos:
Orientação a objeto - Baseado no modelo de Smalltalk e Simula67;
Portabilidade - Independência de plataforma - "write once run anywhere";
Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a
cooperação com protocolos TCP/IP, como HTTP e FTP;
Segurança - Pode executar programas via rede com restrições de execução;
Além disso, podem-se destacar outras vantagens apresentadas pela linguagem:
Sintaxe similar a Linguagem C/C++ e principalmente, a C#.
Facilidades de Internacionalização - Suporta nativamente caracteres Unicode;
Simplicidade na especificação, tanto da linguagem como do "ambiente" de
execução (JVM);
É distribuída com um vasto conjunto de bibliotecas (ou APIs);
Possui facilidades para criação de programas distribuídos e multitarefa
(múltiplas linhas de execução num mesmo programa);
Desalocação de memória automática por processo de coletor de lixo (garbage
collector);
Carga Dinâmica de Código - Programas em Java são formados por uma
coleção de classes armazenadas independentemente e que podem ser
carregadas no momento de utilização.
Um programa Java atinge essa independência através de um recurso
denominado como Máquina Virtual Java(JVM).
Exemplo : Um programa tradicional Compilado.(Delphi)
Seu
Código(Delphi) Compilador
Windows
---------------------------------------
Arquivo Binário
Windows
Compilador
Mact.
Arquivo Binário
Mact.
Compilador
Linux
Arquivo Binário
Linux
O que (JVM)
O termo em Java para representar um
processo parecido com o de cima mais de
forma que qualquer plataforma consiga
entender e executar suas instruções é
chamado de ByteCode. (Que vem a ser a
máquina virtual Java). Que é conhecida
como interpretador Java ou runtime
Java.
Funcionamento da JVM
Compile
Runtime
Class Loader
Byte Code Verifier
SO
Javac hello.java
interpretador
Hello.class
RunTime
Code Generator
hardware
O que é o ByteCode
Obs : O bytecode é semelhante ao código de
máquina produzido por outras linguagens,
mas ele não é específico de nenhum
processador. Ele acrescenta um nível entre o
código-fonte e o código de Máquina.
Programa Multiplataforma da Linguagem Java.
Código
Java
---------------------------------------
Bytecode
Java(Independente
da Plataforma)
Interpretador
Java(Windows)
Interpretador
Java(Mac)
Compilador
Java
Interpretador
Java(Linux)
A linguagem Java é Orientada a Objetos.
A programação Orientada a Objetos Também chamada(OOP) é um modo de
conceituar um programa de computador
como um conjunto de objetos que se
interagem. Para alguns, ela é apenas um
modo de organizar programas em qualquer
linguagem pode ser usada para criar
programas orientados a objetos.
Introdução ao Conceito
de Orientação à
Objetos
Classe
Vem a ser uma estrutura de dados criada
para dar origem ou modelar um objeto.
Carro
Propriedades
Marcha
Freio
Embreagem
Motor
Método :
Método vem a ser um grupo de instruções
em uma classe que define como os objetos
da classe se comportarão. Os métodos são
análogos às funções em outras linguagens.
Método da classe carro
Devem ser descritos com uma ação
(verbo) que podem controlar o estado do
objeto.
Exemplo :
Mudar_Marcha(estado_marcha)
Marcha = estado_marcha{0,1,2,3,4....}
Freiar_carro(estado_freio)
Freio = estado_freio{true,false}
Estrutura de uma classe
Carro
Propriedades
Marcha
Freio
Embreagem
Motor
Métodos
Mudar_Marcha(..)
Freiar_Carro(..)
Objetos
É uma instância de uma classe. Um
objeto é capaz de armazenar estados através
de seus atributos e reagir a mensagens
enviadas a ele, assim como se relacionar e
enviar mensagens a outros objetos.
Exemplo de objeto
Carro obj_carro1 = Carro ()
Carro obj_carro2 = Carro ()
obj_carro1.Freiar_carro(true)
obj_carro1.Mudar_Marcha(3)
obj_carro2.Freiar_carro(false)
Herança
Herança (ou generalização) é o mecanismo
pelo qual uma classe (sub-classe) pode estender
outra classe (super-classe), aproveitando seus
comportamentos (métodos) e variáveis possíveis
(atributos). Há Herança múltipla quando uma
sub-classe possui mais de uma super-classe. Essa
relação é normalmente chamada de relação "é
um". Um exemplo de herança: Mamífero é superclasse de Humano. Ou seja, um Humano é um
mamífero.
Estrutura de Herança
Veiculo
Propriedades
Marcha
Freio
Métodos
Mudar_Marcha(..)
Freiar_Carro(..)
Exemplo: Herança
Veiculo
Carro
Moto
Bicicleta
Polimorfismo
Polimorfismo é o princípio pelo qual duas ou mais
classes derivadas de uma mesma superclasse podem
invocar métodos que têm a mesma assinatura (lista de
parâmetros e retorno) mas comportamentos distintos,
especializados para cada classe derivada, usando para tanto
uma referência a um objeto do tipo da superclasse. A
decisão sobre qual o método que deve ser selecionado, de
acordo com o tipo da classe derivada, é tomada em tempo
de execução, através do mecanismo de ligação tardia. No
caso de polimorfismo, é necessário que os métodos tenham
exatamente a mesma identificação, sendo utilizado o
mecanismo de redefinição de métodos. Esse mecanismo de
redefinição não deve ser confundido com o mecanismo de
sobrecarga de métodos.
Exemplo: Polimorfismo
Carro
Herda
Veiculo
Métodos
Mudar_Marcha(..)
Freiar_Carro(..)
Polimorfismo
Podem haver implementações diferentes
para o mesmo método.
Animal
Barulho()
Cachorro
Gato
Barulho()
Barulho()
Barulho()
Latir
Miar
Relinchar
Cavalo
Polimorfismo ou sobrecarga
parâmetros
:
:
Mudar_Marcha(bool estado_marcha)
:
:
Mudar_Marcha(char estado_marcha)
:
:
Introdução a
Programação em Java
Definindo um programa em Java
Classes :
Todo programa na linguagem Java é uma classe que
permite nela atribuir métodos e objetos
pertencentes a ela.
Uma classe vem a ser um modelo para o objeto que
contém variáveis para descrevê-los e métodos para
descrever como eles se comportam. As Classes
podem herdar variáveis e métodos de outras
classes.
Tipos Básicos
Os tipos básicos de dados em Java são
String, (Alfanuméricos), int (números
Inteiros) e double (números com casas
decimais) boolean(Operadores true, false).
Exemplo de declaração de tipos em Java.
String a = "null";
String)
(Cria a variável a para receber uma
int x = 0; (Cria a variável x para receber um inteiro).
boolean teste = true; (Cria a variável teste para receber
um boolean).
double lista = 2.3; (Cria a variável lista para receber um
número fracionário).
Obs : poderá ser criada a variável sem atribuir valores
para a mesma em alguns casos.
Exemplo: String x;
Operadores Aritméticos do Java.
(+) - soma
(-) - Subtração
(*) - Multiplicação
(/) - Divisão
(%) - Módulo (Resto da Divisão)
Exemplo de Operações :
int a=3;
a *= 5; // multiplica o valor da variável a
por 5 o resultado será 15.
int k = 3;
int j = 2;
int m = k % j; // O resto da divisão de três por
2 é igual 1 portanto o resultado será 1.
Operadores Relacionais.
>- Maior que
< - Menor que
= = - Igual a ( somente para números)
!= - Diferente de
>= - Maior ou Igual
<= - Menor ou Igual
Operadores Lógicos.
&& - and
|| - or
! - not
? : - Abreviação do if/then/else
Exemplo de Operador ?:
int a = 5;
int b = 7;
boolean valor = b > a ? true : false;
Operadores de Incremento e Decremento.
++ => Equivalente à x++ / x = x + 1
_ _ => Equivalente à y-- / y = y - 1
Estruturas de Controle da
linguagem Java.
Em Java como em qualquer linguagem
temos as três estruturas básicas de
programação são elas.
a) Condição
b) Atribuição
c) Repetição
Se a for igual a 3. Exemplo.
b = a++ (O valor da variável b será 3 e da
variável a = 4).
b = ++a ( O valor da variával b será 4 e da
variável a = 4).
Obs : Idem para operação de subtração
if( ) - Analisa se uma condição é verdadeira
ou falsa.
Sintaxe :
if (<condição>) {
<Bloco de Instruções-1>
}
else { <Bloco de Instruções-2> }
Obs : Em Java o símbolo ( { )- Representa Begin e ( } ) Representa end
Exemplo : if()
int a = 1;
if( a == 5)
System.out.println("Valor de (a) esta Correto");
else
System.out.println("Valor de (a) esta Invalido !!!!");
Obs : A classe System.out.Println() permite imprimir uma
informação no video.(saida padrão)
while( ) - Cria uma repetição
condicional.
Sintaxe :
while( <condição> ) {
<Instrução>
}
Exemplo: while()
int a = 1;
while( a <= 5) {
System.out.println(a);
a++;
}
for ( ) - Cria uma repetição sequêncial mediante a
uma condição.
Sintaxe :
for (<variável de inicialização>;< condição >;<variável de incremento>) {
<Bloco de Instruções>
}
Exemplo : for()
for(int i=1;i<=5;i++) {
System.out.println(i);
}
Observação Importante : Todos os comandos da
linguagem Java devem estar escritos em letras
minúsculas.
Comandos break e continue.
Exemplo do comando break:
int a=1;
while(a <= 5) {
if(a == 3)
break;
System.out.println(a);
a++; }
Exemplo do comando continue:
int a=1;
while(a <= 5) {
if(a = = 3) {
a=1;
continue;
}
System.out.println(a);
a++;
}
Usar a estrutura switch(), que corresponde ao case do delphi
o select case VB.
Exemplo:
switch(<Varm>) {
case valor1 :
.....................
break;
case valor2 :
........................
break;
case valor3 :
........................
break;
default :
........................
}
Exemplo. switch
switch(opcao) {
case 1 :
System.out.println("UM");
break;
case 2 :
System.out.println("DOIS");
break;
case 3 :
System.out.println("TRÊS");
break;
default :
System.out.println("Nenhum desses números foi teclado !!!!");
}
Estrutura de um programa em Java
class : Declara uma classe em Java.
Como todo programa em Java vem a ser
uma classe então toda a vez que formos
escrever um programa Java devemos usar o
comando class que declara uma classe.
Exemplo :
class teste {
:
<Bloco de Instruções>
}
Método
Por sua vez toda as classe são composta de
métodos que realizam tarefas como no
exemplo abaixo.
public static void main(String args[]) {
:
:
}
• public - Onde a palavra chave public
significa que esse método será reconhecido
por todas as outras classes e métodos.
(objetos)
• static - Significa que esse método não será
nunca instânciado.
• void - Significa que o método não irá
retornar nenhum valor.
• main - Vem a ser o próprio método que é
onde toda a aplicação escrita irá funcionar.
• args[] - Vem a ser um vetor criado pelo
Java automaticamente com parâmetros
passados pela linha de comandos esse vetor
será sempre do tipo String.
Exemplo de um programa Java para ser
compilado em laboratório.
class exemplo2 {
public static void main(String args[]) {
System.out.println("Alo Mundo!!!!");
}
}
Estudando o Vetor de parâmetros da
Linguagem Java
• Em Java o método main() aceita um parâmetro
que permite com que informações sejam passadas
da linha de comandos direto para o programa esse
argumento(Parâmetro) tem o nome simbólico de
args[] mais pode ser alterado para qualquer outro
nome como qualquer outra variável.
• Obs : Esse argumento que deve ser passado para o
método main() deve ser sempre uma String. Como
já foi visto.
Exemplo Prático:
public static void main(String args[]) {
System.out.println(args[0])
}
Exemplo de execução de um programa
Java com passagem de parâmetros
C:\java\aula\>java exemplo2 Maria Pedro
Na posição 0 como foi ilustrado na figura
acima existe a string maria e na posição 1
do vetor a string pedro.
Exemplo : args[0] = "Maria"
args[1] = "Pedro"
Método : parseInt() - Converte uma string em
número inteiro.
Exemplo :
String a = "123";
int x = Integer.parseInt(a);
Converte o valor da String a = "123" para um
número inteiro.
Método : parseDouble() - Converte uma
string em número ponto flutuante.
• Exemplo :
• String a = "123.75";
• double x = Double.parseDouble(a);
• Converte o valor da String a = "123" para
um número de ponto flutuante.
Formatando saídas:
printf ( ) – Método que realiza a formatação
dos valores na saída padrão; Por intermédio
do símbolo de porcentagem.
Sintaxe :
System.out.printf(“%<formato>”,<Varm>);
Formatos válidos
Formato
%d
%f
%c
%s
%u
%i
%o
%x
%%
\n
Tipo do Valor
Valor inteiro decimal
Valor em ponto flutuante
Caracter em formato ASCII
String de caracteres
Inteiro decimal sem sinal
Valor inteiro decimal
Valor inteiro octal
Valor inteiro hexadecimal
Caracter %
Pula uma linha após impressão
Exemplo :
double a = 2.2;
System.out.printf("%2.3f\n",);
Resultado : 2,200
int b = 255;
System.out.printf("%4d\n",b);
Resultado : b255
b = Espaço em branco
int b = 255;
System.out.printf("%X\n",b);
Resultado : FF
System.out.printf("%o\n",b);
Resultado : 377
int ch = 97;
System.out.printf("%c\n",ch);
Resultado : a
double a = 2.2;
System.out.printf("%e\n",a);
Resultado : 2.20000e+00
System.out.printf("%d %2d %3d\n",3,5,7);
Resultado : 3bb5bbb7
String str1 = “ana”;
System.out.printf("%s\n",str1);
Resultado : ana
System.out.printf("%S\n",str1);
Resultado : ANA
double a = 2.2;
String st = “ana”;
System.out.printf("%S %1.1f\n",st,a);
Resultado : ANA 2,2
Escopo com variáveis
Quando um variável em java é declarada
no interior de uma estrutura seus valores e
referências serão mantidos durante o
momento em que a estrutura estiver sendo
executada, depois disso essa variável não
mais terá finalidade para o programa
devendo ser destruída, caso o programador
tente usar essa variável logo após a
execução dessa estrutura o compilador irá
detectar erro.
Variável : Permanência de valor
Variável
Estrutura de
repetição
Estrutura de
Condição
Variável
Permanece o valor
da variável caso a
mesma
esteja
declarada fora de
uma estrutura.
Variável : Não Permanência de
valor
Estrutura de
repetição
Variável
Estrutura de
Condição
Variável
Não Permanece o
valor da variável
caso a mesma esteja
declarada fora de
uma estrutura.
Não Existe essa
variável
Exemplo : Variável Global
int a = 1;
for( int i=1;i<=10;i++) {
System.out.println(i);
}
System.out.println(i);
System.out.println(a);
Neste exemplo o compilador irá enviar um erro de
sintaxe dizendo não reconhecer o símbolo (i), mas
para a variável (a) estaria tudo correto.
Exemplo : Variável Global
class teste{
public static void main(String args[]){
int i=1;
for(;i<=10;i++) {
int a = 1;
System.out.println(i);
}
System.out.println(i);
System.out.println(a);
}}
Neste exemplo o tratamento com a variável (i) estaria
correto, o funcionamento do programa estaria
comprometido pela variável (a).
Criando Entrada de dados (padrão)
Importar o pacote util, indicando as classe
Scanner; Apartir da versão (5.0)
Exemplo :
import java.util.Scanner;
Diagrama UML (associação Scanner)
c la s s e P ro g
S canner
ja v a .u til
Exemplo
Cria um objeto da classe Scanner.
Exemplo:
Scanner scan = new Scanner( System.in );
Usando os métodos da classe Scanner.
Métodos
next()
nextInt()
Resultado
Realiza a leitura de uma string pelo
teclado.
Realiza a leitura de um inteiro pelo
teclado.
nextDouble() Realiza a leitura de um ponto
flutuante precisão dupla pelo teclado.
nextBoolean() Realiza a leitura de um boolean pelo
teclado.
nextFloat()
Realiza a leitura de um float pelo
teclado.
Exemplo programa :
import java.util.Scanner;
public class scan
{
public static void main( String [] args )
{
Scanner scan = new Scanner( System.in );
System.out.print("Qual seu nome: ");
String seuNome = scan.next( );
}
}
Download

1 Bim. - Fundamentos da Linguagem Java, Programação