Professional Documents
Culture Documents
2010 / 2011
Contedos da Disciplina
Modulo IX Introduo Programao Orientada a Objectos
Objectivos
Identificar as diferenas entre uma Linguagem Estruturada e uma
Contedos da Disciplina
(48 tempos) Modulo IX Introduo Programao Orientada a Objectos Contedos
Caractersticas da programao Orientada por Objectos; Conceito de Classe, Atributos, Mtodos, e Eventos; Conceito de Objecto;
ESRBP
ESRBP
2010 / 2011
Um paradigma de programao fornece (e determina) a viso que o programador possui sobre a estruturao e execuo do programa;
ESRBP
Programao estruturada organiza o cdigo atravs de subprogramas (procedimentos e funes) e recorrendo apenas a trs estruturas de controlo: sequenciao, deciso e repetio;
Programao orientada a objectos organiza o cdigo em objectos que so autnomos e trocam mensagens entre si durante a execuo do programa, imitando o comportamento dos objectos do mundo real.
ESRBP
Utilizada para criar todos os tipos de aplicaes atravs do JSE, JEE e JME. JSE (Java Standard Edition) concentra o ncleo de funcionalidades bsicas do Java, sendo adequado na programao de aplicaes para desktops e servidores. JEE (Java Enterprise Edition) possui mdulos do JSE e adiciona diversas APIs para, entre outras, a programao de aplicaes para a Web. JME (Java Micro Edition) destinado programao de aplicaes para telemveis, PDAs, entre outros.
ESRBP
Um ambiente de desenvolvimento:
Executvel
Executvel Executvel Executvel
javac.exe
java.exe javadoc.exe
Interpretador
ESRBP
Gerador
de documentos
de classes e ficheiros
jar.exe
Empacotamento
Um ambiente de execuo:
Permite a execuo de diversas aplicaes em mquinas onde o JRE esteja instalado. JRE (Java Runtime Environment) como o prprio nome indica o Ambiente de Execuo Java, constitudo pela JVM e pelas bibliotecas Java. JVM (Java Virtual Machine) mquina imaginria que emula uma aplicao em uma mquina real.
ESRBP
10
Um ambiente de distribuio:
ESRBP
11
Criada em 1991 por James Gosling da Sun Microsystems. Esteve para denominar-se Oak (Carvalho) devido rvore que era visvel atravs da janela de James Gosling. O nome foi mudado para Java porque j existia uma linguagem de programao com o nome Oak.
ESRBP
12
Caractersticas: (1)
Orientada a objectos: desde o incio que foi projectada para ser orientada a objectos. Familiar: muito familiar para os programadores C/C++. Simples: a aprendizagem pode ser feita num curto espao de tempo.
ESRBP
13
Caractersticas: (2)
ESRBP
Robusta: foi pensada para o desenvolvimento de aplicaes confiveis, fornecendo verificaes durante a compilao e em tempo de execuo.
O colector de lixo (garbage collection) responsabiliza-se pela limpeza da memria, libertando assim o programador desta tarefa.
14
Caractersticas: (3)
Segura: as aplicaes Java so executadas em ambiente prprio (JRE) o que inviabiliza a intruso de cdigo malicioso;
Portvel: os programas desenvolvidos nesta linguagem podem ser executados em praticamente qualquer mquina desde que esta possua o JRE instalado.
ESRBP
15
bytecode (Programa.class);
16
Ao contrrio de outras aplicaes, que so compiladas directamente para o cdigo da mquina em que sero executadas, em Java estas somente so transformadas em cdigo mquina em tempo de execuo.
Este mecanismo permite desenvolver aplicaes sem a preocupao do local onde estas sero executadas pois, desde que exista uma JVM instalada, o cdigo ser executvel.
ESRBP
17
ESRBP
18
ESRBP
As informaes, relativas ao ambiente no qual uma aplicao Java executada, so utilizadas pela JVM para fazer optimizaes em tempo de execuo e, havendo necessidade, o cdigo que est a ser interpretado transformado em instrues nativas do sistema operativo (cdigo mquina) atravs do compilador JIT (Just In Time).
19
JDK (Java Development Kit) composto pelo JRE e por um conjunto de ferramentas teis ao programador Java.
ESRBP
20
IDE (Integrated Development Environment) programa que rene caractersticas e ferramentas de apoio ao desenvolvimento de software com o objectivo de agilizar este processo.
BlueJ (www.bluej.org) NetBeans (www.netbeans.org) Eclipse (www.eclipse.org)
ESRBP
21
ESRBP
22
ESRBP
23
Classes e Interfaces: A primeira letra deve ser maiscula e, caso o nome seja formado por mais de uma palavra, as primeiras letras das demais palavras tambm devem ser maisculas ( Exemplo / TiposPrimitivos). Mtodos e Variveis: A primeira letra deve ser minscula e aps esta aplicar o camelCase.
ESRBP
24
Constantes: Todas as letras devem ser maisculas e caso o nome seja formado por mais do que uma palavra estas devem ser separadas por underscore.
Tipos de dados
Tipos primitivos
boolean
char, byte, short, int, long
ESRBP
float, double
Tipos referncia
25
ESRBP
26
ESRBP
int x = 3
short y = (short) x
28
Arrays
Objectos que armazenam um nmero prdefinido de elementos que so acedidos atravs de ndices inteiros, sempre iniciados em 0. A utilizao de arrays implica trs etapas:
ESRBP
Construo: array
29
Classes
ESRBP
Interfaces
30
Operadores aritmticos:
Operador ++ -+ Descrio Pr/ps-incremento Pr/ps-decremento Sinal + Sinal Multiplicao Diviso Mdulo (Resto) Soma Subtraco
ESRBP
* / % + -
31
Em java, os operadores aritmticos continuam a ser os usais operadores + - * e /, para soma, subtraco, multiplicao e diviso respectivamente;
ESRBP
32
Em java possvel combinar o operador de atribuio com os operadores aritmticos ( e outros), tais como +=, -=, *=, /= e %=, bem como os operadores unrios de incremento e decremento, do valor de uma varivel (varivel ++, ++ varivel ou varivel ou varivel);
ESRBP
X++ ou ++X X = X + 1; X ou X X = X 1.
33
Operadores relacionais:
Descrio Maior que Menor que Maior ou igual a Menor ou igual a Igual a > < >= <=
Operador
ESRBP
==
!=
?: instanceof
Diferente de
Operador ternrio Retorna true se o objecto da esquerda for uma instncia do objecto da direita
34
operador ternrio;
Tem a forma geral exp1 ? Exp2 : exp3 e ter um valor final que ser sempre exp2 exp3, tal dependendo de
ESRBP
int exp1=245; int exp2=123; exp1=(exp1>exp2)?exp1:exp2; //Faz com que a varivel exp1 receba sempre o maior valor entre ela mesma e a exp2. Neste caso, ela receber o seu prprio valor por ele ser maior.
35
Operadores lgicos:
Operador Descrio
! (no)
&& (e) || (ou) ^ (no ou)
ESRBP
Negao
Conjuno Disjuno Disjuno exclusiva
X>=5 && X<=7 Obriga as 2 a serem verdade; X>=5 || X<=7 basta 1 ser verdade; X=True || !X; - X= true ou X= False; X>=5 ^ X<=7 Obriga 1 a ser Falsa;
36
if
if (expresso booleana) instruo_simples; if (expresso booleana) { instrues }
ESRBP
Quando existe apenas uma instruo aps o if no necessrio abrir um bloco com as chavetas. Se existirem mais instrues a abertura do bloco necessria.
37
if else
if (expresso booleana) { instrues } else if (expresso booleana) { instrues } else { instrues }
ESRBP
Quando existe apenas uma instruo aps o if no necessrio abrir um bloco com as chavetas. Quando houver mais do que uma condio usa-se o else.
38
while
while (expresso booleana) { instrues; }
ESRBP
No while o teste feito cabea. Quando existe apenas uma instruo aps o while no necessrio abrir um bloco com as chavetas.
39
do while
do {
No do-while o teste feito cauda. Quando existe apenas uma instruo aps o do no necessrio abrir um bloco com as chavetas.
40
for
for (inicializao; expresses booleanas; passo da repetio) instruo_simples; for (inicializao; expresses booleanas; passo da repetio) { instrues; }
ESRBP
Quando existe apenas uma instruo aps o for no necessrio abrir um bloco com as chavetas.
41
break e continue
break interrompe o ciclo while, do-while ou for. continue interrompe uma iterao e reinicia o bloco com a prxima iterao. while (!terminado) { passarPagina(); if (alguemChamou == true) break; //sai do ciclo if (paginaPublicidade == true) continue; //salta esta iterao lerPagina(); } restoDoPrograma();
ESRBP
42
rtulo break
Quando existem vrios ciclos aninhados estes rtulos permitem interromper o ciclo mais externo.
ESRBP
43
revista: while (!terminado) { for (int i=10; i<100; i++) { passarPagina(); if (textoChato == true) break revista; //sai do ciclo while } O break sem rtulo maisIntrues(); sairia apenas do ciclo for } restoDoPrograma();
switch switch(valor) { case valor1 : instrues; break; case valor2 : instrues; break; ... default: instrues; }
ESRBP
44
Pacotes (1)
Um pacote em Java um directrio em que est armazenada uma ou mais classes. Os pacotes costumam agrupar classes das mesmas afinidades. Existem inmeros pacotes em Java sendo dois dos mais utilizados o java.lang e java.util. Para alm dos pacotes j existentes o utilizador pode criar pacotes prprios.
ESRBP
45
Pacotes (2)
As classes definidas nos pacotes podem ser empregadas em qualquer outra classe mediante a utilizao da instruo import:
import java.util.Date //indica que ser usada a classe Date do pacote java.util import java.util.* //indica que sero usadas todas as classes que pertencem ao pacote java.util
ESRBP
Por predefinio o pacote java.lang importado automaticamente pelo Java no sendo, por isso, necessrio fazer o import do mesmo.
46
ESRBP
47
import java.util.Scanner; public class LinhaComandos { public static void main(String[] args) { // cria a varivel de leitura dos dados Scanner s = new Scanner(System.in); // usa os mtodos de leitura especficos do tipo de dados desejado System.out.print(Insira uma frase: "); String linha = s.nextLine(); // l a linha System.out.print(A frase inserida foi +linha); System.out.print(Insira um numero inteiro: "); int num = s.nextInt(); // l um nmero inteiro System.out.print(O nmero inserido foi +num); } }
String nome;
//Mostra uma caixa de dilogo que solicita a entrada de dados nome = JOptionPane.showInputDialog(Insira o seu nome: );
ESRBP
String mensagem = O nome inserido foi +nome; //Mostra uma caixa de dilogo com a mensagem
JOptionPane.showMessageDialog(null, mensagem); }
}
48
Pacotes (3)
java.lang:
classes
de
ambiente
(importado
automaticamente);
ESRBP
java.util: classes utilitrias (tipos de dados, etc); java.io: classes para entrada e sada; java.net: classes para uso em rede (TCP/IP); java.sql: classes para acesso via JDBC; java.awt: interface grfica universal nativa; javax.swing: interface grfica (mais leve que
49
java.awt).
Objectos (1)
Objectos so coisas que temos no mundo real e abstramos no mundo virtual para que possamos manipul-los na resoluo de problemas. Os objectos possuem estados e comportamentos que, na programao estruturada, so equivalentes aos dados e subprogramas e, na programao orientada aos objectos (POO), so equivalentes aos atributos e mtodos.
ESRBP
50
Objectos (2)
Objecto Atributos Pessoa Carro Co nome, idade, gnero marca, modelo, cor nome, raa Mtodos falar, andar acelerar, travar, abastecer latir, correr
ESRBP
51
Classes (1)
Uma classe uma especificao para um determinado tipo de objecto. Para que um objecto seja de determinada classe ter, obrigatoriamente, que respeitar a especificao da classe. Uma classe um tipo de dados referncia.
ESRBP
52
Classes (2)
Pessoa nome idade gnero
ESRBP
pessoa1 Camila 12 F
pessoa2 Martim 17 M
A coluna Pessoa define a classe enquanto as colunas pessoa1 e pessoa2 so os objectos dessa classe.
53
Cada pessoa particular uma instncia da classe que ter um valor diferente para cada um dos atributos definidos na especificao da classe.
Classes (3)
O cdigo seguinte, que corresponde classe Pessoa, define os atributos dos objectos daquela classe:
class Pessoa { //Atributos String nome; //Nome da Pessoa int idade; //Idade da Pessoa }
ESRBP
54
Classes (4)
O cdigo seguinte, que corresponde classe Pessoa, define os mtodos dos objectos daquela classe:
class Pessoa {
//Mtodos
ESRBP
}
}
55
Construtores (1)
O construtor no um mtodo, mas antes, um bloco de cdigo que executado sempre que utilizamos a palavra reservada new. A sua nica funo criar uma instncia da classe (objecto). Quando o construtor no explicitamente declarado o compilador insere o construtor default, isto , um construtor sem parmetros e com o corpo vazio.
ESRBP
56
Construtores (2)
O cdigo seguinte, que corresponde classe Pessoa, define dois construtores para aquela classe:
class Pessoa { //Construtores public Pessoa() { }
//Construtor default
ESRBP
57
Construtores (3)
ESRBP
Na verdade, pessoa1 e pessoa2 no contm objectos do tipo Pessoa, mas antes, os endereos de memria onde estes se encontram guardados.
Memria
Pessoa 253 nome = Ana idade=12 254 255 Pessoa 256 nome = Rui idade = 15 257
58
Encapsulamento (1)
59
Encapsulamento (2)
Modificadores de acesso:
ESRBP
60
public: as classes e membros so visveis em qualquer lugar ; package: so visveis em classes do mesmo pacote mas no nas suas subclasses. Na verdade, no existe um modificador com este nome, pois, a ausncia de modificador torna-o packcage. protected: so visveis na mesma classe e suas subclasses independentemente do pacote onde estas ltimas se encontrem; private: so visveis apenas dentro da mesma classe.
Encapsulamento (3)
situaes imprevistas.
61
Estes mtodos so responsveis por fornecer meios para consultar e modificar o estado de um objecto, isto , meios para aceder, retornar e modificar os valores dos atributos de um objecto. Estes mtodos apenas so criados se forem realmente necessrios, ou seja, no se dar acesso aos atributos que no interessam a outros objectos mas interessam apenas ao prprio objecto.
ESRBP
62
Getters: mtodo que retorna o atributo e na, maioria dos casos, composto pela palavra get[nome do atributo]. Interrogador Ex: getIdade(), getSalario() Quando o mtodo retorna um valor do tipo boolean a conveno passa a ser palavra is[nome do atributo]
Public getRaio() { Return raio; Public Piloto getPiloto() { Return piloto; Public isLigado() { Return ligado;
ESRBP
63
Setters: mtodo que atribui/modifica o valor de um atributo e sempre composto pela palavra set[nome do atributo] e o parmetro do mesmo tipo do atributo. Ex: setIdade(int idade), setSalario(double salario) Modificador
ESRBP
Utiliza-se a palavra reservada this para imputar ao atributo o valor que passado como parmetro.
Public void setNome(String nome) { This.nome=nome;
64
Referncias Bibliogrficas
EIJE, Albert; BARROS, Cludio; KOJIIO, Miguel. Curso Java Starter [online]. Disponvel na Internet via WWW. URL http://www.t2ti.com/ curso/video/java/ basico/java_starter.php. Consultado em Maro 2009 iPed. Curso de Java [online]. Disponvel na Internet via WWW. URL http://www.iped. com.br/curso/java/. Consultado em Maro 2009
ESRBP
65