Functional programming concepts of referential transparency and lazy evaluation combine effectively with objected-oriented encapsulation. We present a design pattern for C++ classes that are logically immutable and fu...
详细信息
ISBN:
(纸本)0780350057
Functional programming concepts of referential transparency and lazy evaluation combine effectively with objected-oriented encapsulation. We present a design pattern for C++ classes that are logically immutable and fully determined by the parameters of their constructor. Hidden state is used internally to cache the results of computation performed in the scope of accessors, giving them lazy semantics, Modifying replicators model change by constructing a new instance without changing the original. Previously computed results are lazily copied via a back reference if the parameters report which the computation depends have nor changed. Since these classes are logically immutable they can be freely shared by reference ill complex networks, mitigating the amount of actual copying performed. These techniques realize several advantages - well known to the functional programming community including suitability for modular reasoning and parallel evaluation. 'Undo' facilities and safe recovery from exceptions can be provided with little extra effort. Examples from a large multi-platform biomedical imaging application illustrate the techniques.
作者:
Pillay, NUniv Natal
Sch Geol & Comp Sci ZA-4001 Durban Kwazulu Natal South Africa
This paper basically describes the artificial intelligence structures and techniques used to solve programming problems in a generic architecture for the development of intelligent programming tutors to tutor the obje...
详细信息
ISBN:
(纸本)0769506534
This paper basically describes the artificial intelligence structures and techniques used to solve programming problems in a generic architecture for the development of intelligent programming tutors to tutor the object-orientedprogramming paradigm. Each problem is depicted in terms of a program specification describing the task to be performed, and a knowledge base consisting of conceptual graphs representing the problem application domain. Solving a programming problem essentially involves developing art object-oriented design, developing algorithms for the methods of the classes and the overall program, and implementing these algorithms in a particular language. A description of the artificial intelligence techniques used to generate object-oriented designs and induce the necessary algorithms is provided Finally: the paper describes additional extensions that need to be made to the Expert Module of the architecture for the purpose of problem solving.
This paper describes the results of an experiment in the use of the Gödel logic programming language for object-orientedprogramming. An object-oriented program is implemented in Gödel at two levels. First, ...
详细信息
In this chapter, we present algebraic laws for a language similar to a subset of sequential Java that includes inheritance, recursive classes, dynamic binding, access control, type tests and casts, assignment, but no ...
详细信息
ISBN:
(纸本)3540462538
In this chapter, we present algebraic laws for a language similar to a subset of sequential Java that includes inheritance, recursive classes, dynamic binding, access control, type tests and casts, assignment, but no sharing. We show that these laws are complete, in the sense that they are sufficient to reduce any program to a normal form substantially close to an imperative program: classes and inheritance are used only to preserve the notion of subtyping;all classes have empty bodies, except the object class, which collects all the attributes moved up from all its subclasses. Methods are also eliminated by first resolving dynamic binding, and then in-lining their bodies in place of the calls. This suggests that our laws are expressive enough to formally derive behaviour preserving program transformations;this is illustrated through the derivation of refactorings. We present the motivation for our work in Section 1. In Section 2, we give an overview of the subset of Java that we consider. After that, in Section 3, we present the algebraic laws of our language, concentrating on its object-oriented features. Completeness of our set of laws is considered in Section 4, where we present the normal form and a reduction strategy. In Section 5 we show how the presented laws can serve as a basis for proving refactorings. Section 6 summarises our results, briefly discusses soundness of the laws, considers the impact of reference semantics, relates our results with work involving concurrency, and suggests topics for further research.
object-orientedprogramming (OOP) is widely used in the software industry and university introductory courses today. Following the structure of most textbooks, such courses frequently are organised starting with the c...
详细信息
ISBN:
(纸本)9781479919345
object-orientedprogramming (OOP) is widely used in the software industry and university introductory courses today. Following the structure of most textbooks, such courses frequently are organised starting with the concepts of imperative and structured programming and only later introducing OOP. An alternative approach is to begin directly with OOP following the Outside-In teaching method as proposed by Meyer. Empirical results for the effects of Outside-In teaching on students and lecturers are sparse, however. We describe the conceptual design and empirical evaluation of two OOP introductory courses from different universities based on Outside-In teaching. The evaluation results are compared to those from a third course serving as the control group, which was taught OOP the "traditional" way. We evaluate the initial motivation and knowledge of the participants and the learning outcomes. In addition, we analyse results of the end-term exams and qualitatively analyse the results of interviews with the lecturers and tutors. Regarding the learning outcomes, the results show no significant differences between the Outside-In and the "traditional" teaching method. In general, students found it harder to solve and implement algorithmic problems than to understand objectoriented (OO) concepts. Students taught OOP by the Outside-In method, however, were less afraid that they would not pass the exam at the end of term and understood the OO paradigm more quickly. Therefore, the Outside-In method is no silver bullet for teaching OOP regarding the learning outcomes but has positive effects on motivation and interest.
While the object-orientation is the most used paradigm for developing general purpose software systems, the use of reactive systems has been growing lately. One of the differences between them is that while the first ...
详细信息
In this paper, we first characterize distributed real-time systems by the following two properties that have to be supported: best effort and least suffering. Then, we propose a distributed real-time object model DRO ...
详细信息
ISBN:
(纸本)0897915399
In this paper, we first characterize distributed real-time systems by the following two properties that have to be supported: best effort and least suffering. Then, we propose a distributed real-time object model DRO which complies these properties. Based on the DRO model, we design an object oriented programming language DROL: an extension of C++ with the capability of describing distributed real-time systems. The most eminent feature of DROL is that users can describe on meta level the semantics of message communications as a communication protocol with sending and receiving primitives. With this feature, we can construct a flexible distributed real-time system satisfying specifications which include timing constraints. We implement a run-time system of DROL on the ARTS kernel, and evaluate the efficiency of the prototype implementation as well as confirm the high expressive power of the language.
The object-oriented philosophy creates a powerful synergy throughout the development life cycle by combining abstraction, encapsulation, and modularity. However, existing object-orientedprogramming languages arc low-...
详细信息
ISBN:
(纸本)0769512518
The object-oriented philosophy creates a powerful synergy throughout the development life cycle by combining abstraction, encapsulation, and modularity. However, existing object-orientedprogramming languages arc low-level procedural ones that are hard to program and debug. Logic programming allows computing problems to be expressed in a high-level declarative way, without giving instructions for how the problem is to be solved. However, logic programming lacks powerful Methods to model applications. In the past decades, the integration of object-orientedprogramming and logic programming has attracted a lot of interests with a number of languages proposed. But these languages fail to address some key object-oriented features properly. In this paper, we introduce a novel object-oriented logic programming language that supports nearly all key object-oriented features in a logic programming framework. We also describe its operational semantics.
This paper analyzes and thinks the advantages and disadvantages of traditional teaching methods of Java course. The thinking and practical application of the hybrid teaching mode based on the superstar platform are co...
详细信息
This paper presents the design and implementation Joule(R), a reversible object-oriented language in the style of Janus, that supports common object-orientedprogramming patterns such as factories, iterators, and the ...
详细信息
ISBN:
(纸本)9783319994987;9783319994970
This paper presents the design and implementation Joule(R), a reversible object-oriented language in the style of Janus, that supports common object-orientedprogramming patterns such as factories, iterators, and the definition of abstract datatypes. Memory management is performed using a simple notion of regions, enabling the full power of object-orientedprogramming to be used, while remaining completely garbage-free. The language is implemented by translation to Janus.
暂无评论