POO – UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · POO – UML e Outros...
Transcript of POO – UML e Outros Conceitos - vpcamargo.com.br DE POO HERANCA... · POO – UML e Outros...
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
Prof. Vicente Paulo de CamargoProf. Vicente Paulo de Camargo
UMLUML -- INTRODUÇÃOINTRODUÇÃO
••UML =UML = UnifiedUnified ModelingModeling LanguageLanguage = linguagem de modelagem de= linguagem de modelagem desistemassistemas
••PermitePermite especificar,especificar, visualizarvisualizar ee documentardocumentar modelosmodelos dede softwaresoftwareorientadosorientados aa objetosobjetos atravésatravés dede diagramasdiagramas ee notaçõesnotações específicasespecíficas
••AA UMLUML éé controladacontrolada pelopelo OMGOMG ((ObjectObject ManagementManagement GroupGroup))
••ParaPara MaioresMaiores detalhesdetalhes acesseacesse ::http://docs.kde.org/stable/pt_BR/kdesdk/umbrello/uml-basics.html
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
••UML =UML = UnifiedUnified ModelingModeling LanguageLanguage = linguagem de modelagem de= linguagem de modelagem desistemassistemas
••PermitePermite especificar,especificar, visualizarvisualizar ee documentardocumentar modelosmodelos dede softwaresoftwareorientadosorientados aa objetosobjetos atravésatravés dede diagramasdiagramas ee notaçõesnotações específicasespecíficas
••AA UMLUML éé controladacontrolada pelopelo OMGOMG ((ObjectObject ManagementManagement GroupGroup))
••ParaPara MaioresMaiores detalhesdetalhes acesseacesse ::http://docs.kde.org/stable/pt_BR/kdesdk/umbrello/uml-basics.html
ASSINATURA DE MÉTODOASSINATURA DE MÉTODO
• ÉÉ aa declaraçãodeclaração dodo métodométodo contendocontendo visibilidadevisibilidade,,tipotipo dede retornoretorno,, nomenome ee parâmetrosparâmetros
•Parâmetros Formais: São os parâmetros definidos nadeclaração do método••ExemploExemplo: intint soma(soma(intint a,a, intint b)b)
aa ee bb sãosão parâmetrosparâmetros formaisformais
•Parâmetros Reais: São os parâmetros existentes nachamada de um método••ExemploExemplo: intint resultado=soma(resultado=soma(3030,,2020))
3030 ee 2020 sãosão parâmetrosparâmetros reaisreais
privateprivate intint produto(produto(intint x,x, intint y)y)
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
• ÉÉ aa declaraçãodeclaração dodo métodométodo contendocontendo visibilidadevisibilidade,,tipotipo dede retornoretorno,, nomenome ee parâmetrosparâmetros
•Parâmetros Formais: São os parâmetros definidos nadeclaração do método••ExemploExemplo: intint soma(soma(intint a,a, intint b)b)
aa ee bb sãosão parâmetrosparâmetros formaisformais
•Parâmetros Reais: São os parâmetros existentes nachamada de um método••ExemploExemplo: intint resultado=soma(resultado=soma(3030,,2020))
3030 ee 2020 sãosão parâmetrosparâmetros reaisreais
MÉTODO ABSTRATOMÉTODO ABSTRATO
• É UM MÉTODO QUE POSSUI APENAS UMAASSINATURA.
•NÃO TEM COM CORPO
•UMA CLASSE QUE TEM UM MÉTODO ABSTRATO É,NECESSARIAMENTE, UMA CLASSE ABSTRATA
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
• É UM MÉTODO QUE POSSUI APENAS UMAASSINATURA.
•NÃO TEM COM CORPO
•UMA CLASSE QUE TEM UM MÉTODO ABSTRATO É,NECESSARIAMENTE, UMA CLASSE ABSTRATA
MÉTODO STATICMÉTODO STATIC
• É UM MÉTODO DE CLASSE E NÃO DE OBJETO•Considere o exemplo do método sqrt(), que é ummétodo estático da classe Math
•Exemplo de uso: Cálculo da raiz quadrada de 5
•double sqr2 = Math.sqrt(2.0);
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
• É UM MÉTODO DE CLASSE E NÃO DE OBJETO•Considere o exemplo do método sqrt(), que é ummétodo estático da classe Math
•Exemplo de uso: Cálculo da raiz quadrada de 5
•double sqr2 = Math.sqrt(2.0);
Não foi necessário instanciar objetosNão foi necessário instanciar objetosReferenciouReferenciou--se apenas o nome da classese apenas o nome da classe
CLASSE ABSTRATACLASSE ABSTRATA
Classe abstrata serve apenas como modelo para outras classesClasse abstrata serve apenas como modelo para outras classes
Sempre devem ser herdadas e não podem ser instanciadasSempre devem ser herdadas e não podem ser instanciadas
Podem conter ou não métodos abstratosPodem conter ou não métodos abstratos
Os métodos abstratos devem ser implementados em uma classeOs métodos abstratos devem ser implementados em uma classeconcreta, que é subclasse de uma classe abstrataconcreta, que é subclasse de uma classe abstrata
Se uma classe abstrata herdar outra classe abstrata, a classe queSe uma classe abstrata herdar outra classe abstrata, a classe queherda não precisa implementar os métodos abstratos.herda não precisa implementar os métodos abstratos.
Para criarmos uma classe ou método abstrato usamos a palavraPara criarmos uma classe ou método abstrato usamos a palavra--chavechave abstractabstract na frente do nome do/da método/classena frente do nome do/da método/classe
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
Classe abstrata serve apenas como modelo para outras classesClasse abstrata serve apenas como modelo para outras classes
Sempre devem ser herdadas e não podem ser instanciadasSempre devem ser herdadas e não podem ser instanciadas
Podem conter ou não métodos abstratosPodem conter ou não métodos abstratos
Os métodos abstratos devem ser implementados em uma classeOs métodos abstratos devem ser implementados em uma classeconcreta, que é subclasse de uma classe abstrataconcreta, que é subclasse de uma classe abstrata
Se uma classe abstrata herdar outra classe abstrata, a classe queSe uma classe abstrata herdar outra classe abstrata, a classe queherda não precisa implementar os métodos abstratos.herda não precisa implementar os métodos abstratos.
Para criarmos uma classe ou método abstrato usamos a palavraPara criarmos uma classe ou método abstrato usamos a palavra--chavechave abstractabstract na frente do nome do/da método/classena frente do nome do/da método/classe
Diagrama de classeDiagrama de classe –– cont.cont.
HERANÇA SIMPLES NA UMLHERANÇA SIMPLES NA UMLHERANÇA SIMPLES NA UMLHERANÇA SIMPLES NA UML
GENERALIZAÇÃOGENERALIZAÇÃOGENERALIZAÇÃOGENERALIZAÇÃO
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
ESPECIALIZAÇÃOESPECIALIZAÇÃOESPECIALIZAÇÃOESPECIALIZAÇÃO
HERANÇA MÚLTIPLA EM JAVAHERANÇA MÚLTIPLA EM JAVAHERANÇA MÚLTIPLA EM JAVAHERANÇA MÚLTIPLA EM JAVA
Seja um sistema que possua Funcionários, Gerentes, DiretoresSeja um sistema que possua Funcionários, Gerentes, Diretorese outrose outros
Gerentes e DIRETORES acessam partes específicas do sistemaGerentes e DIRETORES acessam partes específicas do sistema
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..
Seja o código do sistema que necessita receber usuário eSeja o código do sistema que necessita receber usuário esenha:senha:classclass Sistema{Sistema{
voidvoid loginSistemaloginSistema((FuncionarioFuncionario f)f){//{//f.autenticaf.autentica(....) ..ERRO!(....) ..ERRO!nem todonem todo FuncionarioFuncionario tem esse método}tem esse método}
}}
Outra solução....Outra solução....
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
Seja o código do sistema que necessita receber usuário eSeja o código do sistema que necessita receber usuário esenha:senha:classclass Sistema{Sistema{
voidvoid loginSistemaloginSistema((FuncionarioFuncionario f)f){//{//f.autenticaf.autentica(....) ..ERRO!(....) ..ERRO!nem todonem todo FuncionarioFuncionario tem esse método}tem esse método}
}}
Outra solução....Outra solução....classclass Sistema{Sistema{
voidvoid loginSistemaloginSistema(Diretor d){(Diretor d){ d.autenticad.autentica()...}()...}voidvoid loginSistemaloginSistema(Gerente g){(Gerente g){ g.autenticag.autentica()...}()...}}}
ProblemaProblema: toda nova classe autenticável exigirá um novo: toda nova classe autenticável exigirá um novométodo na classe Sistemamétodo na classe Sistema
HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..
Outra solução:Outra solução:Criar uma classe na árvore de herança denominada deCriar uma classe na árvore de herança denominada deAutenticavelAutenticavel::
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..
Dessa forma, temos:Dessa forma, temos:
classclass Sistema{Sistema{voidvoid loginSistemaloginSistema((AutenticavelAutenticavel a){a){ a.autenticaa.autentica()...}()...}}}
<<ocorre sem problema>><<ocorre sem problema>>
Mas, queremos ampliar a complexidade:Mas, queremos ampliar a complexidade:Queremos que clientes acessem o sistema....Queremos que clientes acessem o sistema....Simples:Simples:Criamos a classe Cliente como subclasse deCriamos a classe Cliente como subclasse de AutenticavelAutenticavel
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
Dessa forma, temos:Dessa forma, temos:
classclass Sistema{Sistema{voidvoid loginSistemaloginSistema((AutenticavelAutenticavel a){a){ a.autenticaa.autentica()...}()...}}}
<<ocorre sem problema>><<ocorre sem problema>>
Mas, queremos ampliar a complexidade:Mas, queremos ampliar a complexidade:Queremos que clientes acessem o sistema....Queremos que clientes acessem o sistema....Simples:Simples:Criamos a classe Cliente como subclasse deCriamos a classe Cliente como subclasse de AutenticavelAutenticavel
HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..
PROBLEMA:PROBLEMA:Cada cliente terá salário e outros recursos da classeCada cliente terá salário e outros recursos da classeFuncionarioFuncionario, que Não faz sentido, que Não faz sentido
O que fazer então?O que fazer então?
A melhor solução é o uso de uma classe denominada deA melhor solução é o uso de uma classe denominada de
INTERFACEINTERFACE
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
PROBLEMA:PROBLEMA:Cada cliente terá salário e outros recursos da classeCada cliente terá salário e outros recursos da classeFuncionarioFuncionario, que Não faz sentido, que Não faz sentido
O que fazer então?O que fazer então?
A melhor solução é o uso de uma classe denominada deA melhor solução é o uso de uma classe denominada de
INTERFACEINTERFACE
HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..HERANÇA MÚLTIPLA EMHERANÇA MÚLTIPLA EM JAVAJAVA--contcont..
É um tipo de classe que:É um tipo de classe que:
•• Não pode serNão pode ser instanciávelinstanciável••É referenciada comÉ referenciada com implementsimplements no lugar deno lugar de extendsextends•• Só pode possuir assinaturas de métodos públicos e abstratosSó pode possuir assinaturas de métodos públicos e abstratos(sem corpo).(sem corpo).••Os prefixos abstract eOs prefixos abstract e publicpublic podem ser usados, mas são empodem ser usados, mas são emgeral omitidos;geral omitidos;•• Não pode conter variáveis de instância ou de classe (Não pode conter variáveis de instância ou de classe (staticstatic););•• Pode conter declarações de constantes (com prefixo final ePode conter declarações de constantes (com prefixo final einicializadas para um valor)inicializadas para um valor)••prefixoprefixo staticstatic pode ser usado, mas é em geral omitido;pode ser usado, mas é em geral omitido;•• Pode ser criada como subinterface de outra interface jáPode ser criada como subinterface de outra interface jáexistente, usandoexistente, usando extendsextends
INTERFACEINTERFACEINTERFACEINTERFACE
InterfaceInterface IntfBIntfB extendsextends IntfAIntfA
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
É um tipo de classe que:É um tipo de classe que:
•• Não pode serNão pode ser instanciávelinstanciável••É referenciada comÉ referenciada com implementsimplements no lugar deno lugar de extendsextends•• Só pode possuir assinaturas de métodos públicos e abstratosSó pode possuir assinaturas de métodos públicos e abstratos(sem corpo).(sem corpo).••Os prefixos abstract eOs prefixos abstract e publicpublic podem ser usados, mas são empodem ser usados, mas são emgeral omitidos;geral omitidos;•• Não pode conter variáveis de instância ou de classe (Não pode conter variáveis de instância ou de classe (staticstatic););•• Pode conter declarações de constantes (com prefixo final ePode conter declarações de constantes (com prefixo final einicializadas para um valor)inicializadas para um valor)••prefixoprefixo staticstatic pode ser usado, mas é em geral omitido;pode ser usado, mas é em geral omitido;•• Pode ser criada como subinterface de outra interface jáPode ser criada como subinterface de outra interface jáexistente, usandoexistente, usando extendsextends
POLIMORFISMOPOLIMORFISMO
ÉÉ oo mecanismomecanismo queque ocorreocorrequandoquando umum métodométodo temtemcapacidadecapacidade dede responderresponder dedeváriasvárias formas,formas, desdedesde queque suasuaassinaturaassinatura nãonão sejaseja alteradaalterada..
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
ÉÉ oo mecanismomecanismo queque ocorreocorrequandoquando umum métodométodo temtemcapacidadecapacidade dede responderresponder dedeváriasvárias formas,formas, desdedesde queque suasuaassinaturaassinatura nãonão sejaseja alteradaalterada..
POLIMORFISMOPOLIMORFISMO –– Cont.Cont.Polimorfismo comPolimorfismo com extendsextends -- ExemplosExemplos
classclass AnimalAnimal{{
publicpublic String comer()String comer(){{
returnreturn( "Animal Comendo..." );( "Animal Comendo..." );}}
}}
classclass CachorroCachorro extendsextends AnimalAnimal{{
publicpublic String comer()String comer(){{
returnreturn("Cachorro Comendo..." );("Cachorro Comendo..." );}}
}}
EXERCÍCIOEXERCÍCIO:: CrieCrie umum programaprograma queque permitapermita simularsimular oo polimorfismopolimorfismo comcom asas classesclassesAnimal,Animal, CachorroCachorro ee GatoGato EMEM UMUM MÉTODOMÉTODO ESPECÍFICOESPECÍFICO..
classclass GatoGato extendsextends AnimalAnimal{{
publicpublic String comer()String comer(){{
returnreturn("Gato Comendo..." );("Gato Comendo..." );}}
}}
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
Polimorfismo comPolimorfismo com extendsextends -- ExemplosExemplos
classclass AnimalAnimal{{
publicpublic String comer()String comer(){{
returnreturn( "Animal Comendo..." );( "Animal Comendo..." );}}
}}
classclass CachorroCachorro extendsextends AnimalAnimal{{
publicpublic String comer()String comer(){{
returnreturn("Cachorro Comendo..." );("Cachorro Comendo..." );}}
}}
EXERCÍCIOEXERCÍCIO:: CrieCrie umum programaprograma queque permitapermita simularsimular oo polimorfismopolimorfismo comcom asas classesclassesAnimal,Animal, CachorroCachorro ee GatoGato EMEM UMUM MÉTODOMÉTODO ESPECÍFICOESPECÍFICO..
classclass GatoGato extendsextends AnimalAnimal{{
publicpublic String comer()String comer(){{
returnreturn("Gato Comendo..." );("Gato Comendo..." );}}
}}
POLIMORFISMOPOLIMORFISMO -- Cont.Cont.PolimorfismoPolimorfismo –– extendsextends -- ExemplosExemplos –– TestaAnimalTestaAnimalimportimport javaxjavax.swing.*;.swing.*;classclass TestaAnimalTestaAnimal{{
publicpublic voidvoid verAnimalComerverAnimalComer( Animal( Animal animalanimal )){{
String s="";String s="";s=animal.comer();s=animal.comer();System.System.out.printlnout.println(s);(s);
}}
publicpublic staticstatic voidvoid mainmain( String[ ]( String[ ] argsargs )){{
TestaAnimalTestaAnimal t =t = newnew TestaAnimalTestaAnimal();();t.verAnimalComert.verAnimalComer(( newnew Animal() );Animal() );t.verAnimalComert.verAnimalComer(( newnew Cachorro() );Cachorro() );t.verAnimalComert.verAnimalComer(( newnew Gato() );Gato() );
}}}}
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
PolimorfismoPolimorfismo –– extendsextends -- ExemplosExemplos –– TestaAnimalTestaAnimalimportimport javaxjavax.swing.*;.swing.*;classclass TestaAnimalTestaAnimal{{
publicpublic voidvoid verAnimalComerverAnimalComer( Animal( Animal animalanimal )){{
String s="";String s="";s=animal.comer();s=animal.comer();System.System.out.printlnout.println(s);(s);
}}
publicpublic staticstatic voidvoid mainmain( String[ ]( String[ ] argsargs )){{
TestaAnimalTestaAnimal t =t = newnew TestaAnimalTestaAnimal();();t.verAnimalComert.verAnimalComer(( newnew Animal() );Animal() );t.verAnimalComert.verAnimalComer(( newnew Cachorro() );Cachorro() );t.verAnimalComert.verAnimalComer(( newnew Gato() );Gato() );
}}}}
POLIMORFISMOPOLIMORFISMO -- Cont.Cont.Polimorfismo comPolimorfismo com implementsimplements -- ExemplosExemplosinterface Carrointerface Carro{{
publicpublic String acelerar();String acelerar();}}
classclass FerrariFerrari implementsimplements CarroCarro{{
publicpublic String acelerar()String acelerar(){{
returnreturn("Ferrari acelerando...("Ferrari acelerando...\\n");n");}}
}}
classclass FuscaFusca implementsimplements CarroCarro{{
publicpublic String acelerar()String acelerar(){{
returnreturn("Fusca.....("Fusca.....\\n");n");}}
}}EXERCÍCIO: Elabore um programa que implemente o polimorfismocom interface, com ou sem método.
importimport javaxjavax.swing.*;.swing.*;classclass TestaCarroTestaCarro{{publicpublic staticstatic voidvoid mainmain(String[ ](String[ ] argsargs)){{
String s="";String s="";Carro c =Carro c = newnew Ferrari();Ferrari();s=s=c.acelerarc.acelerar();();c =c = newnew Fusca();Fusca();s+=s+=c.acelerarc.acelerar();();JOptionPaneJOptionPane..showMessageDialogshowMessageDialog
((nullnull,s,",s,"ImplementsImplements",1);",1);}}
}}
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
Polimorfismo comPolimorfismo com implementsimplements -- ExemplosExemplosinterface Carrointerface Carro{{
publicpublic String acelerar();String acelerar();}}
classclass FerrariFerrari implementsimplements CarroCarro{{
publicpublic String acelerar()String acelerar(){{
returnreturn("Ferrari acelerando...("Ferrari acelerando...\\n");n");}}
}}
classclass FuscaFusca implementsimplements CarroCarro{{
publicpublic String acelerar()String acelerar(){{
returnreturn("Fusca.....("Fusca.....\\n");n");}}
}}EXERCÍCIO: Elabore um programa que implemente o polimorfismocom interface, com ou sem método.
importimport javaxjavax.swing.*;.swing.*;classclass TestaCarroTestaCarro{{publicpublic staticstatic voidvoid mainmain(String[ ](String[ ] argsargs)){{
String s="";String s="";Carro c =Carro c = newnew Ferrari();Ferrari();s=s=c.acelerarc.acelerar();();c =c = newnew Fusca();Fusca();s+=s+=c.acelerarc.acelerar();();JOptionPaneJOptionPane..showMessageDialogshowMessageDialog
((nullnull,s,",s,"ImplementsImplements",1);",1);}}
}}
Complemento sobre aplicaçõesComplemento sobre aplicaçõesConsidere a seguinte situação:Considere a seguinte situação:
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
Um programa principal necessitaUm programa principal necessitaacessar informações deacessar informações de pessoaspessoas eeseus respectivosseus respectivos telefonestelefones
Complemento sobre aplicaçõesComplemento sobre aplicações -- cont.cont.POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
EXERCÍCIOEXERCÍCIO
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
EXERCÍCIO PRÁTICO SOBREEXERCÍCIO PRÁTICO SOBREPROCESSAMENTO DEPROCESSAMENTO DE
INFORMAÇÕESINFORMAÇÕESEMEM
ARQUIVO TEXTO COM OBJETOSARQUIVO TEXTO COM OBJETOS
EXERCÍCIO PRÁTICO SOBREEXERCÍCIO PRÁTICO SOBREPROCESSAMENTO DEPROCESSAMENTO DE
INFORMAÇÕESINFORMAÇÕESEMEM
ARQUIVO TEXTO COM OBJETOSARQUIVO TEXTO COM OBJETOS
VALIDAÇÃO DE DADOSVALIDAÇÃO DE DADOS
POOPOO –– UML e Outros ConceitosUML e Outros Conceitos
VALIDAÇÃO DE DADOSVALIDAÇÃO DE DADOS
GERAÇÃO DE NÚMEROS RANDOMICOSGERAÇÃO DE NÚMEROS RANDOMICOSPOOPOO –– UML e Outros ConceitosUML e Outros Conceitos
••A geração de números às vezes se torna importante,A geração de números às vezes se torna importante,como é o caso, por exemplo, de geração de valores paracomo é o caso, por exemplo, de geração de valores parateste de um programateste de um programa
••Em Java a geração de número é realizada com a classeEm Java a geração de número é realizada com a classeRandomRandom do pacotedo pacote MathMath
••Essa classe gera números fracionários no intervalo [0,1[Essa classe gera números fracionários no intervalo [0,1[
••A geração de números às vezes se torna importante,A geração de números às vezes se torna importante,como é o caso, por exemplo, de geração de valores paracomo é o caso, por exemplo, de geração de valores parateste de um programateste de um programa
••Em Java a geração de número é realizada com a classeEm Java a geração de número é realizada com a classeRandomRandom do pacotedo pacote MathMath
••Essa classe gera números fracionários no intervalo [0,1[Essa classe gera números fracionários no intervalo [0,1[
GERAÇÃO DE NÚMEROS RANDOMICOSGERAÇÃO DE NÚMEROS RANDOMICOS -- exemploexemploPOOPOO –– UML e Outros ConceitosUML e Outros Conceitos
LINHA 11: Gera um númeroLINHA 11: Gera um númerofracionário padrãofracionário padrão
LINHA 11: Gera um númeroLINHA 11: Gera um númerofracionário padrãofracionário padrão
LINHA 15: Gera um número entreLINHA 15: Gera um número entre1 e 101 e 10
LINHA 15: Gera um número entreLINHA 15: Gera um número entre1 e 101 e 10
LINHA 15: Gera um número entreLINHA 15: Gera um número entre1 e 101 e 10
LINHA 15: Gera um número entreLINHA 15: Gera um número entre1 e 101 e 10
LINHA 19: Gera um número entreLINHA 19: Gera um número entre50 e 14950 e 149
LINHA 19: Gera um número entreLINHA 19: Gera um número entre50 e 14950 e 149
ExercícioExercícioPOOPOO –– UML e Outros ConceitosUML e Outros Conceitos
Geração randômica deGeração randômica deinformaçõesinformações
Geração randômica deGeração randômica deinformaçõesinformações