curso disciplina linguagem de programação ii curso ...parte-2).pdf · apoo curso 1 disciplina...
TRANSCRIPT
APOO
Curso
1
Disciplina Linguagem de Programação IICurso Engenharia da Computação
Disciplina Linguagem de Programação – II
Introdução aos conceitos para aplicação da POO
Site : http://www1.univap.br/~wagner/ec.html
Prof. Wagner Santos C. de Jesus
Introdução a Linguagem JavaLinguagemJava temorigem com nome Inspirado em
uma xícara de café quente por durante as fases de projeto dalinguagemos programadores tomavammuito café.
Símbolo Mascote
2Prof. Wagner Santos C. de Jesus [email protected]
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
3Prof. Wagner Santos C. de Jesus [email protected]
A Linguagem Java• Desenvolvida na
década de 90 por umaequipe deprogramadoreschefiada por JamesGosling, na empresaSun Microsystems.
Programador Canadense Foto 2005
Os mentores do projeto eram Patrick Naughton, Mike Sheridan, e James Gosling.
4Prof. Wagner Santos C. de Jesus [email protected]
Histórico sobre (Java)
A linguagemJava se tornou oficial a todo omundo em1995, depois que a Netscape alicenciou para o uso do navegadorNavigator. Atualmente existemoutrasopções para a Web mais quando alinguagemJava foi criada ela revolucionoua natureza de páginas na web. Os (Applets)Java. Essa linguageme um produto criadopela empresa norte americanaSunMicrosystem.
5Prof. Wagner Santos C. de Jesus [email protected]
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)• NetBeans (Comunidade NetBeans; Apache
Software Foundation)• LJ-Java (Colégio Técnico A.T.F.) Univap - 2002
6Prof. Wagner Santos C. de Jesus [email protected]
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.
7Prof. Wagner Santos C. de Jesus [email protected]
8
Diferença entre Java e C++.
• Ausência de estruturas e uniões.
• Ausência de #define.
• Ausência de ponteiros.
• Não é possível usar funções individuais
• Proibido o uso de goto.
• Sobrecarregamento de operadores não será permitido.
Prof. Wagner Santos C. de Jesus [email protected]
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
Compilador Mact.
CompiladorLinux
Arquivo BinárioWindows
Arquivo BinárioMact.
Arquivo BinárioLinux
10Prof. Wagner Santos C. de Jesus [email protected]
O que (JVM)
O termo emJava para representar umprocesso parecido como de cima mais deforma que qualquer plataforma consigaentender e executar suas instruções échamado deByteCode.(Que vema ser amáquina virtual Java). Que é conhecidacomo interpretador Java ou runtimeJava.
11Prof. Wagner Santos C. de Jesus [email protected]
Javac hello.java
Hello.class
SOByte Code Verifier
Code Generator
hardware
Class Loader
interpretador
RunTime
Compile Runtime
Funcionamento da JVM
12Prof. Wagner Santos C. de Jesus [email protected]
O que é o ByteCode
Obs : O bytecode é semelhante ao código demáquina produzido por outras linguagens,mas ele não é específico de nenhumprocessador. Ele acrescenta umnível entre ocódigo-fonte e o código de Máquina.
13Prof. Wagner Santos C. de Jesus [email protected]
Programa Multiplataforma da Linguagem Java.
----------------
---------------------------
Código Java
Compilador Java
Bytecode Java(Independente
da Plataforma)
Interpretador Java(Windows)
Interpretador Java(Mac)
Interpretador Java(Linux)
14Prof. Wagner Santos C. de Jesus [email protected]
A linguagem Java é Orientada a Objetos.
A programação Orientada a Objetos -Também chamada(OOP) é ummodo deconceituar umprograma de computadorcomo um conjunto de objetos que seinteragem. Para alguns, ela é apenas ummodo de organizar programas emqualquerlinguagem pode ser usada para criarprogramas orientados a objetos.
15Prof. Wagner Santos C. de Jesus [email protected]
Introdução aos Conceito Aplicados de
Orientação à Objetos
16Prof. Wagner Santos C. de Jesus [email protected]
ClasseVem a ser uma estrutura de dados criada
para dar origem ou modelar um objeto.
Carro
Propriedades
Marcha
FreioEmbreagemMotor
17Prof. Wagner Santos C. de Jesus [email protected]
Método :
Método vema ser umgrupo de instruçõesem uma classe que define como os objetosda classe se comportarão. Os métodos sãoanálogos às funções emoutras linguagens.
18Prof. Wagner Santos C. de Jesus [email protected]
Método da classe carroDevem ser descritos comuma ação
(verbo) que podemcontrolar o estado doobjeto.
Exemplo :
Mudar_Marcha(estado_marcha)
Marcha = estado_marcha{0,1,2,3,4....}
Freiar_carro(estado_freio)
Freio = estado_freio{true,false}
19Prof. Wagner Santos C. de Jesus [email protected]
Estrutura de uma classeCarro
Propriedades
Marcha
FreioEmbreagemMotor
Métodos
Mudar_Marcha(..)
Freiar_Carro(..)
20Prof. Wagner Santos C. de Jesus [email protected]
Objeto
É uma instância de uma classe. Umobjeto é capaz de armazenar estados atravésde seus atributos e reagir a mensagensenviadas a ele, assimcomo se relacionar eenviar mensagens a outros objetos.
21Prof. Wagner Santos C. de Jesus [email protected]
Exemplo de objeto
Carroobj_carro1= Carro ()
Carroobj_carro2= Carro ()
obj_carro1.Freiar_carro(true)
obj_carro1.Mudar_Marcha(3)
obj_carro2.Freiar_carro(false)
22Prof. Wagner Santos C. de Jesus [email protected]
HerançaHerança (ou generalização) é o mecanismo
pelo qual uma classe (sub-classe) pode estenderoutra classe (super-classe), aproveitando seuscomportamentos (métodos) e variáveis possíveis(atributos). Há Herança múltipla quando umasub-classe possui mais de uma super-classe. Essarelação é normalmente chamada de relação "éum". Um exemplo de herança: Mamífero é super-classe de Humano. Ou seja, umHumanoé ummamífero.
23Prof. Wagner Santos C. de Jesus [email protected]
Estrutura de Herança
Veiculo
Propriedades
Marcha
Freio
Métodos
Mudar_Marcha(..)
Freiar_Carro(..)
24Prof. Wagner Santos C. de Jesus [email protected]
Exemplo: Herança (Especialização)
Carro
Veiculo
Moto Bicicleta
25Prof. Wagner Santos C. de Jesus [email protected]
PolimorfismoPolimorfismo é o princípio pelo qual duas ou mais
classes derivadas de uma mesma superclasse podeminvocar métodos que têma mesma assinatura (lista deparâmetros e retorno) mas comportamentos distintos,especializados para cada classe derivada, usando para tantouma referência a umobjeto do tipo da superclasse. Adecisão sobre qual o método que deve ser selecionado, deacordo como tipo da classe derivada, é tomada emtempode execução, através do mecanismo de ligação tardia. Nocaso de polimorfismo, é necessário que os métodos tenhamexatamente a mesma identificação, sendo utilizado omecanismo de redefinição de métodos. Esse mecanismo deredefinição não deve ser confundido como mecanismo desobrecarga de métodos.
26Prof. Wagner Santos C. de Jesus [email protected]
Exemplo: Polimorfismo
Carro
Métodos
Mudar_Marcha(..)
Freiar_Carro(..)
VeiculoHerda
27Prof. Wagner Santos C. de Jesus [email protected]
PolimorfismoPodem haver implementações diferentes para o mesmo método.
Cachorro
Animal
Gato Cavalo
Barulho()
Barulho()
Latir
Barulho()
Miar
Barulho()
Relinchar 28Prof. Wagner Santos C. de Jesus [email protected]
Polimorfismo ou sobrecarga parâmetros:
:
Mudar_Marcha(bool estado_marcha)
:
:
Mudar_Marcha(char estado_marcha)
:
:
29Prof. Wagner Santos C. de Jesus [email protected]
Introdução a Programação em Java
30Prof. Wagner Santos C. de Jesus [email protected]
Definindo um programa em JavaClasses :
Todo programa na linguagemJava é uma classeque permite nela atribuir métodos e objetospertencentes a ela.
Uma classe vema ser ummodelo para o objeto quecontémvariáveis para descrevê-los e métodos paradescrever como eles se comportam. As Classespodem herdar variáveis e métodos de outrasclasses.
31Prof. Wagner Santos C. de Jesus [email protected]
Tipos Básicos (ou) Primitivos
Os tipos básicos de dados emJava sãoString, (Alfanuméricos), int (númerosInteiros) e double (números comcasasdecimais) boolean(Operadores true, false).
32Prof. Wagner Santos C. de Jesus [email protected]
Tabela de tipos de dados
String ........
Objetos manipulador de Caracteres.
-128 a 127
33
Prof. Wagner Santos C. de Jesus [email protected]
-2.147.483.648 a 2.147.483.647
-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
±5.0 × 10−324 a ±1.7 × 10308
±1,5 x 10−45 a ±3,4 x 1038
0 a 255
34Prof. Wagner Santos C. de Jesus [email protected]
Faixa dos Tipos de DadosSystem.out.println("Tipos de dados em Java: ");System.out.println("Menor Byte: " + Byte.MIN_VALUE) ;System.out.println("Maior Byte: " + Byte.MAX_VALUE) ;System.out.println("Menor Short Int: " + Short.MIN_ VALUE);System.out.println("Maior Short Int: " + Short.MAX_ VALUE);System.out.println("Menor Int: " + Integer.MIN_VALU E);System.out.println("Maior Int: " + Integer.MAX_VALU E);System.out.println("Menor Long: " + Long.MIN_VALUE) ;System.out.println("Maior Long:" + Long.MAX_VALUE);System.out.println("Menor Float: " + Float.MIN_VALU E);System.out.println("Maior Float: " + Float.MAX_VALU E);System.out.println("Menor Double: " + Double.MIN_VA LUE);System.out.println("Maior Double: " + Double.MAX_VA LUE);
35Prof. Wagner Santos C. de Jesus [email protected]
Exemplo de declaração de tipos em Java.
String a = "null"; (Cria a variável a para receber umaString)
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 umnúmero fracionário).
Obs : poderá ser criada a variável sematribuir valorespara a mesma emalguns casos.
Exemplo:String x; 36Prof. Wagner Santos C. de Jesus [email protected]
Operadores Aritméticos do Java.
(+) - soma
(-) - Subtração
(*) - Multiplicação
(/) - Divisão
(%) - Módulo (Resto da Divisão)
37Prof. Wagner Santos C. de Jesus [email protected]
Exemplo de Operações :
int a=3;
a *= 5; // multiplica o valor da variável apor 5 o resultado será 15.
int k = 3;
int j = 2;
int m = k % j; // O resto da divisão de três por2 é igual 1 portanto o resultado será 1.
38Prof. Wagner Santos C. de Jesus [email protected]
Operadores Relacionais.
>- Maior que
< - Menor que
= = - Igual a ( somente para números)
!= - Diferente de
>= - Maior ou Igual
<= - Menor ou Igual
39Prof. Wagner Santos C. de Jesus [email protected]
Operadores Lógicos.
&& - and
|| - or
! - not
? : - Abreviação do if/then/else
40Prof. Wagner Santos C. de Jesus [email protected]
Exemplo de Operador ?:
int a = 5;
int b = 7;
boolean valor = b > a ? true : false;
41Prof. Wagner Santos C. de Jesus [email protected]
Operadores de Incremento e Decremento.
++ => Equivalente à x++/ x = x + 1_ _ =>Equivalente à y-- / y = y - 1
42Prof. Wagner Santos C. de Jesus [email protected]
Estruturas de Controle da linguagem Java.
Em Java como emqualquer linguagemtemos as três estruturas básicas deprogramação são elas.
a) Condiçãob) Atribuiçãoc) Repetição
43Prof. Wagner Santos C. de Jesus [email protected]
Se a for igual a 3. Exemplo.
b = a++ (O valor da variável b será 3 e davariável a = 4).
b = ++a ( O valor da variával b será 4 e davariável a = 4).
Obs : Idem para operação de subtração
44Prof. Wagner Santos C. de Jesus [email protected]
Tipos de problemas
Além dos possíveis valores numéricos queuma variável de ponto flutuante pode assumirhá tambémos seguintes:
• menos infinito
• mais infinito
• zero
• NAN - not a number45Prof. Wagner Santos C. de Jesus
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
46Prof. Wagner Santos C. de Jesus [email protected]
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 umainformação no video.(saida padrão)
47Prof. Wagner Santos C. de Jesus [email protected]
while( ) - Cria uma repetição condicional.
Sintaxe :
while( <condição>) {<Instrução>
}
48Prof. Wagner Santos C. de Jesus [email protected]
Exemplo: while()
int a = 1;
while( a <= 5) {
System.out.println(a);
a++;
}49Prof. Wagner Santos C. de Jesus
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>
}
50Prof. Wagner Santos C. de Jesus [email protected]
Exemplo : for()
for(int i=1;i<=5;i++) {System.out.println(i) ;
}
51Prof. Wagner Santos C. de Jesus [email protected]
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++; }
52Prof. Wagner Santos C. de Jesus [email protected]
Exemplo do comando continue:
int a=1;while(a <= 5) {
if(a = = 3) {a=1;continue;
}System.out.println(a);a++;
} 53Prof. Wagner Santos C. de Jesus [email protected]
Usar a estrutura switch(), que corresponde ao case do delphi o select case VB.
switch(<Varm>) {case valor1 :
.....................break;
case valor2 :........................break;
case valor3 :........................break;
default :........................
}
Exemplo:
54Prof. Wagner Santos C. de Jesus [email protected]
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 !!!!");
}55Prof. Wagner Santos C. de Jesus
Estrutura de um programa em Java
class :Declara uma classe emJava.
Como todo programa emJava vema seruma classe então toda a vez que formosescrever umprograma Java devemos usar ocomandoclassque declara uma classe.
56Prof. Wagner Santos C. de Jesus [email protected]
Método
Por sua vez toda as classe são composta demétodos que realizamtarefas como noexemplo abaixo.
public static void main(String args[]) {::
}
58Prof. Wagner Santos C. de Jesus [email protected]
• public - Onde a palavra chave publicsignifica que esse método será reconhecidopor 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 nenhumvalor.
59Prof. Wagner Santos C. de Jesus [email protected]
• main - Vem a ser o próprio método que éonde toda a aplicação escrita irá funcionar.
• args[] - Vem a ser umvetor criado peloJava automaticamente comparâmetrospassados pela linha de comandos esse vetorserá sempre do tipo String.
60Prof. Wagner Santos C. de Jesus [email protected]
Exemplo de um programa Java para sercompilado emlaboratório.
class exemplo2 {public static void main(String args[]) {
System.out.println("Alo Mundo!!!!");}
}
61Prof. Wagner Santos C. de Jesus [email protected]
Estudando o Vetor de parâmetros da Linguagem Java
• Em Java o métodomain() aceita umparâmetroque permite comque informações sejampassadasda linha de comandos direto para o programa esseargumento(Parâmetro) temo nome simbólico deargs[] mais pode ser alterado para qualquer outronome como qualquer outra variável.
• Obs : Esse argumento que deve ser passado para ométodomain() deve ser sempre uma String. Comojá foi visto.
62Prof. Wagner Santos C. de Jesus [email protected]
Exemplo Prático:
public static void main(String args[]) {System.out.println(args[0])
}
63Prof. Wagner Santos C. de Jesus [email protected]
Exemplo de execução de um programa Java com passagem de parâmetros.
C:\java\aula\>java exemplo2 Maria Pedro
64Prof. Wagner Santos C. de Jesus [email protected]
Na posição 0 como foi ilustrado na figuraacima existe a string maria e na posição 1do vetor a string pedro.
Exemplo : args[0] = "Maria"
args[1] = "Pedro"
65Prof. Wagner Santos C. de Jesus [email protected]
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.
66Prof. Wagner Santos C. de Jesus [email protected]
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.
67Prof. Wagner Santos C. de Jesus [email protected]
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>);
68Prof. Wagner Santos C. de Jesus [email protected]
Formatos válidosFormato Tipo do Valor
%d Valor inteiro decimal
%f Valor em ponto flutuante
%c Caracter em formato ASCII
%s String de caracteres
%u Inteiro decimal sem sinal
%o Valor inteiro octal
%x Valor inteiro hexadecimal
%% Caracter %
\n Pula uma linha após impressão
69Prof. Wagner Santos C. de Jesus [email protected]
Exemplo :
double a = 2.2;
System.out.printf("%2.3f\n",a);
Resultado : 2,200
int b = 255;
System.out.printf("%4d\n",b);
Resultado : b255
b = Espaço em branco70Prof. Wagner Santos C. de Jesus
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 : a71Prof. Wagner Santos C. de Jesus
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
72Prof. Wagner Santos C. de Jesus [email protected]
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
73Prof. Wagner Santos C. de Jesus [email protected]
Escopo com variáveis
Quando umvariável emjava é declaradano interior de uma estrutura seus valores ereferências serão mantidos durante omomento emque a estrutura estiver sendoexecutada, depois disso essa variável nãomais terá finalidade para o programadevendo ser destruída, caso o programadortente usar essa variável logo após aexecução dessa estrutura o compilador irádetectar erro.
74Prof. Wagner Santos C. de Jesus [email protected]
Variável : Permanência de valor
Variável
Estrutura de repetição
Estrutura de Condição
Variável
Permanece o valorda variável caso amesma estejadeclarada fora deuma estrutura.
75Prof. Wagner Santos C. de Jesus [email protected]
Variável : Não Permanência de valor
Estrutura de repetição
Estrutura de Condição
Variável
Não Permanece ovalor da variávelcaso a mesma estejadeclarada fora deuma estrutura.
Variável
Não Existe essa variável
76Prof. Wagner Santos C. de Jesus [email protected]
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.
77Prof. Wagner Santos C. de Jesus [email protected]
Exemplo : Variável Globalclass 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 coma variável (i) estariacorreto, o funcionamento do programa estariacomprometido pela variável (a).
78Prof. Wagner Santos C. de Jesus [email protected]
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;
79Prof. Wagner Santos C. de Jesus [email protected]
Diagrama UML (associação Scanner)
classe ProgScanner
java.util
80Prof. Wagner Santos C. de Jesus [email protected]
Exemplo
Cria um objeto da classe Scanner.
Exemplo:
Scanner scan = new Scanner( System.in );
81Prof. Wagner Santos C. de Jesus [email protected]
Usando os métodos da classe Scanner.
Métodos Resultado
next() Realiza a leitura de uma string pelo teclado.
nextInt() 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. 82Prof. Wagner Santos C. de Jesus
Exemplo programa :import java.util.Scanner;
public class EntradaDados {
public static void main( String [] args ) {
Scanner scan = new Scanner( System.in );
System.out.print("Qual seu nome: "); String seuNome = scan.next( );
} }
83Prof. Wagner Santos C. de Jesus [email protected]