• Nenhum resultado encontrado

Princípios de Modularidade I

N/A
N/A
Protected

Academic year: 2021

Share "Princípios de Modularidade I"

Copied!
12
0
0

Texto

(1)

Princípios de Modularidade I

Aula 04

Agenda

• O que são elementos de programas • Interfaces

• O que são

• A sua importância

• Composição via interfaces

Objetivo

Apresentar e ilustrar os conceitos de interfaces e do relacionamento entre elementos que se comunicam via interfaces.

Referência Capítulo 5

(2)

Elementos de programas

(3)

Interfaces e elementos

Interface é o mecanismo através do qual os elementos de programas realizam a troca de

• dados • comandos • eventos

Os elementos de programas podem ser • blocos de código

• fragmentos de texto de documentação • funções • figuras ou diagramas • seções de documentos • tipos de dados • classes • frameworks • arquivos de dados • módulos • componentes • programas • documentos completos Observação

• Nem todos os elementos são artefatos • Mas todos os artefatos são elementos

(4)

Exemplos de interfaces

Considere a declaração de função em C:

tpDadosAluno * pDadosAluno ObterAluno( unsigned idAluno )

• A interface esperada pela função – elemento servidor – ObterAluno é: • idAluno identificação de um aluno existente, do tipo unsigned; • Base de dados contendo registros de alunos, um valor global não

explicitado na lista de parâmetros

• Os dados do aluno idAluno extraídos da base de dados

• A interface esperada pelo ponto de chamada – elemento cliente ObterAluno é:

• ponteiro válido para uma estrutura do tipo tpDadosAluno contendo os dados do aluno idAluno.

• codificação de valor especial: o ponteiro será NULL, caso não exista registro com chave idAluno na base de dados utilizada

• A interface compartilhada pela função ObterAluno e pelos seus clientes:

• tipo tpDadosAluno descritor dos dados de um aluno. O tipo é tornado disponível através de algum mecanismo de declaração global

A interface com sistemas de suporte é realizada através de • identificadores

• chaves • handles

(5)

Interfaces entre elementos

Elementos de código interagem através de interfaces

Formas de interface

• argumentos passados para parâmetros de funções • valores retornados por funções

• tipos de dados declarados pelo usuário • variáveis membro de objetos

• variáveis globais

• dados contidos em arquivos • arquivos simples

• bases de dados • dados persistentes • interação com o usuário • interação com a plataforma • eventos

• sinais gerados externamente, ex. relógio

• sinais gerados internamente, ex. detecção de problemas, condição observada

• estados

• existência de dados

• dados satisfazendo determinada condição • quadro negro (“black board”)

(6)

Ocorrência de interfaces

Interfaces ocorrem em vários lugares e de várias formas, por exemplo • Entre blocos de uma função, considerando a seqüência de execução:

• cada bloco utiliza os dados resultantes da execução de blocos antecessores no tempo

• cada bloco produz resultados a serem utilizados pelos blocos sucessores no tempo bloco A while ( expressão B ) { bloco C } bloco D

leva a uma seqüência de execução:

bloco A expressão B bloco C expressão B bloco C … expressão B bloco D

• Entre funções de um mesmo programa • Entre classes de um programa

• Entre módulos de um programa • Entre diferentes programas • Entre programas e usuários

• Entre programas e sistemas operacionais

(7)

Relacionamento cliente – servidor

Cada instância de comunicação ocorre entre • um transmissor

• quem origina a comunicação • cliente

• solicita um serviço • um receptor.

• quem recebe e processa a comunicação • servidor

• presta um serviço

• um servidor pode dar respostas ao cliente

Exemplos

• O código da função A contém uma chamada para a função B • A é cliente do servidor B

• mais precisamente a chamada em A é cliente de B

• O módulo C depende de elementos da interface do módulo D • o módulo C é cliente do módulo servidor D

Caso especial

• para poder realizar o processamento

• o servidor pode solicitar ao elemento cliente mais dados ou até a realização de determinado processamento

(8)

Interfaces fornecidas por terceiros

As interfaces entre um determinado par < cliente , servidor > podem ser definidas por elementos diferentes deste par

Exemplos

• Os tipos dos parâmetros de uma função estabelecem uma interface

• parâmetros e correspondentes argumentos devem respeitar os tipos de dados declarados

• tipos coerentes • semântica coerente

• os tipos dos parâmetros podem estar definidos em algum outro lugar possivelmente em outro módulo

• Módulo A (declarador) => A_tpX struct { … }

• Módulo B (servidor) => int Func( A_tpX * pX ) { … } • Módulo C (cliente) => if ( Func( &UmX ) != 0 ) { … } • Bases de dados

• as funções que manipulam dados da base de dados podem depender de parâmetros cuja definição de tipo é estabelecida pela base de dados. • o seu esquema define uma interface

• meta-dados – “dados sobre os dados”

• para poder trocar dados via a base de dados, a interface precisa • ser conhecida

(9)

Interfaces em detalhe

Interfaces possuem:

Sintaxe: linguagem, regras e restrições aplicáveis aos itens intercambiados Exemplos:

• codificação da representação física: (computacional) dos valores

• exemplos: inteiro, flutuante, string terminado com o byte zero, struct • codificação de valores: determinam como devem ser redigidos valores de

determinado tipo

• exemplos: as regras para validar um CPF ou um número de matrícula • regras estruturais: estabelecendo interdependências de valores

• exemplo: em uma lista duplamente encadeada o antecessor do sucessor de um elemento é este mesmo elemento

Semântica: significado de cada item da interface Exemplos:

• O parâmetro float Veloc representa velocidade em m/s

• não basta saber que é float, é necessário saber que o parâmetro é velocidade e que esta é medida de uma certa forma

• O string passado por parâmetro é um nome de pessoa

• não basta saber que é string, é necessário também saber que denota o nome de uma pessoa e que satisfaz determinadas características, ex.: ressalta o nome ou apelido usual ao se comunicar com a pessoa

• O arquivo contém um cadastro de alunos com um formato bem definido • O nó é a raiz de uma estrutura de dados árvore n-ária

• Valores com significados específicos

(10)

Itens de interface

Interfaces são compostas por vários itens • especificações elementares • dados • tipos • funções • classes • tabelas • arquivos

As especificações determinam propriedades relevantes dos itens

• As especificações são necessárias para que o elemento correspondente à interface possa ser corretamente implementado e utilizado

• A especificação poderá ser redigida sob a forma de • comentários

• código em alguma linguagem de especificação, possivelmente misturado com o código fonte, por exemplo Z

• Uma parte da especificação estabelece propriedades das interfaces • semântica dos itens da interface

• valores permitidos

• valores que codificam condições especiais, ex. NULL, 0 , -1, NIL • relacionamentos entre itens da interface

• qualidade assegurada ou requerida • protocolos de uso.

• Protocolos de uso determinam como se deve utilizar (seqüências de ações) os itens da interface deste elemento para que o artefato possa operar

(11)

Princípio fundamental da composição via interface

Para assegurar que os elementos se integrem corretamente, os elementos cliente e os respectivos servidores devem utilizar exatamente as mesmas:

• especificações da interface

• estruturas de dados da interface, exemplos • base de dados

• tabela de símbolos • classes da interface

• tipos de dados da interface (struct) • declarações dos dados interfaceados • declarações das funções da interface

Para cada item da interface existente na interface entre um par de elementos: • é necessário que a sintaxe e a semântica transmitida pelo elemento

transmissor sejam coerentes com a sintaxe e a semântica esperada pelo elemento receptor

• dado • comando • evento • função

• usualmente é requerido que sintaxe e semântica sejam iguais

• é necessário que o estado do receptor seja consistente com os dados sendo transmitidos e com a intenção de uso do receptor tal como visto pelo

transmissor

• é necessário que a versão da interface seja a mesma tanto para o cliente como para o servidor

(12)

Validação de dados na interface

Caso não se possa garantir para todas as interações que o conjunto dos

possíveis valores de um dado transmitido seja um subconjunto dos valores que podem ser recebidos, é necessário que o receptor possua um validador para os dados recebidos.

Por exemplo

• rotina de raiz quadrada especifica que os dados devem ser maiores ou iguais a zero

• se em uma dada instância de ativação esta condição não se verificar, o erro terá sido cometido pelo transmissor

• quando nada é explicitamente especificado sobre os dados, é

necessário que a rotina intercepte todos os valores menores do que zero, emitindo algum retorno de erro

• o desenvolvedor não escapa de tratar o caso menor do que zero • ou especifica que não pode receber tal valor,

• neste caso o programador cliente arcará com as conseqüências da não observância

• ou especifica o que acontece se receber tal valor

• neste caso o programador cliente precisa saber tratar retornos de erro ou outras formas de interceptação de dados errados (exceções, cancelamento da execução)

Outro exemplo

• uma função que retorna um ponteiro.

• retorna o valor NULL caso tenha ocorrido alguma anomalia

• o receptor (cliente) deve verificar sempre se o valor retornado é NULL antes de tentar acessar a área apontada pelo ponteiro retornado.

Referências

Documentos relacionados

Analisando a prática dos professores de Educação Física de Piracicaba, Moreira (1991) constatou que eles apresentam atitudes formais e autoritárias na relação com os alunos; vêem

Samuel Tabosa de Castro.. Dedicamos esta proposta a todas as pessoas portadoras de deficiência atendidas pelas APAEs, por acreditarmos em seu potencial de aprendizagem e

É o movimento humano com determinado significado/sentido, que por sua vez, lhe é conferido pelo contexto histórico-cultural. O movimento que é tema da educação física é o que

O objetivo desta pesquisa foi investigar o papel da Educação Física na Educação Infantil, considerando-se os objetivos gerais, objetivos específicos, os conteúdos da

98: “En- quanto não permitir o fundo de custeio dos serviços de inspeção, a designação de inspetores especializados para orientação do en- sino da Musica e dos exercícios

sem discriminação”; “...o ensino inclusivo será uma oportunidade das pessoas portadoras de necessidades especiais de mostrar suas potencialidades”; “espero que esta

Aprendizado geral dos jogos esportivos de forma implícita - lúdica Escola da Bola - O ABC da Aprendizagem do Jogo Implícito / Lúdico. O Problema / As causas A solução:

Savants são pessoas que demonstram capacidades superiores em uma inteligência, enquanto suas outras inteligências funcionam num baixo ritmo.. Ex.: Rain Man (baseado numa