Você está na página 1de 64

ESRBP

Curso - Tcnico de Gesto e Programao de Sistemas Informticos

Carla Jesus Jorge Pina

Disciplina - Programao e Sistemas de Informao

2010 / 2011

Contedos da Disciplina
Modulo IX Introduo Programao Orientada a Objectos
Objectivos
Identificar as diferenas entre uma Linguagem Estruturada e uma

Linguagem Orientada por Objectos;


Adquirir a noo de objectos e sua classificao;
ESRBP

Adquirir as noes de classe, tipo, mtodos, comportamentos e instncias;

Carla Jesus Jorge Pina

Representar esquematicamente uma classe; Compreender o conceito de encapsulamento de dados.

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

Conceito de Encapsulamento; Conceito de Visibilidade de Classes, Mtodos e Atributos; Diagramas de Classe.

Carla Jesus Jorge Pina

ESRBP

Carla Jesus Jorge Pina

2010 / 2011

Mdulo 9 Introduo Programao Orientada por Objectos

Programao de Sistemas de Informao

Paradigmas de programao (1)

Um paradigma de programao fornece (e determina) a viso que o programador possui sobre a estruturao e execuo do programa;

Programao procedural Cobol; Programao estruturada Pascal, C, Algol;

ESRBP

Carla Jesus Jorge Pina

Programao orientada a objectos Smalltalk, C++, Java;


Programao orientada a eventos Visual Basic.

Paradigmas de programao (2)

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

Carla Jesus Jorge Pina

Tecnologia Java (1)



ESRBP
Carla Jesus Jorge Pina

Uma linguagem de programao;


Um ambiente de desenvolvimento; Um ambiente de execuo; Um ambiente de distribuio.

Tecnologia Java (2)

Uma linguagem de programao:

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

Carla Jesus Jorge Pina

Tecnologia Java (3)

Um ambiente de desenvolvimento:

Fornece um grande conjunto de ferramentas:


Compilador

Executvel
Executvel Executvel Executvel

javac.exe
java.exe javadoc.exe

Interpretador

ESRBP

Gerador

de documentos
de classes e ficheiros
jar.exe

Carla Jesus Jorge Pina

Empacotamento

Tecnologia Java (4)

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

Carla Jesus Jorge Pina

10

Tecnologia Java (5)

Um ambiente de distribuio:

Existem dois ambientes de distribuio principais:


JRE Browsers

ESRBP

Carla Jesus Jorge Pina

11

Java como linguagem de programao (1)

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

Carla Jesus Jorge Pina

12

Java como linguagem de programao (2)

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

Carla Jesus Jorge Pina

13

Java como linguagem de programao (3)

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.

Carla Jesus Jorge Pina

14

Java como linguagem de programao (4)

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

Carla Jesus Jorge Pina

15

Fases de um programa Java (1)

1. Criao do cdigo fonte (Programa.java); 2. Compilao do cdigo fonte e gerao do


ESRBP

bytecode (Programa.class);

3. Interpretao do bytecode pela JVM que


Carla Jesus Jorge Pina

funciona ento como interpretador; quina.

4. Converso do bytecode em linguagem m-

16

Fases de um programa Java (2)

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

Carla Jesus Jorge Pina

17

Fases de um programa Java (3)

ESRBP

Carla Jesus Jorge Pina

18

Fases de um programa Java (4)

ESRBP

Carla Jesus Jorge Pina

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

Programar em Java (1)


1. Fazer o download do JDK:
http://java.sun.com/javase/downloads/index.jsp

JDK (Java Development Kit) composto pelo JRE e por um conjunto de ferramentas teis ao programador Java.

ESRBP

2. Instalar o JDK 3. Configurar as variveis de ambiente

Carla Jesus Jorge Pina

20

Programar em Java (2)


4. Instalar um IDE

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

Carla Jesus Jorge Pina

21

Programar em Java (3)

ESRBP

Carla Jesus Jorge Pina

22

Regras para escrita de programas em Java (1)

Os programas em Java podem assumir trs modalidades: Applications, Applets e Servlets.


Qualquer programa organizado em um ou mais ficheiros com a extenso .java contendo apenas uma classe pblica cada um. O nome do ficheiro tem que ser exactamente igual ao nome da classe pblica que este contm. O Java totalmente CASE-SENSITIVE, ou seja, distingue as maisculas das minsculas, sendo que meuNome totalmente diferente de MeuNome.

ESRBP

Carla Jesus Jorge Pina

23

Regras para escrita de programas em Java (2)

A Sun convencionou o seguinte no que diz respeito a nomes:

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

Carla Jesus Jorge Pina

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

Carla Jesus Jorge Pina

Arrays Classes Interfaces

25

Tipos primitivos (1)

Converses sem perda de informao (1)

byte short, int, long, float ou double

ESRBP

short int, long, float ou double


char int, long, float ou double

int long, float ou double


long float ou double float double

Carla Jesus Jorge Pina

26

Tipos primitivos (3)

Converses com perda de informao

As converses explcitas so efectuadas atravs do Operador de Casting.


Estas converses so permitidas em todos os tipos de dados (excepto o boolean), mas o programador deve estar ciente que poder haver perda de bits. Exemplo

ESRBP

Carla Jesus Jorge Pina

int x = 3
short y = (short) x

28

Tipos referncia (1)

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:

Declarao: a referncia do array declarada;

Tipo nomearray [ ] / tipo [ ] nomearray (int lista [ ] / int [ ] lista)

ESRBP

Construo: array

definido o tamanho e instancia do

Carla Jesus Jorge Pina

tipo [ ] nomearray=new tipo [n elementos] (int lista [ ] = new int [20])

29

Inicializao: os elementos so inseridos no array

tipo [ ] nomearray={v1,v2,vn) (Int [ ] lista={0,1,2,3,4,19))

Tipos referncia (2)

Classes

Este tipo referncia ser abordado posteriormente.

ESRBP

Interfaces

Este tipo referncia ser abordado posteriormente.

Carla Jesus Jorge Pina

30

Operadores principais (1)

Operadores aritmticos:
Operador ++ -+ Descrio Pr/ps-incremento Pr/ps-decremento Sinal + Sinal Multiplicao Diviso Mdulo (Resto) Soma Subtraco

ESRBP

* / % + -

Carla Jesus Jorge Pina

31

Operadores principais (1.1)

Em java, os operadores aritmticos continuam a ser os usais operadores + - * e /, para soma, subtraco, multiplicao e diviso respectivamente;

A diviso de inteiros d como resultado directo um nmero inteiro (15/6=2)


de atribuio); (em Java, o operador = o operador

ESRBP

Carla Jesus Jorge Pina

O operador % (Mdulo (Resto)) apenas se aplica a


inteiros e da como resultado o resto da diviso inteira dos operandos (15%6=3).

32

Operadores principais (1.2)

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);

X+=12 X = X + 12; X%=5 X = X % 5; X*=-7 X = X * -7;

ESRBP

Carla Jesus Jorge Pina

Em java, os operadores de incremento e decremento representam-se por:

X++ ou ++X X = X + 1; X ou X X = X 1.

33

Operadores principais (2)

Operadores relacionais:
Descrio Maior que Menor que Maior ou igual a Menor ou igual a Igual a > < >= <=

Operador

ESRBP

==

Carla Jesus Jorge Pina

!=
?: instanceof

Diferente de
Operador ternrio Retorna true se o objecto da esquerda for uma instncia do objecto da direita

34

Operadores principais (2.1)

Um operador muito simples e, por vezes, muito til o

operador ternrio;

Tem a forma geral exp1 ? Exp2 : exp3 e ter um valor final que ser sempre exp2 exp3, tal dependendo de

exp1, ao ser avaliada ter o valor true ou false;

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.

Carla Jesus Jorge Pina

35

Operadores principais (3)

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;

Carla Jesus Jorge Pina

36

Estruturas de controlo (1)

if
if (expresso booleana) instruo_simples; if (expresso booleana) { instrues }

ESRBP

Carla Jesus Jorge Pina

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

Estruturas de controlo (2)

if else
if (expresso booleana) { instrues } else if (expresso booleana) { instrues } else { instrues }

ESRBP

Carla Jesus Jorge Pina

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

Estruturas de controlo (3)

while
while (expresso booleana) { instrues; }

ESRBP

Carla Jesus Jorge Pina

No while o teste feito cabea. Quando existe apenas uma instruo aps o while no necessrio abrir um bloco com as chavetas.

39

Estruturas de controlo (4)

do while
do {

instrues; } while (expresso booleana);


ESRBP

Carla Jesus Jorge Pina

No do-while o teste feito cauda. Quando existe apenas uma instruo aps o do no necessrio abrir um bloco com as chavetas.

40

Estruturas de controlo (5)

for
for (inicializao; expresses booleanas; passo da repetio) instruo_simples; for (inicializao; expresses booleanas; passo da repetio) { instrues; }

ESRBP

Carla Jesus Jorge Pina

Quando existe apenas uma instruo aps o for no necessrio abrir um bloco com as chavetas.

41

Estruturas de controlo (6)

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

Carla Jesus Jorge Pina

42

Estruturas de controlo (7)

rtulo break

Quando existem vrios ciclos aninhados estes rtulos permitem interromper o ciclo mais externo.

ESRBP

Carla Jesus Jorge Pina

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();

Estruturas de controlo (8)

switch switch(valor) { case valor1 : instrues; break; case valor2 : instrues; break; ... default: instrues; }

ESRBP

Carla Jesus Jorge Pina

44

O switch s trabalha com valores inteiros e char.

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

Carla Jesus Jorge Pina

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

Carla Jesus Jorge Pina

Por predefinio o pacote java.lang importado automaticamente pelo Java no sendo, por isso, necessrio fazer o import do mesmo.

46

Entrada e Sada de dados (1)

Classe Scanner do pacote java.util

ESRBP

Carla Jesus Jorge Pina

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); } }

Entrada e Sada de dados (2)

Classe JOptionPane do pacote javax.swing


import javax.swing.JOptionPane; public class CaixaDialogo { public static void main(String[] args) {

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

Carla Jesus Jorge Pina

JOptionPane.showMessageDialog(null, mensagem); }

}
48

Pacotes (3)

Os pacotes mais comummente utilizados so:

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

Carla Jesus Jorge Pina

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

Carla Jesus Jorge Pina

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

Todos os objectos so oriundos de classes, ou seja, so instncias das classes.

Carla Jesus Jorge Pina

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

Carla Jesus Jorge Pina

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.

Carla Jesus Jorge Pina

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

Carla Jesus Jorge Pina

54

Classes (4)

O cdigo seguinte, que corresponde classe Pessoa, define os mtodos dos objectos daquela classe:
class Pessoa {

//Mtodos
ESRBP

void falar() { System.out.println("Bl, Bl, Bl, ...");

Carla Jesus Jorge Pina

}
}

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

Carla Jesus Jorge Pina

56

Construtores (2)

O cdigo seguinte, que corresponde classe Pessoa, define dois construtores para aquela classe:
class Pessoa { //Construtores public Pessoa() { }

//Construtor default

ESRBP

Carla Jesus Jorge Pina

public Pessoa(String nome, int idade) { this.nome = nome; this.idade = idade; } }

57

Construtores (3)

Cada instncia da classe (objecto) ocupa um lugar diferente na memria.


class UsaPessoa {

public static void main(String[] args) {


Pessoa pessoa1 = new Pessoa(Ana, 12); Pessoa pessoa2 = new Pessoa(Rui, 15); } }

ESRBP

Carla Jesus Jorge Pina

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)

Encapsulamento refere-se ao isolamento entre as partes do programa. Uma das

principais formas de o fazer proibindo o


acesso directo aos atributos de um objecto por objectos externos.
ESRBP

Para limitar o acesso s classes ou aos membros do objecto (atributos e

Carla Jesus Jorge Pina

mtodos) utilizamos os modificadores de


acesso existentes em Java.

59

Encapsulamento (2)

Modificadores de acesso:

ESRBP

Carla Jesus Jorge Pina

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)

Normalmente, os mtodos so pbli-cos (public) e os atributos private (privados);

Isto ocorre pois desejvel que os atributos

de um objecto s possam ser alterados por


ele mesmo, inviabilizan-do desta forma
ESRBP

situaes imprevistas.

Carla Jesus Jorge Pina

Public class Contador { Private double raio;

61

Private String nome;

Getters e Setters (1)

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

Carla Jesus Jorge Pina

62

Getters e Setters (2)

A conveno para estes mtodos a seguinte:

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

Carla Jesus Jorge Pina

63

Getters e Setters (3)

A conveno para estes mtodos a seguinte:

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

Carla Jesus Jorge Pina

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

Carla Jesus Jorge Pina

65