wegner - lisha/ufsc

Propaganda
Nome: Alisson Rafael Appio
Disciplina: Engenharia de Sistemas Operacionais
Resenha do artigo Classification in Object-Oriented Systems
O artigo caracteriza sistemas orientados a objetos (OO) pelos seus mecanismos
permissivos de comunicação e troca de mensagens. É estendido o mecanismo de
classificação plana (flat) de sistemas tradicionais para estruturas baseadas em árvore,
onde é possível perceber atributos e operações comuns. É feito uma classificação entre
OO e a biologia, também é apresentada o paradigma de comunicação e paradigma de
transição de estados, é apresentada uma comparação entre OO, calculo e álgebra.
OO usa conceitos da biologia e conceitos matemáticos. Da biologia podemos
citar Darwin, com a classificação hierárquica das espécies, para OO isso significa em
programação a herança. Aristotle introduziu o conceito da técnica top-down e bottomup. Top-down pode ser definida como as características comuns de cima para baixo, isso
é bem eficiente na hora da construção do design do projeto. Por outro lado, é fácil
compreender as entranhas do programa olhando o código de foram bottom-up, assim é
possível verificar todas as trocas de estados e mensagens da aplicação. Os conceitos da
matemática usados em OO são provenientes das teorias dos conjuntos, tipos de objetos
descrevem domínios de aplicações por classes com propriedades comuns adicionando
suporte para o mecanismo de herança.
Estendendo as classificações dos métodos das classes em linguagens de
programação, podemos classificar tipos polimórficos. Tipos polimórficos estendem o
mecanismo de classificação de uma linguagem de programação com valores mapeados
para tipos.
Os mecanismos de transição de estados (ex.: máquina de Turing, linguagens de
assembly), comunicação usando passagem de mensagens (ex.: atores, CSP) e
paradigmas de classificação (ex.: orientação a objetos, lógica), cada um deles pode ser
representado por uma função computável, mas os programas escritos usando um
paradigma puro podem ser difíceis de entender. A programação OO surge como uma
forma de balancear essas classificações para resolução de problemas.
Em tipos de expressões os relacionamentos semânticos entre as expressões não é
trivial de analisar. As classes podem ser estendidas para dados abstratos que podem se
relacionar com outros dados compartilhando estruturas de dados comuns. Os
relacionamentos entre os tipos podem ser expressas na linguagem. A herança pode ser
visualizada como uma forma de composição dela mesma e seu pai. A herança é um tipo
de classificação que pode ser comparada com a biologia Darwiniana, estendendo a
classificação plana para forma de árvore. Determinando as relações entre uma coleção
de subtipos que compartilham atributos comuns herdados de seus supertipos (pais).
Uma similaridade importante entre herança biológica e programação de sistemas é que
ambas são designadas para tratar a evolução com o passar do tempo. A modularidade
pode ser visto como um mecanismo para tratar extensão no espaço da aplicação e
herança com um mecanismo para extensão no tempo de vida da aplicação.
Podem ser consideradas linguagens de OO aquelas que suportam dados abstratos
mais tipos de dados abstratos e herança. Sendo a herança um dos critérios mais
importantes da OO.
Também é apresentada uma seção sobre a classificação versus a comunicação
em sistemas orientados a objetos. Nesse item é mostrado que o mecanismo básico para
comunicação entre os objetos é através da troca de mensagens que pode ser síncrona ou
assíncrona. É enfatizado que objetos necessitam se comunicar, mas o mecanismo de
comunicação não é o centro da definição de programação OO. Os mecanismos de
passagem de mensagens em OO e sistemas distribuídos são caracterizados pela
comunicação e necessitam de algum mecanismo de coordenação entre eles.
Também é discutido se os tipos deveriam ser modelados usando calculo ou
álgebra. A álgebra considera as propriedades das operações com inteiros como adição,
multiplicação, etc. O calculo pode ser um sistema formal aplicando regras de inferência
para provar algum teorema. É concluído que ambas as matemáticas podem ser e são
usadas nos sistemas OO, sendo as álgebras mais usadas para definir os comportamentos
(como exemplo: operações de união, produto, projeção, etc.) e os cálculos expressão
melhor as sintaxes dos relacionamentos. O calculo pode ser visualizado como a
realização concreta de algum comportamento.
Em outro item é apresentado os tipos de dados em diferentes visões:
programadores de aplicações enxergam classes como atributos e operações comuns.
Evolução do sistema diz que a especificação do comportamento pode ser composta e
modificada incrementamente, sendo a herança um importante mecanismo facilitador. A
visão de checagem de tipo prova as restrições sobre as expressões, verificando a
compatibilidade dos operandos e operadores. A verificação determina o
comportamento. A visão de segurança protege as informações, e por fim a visão de
implementação especifica o mapeamento dos valores armazenados.
A última sessão do artigo é apresentada uma visão filosófica, onde é feito uma
classificação entre Deus e da comunicação com Plato. A classificação hierárquica
depende de Deus (onisciência, ele conhece todas as coisas, por isso não pode ser
considerado uma tarefa trivial, podendo levar a erros graves em OO) e Plato. Ele faz uso
da comunicação, que no artigo são apresentadas como formas de sombras projetadas na
parede da caverna onde ele se encontra. É mostrado que a observação depende da
existência e a existência pode depender da observação. Algumas teorias são
fundamentadas em termos de um observador observar algo, como exemplo, a teoria da
relatividade. E por fim é sugerido que os tipos podem ser identificados como
proposições que possuem valores associados a eles.
Download