Aula 02 Conceitos e Princípios de Modularidade 1...

Click here to load reader

  • date post

    09-Nov-2018
  • Category

    Documents

  • view

    212
  • download

    0

Embed Size (px)

Transcript of Aula 02 Conceitos e Princípios de Modularidade 1...

  • 9/5/2016

    1

    Aula 02Conceitos e Princpios de Modularidade 1

    Alessandro Garcia

    LES/DI/PUC-Rio

    Agosto 2016

    Mar 2009 2 / 18Alessandro Garcia LES/PUC-Rio

    Lembretes

    Horrio das aulas

    inicio cada aula a partir de 13:15

    Stio (site) da disciplina: www.inf.puc-rio.br/~inf1301

    j atualizado

    material de apresentao da disciplina

    eliminei aula do dia 7/9

    notas de aula disponveis aps as aulas

    avisos diversos: provas so no horrio de aula (incio as 13:00)

    software e documentos para download

    instalao completa do Visual Studio

    na instalao mnima, certas bibliotecas importantes podem ser deixadas de fora

  • 9/5/2016

    2

    Software tambm tem arquitetura

    September 16

    3

    ... mas nem sempre ela modular!

    September 16

    4

  • 9/5/2016

    3

    Modularidade por que importante?

    Hadoop

    September 16

    5

    Modularidade por que importante?

    Modularidade real - Hadoop

    September 16

    6

    Nenad Medvidovi. When, Where, and Why Do Software Systems Architectures Decay? March 2013.

  • 9/5/2016

    4

    7 /26Alessandro Garcia LES - DI/PUC-Rio

    Especificao

    Objetivos dessa aula

    Discutir o que o que vm a ser abstrao

    Estudar em detalhe o que vm a ser interfaces

    Apresentar o conceito de mdulo

    Como estruturar um mdulo em C?

    Referncia bsica:

    Captulo 5 do livro texto

    Slides adaptados de: Staa, A.v. Notas de Aula em Programao Modular; 2008.

    8 /26Alessandro Garcia LES - DI/PUC-Rio

    Sumrio

    Abstrao

    Nveis de abstrao

    Interfaces

    conceituao

    relacionamento cliente-servidor

    interfaces providas e requeridas

    Mdulo

  • 9/5/2016

    5

    9 /26Alessandro Garcia LES - DI/PUC-Rio

    Abstrao

    O que isso?

    10 /26Alessandro Garcia LES - DI/PUC-Rio

    Abstrao

    E agora?

  • 9/5/2016

    6

    11 /26Alessandro Garcia LES - DI/PUC-Rio

    Abstrao

    Abstrao: omisso de detalhes, mas sem que se perca a compreenso da essncia do artefato

    Entretanto, a falta de suficientes detalhes pode impedir a compreenso da sua essncia

    O excesso de detalhe torna mais trabalhosa a operao com o artefato

    Um dos problemas...

    Excesso de detalhes expostos por cada abstrao do sistema...

    September 16

    12

    Nenad Medvidovi. When, Where, and Why Do Software Systems Architectures Decay? March 2013.

  • 9/5/2016

    7

    Quais so os detalhes

    essenciais e suficientes na declarao de uma funo insero em uma lista para quem for cham-la?

    quais as propriedades devem ser declaradas na assinatura/ prottipo da funo?

    Ago 2009 13 /26Alessandro Garcia LES - DI/PUC-Rio

    14 /26Alessandro Garcia LES - DI/PUC-Rio

    Abstrao

    Definio: Uma abstrao denota as caractersticas essenciais de um elemento que distinguem este de todos os outros elementos e, assim, prov limites conceituais bem definidos

    Exemplos de abstraes em um sistema de controle de cursos

    Curso Pessoas: Nome, Endereo, Telefone, Data Nascimento, etc

    Alunos

    Curso, Data Incio, Disciplinas Cursadas, Perodo, Status, etc...

    Professores

    Formao, Tipo de Dedicao, etc...

    Certos detalhes podem ser ignorados deste sistema: Hobbies das pessoas, etnia, altura, peso, etc...

    Temos diferentes nveis de abstrao em um sistema

    Linguagens de programao provem suporte a estes nveis

  • 9/5/2016

    8

    15 /26Alessandro Garcia LES - DI/PUC-Rio

    Nveis de abstrao de um sistema

    Sistema

    Programa

    Componente

    Arquivos, bases de dados,mensagens, plataformaalto

    Linha de cdigo

    Bloco

    Funo

    Mdulo

    Classe

    Mdulos de definioheader files

    Mdulos de definioAPI - Aplication program

    interface

    Elementos pblicos(e protected)

    Parmetrosgeneralizados

    Escopo visvel

    Escopovisvel

    Nveis deabstrao

    concreto

    baixo

    Interface tpica

    certos nveis deabstrao nem sempreso utilizados

    Primeiro Princpio de Programao Modular...

    Mar 2009 16 / 18Alessandro Garcia LES/PUC-Rio

    Cada mdulo deve implementar uma NICA abstrao

    Somente caractersticas essenciais devem ser utilizadas para definir tal abstrao(em relao aos outros mdulos)

    Caractersticas essenciais so expressas nas interfaces dos mdulos

  • 9/5/2016

    9

    17 /26Alessandro Garcia LES - DI/PUC-Rio

    O que uma interface?

    Interfaces so os elementos (as coisas) atravs das quais os mdulos (ou funes) interagem

    uma interface define os elementos visveis necessrios para a comunicao

    outro exemplo de interface em software : janelas para o usurio

    Para que haja comunicao, o cliente e o servidorprecisam ter um vocabulrio (idioma) comum

    Uma funo em um programa C:

    funo cliente precisa conhecer: nome da funo

    tipo de dado utilizado pela funo

    etc...

    18 /26Alessandro Garcia LES - DI/PUC-Rio

    O que consiste ento a interface do mdulo?

    Em computao os elementos de interface de um mdulo so

    funes

    exemplos

    abrir arquivo

    criar lista, inserir elemento, etc...

    dados

    exemplo: lista de palavras, lista de caracteres, caracter, etc...

    eventos

    uma forma de ao instantnea que informa que algo aconteceu, ex. clicou sobre abrir arquivo

    foi pressionado enter com linha de comando contendo xyz

    fim de arquivo foi encontrado

    o relgio atingiu a hora cheia

    eventos excepcionais, tais como: estouro da pilha, memory overflow, etc...

  • 9/5/2016

    10

    19 /26Alessandro Garcia LES - DI/PUC-Rio

    Funo: Compor palavra cliente de...

    /* Precisa valer: inxCharPalavra == 0,

    CharCorr o caractere a ser processado */

    /* Compor a palavra chave */

    while ( CharCorr != Char_EOF )

    {

    if ( TipoCaracter( CharCorr ) == TipoUtil )

    {

    /* Adicionar caractere til palavra */

    Palavra[ inxCharPalavra ] = CharCorr ;

    inxCharPalavra ++ ;

    } else

    {

    /* Saltar caractere separador */

    if ( inxCharPalavra > 0 )

    {

    break ;

    } /* if */

    } /* if */

    CharCorr = LerProximoChar( ) ;

    } /* while */

    /* inxCharPalavra > 0 existe palavra a registrar */

    20 /26Alessandro Garcia LES - DI/PUC-Rio

    Relacionamento cliente servidor

    Cada instncia de comunicao (conexo) ocorre entre

    um cliente

    quem origina a comunicao

    transmissor solicita um servio

    um servidor

    quem recebe e processa a comunicao

    receptor presta um servio

    um servidor pode dar respostas ao cliente

  • 9/5/2016

    11

    21 /26Alessandro Garcia LES - DI/PUC-Rio

    Composio de mdulos:interfaces providas e requeridas

    Mdulo 1

    Mdulo 3

    Mdulo 4 Mdulo 5 Mdulo 6

    Mdulo 2

    clienteservidor

    Interfaceexternada

    Interface(s)requerida(includa)

    Interface provida ou

    Interface requerida

    Exemplo

    Ago 2009 22 /26Alessandro Garcia LES - DI/PUC-Rio

    Mdulo Lista

    Quais seriam possveisfunes pblicas:interface provida?

    Interface

    Provida?

  • 9/5/2016

    12

    Exemplo

    Ago 2009 23 /26Alessandro Garcia LES - DI/PUC-Rio

    Mdulo Lista

    Quais seriam possveisfunes pblicas:interface provida?

    CriarLista()

    InserirElemento(id, elem)

    BuscarElemento(id)

    RemoverElemento(id)

    DestruirLista()

    Exemplo

    Ago 2009 24 /26Alessandro Garcia LES - DI/PUC-Rio

    Mdulo Lista

    CriarLista()

    InserirElemento(id, elem)

    BuscarElemento(id)

    RemoverElemento(id)

    DestruirLista()

    struct Elem

    struct Cabea

    InterfaceProvida

    Dados e funesno providas

    DestruirNo()

    Arquivar()

  • 9/5/2016

    13

    Exemplo

    Ago 2009 25 /26Alessandro Garcia LES - DI/PUC-Rio

    Mdulo Lista

    CriarLista()

    InserirElemento(id, elem)

    BuscarElemento(id)

    RemoverElemento(id)

    DestruirLista()

    struct Elem

    struct Cabea

    InterfaceProvida

    Dados e funesno providas

    DestruirNo()

    Arquivar()

    Mdulo Tabuleiro

    Mdulo PeasExcludas

    CriarTabuleiro()

    DestruirTabuleiro()

    CriarPeas

    Excluidas()

    IncluirPea

    Excluida()

    Exemplo

    Ago 2009 26 /26Alessandro Garcia LES - DI/PUC-Rio

    Mdulo Lista

    CriarLista()

    InserirElemento(id, elem)

    BuscarElemento(id)

    RemoverElemento(id)

    DestruirLista()

    struct Elem

    struct Cabea

    InterfaceProvida

    Dados e funesno providas

    DestruirNo()

    Arquivar()

    Mdulo Tabuleiro

    Mdulo PeasExcludas

    CriarTabuleiro()

    DestruirTabuleiro()

    CriarPeas

    Excluidas()

    IncluirPea

    Excluida()

  • 9/5/2016

    14

    Exemplo

    Ago 2009 27 /26Alessandro Garcia LES - DI/PUC-Rio

    Mdulo Lista

    CriarLista()

    InserirElemento(id, elem)

    BuscarElemento(id)

    RemoverElemento(id)

    DestruirLista()

    struct Elem

    struct Cabea

    InterfaceProvida

    Dados e funesno providas

    DestruirNo()

    Arquivar()

    Mdulo Tabuleiro

    Mdulo PeasExcludas

    CriarTabuleiro()

    DestruirTabuleiro()

    CriarPeas

    Excluidas()

    IncluirPea

    Excluida()InterfacesRequeridas

    28 /32Alessandro Garcia LES/DI/PUC-Rio

    Mdulo: definio geral

    De forma geral: qualquer unidade que podemos tratar de forma independente em um sistema de software

    uma unidade lgica de um programa com interface bem definida