poo – uml e outros conceitos - vpcamargo.com.br de poo heranca... · poo – uml e outros...

26
POO POO – UML e Outros Conceitos UML e Outros Conceitos Prof. Vicente Paulo de Camargo Prof. Vicente Paulo de Camargo

Upload: duongtruc

Post on 13-Dec-2018

239 views

Category:

Documents


0 download

TRANSCRIPT

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

Herança MúltiplaHerança MúltiplaPOOPOO –– UML e Outros ConceitosUML e Outros Conceitos

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

F I MF I M

POOPOO –– UML e Outros ConceitosUML e Outros Conceitos

F I MF I M