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.