Você está na página 1de 56

Modularizao

Definies de mdulos
procedlmenLos
funes
Introduo criao de mtodos em Java:
meLodos esLLlcos:
sem reLorno (procedlmenLo):
sem parmeLros
com parmeLros

Decomposio: Dividir para
Conquistar
Decomposio de problemas
ulvldlr um problema em parLes menores
8esolver as parLes menores (mals fcels, chamadas !"#$%&')
!unLar correLamenLe as solues das parLes menores para compor
a soluo do problema orlglnal

Se alguma parte menor continua complexa, o
subproblema dividido novamente:
reflnamenLo sucesslvo

Modularizao
Modularizao a tcnica para desenvolver
algoritmos, denominados mdulos, por meio
de refinamentos sucessivos.
Cada mdulo:
resolve um subproblema,
e um algorlLmo (&!)%*+&, com lnlclo, melo e flm, enLrada e salda,
ob[eLlvos, varlvels, eLc.
Denominamos Mdulo Principal aquele que
resolve o problema original, chamando
convenientemente os mdulos menores.
Tipos de Mdulos
Definimos dois tipos de mdulos:
),&(*#-!*.+&'
con[unLos de lnsLrues que reallzam uma deLermlnada Larefa
conhecldos por sub-roLlna ou !"#$%&'"%
/$.01*'
semelhanLes a procedlmenLos, porem reLornam valores (como
funes maLemLlcas) que podem ser usados em expresses.

Procedimentos
Um mdulo do tipo procedimento envolve
dois momentos bem diferentes:
sua (,-203&:
para crlar um procedlmenLo, basLa codlflc-lo (escrever o
algorlLmo)
sua *4*($03&:
um procedlmenLo e execuLado quando algum &$+,& mdulo o
lnvocar, lsLo e, quando &$+,& mdulo cham-lo (mulLas vezes
esse ouLro mdulo e o prlnclpal).

Procedimentos - Criao
Todo procedimento possui:
uma 2''-.2+$,2 (ou lnLerface), que deflne um
.&!* para o procedlmenLo e uma llsLa de
)2,5!*+,&' (argumenLos de enLrada)

um (&,)&, denLro do qual so declaradas
varlvels locals e so codlflcadas as lnsLrues.

Procedimentos - Chamada (execuo)
Um procedimento executado quando
algum mdulo o chamado pelo nome
e so informados parmetros
compatveis com a lista de parmetros
dada na assinatura do procedimento.

Mtodos em Java
Em Java, os mdulos (procedimentos e funes)
so representados por classes ou mtodos.

No momento, trataremos apenas mtodos, do
tipo estticos (que no dependem da criao
de objetos para que sejam executados).

Mtodos Estticos p/ Procedimentos
Criao de procedimento em Java:
deflnlo da asslnaLura e codlflcao do corpo

publlc sLaLlc vold nomerocedlm ( ()*+,-.-"-/0 ) [
//... Codlflcao do corpo ...
}

Chamada (execuo):
lnsLruo de chamada de meLodo do Llpo procedlmenLo, exLernamenLe:

nomerocedlm ( <parameLros> ) 6



Assinatura de Procedimentos
public static void nomeProcedim ( <listaParam> )

O nome do procedimento segue as mesmas regras de
nomeao de variveis
A lista de parmetros:
segue as regras de declarao de varlvels, cada parmeLro e separado
por vlrgulas
pode ser vazla (os parnLeses aparecem vazlos)
Exemplos:
publlc sLaLlc vold calcula ( ) // proced. sem parmeLros
publlc sLaLlc vold grava ( lnL l , char c ) // com parmeLros

Chamada de Procedimentos
nomerocedlm ( <parameLros> ) 6

Os parmetros fornecidos na chamada devem
ser compatveis com a lista de parmetros da
assinatura
delxar parnLeses vazlos se no houver parmeLros
separar por vlrgulas quando houver mals de um
Exemplos:
calcula ( ) , // chamada de proced. sem parmeLros
grava ( 2 , c ) , // chamada de proced. com parmeLros

Chamada de Procedimentos
A sintaxe definida vale para chamadas de procedimentos
que so codificados no mesmo arquivo (mesma classe)

possvel chamarmos procedimentos codificados em
outras classes, bastando informar o nome da classe:

NomeDaClasse.nomeProcedim ( <parametros> ) ;

Exemplos de Procedimentos
Com freqncia ns temos usado chamada a
procedimentos em Java:
!CpLlonane7showMessageulalog (null,msg) ,


E sempre estamos codificamos um procedimento
em Java (mtodo esttico):
publlc sLaLlc vold maln ( SLrlng args[ ] )

!"#$%$ '(#)#*+$ ,-".+$%*/*+0%$ 10 +20((' 34,#*$1501'
6((*10#7-0 %$ 8"#$%$ '(#)#*+$ 97' +$1#"8
$ 8:%72$ 5;<=><56? @$7 ('A0B $ ,-$C-080D
Exemplo: Codificao de
Procedimento com Parmetros (1/9)
Problema: Escrever um programa para receber o voto
para um candidato (A, B ou C) ou ento um caractere
para ver as parciais (P). O programa deve, de acordo
com o valor digitado, somar os votos do candidato ou
mostrar a parcial (porcentagem dos votos de cada
candidato). Aps essa escolha, o programa deve pedir
para o usurio informar se deve continuar ou no (S ou
N). O programa continua recebendo os votos enquanto
o valor digitado for S. Quando no receber mais o valor
S deve parar de receber os votos e mostrar o total de
votos para cada candidato e a parcial (porcentagem de
votos). No final, deve mostrar o vencedor. Utilize um
procedimento para colocar o cdigo que se repete


Exemplo: Codificao de
Procedimento com Parmetros (2/9)


Nome: Eleio
Objetivo:
Variveis:
caracter voto, continua
inteiro totalA, totalB, totalC, total

Inicio
continua S
totalA 0
totalB 0
totalC 0
. . .

Exemplo: Codificao de
Procedimento com Parmetros (3/9)
Enquanto continua = S faa
Leia voto
Escolha voto
Caso A:
totalA totalA + 1
Caso B:
totalB totalB + 1
Caso C:
totalC totalC + 1
Caso P:
total totalA + totalB + totalC
Escreva totalA / total * 100.0
Escreva totalB / total * 100.0
Escreva totalC / total * 100.0
Fim-escolha

Leia continua
Fim-enquanto


Exemplo: Codificao de
Procedimento com Parmetros (4/9)
Escreva totalA
Escreva totalB
Escreva totalC
total totalA + totalB + totalC
Escreva totalA / total * 100
Escreva totalB / total * 100
Escreva totalC / total * 100

Se totalA > totalB e totalA > totalC ento
Escreva Venceu A!!
Seno
Se totalB > totalC
Escreva Venceu B!!
Seno
Escreva Venceu C!!
Fim-se
Fim-se
Fim

Cdlgo que se repeLe: pode vlrar
um mdulo
Exemplo: Codificao de
Procedimento com Parmetros (5/9)
// transcrio em Java:

package denise;
import javax.swing.JOptionPane;
public class EleicaoModularizada1 {

public static void main (String args[]) {

char voto, continua;
int totalA, totalB, totalC;
String entrada, saida;

continua = 'S';
totalA=0;
totalB=0;
totalC=0;
. . .

Exemplo: Codificao de
Procedimento com Parmetros (6/9)
while (continua == 'S') {
entrada = JOptionPane.showInputDialog ("Vote: A, B ou C,\n"+
"ou digite P para obter as parciais");
voto = entrada.charAt(0);
switch (voto) {
case 'A':
totalA = totalA + 1;
break;
case 'B':
totalB = totalB + 1;
break;
case 'C':
totalC = totalC + 1;
break;
case 'P':
mostraPercentuais (totalA, totalB, totalC); // chamada ao proced.
break;
}

Chamada ao procedlmenLo
mosLraercenLuals, com
Lrs parmeLros lnLelros
Exemplo: Codificao de
Procedimento com Parmetros (7/9)
. . .
entrada = JOptionPane.showInputDialog("Continua?");
continua = entrada.charAt(0);

} // fim do while

saida = "A recebeu " + totalA + " votos\n" +
"B recebeu " + totalB + " votos\n" +
"C recebeu " + totalC + " votos\n" ;
JOptionPane.showMessageDialog(null,saida);

mostraPercentuais (totalA, totalB, totalC); // chamada ao procedimento


. . .

Exemplo: Codificao de
Procedimento com Parmetros (8/9)

if (totalA > totalB && totalA > totalC) {
JOptionPane.showMessageDialog(null,"Venceu A!");
}
else {
if (totalB > totalC) {
JOptionPane.showMessageDialog(null,"Venceu B!");
}
else {
JOptionPane.showMessageDialog(null,"Venceu C!");
}
}

} // fim do mtodo main

. . .

Exemplo: Codificao de
Procedimento com Parmetros (9/9)
/* Mtodo: mostraPercentuais
* Objetivo: Calcular e exibir percentuais de valores dados.
* Entrada: trs totais inteiros
* Sada: exibio do percentual relativo a cada total
*/ public static void mostraPercentuais ( int tA , int tB , int tC ) {
// variveis locais ao procedimento:
double total;
String saida;

total = tA + tB + tC;
saida = "A recebeu " + (( tA / total ) * 100) + "% dos votos\n";
saida += "B recebeu " + (( tB / total ) * 100) + "% dos votos\n";
saida += "C recebeu " + (( tC / total ) * 100) + "% dos votos\n";
JOptionPane.showMessageDialog(null,saida);
} // fim do mtodo mostraPercentuais
} // fim da classe (do programa e do arquivo)

Depurao
Como vimos em aula anterior, o ambiente Eclipse permite
a depurao de cdigo, com acompanhamento passo a
passo da execuo das instrues e da visualizao dos
valores de variveis:
marcar 1"%-2!#*3,
aclonar 8un uebug as !ava appllcaLlon
Leclar l6 (+,%! #5%") para acompanhar as lnsLrues, sem enLrar
nos mdulos
Leclar l3 (+,%! *3,#) para acompanhar as lnsLrues denLro de
cada mdulo (aLeno: lnsLrues de !CpLlonane no podem ser
vlsLas: Lecle l6)

Exemplo2: Codificao de
Procedimento com Parmetros (1/5)
Problema2: escrever um novo mdulo no programa da Eleio, que exiba uma
mensagem numa caixa de dilogo. O objetivo deste mdulo tornar mais
claro o cdigo do mdulo principal e de outros mdulos.


// codificao em Java:
package denise;
import javax.swing.JOptionPane;
public class EleicaoModularizada2 {

public static void main (String args[]) {

// cdigo inicial idntico ao EleicaoModularizada1
. . .

Exemplo2: Codificao de
Procedimento com Parmetros (2/5)
. . .

} // fim do while

saida = "A recebeu " + totalA + " votos\n" +
"B recebeu " + totalB + " votos\n" +
"C recebeu " + totalC + " votos\n" ;

exibeMsg (saida); // chamada ao novo procedimento exibeMsg

mostraPercentuais (totalA, totalB, totalC); // chamada ao procedimento


. . .

Exemplo2: Codificao de
Procedimento com Parmetros (3/5)

if (totalA > totalB && totalA > totalC) {

exibeMsg ( "Venceu A! ); // chamada ao procedimento
}
else {
if (totalB > totalC) {
exibeMsg ( "Venceu B! );
}
else {
exibeMsg ( "Venceu C! );
}
}

} // fim do mtodo main

. . .

Exemplo2: Codificao de
Procedimento com Parmetros (5/5)
. . .

/* Mtodo: exibeMsg
* Objetivo: Exibir uma mensagem.
* Entrada: uma mensagem dada na forma de cadeia de caracteres.
* Sada: exibio da mensagem
*/

public static void exibeMsg ( String msg ) {

JOptionPane.showMessageDialog( null , msg );

} // fim do mtodo exibeMsg

} // fim da classe (do programa e do arquivo)

Exerccio 7.1 - Procedimentos
Escreva um novo programa para o problema da Eleio
chamado EleicaoModularizada3. Nele, acrescente um
novo procedimento de nome exibeVencedor, que:
recebe como parmeLros Lrs lnLelros (LoLals de cada candldaLo)
descobre qual e o malor lnLelro denLre os recebldos
exlbe uma mensagem dlzendo qual candldaLo venceu
o procedlmenLo *4-8*9*.(*#&, deve usar necessarlamenLe o
procedlmenLo *4-8*:';
Faa as correes necessrias no mdulo principal para
utilizar o procedimento acima.

Exerccio 7.2 - Procedimentos
Em EleicaoModularizada3, acrescente um novo
procedimento de nome exibeTotaisEPercentuais,
que:
recebe como parmeLros Lrs lnLelros (LoLals de cada candldaLo)
exlbe os LoLals de voLos recebldos por cada candldaLo
exlbe os percenLuals de cada candldaLo
o procedlmenLo *4-8*<&+2-'=>*,(*.+$2-' deve usar
necessarlamenLe os procedlmenLos *4-8*:'; e
!&'+,2>*,(*.+$2-'
Faa as correes necessrias no mdulo principal para
utilizar o procedimento acima.
Observe a simplificao do mdulo principal main.

Exerccio 7.3 - Procedimentos
Escreva um programa em Java que resolve o problema:
8ecebe do usurlo vrlas medldas lnLelras, de dlversos Lrlngulos, aLe que se[a
dlglLada uma opo de salda do programa,
A cada Lrs lnLelros recebldos, verlflca se os valores fornecldos formam ou no um
Lrlngulo e lnforma o usurlo,
Se for Lrlngulo vlldo, lnforma se e equllLero (Lrs lados lguals), lssceles (dols
lados lguals) ou escaleno (Lrs lados dlferenLes).
C programa deve Ler os segulnLes ),&(*#-!*.+&':
prlnclpal (maln, e que faz chamadas aos mdulos abalxo)
exlbeMsg ([ felLo)
verlflca1rlangulo (recebe como parmeLros Lrs lados lnLelros e exlbe
mensagem lnformando se os valores formam ou no Lrlngulo vlldo)
classlflca1rlangulo (recebe Lrs lados vlldos e exlbe seu Llpo, esse mdulo s
pode ser chamado quando houver cerLeza da valldade das medldas do
Lrlngulo).



Proposta 08: Modularizao - Parte 2
Mtodos estticos em Java:
com reLorno (funes)

Funes
Assim como em mdulos do tipo procedimento,
um mdulo do tipo funo envolve dois
momentos bem diferentes:
sua (,-203&:
para crlar uma funo, basLa codlflc-la (escrever o algorlLmo)
sua *4*($03&:
uma funo e execuLada quando algum ouLro mdulo a
lnvocar e usar o resulLado obLldo.

Funes - Criao
Toda funo possui:
uma 2''-.2+$,2 (lnLerface), que deflne:
um .&!* para da funo,
uma llsLa de )2,5!*+,&' (dados de enLrada),
ldenLlflcao do Llpo de dado de ,*+&,.& (resposLa).
um (&,)&, denLro do qual so:
declaradas varlvels locals,
codlflcadas as lnsLrues,
calculada uma resposLa a ser devolvlda a quem lnvocou a funo.

Funes - Chamada (execuo)
Uma funo executada quando algum mdulo a cham-
lo pelo nome e informar parmetros compatveis com
a lista de parmetros dada na assinatura da funo.
Como a funo devolve uma resposta (algum valor), ela
pode ser aproveitada como um termo dentro de
expresses.
Lxemplos:
a = soma(x, y),
w = cubo(u) * ralzCuadrada(v),

Assinatura de Funes
public static <tipoRetorno> nomeFuncao (<listaParam>)

O nome da funo segue as mesmas regras de
nomeao de variveis
A lista de parmetros <listaParam> :
segue as regras de declarao de varlvels, cada parmeLro e separado por vlrgulas
pode ser vazla (os parnLeses aparecem vazlos)
O tipo de retorno <tipoRetorno> o tipo do dado
devolvido como resposta da funo. Pode ser
tipo primitivo ou referncia para tipo
composto.
Corpo de Funes
Como funes devolvem uma resposta,
obrigatrio que, no corpo de uma
funo, haja a instruo de retorno:
,*+$,. '/6%",#7-)#",

Onde umCertoValor um valor ou o nome
de uma varivel
valor/varlvel deve Ler o !*'!& +-)& declarado na asslnaLura da funo,
em (,*!#8%,#"3#0

Criao de Funes - Exemplo
public static <tipoRetorno> nomeFuncao (<listaParam>)

public static int soma ( int a, int b ) {

// codlflcao: corpo da funo

lnL resulLado, // varlvel do mesmo Llpo do reLorno

resulLado = . . .

reLurn resulLado, // flnallzao da funo, com
} // devoluo da resposta
Chamada de Funes
A sintaxe que definimos vale para chamadas
de funes que so codificadas no mesmo
arquivo (mesma classe)

possvel chamarmos funes codificadas em
outras classes, bastando informar o nome da
classe:
NomeDaClasse.nomeFuncao ( <parametros> )
Exemplos de Funes
Com freqncia ns temos usado chamada a
funes em Java:
enLrada = !CpLlonane7showlnpuLulalog ( umaMsg ) ,




valor = Integer.parseInt ( umaString ) ;

!"#$%$ '(#)#*+$ ,-".+$%*/*+0%$ 10
+20((' 34,#*$1501'B 97' %'E$2E'
780 F#-*1C +$8$ -'(,$(#0
G0-*)E'2 %$ #*,$ F#-*1CB
97' -'+'H' 0 -'(,$(#0 %0
/71IJ$ (K$L<1,7#M*02$C
G0-*)E'2 %$ #*,$ *1#B 97' -'+'H' 0
-'(,$(#0 %0 /71IJ$ ,0-('<1#
!"#$%$ '(#)#*+$ ,-".+$%*/*+0%$ 10 +20(('
<1#'C'-B 97' %'E$2E' 78 *1# +$8$ -'(,$(#0
Vamos criar funes que interagem com o usurio, para
que ele digite dados via teclado.
Essas funes sero reutilizadas em todos os
exerccios de hoje em diante.
Para tanto,
Crle um pro[eLo chamado :&#$%2,-@2(2&
Crle um pacoLe com '*$A&!*
Crle uma classe chamada =.+,2#2B2-#2
1odos os demals programas devem esLar nesLe pro[eLo/pack, para Lerem
acesso a =.+,2#2B2-#2

Funes: Classe EntradaSaida
Interfaces das funes que codificaremos:

publlc sLaLlc -.+ lelnLelro ( SLrlng umaMsg )
publlc sLaLlc #&$8%* le8eal ( SLrlng umaMsg )
publlc sLaLlc B+,-.; leCadela ( SLrlng umaMsg )
publlc sLaLlc (C2, leCaracLere ( SLrlng umaMsg )

As funes acima recebem um texto a ser exibido para o
usurio, para infom-lo sobre o que deve ser digitado;
retornam o dado conforme seu tipo.

Classe EntradaSaida (1/4)
package pacote;
import javax.swing.JOptionPane;
public class EntradaSaida {

// mtodo esttico que retorna um inteiro lido do usurio:
public static int leInteiro (String msg) {

String ent;
int i=0;

ent = JOptionPane.showInputDialog ( msg );
i = Integer.parseInt( ent );

return i; // devolve um tipo int como resposta

} // fim do mtodo leInteiro


Classe EntradaSaida (2/4)
// mtodo esttico que retorna um nmero real lido do usurio:
public static double leReal (String msg) {
String ent;
ent = JOptionPane.showInputDialog ( msg );
return Double.parseDouble( ent ); // devolve um tipo double
// como resposta
} // fim do mtodo leReal


// mtodo esttico que retorna um texto do usurio:
public static String leCadeia (String msg) {
String ent;
ent = JOptionPane.showInputDialog ( msg );
return ent; // devolve um tipo String como resposta

} // fim do mtodo leCadeia

Classe EntradaSaida (3/4)
// mtodo esttico que retorna um caractere do usurio:
public static char leCaractere (String msg) {

String ent;

ent = leCadeia (msg); // chama a funo leCadeia desta
classe

return ent.charAt(0); // retorna o 1 caractere, ignora os
demais

} // fim do mtodo leCaractere


Classe EntradaSaida (4/4)
Por fim, vamos acrescentar classe EntradaSaida o
procedimento exibeMsg que codificamos na ltima aula:

// mtodo que exibe uma mensagem para o usurio:

public static void exibeMsg (String msg) {

JOptionPane.showMessageDialog ( null, msg );

} // fim do mtodo exibeMsg

} // fim da classe EntradaSaida

Teste da Classe EntradaSaida
Codifique e compile o cdigo da Classe EntradaSaida,
dos slides anteriores (pegar cdigo pronto do site).
Vamos testar a classe EntradaSaida, escrevendo outros
programas, que contenham o mdulo principal (mtodo
main), que o cdigo executado quando pedimos a
execuo do programa (Run as Java Application).
Para cada programa, crie nova classe, dentro de seu
pacote, no projeto Modularizacao:
ADE crle maln na classe LnLradaSalda!
use os meLodos de LnLradaSalda (delxe de usar !CpLlonane
expllclLamenLe!)

Teste da Classe EntradaSaida (1/4)
Problema: escrever um programa modularizado que calcula a rea de um
Tringulo, dada sua base e altura, usando a classe EntradaSaida.

Algoritmo visto na disciplina Lgica de Programao:

Nome: TestaCalculoArea
Objetivo: Ilustrar chamada de Funes
Variveis:
real b, a, area
Inicio
Leia b
Leia a
area calculaArea ( b, a ) <efetua a chamada funo>
Escreva area
Fim

Teste da Classe EntradaSaida (2/4)
Continuao do Algoritmo :

Funo real calculaArea ( real base, real altura )
Objetivo: Ilustrar codificao de Funo
Variveis:
real resultado
Inicio
resultado ( base * altura ) / 2
Retorna resultado <encerra a funo
devolvendo a resposta>
Fim

Teste da Classe EntradaSaida (3/4)
// transcrio em Java:
package pacote; // note que no preciso importar JOptionPane
public class TestaCalculoArea {

public static void main ( String args[ ] ) {

double b, a, area;

b = EntradaSaida.leReal ( "Digite o valor da base do tringulo: );
a = EntradaSaida.leReal ( "Digite o valor da altura do tringulo: );



area = calculaArea (b,a);
EntradaSaida.exibeMsg ( "A rea do tringulo de base " + b +
" e altura " + a + " igual a " + area);
} // fim do mtodo main (mdulo principal)
. . . continua . . .

>K080%0 %0 /71IJ$ 2';'02B
97' '(#) +$%*/*+0%0 10
+20((' N1#-0%0F0*%0
>K080%0 %0 /71IJ$
+02+7206-'0B 97' '(#)
+$%*/*+0%0 1'(#0 +20(('
Teste da Classe EntradaSaida (4/4)
. . . continuao . . .
/* Funo calculaArea:
* Recebe valores de base e altura de um tringulo
* Devolve a rea respectiva
*/
public static double calculaArea ( double base, double altura ) {

double resultado; // varivel do mesmo tipo de retorno

resultado = ( base * altura ) / 2;

return resultado; // devolve a rea guardada em resultado

} // fim da funo calculaArea

} // fim da classe TestaCalculoArea (fim do arquivo)

Exerccio 8.1 - Funes
Escreva uma nova funo, dentro da classe TestaCalculoArea
que acabamos de codificar.

A assinatura (interface) da funo :
public static double maior ( double a, double b , double c)

A funo maior recebe trs valores reais e devolve o maior
deles.

Exerccio 8.2 - Funes
Modifique o main de TestaCalculoArea, que
acabamos de codificar, para que:

pea para que o usurlo dlglLe dados de Lrs Lrlngulos
exlba o !2-&, valor de F,*2 denLre os Lrs Lrlngulos

use necessarlamenLe os mdulos [ felLos (e no use
!CpLlonane no cdlgo do maln)

Exerccio 8.3 - Funes
Crie uma nova classe chamada Medias, que contm as
seguintes funes, identificadas pelas assinaturas:
public static double media ( double n1, double n2 )
public static double percentual (double valor, double total )

A funo media recebe duas notas (n1 e n2, entre 0 e 10) e
retorna a mdia ponderada dada por (n1 + 2*n2) / 3
A funo percentual recebe um valor e um total, e retorna
um nmero que representa o percentual do total,
relativamente ao valor. Exemplo:
a chamada !%"$%3,'-) 9 :;< = >;< ? recebe como resposLa o valor 73.0 (pols
3 equlvale a 73 de 4)

Exerccio 8.4 - Funes
Na classe Medias, codifique o main que:
em um lao, l duas noLas para cada aluno, calcula a medla
usando a funo !*#-2, do exerclclo 8.3, conLa quanLos alunos
foram aprovados e quanLo foram reprovados. A prlmelra noLa
negaLlva forneclda encerra o lao.
C programa exlbe os LoLals de aprovados e reprovados na forma
de percenLual (use a funo )*,(*.+$2%).
Consldere que a medla para aprovao e 6.0.
use necessarlamenLe os meLodos da classe LnLradaSalda

Você também pode gostar