Você está na página 1de 157

UNIVERSIDADE FEDERAL DE SANTA CATARINA

INE - Curso de Sistemas de Informaes


INE5605 - DESENVOLVIMENTO DE SISTEMAS ORIENTADOS A OBJETOS I PARTE I INTRODUO LINGUAGEM JAVA

JAVA

Roberto C. S. Pacheco
pacheco@stela.ufsc.br
Professor

Ricardo Noronha Rieke


rieke@stela.ufsc.br
Monitor

Tatiana Souza Gonzaga


tatianag@stela.ufsc.br
Monitora

Viso Geral
Fase 1 Editor Fase 2 Compilador Disco

O programa criado no editor e armazenado em disco. O compilador cria bytecodes e os armazena em disco.

Disco
Fase 3

Carregador de Classes

Memria Principal

O carregador de classe coloca bytecodes na memria.

Disco

. . .

Fonte: Deitel & Deitel, 2003.

Viso Geral
Fase 4

Verificador de bytecodes

Memria Principal

. . .

O verificador de bytecodes confirma que todos os bytecodes so vlidos e no violam restries de segurana do Java

Fase 5

Intepretador

Memria Principal

. . .

O interpretador l os bytecodes e os traduz para uma linguagem que o computador pode entender, possivelmente armazenando valores dos dados enquanto executa o programa. Fonte: Deitel & Deitel, 2003.

Viso Geral

Programando JAVA
Elementos da Programao Tradicional no Programa
// Nosso primeiro programa Java // Conhecendo a estrutura de um programa Java public class MeuPrimeiroPrograma { public static void main (String arg[]) { System.out.println("Ol Aluno de JAVA"); } // fim do mtodo main } // fim da classe MeuPrimeiroPrograma

Parmetros. Parmetros em Funo Principal. Programas


em Linguagem C e C++ buscam seu incio pela funo principal (main()). funes permitem que essas iniciem com valores recebidos externamente, para variveis que utilizaro internamente.

Programando JAVA
Elementos da Orientao a Objetos no Programa
// Nosso primeiro programa Java // Conhecendo a estrutura de um programa Java public class MeuPrimeiroPrograma { public static void main (String arg[]) { System.out.println("Ol Aluno de JAVA"); } // fim do mtodo main } // fim da classe MeuPrimeiroPrograma
Mtodo. A impresso da Classe. Como qualquer programa
JAVA, esse programa exige uma classe (palavra reservada class). O fato de ser pblica (palavra public) garante visibilidade em qualquer contexto de sua utilizao mensagem Ol Aluno de Java se deu pela execuo do mtodo println, do objeto, da classe System.

Objeto. Para imprimirmos a


mensagem de sada de nosso programa precisamos de um objeto out da classe System da biblioteca (pacote) padro java.lang

Biblioteca. A organizao das


classes JAVA se d na forma de bibliotecas. Nesse programa utilizamos a biblioteca padro da linguagem JAVA (biblioteca java.lang)

Estrutura de um Programa JAVA


package meupacote.lib;
import java.lang.*;
/** Nosso primeiro programa Java Conhecendo a estrutura de um programa Java */

Package. Utilizado quando o cdigo do


programa dever fazer parte de um pacote.

Import. Seo de importao de bibliotecas.

Comentrios. Com sintaxe // ... para


comentrios simples ou /* .... */ e a mais recente /** .. */ que permite gerao de documentao automtica (ferramenta javadoc)

public class MinhaClassePublica {


/** Comentrio sobre o mtodo */ public (private/protected) tipoRet nomeMetodo(<parametros>) { // cdigo do mtodo } // fim da definio do mtodo

Classes.
Declarao de classes, atributos e mtodos do programa Java. A declarao e a definio dos mtodos ocorre obrigatoriamente dentro do limite de declarao da classe.

} // fim da classe

Mtodo main(). Indica que a classe


Java um aplicativo que ser interpretado pela mquina virtual.

Lembre-se.
// Comentrios:
Use comentrios para esclarecer conceitos utilizados no programa. Utilize: // para comentrios de linha nica /* . */ para comentrios de vrias linhas /** .*/ em ambos os casos e quando desejar incluir o texto na documentao de seu programa (javadoc). Sempre inicie seus programas com comentrio descrevendo o propsito do mesmo.

public class MeuPrimeiroPrograma { .. }


Classes so tipos de dados declarados com a palavra reservada class. Cada arquivo .java deve ter somente uma classe pblica e essa deve ter o mesmo nome do arquivo

Lembre-se.
public static void main (String args[]) {.}
O mtodo main() faz parte de todo aplicativo Java;
Deve estar entre os mtodos da classe pblica e ser sempre por onde o aplicativo se inicia. Os argumentos passados ao mtodo main() so uma lista de objetos da classe String, separados por espaos em branco.

System.out.println (parmetros) & System.out.print(....)


System.out o objeto de sada padro em Java Permite exibir strings e outros tipos de informaes na Janela de Comando (console do sistema operacional)

System.out.println() exibe seus parmetros e pula uma linha

Lembre-se.
import javax.swing.JOptionPane;
A Classe Java JOptionPane oferece caixas de dilogo predefinidas que permitem aos programas exibir mensagens aos usurios; As classes predefinidas da linguagem Java so agrupadas em categorias de classes chamadas pacotes (package), conhecidos como bibliotecas de classes Java ou interface de programao de aplicativos Java (Java API) Os nomes dos pacotes Java comeam com Java (pacotes do ncleo da linguagem) ou Javax (extenses ao ncleo) A instruo import utilizada para identificar e carregar classes utilizadas em um programa Java. As classes importadas pertencem a pacotes do ncleo, extenses oficiais ou extenses fornecidas por terceiros.

As instrues import devem aparecer sempre antes da definio das classes


JOptionPane uma classe da biblioteca de interfaces grficas do Java

As Bibliotecas JAVA rt.jar & tools.jar

O que h na Biblioteca Java?


A Biblioteca (API Application Programming Interface) formada por conjunto de classes do JDK;
Exemplos de pacotes Java:
java.lang: Tipos e funcionalidades bsicas da linguagem. Inclui, entre outras, as classes String, Math, Integer e Thread. importada automaticamente em seus programas Java; java.awt: componentes grficos originais da linguagem (Abstract Window Toolkit); javax.swing: pacote de eXtenso aos componentes grficos com melhoramentos biblioteca AWT java.applet: classes especficas para tratamento de applets; java.net: recursos de rede (sockets e URLs); java.io: classes para escrita e leitura em arquivos; java.util: classes para tarefas gerais, tais como vetores e string de tokens.

Palavras Reservadas em Java


abstract catch do final implements long private static throw void Palavras-chave de Java boolean break byte char class continue double else extends finally float for import instanceof int native new null protected public return super switch synchronized throws transient true volatile while case default false if interface package short this try

Como toda linguagem, Java possui identificadores reservados para comandos que permitem a execuo de suas instrues IMPORTANTE: voc no pode utilizar palavras-chave Java como nome de variveis ou classes.

Precedncia e Associatividade
Operadores () */% +< <= > >= == != = Associatividade da esquerda para a direita da esquerda para a direita da esquerda para a direita da esquerda para a direita da esquerda para a direita da direita para a esquerda Tipo parnteses de multiplicao de adio relacional de igualdade de atribuio

Java fornece um conjunto de operadores similar ao C e C++. Entretanto, um erro bastante comum tentar utilizar o operador de atribuio = como igualdade ==; Todos os operadores, com exceo do operador de atribuio =, associam da esquerda para a direita.

Operadores Aritmticos de Atribuio


Operador de atribuio += -= *= /= %= Exemplo c += 7 d -= 4 e *= 5 f /= 3 g %=9 Exemplificao c=c+7 d=d-4 e=e*5 f=f/3 g=g%9 Atribui 10 a c 1ad 20 a e 2af 3ag

Exemplos: int c = 3, d = 5, e = 4, f = 6, g = 12

Java fornece vrios operadores que abreviam as expresses de atribuio; A simplificao de sintaxe no a nica vantagem desses operadores. Eles aumentam a velocidade de acesso s variveis em programas.

Operadores de Incremento e Decremento


Operador ++ ++ --Chamado de pr-incremento ps-incremento pr-decremento ps-decremento Expresso exemplo Explicao Incrementa 'a' por 1, depois utiliza o novo valor de 'a' na expresso em que 'a' reside. ++a Utiliza o valor atual de 'a' na expresso em que 'a' reside, depois incrementa 'a' por 1 a++ Decrementa 'b' por 1, depois utiliza o novo valor de 'b' na expresso em que 'b' reside. --b Utiliza o valor atual de 'b' na expresso em que 'b' reside, depois decrementa 'b' por 1 b--

Java possui operadores que acrescentam ou diminuem valores unitrios em variveis. Seu funcionamento semelhante aplicao do operador de atribuio com valor 1 (ou seja: x += 1;), mas permite que o programador determine o momento em que deseja incrementar (ou decrementar) sua varivel, com relao ao uso na expresso em que essa varivel est inserida.

Tipos de dados primitivos em Java


Tipo Tamanho de bits Valores boolean 8 true ou false char 16 \u0000 ' a ' \UFFFF' (0 a 65535) byte 8 -128 a 127 ('27 a 27 -1) short 16 -32.768a+32.767 15 15 '(2 a 2 -1) int 32 -2.147.483.648a+2.147.483.647 31 31 '(2 a 2 -1) long 64 -9.223.372.036.854.775.808a '+9.223.372.036.854.775.807 63 63 '(2 a 2 -1) float 32 Intervalo Negativo: -3.4028234663852886E+38 a -1,40129846432481707E-45 Intervalo Positivo: 1,40129846432481707E-45 a 3,4028234663852886E+38 64 Intervalo Negativo: -1,7976931348623157E+308 a -4,94065645841246544E-324 Intervalo Positivo: 4,94065645841246544E-324 a 1,7976931348623157E+308 Padro (conj. De caracteres Unicode ISO)

(ponto flutuante IEEE

double

754) (ponto flutuante IEEE

754)

Operadores Condicionais
Operador Forma Descrio && op1 && op2 op1 e op2 so verdadeiros || op1 || op2 op1 ou op2 so verdadeiros

Tipos de Referncia
Uma varivel declarada como um tipo de classe vista como uma referncia, o que no acontece para um tipo primitivo;
int i = 1; int j = i; String a = Java; String t = a;
i j a 1 1 Endereo 1 Endereo 1 Java i j 1 1 Endereo 1 Endereo 2 Java XML

t = XML

a
b

Identificadores
Um identificador o nome de uma varivel, classe ou mtodo; No pode comear com nmero ou caracteres especiais. tipo; enderecoResidencial; Endereco_Residencial; _endereco_residencial; $valorSalario;

Lembre-se.
String primeiroNumero; int numero1;
A declarao de variveis em Java segue a sintaxe tipo nomeVariavel; ou tipo nomeVariavel1, nomeVariavel2, ...; tipo pode ser um dos tipos da linguagem Java ou uma classe definida por seu programa Java. Utilize preferencialmente letras minsculas e com nomes significativos para o programa para declarar nomes de variveis ; Os tipos de variveis da linguagem Java incluem inteiros (short, int e long), nmeros reais (float ou double), caracteres (char), tipo lgico (boolean) e varivel binria (byte)

Lembre-se.
primeiroNumero = JOptionPane.showInputDialog(Digite o primeiro Nmero inteiro: );

O mtodo showInputDialog() combina a montagem da janela de edio com o prompt de digitao do string fornecido pelo usurio.
Os argumentos passados ao mtodo showInputDialog() so vistos sempre como Strings em seus programas Java.

No h em Java mtodo que faa para as entradas o que os mtodos print() e println() fazem para as sadas de programas, ou seja, tratamento de qualquer tipo da linguagem.
Por essa razo as variveis informadas aos programas Java so sempre Strings que devem ser convertidas. Erros de entradas inesperadas (tipos incompatveis com as converses) devem ser tratados pelo usurio.

Lembre-se.
numero1 = Integer.parseInt (primeiroNumero); O mtodo Integer.parseInt() converte um objeto String em um tipo int. A classe Integer est definida no pacote java.lang. soma = numero1 + numero2; A instruo combina o sinal de atribuio (=) com soma (+) O programa Java segue a precedncia de operadores. No exemplo, primeiro faz a adio e depois a atribuio do resultado na varivel soma. Para maior visibilidade no programa, utilize espaos para separar operadores aritmticos A soma + soma
O operador + nessa expresso de concatenao. Para faz-la, Java primeiro far a converso da varivel soma em String e depois combinar o resultado em um String maior contendo a primeira parte A soma acrescida do resultado da varivel soma na forma de um string.

Lembre-se.
if (numero1 == numero2) resultado = resultado + numero1 + == + numero2; A estrutura if compara os valores das variveis numero1 e numero2 para determinar sua igualdade de valores. Caso numero1 e numero2 sejam iguais, a condio da estrutura if ser verdadeira e o programa colocar na varivel resultado o string que concatena as expresses na seguinte ordem: Substring1: (resultado + numero1) ou seja: + valor de numero1 Substring2: ((resultado+numero1)+==) acresce == Substring3: ((resultado+numero1+==)+numero2) acresce valor de numero2 Final: resultado = Substring3

Ponto e Vrgula, Blocos


(;) representa o trmino de uma linha de cdigo; recurso = (x + y) * 100 + (a - b - c); Um bloco composto por uma coleo de declaraes delimitadas por chaves { }; { x = x + 1; y = y + 1; }

UNIVERSIDADE FEDERAL DE SANTA CATARINA

INE - Curso de Sistemas de Informaes


INE5605 - DESENVOLVIMENTO DE SISTEMAS ORIENTADOS A OBJETOS I PARTE II ESTRUTURA DE CONTROLE

Reviso

Roberto C. S. Pacheco
pacheco@stela.ufsc.br
Professor

Ricardo Noronha Rieke


rieke@stela.ufsc.br
Monitor

Tatiana Souza Gonzaga


tatianag@stela.ufsc.br
Monitora

Estrutura de Seleo if
A estrutura if
Necessria sempre que os programas encontrarem seqncias alternativas de aes, dependendo do valor de determinada condio. Exemplo: Se a mdia das notas do aluno for maior ou igual a 6 Imprimir Aprovado

Sintaxe
if (condio) comando Java; [ou {bloco de comandos Java;}]
verdadeiro Media >=6 falso Imprimir Aprovado

O Exemplo em Java

if (media >= 6) System.out.println(Aprovado); if (media >= 6) { System.out.print(O Aluno est); System.out.println(Aprovado); } // fim do bloco if

Estrutura de Seleo if/else


A estrutura if/else
Necessria sempre o programa deve executar uma ou mais aes quando uma condio for verdadeira ou, quando essa for falsa, executar outra ao ou seqncia de aes.

Exemplo:
Se a mdia das notas do aluno for maior ou igual a 6 Imprimir Aprovado Seno Imprimir Reprovado

Sintaxe
if (condio) comando Java; [ou {bloco de comandos Java;}] else comando Java; [ou {bloco de comandos Java;}]

Estrutura de Seleo if/else


O Exemplo em Java
if (media >= 6){ System.out.print(O Aluno est); System.out.println(Aprovado); } // fim do bloco if else { System.out.print(O Aluno est); System.out.println(Reprovado); } // fim do bloco else

verdadeiro Media >=6 Imprimir Aprovado

falso Imprimir Reprovado

Operador Ternrio Condicional ?:


Sintaxe
(condio) ? {ao ou bloco verdade} : {ao ou bloco falso}

O Exemplo em Java
System.out.println(media >= 6 ? Aprovado : Reprovado);

verdadeiro Media >=6 Imprimir Aprovado

falso Imprimir Reprovado

Estruturas if/else Aninhadas


Seqncia de estruturas if/else
So utilizadas para o teste de mltiplos casos. Exemplo:
Se a mdia das notas do aluno for maior ou igual a 9 conceito = A Seno Se a mdia das notas do aluno for maior ou igual a 7 conceito = B Seno Se a mdia das notas do aluno for maior ou igual a 6 conceito = C Seno conceito = D

Estruturas if/else Aninhadas


Em Java
if (media >= 9) System.out.print(O Conceito A); else if (media >= 7) System.out.print(O Conceito B); else if (media >= 6) System.out.print(O Conceito C); else System.out.print(O Conceito D);
verdadeiro Media >=9 A

falso
verdadeiro Media >=7 B

falso verdadeiro Media >=6 falso D C

Estrutura de Seleo Mltipla switch


switch/case
Utilizada em programas em que uma varivel ou expresso pode assumir diferentes valores e h uma ao (ou bloco de aes) para cada valor possvel.
Exemplo (organizando as aes de um programa):

De acordo com a opo solicitada pelo usurio: caso 1: solicite a nota da prova do aluno caso 2: solicite a nota do trabalho do aluno caso 3: solicite a nota do projeto do aluno caso 4: calcule a mdia final do aluno default: encerre o programa

Utilize o comando break para no acionar as aes nos blocos definidos nos cases (e no default) abaixo do case acionado.

Estrutura switch/case
// programa exemplo de utilizao da estrutura switch/case import javax.swing.JOptionPane; public class SwitchCase { public static void main(String arg[]) { int notaProva = 0, notaTrab = 0, notaProj = 0; float mediaFinal = 0; String esc; int escolha; esc = JOptionPane.showInputDialog ("Digite sua Escolha : "); escolha = Integer.parseInt(esc); switch (escolha) { case 1: notaProva= Integer.parseInt(JOptionPane.showInputDialog("Nota da Prova: ")); case 2: notaTrab = Integer.parseInt(JOptionPane.showInputDialog("Nota do Trabalho: ")); case 3: notaProj = Integer.parseInt(JOptionPane.showInputDialog("Nota do Projeto: ")); default: if(escolha<4) mediaFinal = (notaProva + notaTrab + notaProj)/(3-escolha+1); } JOptionPane.showMessageDialog(null,"Media Final: "+ mediaFinal,"Resultados",JOptionPane.INFORMATION_MESSAGE); System.exit( 0 ); } // fim do main } // fim da classe pblica

Estrutura de Repetio while


A estrutura de repetio while permite especificar uma ao ou um bloco de aes que devem permanecer sendo repetidas enquanto determinada condio for verdadeira. Exemplo:
Enquanto o usurio desejar continuar calcule a mdia de cada aluno

O corpo da estrutura while pode ser uma instruo nica ou um bloco de comandos. Quando a condio do comando while se tornar falsa, a ao (ou bloco) do comando ser finalizada. O programa continuar com a ao imediatamente aps o comando while. IMPORTANTE: voc deve sempre prever o comando ou ao que tornar falsa a condio do comando while. Caso contrrio seu programa entrar em loop.

Estrutura while
// programa exemplo de utilizao da estrutura de repetio while import javax.swing.JOptionPane; public class SwitchCase { public static void main(String arg[]) { int notaProva = 0, notaTrab = 0, notaProj = 0; float mediaFinal = 0; String esc; int escolha = 1; while ((escolha >=1) && (escolha <=4)){ esc = JOptionPane.showInputDialog ("Digite sua Escolha : "); escolha = Integer.parseInt(esc); switch (escolha) { case 1: notaProva= Integer.parseInt(JOptionPane.showInputDialog("Nota da Prova: ")); case 2: notaTrab = Integer.parseInt(JOptionPane.showInputDialog("Nota do Trabalho: ")); case 3: notaProj = Integer.parseInt(JOptionPane.showInputDialog("Nota do Projeto: ")); default: if(escolha<4) mediaFinal = (notaProva + notaTrab + notaProj)/(3-escolha+1); } JOptionPane.showMessageDialog(null,"Media Final: "+ mediaFinal,"Resultados",JOptionPane.INFORMATION_MESSAGE); mediaFinal = notaProva = notaTrab = notaProj = 0; } // fim do while System.exit( 0 ); } // fim do main } // fim da classe pblica

Estrutura de Repetio while


// Programa de mdia da turma com repetio controlada por contador import javax.swing.JOptionPane; public class MediaWhile { //o mtodo main inicia a execuo do aplicativo Java public static void main(String args[]) { int total, // soma das notas digitadas pelo usurio contadorNotas, // nmero de notas lidas valorNota, // valor da nota digitada media; // mdia de todas as notas String nota; // nota digitada pelo usurio // Fase de Inicializao total = 0; // limpa varivel total contadorNotas = 1; // prepara para executar lao // Fase de Processamento while (contadorNotas <= 10) { // solicita entrada e l a nota digitada pelo usurio nota = JOptionPane.showInputDialog("Entre com a nota - valor inteiro:"); // converte nota de String para inteiro valorNota = Integer.parseInt(nota); // adiciona a nota ao total total += valorNota; // adiciona 1 ao contador de notas contadorNotas++; } // fim do lao while media = total/10; // executa diviso inteira // exibe mdia das notas do teste JOptionPane.showMessageDialog(null,"Mdia da Turma " + media,"Media turma", JOptionPane.INFORMATION_MESSAGE); System.exit( 0 ); } // fim do mtodo main } // fim da classe MediaWhile

Estrutura de Repetio dowhile


A estrutura de repetio do/while permite repetir uma ao ou um bloco de aes at que determinada condio seja verdadeira. A diferena para a estrutura while est no fato de que do/while inicia pela execuo do bloco e somente aps a mesma analisa a condio. Exemplo:
Faa Obtenha as notas da turma Calcula e Apresente a mdia Enquanto houver mais turmas para calcular a mdia

Obtm notas da turma

Calcula e apresenta mdia

Continua Sim

O do/while sempre admite que a primeira interao ocorre antes da confirmao da condio O corpo da estrutura do/while pode ser uma instruo nica ou um bloco de comandos. Quando a condio do comando do/while se tornar falsa, o programa continuar com a ao imediatamente aps o comando do/while. IMPORTANTE: voc deve sempre prever o comando ou ao que tornar falsa a condio do comando do/while. Caso contrrio seu programa entrar em loop.

falso

Estrutura de Repetio for


A estrutura de repetio for permite repetir uma ao ou um bloco de aes com controle de contador ou da condio de permanncia no looping. Exemplo:
Para o contador i de 1 a 10 faa Obtenha a nota do i-simo aluno some a nota do i-simo aluno ao total; Calcule a mdia da turma como sendo o total divido por 10

O comando for tem trs sees de variveis:


for (inicializadores; condio de continuao; incrementos)

{
ao ou bloco de aes no comando; }

int contador = 1

Contador <=10 Verdadeiro falso

Instrues no corpo do lao for.

contador++

Instrues break e continue


As instrues break e continue modificam o comportamento das estruturas de repetio while, for, do/while ou switch. . A instruo break interrompe o lao (no caso das estruturas de repetio) e impede a execuo de outros casos de um comando switch. Exemplo:
Enquanto verdade permanente (ex: x == 1, sem mudar x) realize as operaes .. se condio de fim for alcanada break; Fim do Enquanto

A instruo continue permite o salto do conjunto de operaes, com retorno expresso condicional do lao, reiniciando o mesmo (portanto, ao contrrio do break, no interrompe o lao). Normalmente break e continue interrompem laos em que esto inseridos. Para interromper um conjunto aninhado de estruturas, deve-se utilizar break e continue rotulados (com denominao de blocos).

Estrutura de Repetio for e continue


- for e continue for (int contador=0; contador < numero; contador++) { if ((contador % 2)!=0)//resto da diviso por dois no zero continue; pares++; saidaFinal += contador + " "; }

do/while e continue

do { if ((contador % 2)!=0) // resto da diviso por dois no zero continue; pares++; saidaFinal += contador + " "; } while (++contador<numero);

UNIVERSIDADE FEDERAL DE SANTA CATARINA

INE - Curso de Sistemas de Informaes


INE5605 - DESENVOLVIMENTO DE SISTEMAS ORIENTADOS A OBJETOS I PARTE III MTODOS

Reviso

Roberto C. S. Pacheco
pacheco@stela.ufsc.br
Professor

Ricardo Noronha Rieke


rieke@stela.ufsc.br
Monitor

Tatiana Souza Gonzaga


tatianag@stela.ufsc.br
Monitora

Mtodos
O que so Mtodos

Mtodos so procedimentos de classe, onde esto implementados os processos disponveis a objetos (instncias) da classe.
Os mtodos permitem que objetos de uma classe realizem tratamento de dados (normalmente atributos da prpria classe), clculos, comunicao com outros objetos e todo procedimento necessrio s aes das instncias da classe.

Em Java, mtodos so funes de classes. Os programas vistos at aqui no curso tinham a funo main() como mtodo das respectivas classes pblicas que deram nome aos nossos programas.

Mtodos
Mdulos: Pacotes de Classes+Mtodos

A melhor forma de se construir programas est na modularizao, ou seja, na diviso do sistema em mdulos especficos.
Em Java os mdulos so descritos por mtodos e classes, que podem ser:
Pr-empacotados: disponveis na Java API (bibliotecas de classes Java). Mtodos definidos pelo programador. Tarefas especficas que podem ser utilizadas muitas vezes por um programa.

Um mtodo acionado (invocado) por uma chamada de mtodo. Essa pode ser realizada por objetos da classe do mtodo ou por chamadas classe (mtodos estticos)

Mtodos Exemplos conhecidos


// programa exemplo de utilizao da estrutura de repetio while import javax.swing.JOptionPane; public class SwitchCase { public static void main(String arg[]) { case 1: notaProva= Integer.parseInt(JOptionPane.showInputDialog("Nota da Prova: ")); JOptionPane.showMessageDialog(null,"Media Final: "+ mediaFinal,"Resultados",JOptionPane.INFORMATION_MESSAGE); System.exit( 0 ); } // fim do main } // fim da classe pblica

Chamadas de Mtodo.
1. mtodo parseInt() da classe Integer (pacote java.lang). 2. mtodo exit() da classe System (pacote java.lang) 3. Mtodo showMessageDialog() da classe JOptionPane (pacote javax.swing)

API Java. Importao de classe


da API java.

Mtodos so chamados por seu nome, com a relao de argumentos colocada entre parnteses. Quando os mtodos so estticos, o nome inclui o nome da classe.

Mtodos da Classe Math


Expresses Matemticas

Os mtodos da classe Math permitem realizar clculos comuns necessrios em expresses matemticas.
Exemplos de chamadas de mtodos da classe Math:
Funo raiz quadrada: double y = Math.sqrt(10.0); Funo mnimo. double z = Math.min(x,10);

Os mtodos da classe Math so mtodos estticos, ou seja, no necessitam de objetos da classe para sua chamada. Por essa razo voc deve precer as chamadas dos mtodos com o nome da classe seguido de ponto (como j fizemos nos programas anteriores): JOptionPane.showMessageDialog() System.exit( 0 );

Mtodos da Classe Math


Chamada de Mtodos
Mtodos podem ser chamados em declaraes de variveis ou como parmetros de outros mtodos
float z = sqrt(4.0*x); System.out.println(Math.sqrt(x+y*f));

Constantes
Programas Java podem definir constantes cujo valor inicializado na declarao permanece imutvel. Para isso a declarao utilizada final. A tentativa de alterao de varivel declarada como final gera erro de sintaxe.
final float G = 9.81; // acelerao da gravidade;

A classe Math possui duas constantes importantes em programas matemticos:


Math.E = 2.7282818284590452354 // valor base de logaritmos naturais Math.PI = 3.14159265358979323846 // relao entre a circunferncia e o dimetro de crculos

Mtodos da Classe Math


Mtodo
abs( x ) ceil ( x ) cos( x ) exp( x ) floor( x ) log( x ) max( x, y ) min( x, y ) pow( x, y ) sin( x ) sqrt( x ) tan( x )

Descrio

Exemplo

valor absoluto de x (tem verses para abs(23.7) 23.7; abs(0.0) 0.0; abs(-23.7) 23.7 float, int e log) arredonda o valor de x para o menor inteiro no menor que x co-seno trigonomtrico de x (x em radianos) x mtodo esponencial e arredonda o valor de x para o maior inteiro no menor que x logaritmo natural de x (base e) maior valor entre x e y (tambm em verses para float, int e long)
ceil(9.2) 10.0; ceil (-9.8) -9.0; cos(0.0) 1.0 exp(1.0) 2.718281828 floor(9.2) 9.0; floor(-9.8) -10.0 log(2.718282) 1.0; log(7.389056) 2.0 max( 2.3, 12.7) 12.7; max(-2.3;-12.7) -2.3

menor valor entre x e y (tambm em min( 2.3, 12.7) 2.3; min(-2.3;-12.7) -12.7 verses para float, int e long) x elevado potncia y (x y ) seno trigonomtrico de x (x em radianos) raiz quadrada de x tangente trigonomtrica de x (x em radianos)
pow(2.0, 7.0) 128.0; pow(9.0,0.5) 3.0 sin(0.0) 0.0 sqrt(900.0) 30.0; sqrt(9.0) 3.0 tan(0.0) 0.0

Mtodos
Criando Seus Prprios Mtodos
Alm dos mtodos da API Java, o programador pode desenvolver os mtodos para suas prprias classes. Por exemplo: suponha uma classe ApresentaQuadrados que tem por objetivo apresentar o quadrado da srie de nmeros pares entre o nmero zero e um nmero digitado pelo usurio. Pode-se criar a classe em Java por:
class public ApresentaQuadrados { public static void main (String args[]) { int numeroEntrada; String respostaFinal = ; // ler nmero digitado pelo usurio // realizar lao de zero at o nmero digitado // se o nmero na seqncia do lao for par, // chamar o mtodo de calcular o valor ao quadrado // guardar o valor resultante no String de resposta // se no for, continue no lao // apresentar a resposta final } static double calculaQuadrado (int x) { return Math.pow(x,2); } // fim do mtodo calculaQuadrados da classe ApresentaQuadrados } // fim da classe ApresentaQuadrados

Mtodos
// Programa que exemplifica a criao de mtodos de Funo import javax.swing.JOptionPane; public class ApresentaQuadrados { public static void main (String args[]) { String numeroInformado, serieFinal = "", quadradoSerie = ""; int numero; int numeroAtual = 0; numeroInformado = JOptionPane.showInputDialog("Entre com um inteiro:"); numero = Integer.parseInt(numeroInformado); do { if ((numeroAtual % 2)!=0) // resto da diviso por dois no zero continue; serieFinal += Integer.toString(numeroAtual) + " "; quadradoSerie += Double.toString(calculaQuadrado(numeroAtual)) + " "; } while (++numeroAtual < numero); // exibe nmeros pares e seus quadrados JOptionPane.showMessageDialog(null,serieFinal+"\n"+quadradoSerie); } // fim do main() static double calculaQuadrado( double x) { return Math.pow(x,2); } } // fim da classe

O mtodo calculaQuadrado() da classe ApresentaQuadrados chamado pelo mtodo main() da mesma classe. Para cada nmero na srie de pares chama-se o mtodo da classe para o clculo de seu quadrado (somente pelo nome, dado que o mtodo da prpria classe). O resultado retornado funo main() e guardado no string de sada do sistema.

UNIVERSIDADE FEDERAL DE SANTA CATARINA

INE - Curso de Sistemas de Informaes


INE5605 - DESENVOLVIMENTO DE SISTEMAS ORIENTADOS A OBJETOS I PARTE IV ARRAY

Reviso

Roberto C. S. Pacheco
pacheco@stela.ufsc.br
Professor

Ricardo Noronha Rieke


rieke@stela.ufsc.br
Monitor

Tatiana Souza Gonzaga


tatianag@stela.ufsc.br
Monitora

Arrays
O que so Arrays

Estruturas de dados, na forma de um grupo de posies contguas na memria, com valores de mesmo nome e mesmo tipo. Arrays so, portanto, a forma pela qual se armazenam vetores de tipos. Os arrays so estruturas estticas, isto , uma vez criados mantm seu tamanho inicial. Para estruturas dinmicas a Linguagem Java possui classes especiais (classes Vector e Array) Os elementos de um array so encontrados pela referncia do nome do array e pelo nmero da posio em que se encontra (tambm chamada ndice ou subscrito).

Arrays
Nome do array (todos os elementos do vetor passam a ter o mesmo nome: c)
C [ 0 ] C [ 1 ] C [ 2 ] C [ 3 ] - 128 8 0 82

C [ 4 ]
C [ 5 ]

64
- 12

C [ 6 ]
C [ 7 ]

65
43

... public static void main (String args[]) { int c = new int[11]; ... c = {-128,8,0,82,64,-12,65,43,76,11};
// c[11] zero por default (inicializao)

C [ 8 ]
C [ 9 ] C [ 10 ]

76
11 0

... c[4] += c[2];

// c[4] = 64 + 0 = 64

}
Nmero da posio do elemento dentro de um array (ndice ou subscrito)

Arrays
Nunca esquecer que

Arrays em Java (como em C e C++) iniciam pela posio zero. Portanto, um array c de trs elementos tem as posies c[0], c[1] e c[2]. Para se encontrar o elemento de um array se usa o nome do array, seguido do subscrito (i.e., posio desejada), entre colchetes.
Os ndices ou subscritos so valores inteiros e pode ser tratado como expresso de clculo (lvalue). Por exemplo: c [ x + 2] = 3; se x vale 6, o nono elemento do array (c[8]) receber o valor 3.

Arrays
Nunca esquecer que

Arrays em Java podem ter seu comprimento sempre conhecido pela varivel lenght. Para determinar o comprimento, basta usar o nome do array, seguido de ponto e dessa varivel. Arrays so manipulados em expresses diretas (e.g., c[2] = 4; ) por laos de repetio (e.g., para calcular a soma do array, utilizar o comando for)
Erros comuns em programao Java (e em C/C++) confundir o n-simo elemento do array com o subscrito n. Por exemplo: o stimo elemento de um array c o elemento c[6] e no o c[7] (que o oitavo)

Arrays
Declarando Arrays
Arrays so objetos que ocupam espaos contguos de memria. O programador deve especificar o tipo, nome do array e utilizar o operador new para reservar o espao necessrio.
int c[];
// declarao do array // declarao e reserva de espao do do array

c = new int[12];

Arrays podem ser declarados e inicializados ao mesmo tempo:


int c[] = {1,2,3,4,5,6,7,8,9,10,11,12};

Nesse caso, a reserva de espao feita pelo operador new automaticamente realizada pela mquina virtual Java.

Quando os arrays so declarados sem inicializao, o Java faz a inicializao para zeros (variveis numricas), false (variveis lgicas do tipo boolean) ou null para referncias a tipos de objetos.

Arrays
Declarao Mltipla de Arrays

Um programa Java pode declarar vrios arrays em uma nica declarao.


int [] arrayA, arrayB, arrayC;
inteiros // trs arrays de

int arrayD = new int[121];


inicializao

// criao de espao com

String objTexto[] = new String [120], x[] = new String[21];


// objTexto contm 120 objetos da classe String // x contm 21 objetos da classe String

Arrays de tipos no primitivos (ex. Objetos da classe String) guardam referncias a objetos em seus elementos. A incializao de referncias null.

Arrays
Exemplo: programa de criao e apresentao dos elementos do array (valores de inicializao automtica).
// ArrayInicializacao - criao de um array // Baseado em Deitel e Deitel. import javax.swing.*; public class ArrayInicializacao { // funo main public static void main( String args[] ) { int array[]; // declara a referncia a um array array = new int[ 10 ]; // aloca dinamicamente o espao para o array String saidaStr = "Subscrito\tValor\n"; // string alocado e inicializado // adiciona cada valor dos elementos do array ao String de sada for ( int contador = 0; contador < array.length; contador++ ) saidaStr += contador + "\t" + array[ contador ] + "\n"; JTextArea saidaArea = new JTextArea(); saidaArea.setText( saidaStr ); JOptionPane.showMessageDialog( null, saidaArea, "Inicializando um Array de valores inteiros", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }

Arrays
Utilizando uma lista de inicializadores para inicializar os elementos de um array

Programas Java podem declarar e inicializar os arrays por meio de chaves e valores, separados por vrgulas.
int array[] = {10,20,30,40,50};
// array de 5 ints

Declaraes com inicializaes dispensam o operador new porque o espao reservado automaticamente pelo compilador.

Arrays
Exemplo: programa de criao e inicializao de array.
// ArrayInicializacao - criao de um array // Baseado em Deitel e Deitel. import javax.swing.*; public class ArrayInicializacao2 { // funo main public static void main( String args[] ) { // declarao com inicializao (dispensando operador new) int array[] = {11,22,33,44,55,66,77,88,99,100}; String saidaStr = "Subscrito\tValor\n"; // string alocado e inicializado // adiciona cada valor dos elementos do array ao String de sada for ( int contador = 0; contador < array.length; contador++ ) saidaStr += contador + "\t" + array[ contador ] + "\n"; JTextArea saidaArea = new JTextArea(); saidaArea.setText( saidaStr ); JOptionPane.showMessageDialog( null, saidaArea, "Inicializando um Array de valores inteiros", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } }

Arrays
Calculando o valor a armazenar em cada elemento de um array

O tamanho de arrays pode ser declarado com o tipo final.


final int TAM_ARRAY = 10; int array[TAM_ARRAY]; // array
zeros) de 10 ints (incializados com

Tambm pode ser utilizado um determinado valor atribudo a uma varivel.

Arrays
Referncias e Parmetros por referncia

Mtodos (ou funes) podem receber parmetros tanto por chamada por valor como por chamada por referncia.

Passagem por valor: o mtodo recebe uma cpia do valor original e no alteram o valor original do argumento passado ao mtodo.
Passagem por referncia o mtodo recebe a localizao da varivel original e altera o prprio argumento originalmente passado ao mtodo. H um maior desempenho, pois elimina a necessidade de cpias de valores.

Arrays
Referncias e Parmetros por referncia

Em Java o programador no pode decidir como deseja trabalhar os parmetros dos mtodos. A regra geral : Tipos Primitivos: Passagem por cpia: argumentos de tipos da linguagem so sempre passados por cpia de valor e o return do mtodo sempre retorna uma cpia de valor. Objetos so passados por referncia objetos de classes so sempre passados por referncia. Isso significa que um objeto no passado para mtodo e sim sua referncia. Isso significa que o mtodo sempre manipula diretamente o objeto

Arrays
Referncias e Parmetros por referncia int array[] = {1,2,3,4,5}

Passagem por cpia: deve-se passar o elemento de determinada possio do array;


modificaElemento(array[3]);

Passagem por referncia: deve-se especificar o nome do array sem nenhum colchetes.
modificaElemento(array);

Arrays
// PassandoArray.java // Passando arrays e elementos individuais de arrays para mtodos // Deitel & Deitel import javax.swing.*; public class PassandoArray { public static void main( String args[] ) { JTextArea saidaArea = new JTextArea(); int array[] = { 1, 2, 3, 4, 5 }; String saida = "Efeito da passagem de um array por referncia:\n" + "Os valors originais do array so:\n"; // acrescenta os elementos do array original ao String saida for ( int counter = 0; counter < array.length; counter++ ) saida += " " + array[ counter ]; modifyArray( array ); // array passado por referncia saida += "\n\nOs valores modificados dos arrays so:\n"; // acrescenta os elementos do array modificado ao String saida for ( int counter = 0; counter < array.length; counter++ ) saida += " " + array[ counter ]; saida += "\n\nEfeitos da passagem de elementos do array " + "por valor:\n" + "a[3] antes de modifyElement: " + array[ 3 ];

Arrays
// tentativa de modificar array[ 3 ] modifyElement( array[ 3 ] ); saida += "\na[3] aps modifyElement: " + array[ 3 ]; saidaArea.setText( saida ); JOptionPane.showMessageDialog( null, saidaArea, "Programa dos modelos de passagem de valores", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); // fim do mtodo main

// multiplica cada elemento do array por 2 static void modifyArray(int array2[]) { for ( int counter = 0; counter < array2.length; counter++ ) array2[ counter ] *= 2; } // multiplica o argumento (parmetro) por 2 static void modifyElement( int element ) { element *= 2; } // final da classe PassandoArray

Arrays
Arrays Multidimensionais

Permitem representar estruturas mais complexas, tais como tabelas (bidimensional) ou de maior ordem; Para identificar um elemento especfico da tabela devemos especificar dois ndices (subscritos) - o primeiro identifica a linha e o segundo a coluna (bidimensional);

Arrays
Arrays Multidimensionais
Coluna 0 Linha 0 a [0] [0] Linha 1 a [1] [0] Linha 2 a [2] [0] Coluna 1 a [0] [1] a [1] [1] a [2] [1] Coluna 2 Coluna 3 a [0] [2] a [0] [3] a [1] [2] a [1] [3] a [2] [2] a [2] [3]
ndice da coluna ndice da linha Nome do array

int int int b =

array1[][] = { { 1, 2, 3 }, { 4, 5, 6 } }; array2[][] = { { 1, 2 }, { 3 }, { 4, 5, 6 } }; b[][]; new int[3][4];

int b[][] = new int[3][4]; String[][] desenhos = { { "Flintstones", "Fred", "Wilma", "Pebbles", "Dino" }, { "Rubbles", "Barney", "Betty", "Bam Bam" }, { "Scooby Doo", "Scooby Doo", "Shaggy", "Velma", "Fred", "Daphne" } };

Arrays
// ArrayMultiDim_1.java // Inicializao de arrays multidimensionais // Deitel & Deitel import javax.swing.*; public class ArrayMultiDim_1 { static JTextArea saidaArea = new JTextArea(); public static void main( String args[] ) { int array1[][] = { { 1, 2, 3 }, { 4, 5, 6 } }; int array2[][] = { { 1, 2 }, { 3 }, { 4, 5, 6 } }; saidaArea.setText( "Valores do 1. array\n" ); geraSaida( array1 ); saidaArea.append( "\nValores do 2. array\n" ); geraSaida( array2 ); JOptionPane.showMessageDialog( null, saidaArea, "Array Multidimensional",JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 );

// fim do mtodo main

Arrays
// acrescenta linhas e colunas de um array a saida static void geraSaida( int array[][] ) { // percore as linhas do array com um lao for ( int linha = 0; linha < array.length; linha++ ) { // percorre as colunas da linha atual com um lao for ( int coluna = 0; coluna < array[ linha ].length; coluna++ ) saidaArea.append( array[ linha ][ coluna ] + " " ); saidaArea.append( "\n" ); } } }
} // fim da classe ArrayMultiDim_1

UNIVERSIDADE FEDERAL DE SANTA CATARINA

INE - Curso de Sistemas de Informaes


INE5605 - DESENVOLVIMENTO DE SISTEMAS ORIENTADOS A OBJETOS I PARTE V ORIENTAO A OBJETOS

Reviso

Roberto C. S. Pacheco
pacheco@stela.ufsc.br
Professor

Ricardo Noronha Rieke


rieke@stela.ufsc.br
Monitor

Tatiana Souza Gonzaga


tatianag@stela.ufsc.br
Monitora

Orientao a Objetos
Conceitos Chaves
Abstrao Encapsulamento Polimorfismo Persistncia Objetos Atributos Mtodos ou Servios Mensagens Relacionamentos Herana

Mecanismos Bsicos

Abstrao Nesta fase tenta-se retirar elementos e requisitos que iro ajudar na resoluo de um problema; o processo de retirar do domnio do problema os detalhes relevantes e represent-los no mais em uma linguagem do domnio e sim na linguagem da soluo. O sucesso de um Programa Orientado a Objeto est condicionado a uma boa abstrao do problema.

Abstrao

No paradigma da Programao Estruturada identifica-se as funes como sendo "operaes abstratas que resolvem um problema de programao", ou seja, ocorre a abstrao de procedimentos. No paradigma da Orientao a Objetos, tem-se a Abstrao de Dados, onde uma estrutura de dados deve incluir as operaes que ocorrem com ela.

Abstrao

Este conceito est relacionado s atividades de Modelagem de Negcio e de Requisitos e a fase de Concepo de um ciclo de vida iterativo; e representado pelo diagrama de Use Case (Caso de Uso) da UML.

Abstrao

Primeiramente procura-se dividir o problema por assuntos (pacotes ou subsistemas); Dentro de cada assunto pode-se observar alguns elementos tais como :
categorias; Aes; informaes de estado; Operaes;

Categoria

Por exemplo, se tentarmos resolver um problema ligado a esportes de modo geral Ao abstrair a categoria bola, que utilizada em esportes tais como: futebol, basquete, golfe, etc. Esta instncia concreta, representando todas as bolas, poderia ser descrita pelas propriedades :
Peso; Cor; Dimetro; etc.

Operaes Abstratas As operaes mais relevantes para a modelagem conceitual de domnios, surgiram de Pesquisas oriundas das reas de Inteligncia Artificial e de Banco de Dados e so 3 : classificao (instanciao) generalizao (especializao)
agregao (decomposio)

cada uma delas possui a sua operao inversa

Classificao / Instanciao

Trata-se da observao de propriedades comuns a entidades e a classificao das mesmas em grupos e classes. Por exemplo, duas pessoas, Abravanel e Edson, podem ser classificados como Funcionrios de uma loja
Classe ou categoria classificao Instanciao

Funcionrios
Edson

Indivduo Abravanel

Generalizao / Especializao

a operao de verificar semelhanas entre duas categorias, observando propriedades idnticas, de tal forma que origine uma categoria mais genrica.

Generalizao

Funcionrio
categoria
ver: herana

Cliente

Especializao

categoria

Pessoa

Generalizao / Especializao

A premissa bsica a de que categorias especializadas satisfaam todas as propriedades das categorias genricas, a qual est vinculada. Por outro lado, deve haver pelo menos uma propriedade que distinga uma categoria especializada de uma categoria genrica.

Agregao / Decomposio
Esta operao ocorre quando propriedades (e categorias) so combinadas (agregadas) para formar uma outra categoria A operao inversa caracterizada pela decomposio de uma categoria em partes. classe

Endereo
atributo classe
ver: Todo Parte

Nome
atributo

Agregao

Pessoa

Decomposio

Agregao / Decomposio
A idia de agregao e decomposio est na base da abordagem sistemtica de qualquer tarefa ou fenmeno complexo. Esta abordagem forma uma viso global, que vai sendo detalhada a cada passo da tarefa, temos um processo de refinamento. Este processo se assemelha a uma nave que vai se aproximando da Terra, permitindo a cada instante, ter uma viso mais detalhada da superfcie terrestre.

Abstrao Em conjunto com a abstrao temos o conceito, a prototipagem, isto , faz-se uma primeira anlise, abstraindo-se ao mximo que se puder. Parte-se para a parte de programao, no sentido de se construir um prottipo do sistema. Com o prottipo em mos volta a se fase da abstrao. E fica-se interagindo entre prottipoabstrao at que a Anlise esteja completa.

Encapsulamento
a propriedade de se implementar dados e procedimentos correlacionados em uma mesma entidade (objeto). Trata-se de uma das principais vantagens da Programao Orientada a Objetos sobre a Programao Estruturada, principalmente na reutilizao de cdigos.

Encapsulamento
Pode-se entender intuitivamente o significado de encapsulamento quando se observa o mundo real. Nos objetos do mundo real, atributos e aes so inerentes ao prprio objeto. Exemplo :
A um automvel esto associados tanto atributos (modelo, kilometragem, capacidade do tanque, etc), quanto suas potencialidades (velocidade mdia, consumo de combustvel, etc).

Encapsulamento
Cdigo Cdigo

... ...

... ...

Cdigo

... ...

Dado Programao estruturada

Dado

Dado

Dado

Cdigo

... ...

Cdigo

... ...

Cdigo

... ...

Dado
Orientao a Objetos

Dado

Dado

Mecanismos Bsicos da Anlise Orientada a Objetos

Objetos
Classe Classe & Objeto

Atributos Mtodos ou Servios Mensagens Herana

Objetos Trata-se de uma abstrao de algo no domnio do problema. Reflete a capacidade do sistema de guardar informaes sobre o elemento abstrado, interagir com este, ou ambos. Nele esto contidos os dados (atributos) e os procedimentos (servios) exclusivos ao objeto.

Objetos - Exemplo
Na informatizao do cadastramento de pessoas de uma loja comercial, sero encontrados diversos objetos pertencentes ao domnio do problema. Um objeto abstrado poderia ser o Silvio, um funcionrio da loja. Este objeto possui suas particularidade : Abravanel dos Santos (Nome) , rua de Baixo, 13 (Endereo), 1 (Faltas) , 1000.00 (Salrio Base). H tambm os eventos que podem ocorrer sobre os atributos anteriores, como : o clculo salrial, alterao do endereo, etc; Um objeto refere-se a uma OCORRNCIA NICA.

Classes
Uma classe uma coleo de objetos com um estrutura, comportamento, relaes e semntica comuns Classes so descobertas pelo exame dos objetos nos diagramas de Sequncia e Colaborao; Nas classes esto descritas as caractersticas dos Atributos e Mtodos, que representaro as particularidades dos vrios objetos.

Tipos de Classes
Classe concreta: classe que permite que sejam realizadas instncia, ou seja, possvel atravs do operador new criar objetos; Classe abstrata: esse tipo de classe no permite que sejam realizas instncias. Em geral so implementadas como superclasses em situaes de herana, permitindo garantir que somente as subclasses possuam instncias.
Outra caracterstica possibilidade dessa classe ser uma interface de definio de mtodos, onde esses mtodos no possuem implementao. A implementao seria ento realizada pelas subclasses. Isso similar ao conceito de Interface. Entretanto a diferena, quando utilizando interface, a possibilidade de uma classe implementar vrias interfaces (isso ser visto mais adiante); Obs: vale ressaltar que uma superclasse no precisa ser necessariamente abstrata.

Classe Concreta
/** Classe de definio de constantes gerais */ public class Util { public static final String MASCULINO = "M"; public static final String FEMININO = "F"; public static final int MIN_IDADE = 10; public static final int MAX_IDADE = 120; public public public public static static static static final final final final String String String String GRADUACAO = "Graduao"; ESPECIALIZACAO = "Especializao"; MESTRADO = "Mestrado"; DOUTORADO = "Doutorado";

Constantes

public static final String CC = "Cincias da Computao"; public static final String SI = "Sistemas de Informao"; }

static: permite indicar a um atributo ou mtodo que para ser acessado no precise de uma instncia, ou seja, no necessrio criar um objeto; final: nesse contexto (definio de uma varivel) final indica que esta varivel ir se comportar como uma constante.

Classe Abstrata (Superclasse)


/** Implementao de uma classe abstrata */ public abstract class Pessoa { private String aNome = "", aEndereco = "", aSexo = ""; private int aIdade = 0; //Atributos do tipo in

Atributos

public void setNome(String pNome) { aNome = pNome; } public void setEndereco(String pEndereco) { aEndereco = pEndereco; } public void setIdade(int pIdade) { //Determina uma regra de validao do atributo idade, //evitando que qualquer valor seja atributo if ((pIdade < Util.MIN_IDADE) || (pIdade > Util.MAX_IDADE)) { System.out.println("Idade deve ser maior ou igual a "+ Util.MIN_IDADE +" e menor ou igual "+ Util.MAX_IDADE); } else { aIdade = pIdade; } } ...

Mtodos de atribuio de informao set...()

Classe Abstrata (Superclasse)


public void setSexo(String pSexo) { if ((!pSexo.equalsIgnoreCase(Util.MASCULINO)) && (!pSexo.equalsIgnoreCase(Util.FEMININO))) { System.out.println("O contedo informado para+ o atributo sexo no vlido"); } else { aSexo = pSexo; } } public String getNome() { public String getEndereco() public int getIdade() { public String getSexo() { return aNome; { } }

return aEndereco; } }

return aIdade; return aSexo;

Mtodos de recuperao de informao get...()

public String getDescricao() { String mensagem = aNome+" reside na "+aEndereco+ " possui "+aIdade+" anos de idade"; if (aSexo.equalsIgnoreCase(Util.MASCULINO)) return mensagem = "O Sr. "+mensagem; else return mensagem = "A Sra. "+mensagem; } }

Classe & Objeto Usa-se o termo "Classe & Objeto" para se referenciar uma Classe e os Objetos que a ela pertencem. Instncia
Um sinnimo para o termo Objeto, tambm encontrado na literatura, Instncia de Uma Classe, ou simplesmente Instncia. Por exemplo : o objeto Vectra" uma instncia da classe "Automvel".

Atributos
Um atributo qualquer propriedade, qualidade ou caracterstica que pode ser atribuda a uma pessoa ou objeto (Webster). um dado (informao de estado), para o qual cada objeto em uma classe tem seu prprio valor; Os atributos devem ser manipulados exclusivamente por servios, portanto so privativos da classe, no devendo ter seus valores alterados por nenhuma outra parte que no pertena a prpria classe.

Atributos A estrutura de uma classe representada pelos seus atributos Atributos podem ser encontrados pelo exame das definies de classes, requisitos de problemas, e pela aplicao do conhecimento do domnio

Atributos - exemplo
na classe Funcionrio, alguns atributos so : Nome, Endereo, Telefone, CPF, Cdigo, Data de Admisso, Turno, Faltas, Horas Extras, No. de dependentes e Salrio Base.
o objeto Silvio possui como informao de estado para o atributo nome o valor de : Abravanel dos Santos e para faltas : o valor 1.

Outros Exemplos :
classe Automvel - atributos : Modelo, Marca, Ano, Cor, Nmero do Chassi. Disco - atributos Ttulo, Cdigo, Gnero

Mtodos ou Servios
So as operaes efetuadas pelos objetos; O comportamento de uma classe representado pelas suas operaes; um comportamento especfico, residente no objeto, que define como este deve agir quando exigido, atravs do recebimento de uma mensagem So eles que iro alterar os valores dos atributos de um determinado objeto.
Do ponto de vista da programao, em um Programa Orientado a Objetos, os servios esto implementados em funes colocados a nvel do objeto.

Mtodos ou Servios - Exemplo


No sistema da loja comercial, alguns dos servios so as operaes de Clculo do salrio, Alterao do Endereo. Que podem ser efetuadas sobre os atributos de um funcionrio. no caso do Clculo do salrio, algum enviar uma mensagem para que o objeto calcule o salrio, e o objeto (que j possui conhecimento dos dados necessrios para o clculo), far o processamento e retornar para o algum o valor do salrio lquido.

Servios - Tipos
Clculos
Tratam-se de servios que calculam o resultado a partir dos valores dos atributos de um Objeto. Exemplo :
clculo do salrio lquido do funcionrio.

Servios de Ocorrncia
Referem-se aos "Servios Implcitos" (ex. Criar, Conectar, Alterar, Acessar, Destruir, etc). So os servios que obrigatoriamente todos os objetos devem ter. No so mostrados nos Diagramas da AOO.

Servios - Tipos
Monitorao
Tratam-se de servios que para serem utilizados precisam de entradas e/ou sadas externas ao objeto ou os servios que controlam a aquisio de dados de dispositivos. Estes servios podem precisar de alguns servios associados, como Iniciar ou Terminar. Exemplo :
Um caso tpico o servio de gravao de dados em um arquivo, os objetos precisam saber do sistema operacional o nome do Arquivo, o local onde pode-se gravar e se existe espao disponvel.

Notao Grfica - UML - Exemplo Funcionrio


nome:texto residncia:texto salrio Bruto:real faltas:inteiro clculo salarial():real imprimir dados()
setResidencia(R:Residencia) getFaltas():faltas apagarFuncionrio() criarNovo()

Classes devem ser nomeadas usando o vocabulrio do domnio

Padres de

nomenclatura devem ser estabelecidos Ex: Todos os nomes de classes so substantivos no singular, iniciando com letra maiscula

Mensagens
uma forma de relacionamento entre objetos; atravs delas que os objetos interagem (se comunicam) em um programa. Tratam-se de pedidos enviados a um objeto, a fim de que este modifique seu estado ou retorne algum valor. Em um programa orientado a objeto, nenhuma outra parte do programa pode acessar diretamente os dados de um objeto. Toda a comunicao entre os objetos ocorre nica e exclusivamente atravs de mensagens.

Mensagens
Uma mensagem uma solicitao feita por um objeto A a um objeto B; Como resultado desta solicitao, o objeto B ir modificar seu estado ou ir retornar algum valor; O conceito de mensagem est diretamente associado ao conceito de operao; A interao entre os objetos feita atravs da troca de mensagens; So representados na UML atravs dos diagramas de iterao e de colaborao.

Relacionamentos Relaes fornecem um caminho para a comunicao entre os objetos Diagramas de sequncia e/ou colaborao so examinados para determinar quais ligaes entre objetos precisam existir para se chegar ao comportamento desejado. -- Caso dois objetos precisem conversar dever haver uma ligao entre elas

Relacionamentos

Relacionamentos
Associao:
uma conexo bi-direcional entre classes mostrada como uma linha conectando as classes relacionadas

Agregao:
um tipo mais forte de conexo, especializao de uma associao, aonde a relao entre o todo e suas partes (relacionamento parte-de ou conteno) mostrada como uma linha conectando as classes relacionadas com um losango perto da classes que representa o todo

Relacionamento entre Classes


Herana:
um dos princpios da OO, permite a reutilizao, uma nova classe pode ser definida a partir de outra j existente

Dependncia:
uma forma mais fraca de relao, mostrando uma relao entre um cliente e um fornecedor, aonde o cliente no tem conhecimento semntico do fornecedor mostrada como uma linha pontilhada entre o cliente e o fornecedor

Associao

Uma associao uma conexo entre classes; Associaes so representadas em um diagrama de classe atravs de uma linha conectando as classes associadas; Os dados podem fluir em uma ou em ambas as direes atravs do link.

Professor

Disciplina

Associao
Para exemplificar ser criada uma classe Disciplina que ter como funo armazenar todas as disciplinas ministradas pelo professor ou cursadas pelo aluno.
Classe Disciplina
/** * Implementao da classe Disciplina */ public class Disciplina { private String nomeDis; private int cargaHoraria; public Disciplina(String pnomeDis, int pcargaHoraria) { nomeDis = pnomeDis; cargaHoraria = pcargaHoraria; } public String getDescricao() { return " Disciplina: "+nomeDis+" "+cargaHoraria; } }

Atributos

Construtor
Mtodo de recuperao de informao get...()

Carga Horria:

Associao
Por questes de simplificao o atributo aDisc faz parte da classe Pessoa. Isso vlido porque todas as subclasses do modelo tero referncia a disciplinas ministradas (professor) ou cursadas (aluno). Entretanto, caso fosse implementado mais um nvel na hierarquia, por exemplo: criar uma classe funcionrio e as especializaes professor e diretor, eventualmente deveramos rever a hierarquia, pois somente professor e aluno teriam disciplinas.
da classe Disciplina

/** Implementao de uma classe abstrata */ Atributo public abstract class Pessoa { private String aNome = "", aEndereco = "", aSexo = ""; private int aIdade = 0; private Disciplina aDisc[]; //Atributo da classe Disciplina //Conjunto de mtodos j definidos public String getDisciplina(int pIndice) { return aDisc[pIndice].toString(); } public String getDisciplinas() { String retorno = ""; for (int i = 0; i < aDisc.length; i++) { retorno += aDisc[i].getDescricao()+"\n"; } return retorno; } }

Mtodo que retorna uma nica disciplina utilizando um ndice de acesso a array aDisc[]; Mtodo que retorna todas as disciplinas constantes no array aDisc[];

Herana
um mecanismo de hierarquia entre classes, onde uma classe mais especializada (filho) herda as propriedades da classe mais geral (pai). Este recurso no est disponvel em sistemas procedurais, caracterizando-se em uma das principais diferenas entre a Anlise Orientada a Objetos e a Anlise Estruturada. A classe mais geral denominada superclasse e a classe mais especializada chamada subclasse.

Herana
Herana uma relao entre uma superclasse e suas subclasses; A subclasse est subordinada a superclasse na hierarquia de classes. H duas formas de se descobrir heranas:
Generalizao Especializao

Herana sempre ocorrem de classe para classe; Herana representa um relacionamento " um tipo de". Assim, a partir da estrutura de Especializao, diz-se que esta " um tipo da" estrutura de Generalizao.
ver: Generalizao / Especializao

Herana
Atributos comuns, operaes, relaes e/ou, so mostradas no nvel aplicvel mais alto da hierarquia Ao se definir a hierarquia, deve-se ter em mente a premissa bsica de que as categorias inferiores sempre satisfazem todos os atributos e servios das categorias s quais elas representam especializaes. Uma classe filha deve ter, no mnimo, uma propriedade de distino em relao classe pai.

Herana - Exemplo
Voltando a velha loja comercial, onde tnhamos somente a classe Funcionrio. Se houver a necessidade de se guardar dados de Clientes que fizeram compras. Precisamos criar um classe Clientes, cujos dados necessrios seriam : nome, endereo, valor da compra, item comprado, etc. E partir desta classe criaramos objetos como o, cliente_0001, que poderia ter os valores : Joo das Couves (nome), Rua das Verduras, s/n, R$ 0.10, chiclete.

Herana: Exemplo
Funcionrio
Nome Endereo Salrio Faltas CalcularSalario( Mostrar() Nome Endereo Salrio Faltas CalcularSalario() Mostrar()

Cliente
Nome Endereo Compra TipoPagamento GerarRecibo() Mostrar()

Compra TipoPagamento GerarRecibo() Mostrar()

Herana: Exemplo
Pessoa
Nome Endereo

Mostrar()

Funcionrio
Salrio Faltas CalcularSalario() Mostrar()

Cliente
Compra TipoPagamento GerarRecibo() Mostrar()

Subclasse
/** Implementao da classe Professor que uma subclasse da classe Pessoa. Desse modo a classe Pessoa considerada a super classe. */ public class Professor extends Pessoa { private String aTitMaxima = ""; //Atribui a titulao mxima public void setTitMaxima(String pTitMaxima) { //Realiza do controle para verificar se a titulao vlida if ((!pTitMaxima.equalsIgnoreCase(Util.GRADUACAO)) && (!pTitMaxima.equalsIgnoreCase(Util.ESPECIALIZACAO)) && (!pTitMaxima.equalsIgnoreCase(Util.MESTRADO)) && (!pTitMaxima.equalsIgnoreCase(Util.DOUTORADO))) { System.out.println("A titulao informada no vlida!!!"); } else { aTitMaxima = pTitMaxima; } } //Recupera a titulao mxima public String getTitMaxima() { return aTitMaxima; } }

A classe Professor uma subclasse da classe Pessoa

Atributos

Mtodo de atribuio de informao set...()

Mtodo de recuperao de informao get...()

Classe de Teste
/** Classe utilizada para teste dos conceitos de OO */ public class ExemploClasse { public static void main (String par[]) { //Cria a instncia //Primeira intncia da classe Professor (objeto objProfessor) Professor objProfessor = new Professor();

Atributos
//Atribui o contedo para as variveis de instncia (Atributos) objProfessor.setNome("Professor 1"); objProfessor.setEndereco("R da Palmeiras 111"); objProfessor.setIdade(42); objProfessor.setSexo(Util.MASCULINO); objProfessor.setTitMaxima(Util.DOUTORADO); //Obtm o contedo dos atributos Nome, Endereo e Idade e imprime esse //contedo para a sada padro utilizando System.out.println(); System.out.println("Nome: "+objProfessor.getNome()); System.out.println("Endereo: "+objProfessor.getEndereco()); System.out.println("Idade: "+objProfessor.getIdade()); System.out.println("Sexo: "+objProfessor.getSexo()); System.out.println("Titulao Mxima: "+objProfessor.getTitMaxima()); //Imprime o contedo detalhado atravs do mtodo getDescricao() System.out.println(objProfessor.getDescricao()); } }

Mtodo de atribuio de informao set...()

Mtodo de recuperao de informao get...()

Polimorfismo
O significado da palavra, originada do grego, o de "possuir vrias formas". Na A.O.O. usado para indicar a propriedade de se utilizar o mesmo nome para mtodos diferentes. Uma vantagem do polimorfismo a relativa facilidade de manuteno e extenso dos programas. A idia de polimorfismo est ligada com a indicao de que os atributos s devem ter seus valores alterados por mtodos da classe.

Polimorfismo
Uma das estratgias adotadas na Programao Orientada a Objeto a de implementar os mtodos o mais alto possvel na hierarquia de classes. As variaes necessrias nos mtodos so feitas a medida em que se desa a rvore hierrquica. O conceito de Polimorfismo relevante pelo carter sinttico que d aos programas. Exemplo : ImprimirDados da loja Comercial

Polimorfismo
O Polimorfismo no consiste simplesmente na existncia de funes com o mesmo nome, que pode ser uma sobrecarga de funo. A diferena entre sobrecarga de funes e polimorfismo vem de 2 fatos :
O polimorfismo s existe em hierarquia de classes (herana) e deve ser feito em tempo de execuo (Run time). A sobrecarga no exige herana e o processo de associao com um objeto se d em tempo de compilao.

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3

objGeral.mostrar();

Mostrar()

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3

objGeral.mostrar();

Mostrar()

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3

objGeral.mostrar();

Mostrar()

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3

objGeral.mostrar();

Mostrar()

Polimorfismo
ClasseBase Mostrar() ClasseD1 Mostrar() ClasseD2 Mostrar() ClasseD3

objGeral.mostrar();

Mostrar()

Polimorfismo
Essa caracterstica permite implementar sistemas que so mais facilmente extensveis; Os programas podem ser escritos para processar genericamente como objetos de superclasse objetos de todas as classes existentes em uma hierarquia; Desse modo o objeto adquire comportamento polimrfico.
//Exemplo de polimorfismo Pessoa pes; // Referncia da classe Pessoa (que abstrata) Professor prof = new Professor(argumentos); //Objeto prof (instncia da classe Professor) Aluno alu = new Aluno(argumentos); //Objeto alu (instncia da classe Aluno) // Associa a Referncia de um objeto Professor Referncia da classe Pessoa pes = prof; System.out.println(pes.getDescricao()+"\n Disciplinas Ministradas: \n"+ pes.getDisciplinas()); // Associa a Referncia de um objeto Aluno Referncia da classe Pessoa pes = alu; System.out.println(pes.getDescricao()+"\n Disciplinas Cursadas: \n"+ pes.getDisciplinas());

Polimorfismo
Considerando o exemplo anterior podemos notar os seguintes pontos:
O objeto pes (instncia da classe Pessoa) ainda no foi inicializado (isso apenas acontece quando se utilizado o operador new). Desse modo no permitido acessar qualquer contedo. Os objetos prof e alu, que so instncias de Professor e Alunos, respectivamente, possuem o comportamento prprio dessas classes; Ao se atribuir o objeto prof ou alu para pes, esse objeto passa a ter o comportamento correspondente ao objeto que lhe foi atribudo; A partir do momento da atribuio, o objeto que recebe a referncia altera o seu comportamento; Entretanto somente os mtodos que possui a mesma assinatura na superclasse e na subclasse podem ser acessados.

Sobrescrio (override)
A sobrescrio ocorre pela redefinio de um mtodo da superclasse pela subclasse com a mesma assinatura.

public abstract class Pessoa { //Atributos //Demais mtodos public String getDescricao() { String mensagem = aNome+", reside na "+aEndereco+ ", possui "+aIdade+" anos de idade"; if (aSexo.equalsIgnoreCase(Util.MASCULINO)) return mensagem = "O Sr. "+mensagem; else return mensagem = "A Sra. "+mensagem; } } public class Professor extends Pessoa { //Atributos //Demais mtodos //Sobrescreve o mtodo public String getDescricao() { return super.getDescricao()+", e possui "+getTitMaxima()+"."; } }

Definio do mtodo getDescricao()

Sobrescrio do mtodo getDescrio() na subclasse.

Sobrecarga (overload)
A sobrecarga pode ocorrer em construtores e mtodos; caracterizada pela redefinio na mesma classe de um determinado construtor ou mtodo, onde a redefinio deve possuir o mesmo nome mas um conjunto diferente de argumentos.

public abstract class Pessoa { ... //Construtor da classe pessoa (4 argumentos) public Pessoa(String pNome, String pEndereco, String pSexo, int pIdade) { aNome = pNome; Construtor com 4 aEndereco = pEndereco; argumentos aSexo = pSexo; aIdade = pIdade; } //Construtor da classe pessoa (5 argumentos) public Pessoa(String pNome, String pEndereco, String pSexo, int pIdade, Disciplina pDisc[]) { Sobrecarga do this(pNome, pEndereco, pSexo, pIdade); construtor agora aDisc = pDisc; 5 argumentos } //Construtor default public Pessoa() {} ... }

com

Persistncia
O termo persistncia est relacionado ao total de tempo que um objeto permanece na memria. De modo geral, as instncias das classes so criadas durante a execuo do programa e assim que o objeto no mais necessrio, ocorre uma destruio do mesmo, ou seja, o espao de memria reservado para ele liberado.

Persistncia
Um objeto em um Programa Orientado a Objetos surge das seguintes formas : a) O objeto criado esttica ou dinamicamente pelo programa. b) O objeto recuperado de um arquivo ou de uma base de dados relacional e levado forma de objeto. c) O objeto recuperado de uma base de dados orientada a objeto e lido diretamente para utilizao.

Pacotes

Como visto em vrios exemplos desenvolvidos at aqui utilizamos bibliotecas preexistentes na API Java; Cada classe e interface da API pertence a um pacote especfico (ex: JOptionPane -> javax.swing.*; medida que os aplicativos se tornam mais complexos, os pacotes tornam-se cada vez mais necessrios pois ajudam a gerenciar a complexidade dos componentes do aplicativo; Os pacotes tambm facilitam a reutilizao de cdigo, permitindo que programas importem classes de outros pacotes; Analisando um pacote Java observa-se que o mesmo possui uma definio fsica representada por uma estrutura hierrquica atravs de diretrios no sistema operacional ex:
info
academico disciplina -> Disciplina pessoa -> (Pessoa, Professor e Aluno) geral -> Util

Pacotes

Para declarar um pacote utilize a palavra reservada package antes da definio da classe; Veja o exemplo abaixo:
/** Classe de definio de constantes gerais */ package info.geral; public class Util { public static final String MASCULINO = "M"; public static final String FEMININO = "F"; public static final int MIN_IDADE = 10; public static final int MAX_IDADE = 120; public static final String GRADUACAO = "Graduao"; public static final String ESPECIALIZACAO = "Especializao"; public static final String MESTRADO = "Mestrado"; public static final String DOUTORADO = "Doutorado"; public static final String CC = "Cincias da Computao"; public static final String SI = "Sistemas de Informao"; }

Definio do pacote

Pacotes
Cada arquivo fonte (.java) deve estar no mesmo diretrio identificado na linha de definio do package (ex: c:\...\src\info\geral para o caso da classe Util); Para o projeto desenvolvido at agora teramos:
c:\...\src\info\academico\disciplina\Disciplina.java c:\...\src\info\academico\pessoa\Pessoa.java c:\...\src\info\academico\pessoa\Aluno.java c:\...\src\info\academico\pessoa\Professor.java c:\...\src\info\geral\Util.java c:\...\src\ExemploClasse.java

Agora para que seja possvel a compilao devemos realizar os imports correspondentes; Na classe ExemploClasse deve-se importar os pacotes e classes abaixo:
import info.geral.Util; import info.academico.disciplina.*; import info.academico.pessoa.*;

Obs: no primeiro import somente a classe Util estar acessvel. Quando se deseja acessar mais de uma classe da hierarquia deve-se utilizar o * ;

Relacionando Classes

com a UML e Java


Copyright@ Prof. Jos Francisco Salm Jr.

Apresentao

Conceitos
Relacionamentos Regras Estudo de Caso

Viso Geral

Esteretipos para o Diagrama


<<boundary>> (limite) Vinculo entre o ator e o incio do fluxo das atividades do use-case <<control>> (controladores) Geralmente esto associados as regras de negcio fazem a relao entre os objetos de limite e entidades <<entity>> (entidade) Objetos que armazenam informaes sobre o domnio do problema

Regras para o Diagrama de Classe


Correto Errado

Regras para o Diagrama de Classe


Atores podem interagir somente com objetos <<boundary>>. Objetos <<entity>> podem interagir somente com objetos <<control>>. Objetos <<control>> podem interagir com qualquer objetos de anlise, inclusive outros objetos <<control>>.

Relacionamentos
Relacionamentos provem o caminho de comunicao entre os objetos Os quatro tipos de relacionamento so:
Generalizao Associao Agregao Dependncia

Relacionamento - Associao

Dentro da perspectiva conceitual, associaes representam relaes entre ocorrncias de classes (uma pessoa trabalha para uma companhia; uma companhia tem vrios escritrios) Da perspectiva conceitual, associaes representam relaes conceituais
Pedido tem que vir de um Cliente Cliente pode ter vrios Pedidos ao longo do tempo Cada Pedido tem vrias Linhas de Pedido

Relacionamento - Associao

Cada associao tem duas pontas de associao


Cada ponta ligada a uma das classes na associao Uma ponta pode ser explicitamente rotulada; este rtulo chamado de nome de papel

Como Fazer um Diagrama de Classe

Regras teis:
1. Identificar todas as classes que participam da soluo, classificado-as como LIMITE, CONTROLE e ENTIDADE;
1. Para dar nomes as classes, utilize um radical para auxiliar na classificao (ex: eItemEstoque, cItemEstoque e tItemEstoque)

2. Faa o relacionamento entre elas conforme as regras descritas para LIMITE, CONTROL e ENTIDADES (todos os relacionamentos sero considerados do tipo ASSOCIAO); 3. Desenhe as classes num diagrama de

Como Fazer um Diagrama de Classe

Regras teis (cont.):


4. Inclua os atributos e operaes identificados nas classes do tipo ENTIDADE.
1. Adicione a visibilidade PRIVADA aos atributos. 2. Adicione informao sobre o tipo dos atributos conforme descrito em seu problema. 3. Inclua uma operao SET e GET para cada atributos da classe ENTIDADE.

5. Adicione setas de navegabilidade para indicar a direo no acesso dos atributos. Para isto, utilize a regra de relacionamento

Refinando os Relacionamentos e Atributos

Regras teis no Refinamento:


1. Para todos os relacionamentos entre classes do tipo ENTIDADE e seu respectivo CONTROLADOR:
1. Substitua o relacionamento do tipo ASSOCIAO por um de AGREGAO em que o smbolo do LOSANGULO (que representa a agregao na UML) fique ao lado da classe CONTROLADORA. 2. Adicione UM atributo do tipo LISTA+<nome da entidade> na classe CONTROLADORA, cujo tipo ser um VETOR e seu encapsulamento ser PRIVADO. 3. Inclua as operaes necessrias para manipulao desta lista de objetos
1. ADICIONAR, RETIRAR, ATUALIZAR e LOCALIZAR um objeto ENTIDADE na lista do CONTROLADOR.

Refinando os Relacionamentos e Atributos

Regras teis no Refinamento (cont.):


2. Inclua um mtodo CONSTRUTOR na classe ENTIDADE, capaz de inicializar seus atributos atravs de parmetros passados a ele; 3. Inclua um mtodo CONSTRUTOR na classe CONTROLADORA cuja responsabilidade ser o de criar a lista de objetos do tipo ENTIDADE (visto no passo 1.2); 4. Inclua todas as operaes descritas no problema no CONTROLADOR especfico da ENTIDADE (ex: calcularMedia,

Refinando os Relacionamentos e Atributos

Regras teis no Refinamento (cont.):


6. Para as classes do tipo ENTIDADE, verifique a possibilidade do uso do relacionamento de HERANA (lembre-se que a herana o relacionamento que aumenta o acoplamento entre classes, desta forma, utilize com prudncia); 7. O relacionamento de COMPOSIO ocorre entre o controlador da entidade e a classe do vetor escolhida. Assim, o controlador sempre ter uma estrutura de um vetor para guardar os objetos do tipo entidade;

Teoria X Prtica

Teoria: J vimos as regras

Prtica: Aplicando as regras e entendendo sua razo

Exemplificando as Regras
Regra 5

tListagemItemEstoque

eItemEstoque
Regra 1.1

Regra 2

Regra 4

cItemEstoque

Diagramas de Classe

Estrutura:
Classes, associaes e atributos Interfaces (com operaes e constantes) Informao sobre o tipo dos atributos Navegabilidade Dependncias

Exemplo Seleciona Loja Virtual

Cenrio Exemplo: 1. O cliente inicia atravs da navegao pela pgina principal do sistema de pedidos. 2. O cliente pode selecionar uma loja virtual, atravs de um hyperlink disponvel na pgina principal. 3. Quando um dos links escolhido, o sistema ir montar uma pgina com os produtos daquela loja. 4. O sistema retorna a pgina com os produtos da loja virtual selecionada. 5. O cliente navega na pgina retornada e analisa os produtos.

Exemplo Seleciona Loja Virtual

: NavegaLojas : SiteSistema

: Loja

: Cliente

: Sistema de cadastro de : ProdutosLoja : MontaProdutosLoja

: Produto

Você também pode gostar