27 research outputs found
C++ é inadequado para ensinar OO
Num curso superior de Informática não deve haver preocupação em ensinar a última novidade tecnológica, mas antes os fundamentos que permitam aos diplomados uma capacidade para aprender continuamente. No ensino da programação orientada ao objecto (POO) é importante utilizar-se uma linguagem com suporte coerente dos conceitos fundamentais do paradigma, sem características que entrem em contradição com o modelo central, sob pena da linguagem se tornar um obstáculo à aprendizagem.
Neste artigo argumenta-se precisamente que C++ é um obstáculo à aprendizagem da POO. Muitos alunos acreditam que aprender C++ lhes dará todas as competências na área da programação de que necessitarão no futuro. Esta visão errada tem como consequência que poderão ficar pior preparados para se adaptarem às mudanças a que a informática está sujeita.
C++ foi criado tendo em vista a compatibilidade com o C, pelo que todas as decisões de concepção do C++ estiveram dependentes das características, boas ou más, da linguagem anterior. Só este facto já permite questionar se tudo o que o C++ oferece será coerente, sobretudo se se considerar que o próprio C, por vezes classificado de “linguagem assembly estruturada”, dá suporte a vários paradigmas da programação. Na verdade C++ não é uma linguagem orientada ao objecto (LOO), mas uma linguagem multiparadigma, dotada dum suporte imperfeito dos conceitos da OO, misturados com conceitos oriundos de modelos de programação mais antigos.
A seguir alude-se a alguns dos principais aspectos técnicos em que C++ apresenta imperfeições no suporte à POO. São feitas comparações com algumas das LOOs mais importantes, sobretudo Eiffel e Java
An illustrative example of refactoring object-oriented source code with aspect-oriented mechanisms
This paper describes a refactoring process that transforms a Java source code base into a functionally equivalent AspectJ source code base. The process illustrates the use of a collection of refactorings for aspect-oriented source code, covering the extraction of scattered implementation elements to aspects, the internal reorganization of the extracted aspects and the extraction of commonalities to super-aspects.Fundação para a Ciência e a Tecnologia (FCT)Fundo Europeu de Desenvolvimento Regional (FEDER) - POSC/EIA/60189/200
Some thoughts on refactoring objects to aspects
The prospect of aspect-orientation receiving widespread acceptance and adoption in the near future begs the question of how to deal with a large base of object-oriented legacy code. We propose to investigate refactoring techniques for restructuring object-oriented source code so that it can leverage the mechanisms of aspect-orientation in order to become easier to adapt, extend and evolve. Our approach is to adopt an object-oriented framework in the area of workflow as a non-trivial case study. We plan to analyse its source code, develop an aspect-oriented version through the progressive use of manual refactorings, and build a catalogue of refactoring operations based on the experience gained through the process
Pitfalls of aspectJ implementations of some of the gang-of-four design patterns
For the previous edition of this workshop [8], the authors wrote a paper presenting the aims of the first author’s Ph.D. project [13], which includes the development of a catalogue of refactorings [3] for the AspectJ programming language [1]. Case studies are be used for refactoring experiments, to gain the necessary insights. In this paper, we present several considerations on some code examples in AspectJ [10] from our second case study. They look like a critique, which may lead readers to assume we have a low opinion of them. That is not the case: we largely consider them a success, and proved to be a rich source of insights. Our intent is to simply point out some problems in using the code examples, thus contributing to their analysis. This is done in section 2. We take the opportunity provided by this paper to present, in section 3, an update on a style rule proposed in the previous paper [13]. In section 4 we conclude the paper.PRODEP III - Medida 5 - Acção 5.3 - Eixo 3 - Formação Avançada de Docentes do Ensino Superior; PPC-VM - POSI/CHS/47158/2002
Refactoring a java code base to aspectJ: an illustrative example
This paper describes a refactoring process transforming a Java code base into an AspectJ equivalent. The process illustrates 17 aspect-oriented refactorings covering extraction of implementation elements to aspects, internal reorganization of extracted aspects, and extraction of commonalities to superaspects.(undefined
Refactorings to evolve object-oriented systems with aspect-oriented concepts
Tese de doutoramento em Informática.Software engineering tools should support complete separation of concerns, by enabling the deployment of each different concern in its own unit of modularity. Unfortunately, current tools and languages – including those supporting the object-oriented programming paradigm – fail to provide a complete and effective support for the separation of all concerns. Undesirable phenomena such as code scattering and code tangling ensue.
Aspect-Oriented Programming is a new programming paradigm capable of modularising crosscutting concerns. Aspect-oriented programming complements existing programming paradigms, including object-oriented programming, with constructs that provide a fuller separation of concerns.
Refactoring is a technique to restructure program source code in order to improve its underlying design and style while preserving the externally observable behaviour. “Code smells” help to detect inadequate structures and designs, which are then gradually removed through refactoring processes.
There is a prospect of aspect-oriented programming becoming a mainstream technology in the near future. This begs the question of how to deal with a large base of object-oriented legacy code when aspect-orientation becomes standard practice. AspectJ's backward compatibility with Java opens the way for refactoring existing Java applications to leverage the concepts and mechanisms of aspects. This requires a prior idea of good style for aspect-oriented source code, something yet to be developed and matured.
This thesis contributes to the definition of a new style appropriate to aspect orientation. To this effect, this thesis documents a collection of novel refactorings enabling the extraction of crosscutting concerns from object-oriented legacy source code and the subsequent restructuring of the aspects thus obtained. In addition, this thesis presents a review of traditional object-oriented code smells so they can be used as indicators of latent aspects in object-oriented source code. Finally, this thesis proposes several novel aspect-oriented code smells. We validate the refactorings through an illustrative refactoring process.Idealmente, as ferramentas de engenharia de programas suportariam uma estrita separação de facetas, possibilitando a colocação de cada faceta na sua própria unidade modular. Infelizmente, as actuais ferramentas e linguagens – incluindo as que suportam o paradigma da orientação ao objecto – não conseguem obter uma completa e efectiva separação de todas as facetas. Daí resultam fenómenos indesejáveis tais como a dispersão e emaranhado de texto fonte.
A programação orientada ao aspecto é um novo paradigma da programação capaz de modularizar facetas transversais. A orientação ao aspecto complementa os paradigmas existentes, incluindo a orientação ao objecto, com mecanismos que providenciam uma separação de facetas mais completa.
A refabricação de programas é uma técnica para reestruturar o texto fonte de um programa no sentido de melhorar a concepção e estilo subjacentes, mantendo o seu comportamento externamente observável. “Maus cheiros” no texto fonte ajudam a detectar estruturas e concepções inadequadas, que são então gradualmente removidos através de processos de refabricação.
Existe a perspectiva da orientação ao aspecto ter uma aceitação generalizada no futuro próximo. Coloca-se a questão de como lidar com uma grande base instalada de texto fonte orientado ao objecto legado quando tal acontecer. A compatibilidade retroactiva de AspectJ em relação a Java possibilita a refabricação das aplicações Java existentes de modo a tomarem partido dos conceitos e mecanismos dos aspectos. Porém, isto tem como pressuposto uma ideia clara de bom estilo para o texto fonte orientado ao aspecto, algo que actualmente não existe duma maneira desenvolvida e matura.
Esta tese contribui para a caracterização de um novo estilo, apropriado à orientação ao aspecto. Para esse efeito, esta tese documenta uma colecção de refabricações originais através das quais facetas transversais existentes em texto legado orientado ao objecto são extraídas para aspectos, e a posterior reestruturação dos aspectos assim obtidos pode ser realizada. Esta tese apresenta também uma reapreciação dos maus cheiros orientados ao objecto tradicionais no sentido de poderem ser usados na detecção de aspectos latentes no texto fonte orientado ao objecto. Por fim, esta tese propõe diversos maus cheiros originais, orientados ao aspecto. As refabricações são validadas por meio de um processo de refabricação ilustrativo.Programa de Desenvolvimento Educativo para Portugal III (PRODEP III) - (Medida 5 - Acção 5.3 - Eixo 3 - Formação Avançada de Docentes do Ensino Superior).Portable Parallel Computing based on Virtual Machines (PPC-VM) - (PO-SI/CHS/47158/2002).Fundação Luso Americana para o Desenvolvimento (FLAD)
Aspect oriented pluggable support for parallel computing
In this paper, we present an approach to develop parallel applications based on aspect oriented programming. We propose a collection of aspects to implement group communication mechanisms on parallel applications. In our approach, parallelisation code is developed by composing the collection into the application core functionality. The approach requires fewer changes to sequential applications to parallelise the core functionality than current alternatives and yields more modular code. The paper presents the collection and shows how the aspects can be used to develop efficient parallel applicationsFundação para a Ciência e a Tecnologia (FCT) - PPC-VM (Portable Parallel Computing based on Virtual Machines) Project POSI/CHS/47158/2002; SOFTAS (POSI/EIA/60189/2004).Fundo Europeu de Desenvolvimento Regional (FEDER)
Adding aspect-oriented features to MATLAB
This paper presents an approach to enrich MATLAB with aspect-oriented extensions to experiment different implementation features. The language we propose aims to configure the low-level data representation of real variables and expressions, to a specifically-tailored fixed-point data representation that benefits from a more efficient support by computing engines (e.g., DSPs, application-specific architectures, etc.) without specific hardware-based floating point units. Additionally, the approach aims to help developers
to introduce handlers and monitoring features, and to configure a function with an optimized implementation.FCT under projects PPC-VM (POSI/CHS/47158/2002) and SOFTAS (POSI/EIA/ 60189/200