In languages like C++, the mechanism of protected members is critical to making inheritance work. It allows access to some of the internals of a base class B to the designer of a derived class D, while denying it to c...
详细信息
ISBN:
(纸本)081868383X
In languages like C++, the mechanism of protected members is critical to making inheritance work. It allows access to some of the internals of a base class B to the designer of a derived class D, while denying it to clients of B. We develop a formal approach in which class behavior is precisely specified in terms of an abstract specification and a concrete specification, the former for use by a client, the latter containing information about how the protected members change, for use by a derived class designer. We present rules that allow us to establish that a class meets both specifications.
Relationships in object-oriented models are evaluated based on a formal, metamodelling approach. Various types of association and of aggregation are discussed in detail as well as other relationships such as possessio...
详细信息
ISBN:
(纸本)0818684852
Relationships in object-oriented models are evaluated based on a formal, metamodelling approach. Various types of association and of aggregation are discussed in detail as well as other relationships such as possession, containment and roles. Finally, recommendations on both semantics and notation are made for a modelling language such as OML.
Domain-specific generators will increasingly rely on graphical specification languages-applets-for declarative specifications of target applications. Applets will provide front-ends to generators and related tools to ...
详细信息
ISBN:
(纸本)0818683775
Domain-specific generators will increasingly rely on graphical specification languages-applets-for declarative specifications of target applications. Applets will provide front-ends to generators and related tools to produce customized code on demand. Critical to the success of this approach will be domain-specific design wizards, tools that guide users in their selection of components for constructing particular applications. In this paper;we present the P3 ContainerStore applet, its generator and design wizard.
As a relatively straightforward object-oriented language, Java is a plausible basis for a scientific parallel programming language. We outline a conservative set of language extensions to support this kind of programm...
详细信息
ISBN:
(纸本)3540649522
As a relatively straightforward object-oriented language, Java is a plausible basis for a scientific parallel programming language. We outline a conservative set of language extensions to support this kind of programming. The programming style advocated is Single Program Multiple Data (SPMD), with parallel arrays added as language primitives. Communications involving distributed arrays are handled through a standard library of collective operations. Because the underlying programming model is SPMD programming, direct calls to other communication packages are also possible from this language.
it is widely accepted that object-oriented design improves code reusability, facilitates code maintainability and enables higher levels of abstraction. Although software developers and the software engineering communi...
详细信息
ISBN:
(纸本)0818691948
it is widely accepted that object-oriented design improves code reusability, facilitates code maintainability and enables higher levels of abstraction. Although software developers and the software engineering community have embraced object-orientedprogramming for these benefits, there have been wide concerns about the performance overhead associated with this programming paradigm on modern processors. In this paper, we characterize the performance of several C and C++ benchmarks on an UltraSPARC-II processor. Various architectural data related to execution behavior of the benchmarks are collected using on-chip performance monitoring counters. Factors including CPI, instruction and data cache misses, processor stalls due to instruction cache misses and branch misprediction, from real execution of several programs are measured and presented. While previous research evaluates the behavioral differences between C and C++ programs based on profiling and simulation, we will measure execution behavior. Results show that the programs in the C++ suite incur a higher CPI, higher i-cache misses, and higher branch mispredictions than the programs in the C suite. A strong correlation was observed between CPI and branch mispredictions for the C++ application programs.
Teaching object-orientedprogramming has clearly become an important part of computer science education. We agree with many others that the best place to teach it is in the CSI introductory course. Many problems with ...
详细信息
Teaching object-orientedprogramming has clearly become an important part of computer science education. We agree with many others that the best place to teach it is in the CSI introductory course. Many problems with this have been reported in the literature. These mainly result from inadequate languages and environments. Blue is a new language and integrated programming environment, currently under development explicitly for object-oriented teaching. We expect clear advantages from the use of Blue for first year teaching compared to using other available languages. This paper describes the design principles on which the language was based and the most important aspects of the language itself.
Reusability has been the main promise object-orientedprogramming gave to software developers. However it turned out, that object-orientedprogramming did not bring zip measurably more reuse than modular programming. ...
详细信息
ISBN:
(纸本)081868383X
Reusability has been the main promise object-orientedprogramming gave to software developers. However it turned out, that object-orientedprogramming did not bring zip measurably more reuse than modular programming. One reason for this was, that inheritance had never been examined in detail which introduced unexpected exceptions. In [4] this examination had been done at first. Since then it was possible to give rules for the correct use or the misuse of polymorphism. [1] showed further, how robust class hierarchies can be constructed. This paper describes a method for the specification and generation of robust hierarchies along a certain set of properties.
JHDL is a design tool for reconfigurable systems that allows designers to express circuit organizations that dynamically change over time in a natural way, using only standard programming abstractions found in object-...
详细信息
ISBN:
(纸本)0818689005
JHDL is a design tool for reconfigurable systems that allows designers to express circuit organizations that dynamically change over time in a natural way, using only standard programming abstractions found in object-oriented languages. JHDL manages FPGA resources in a manner that is similar to the way object-oriented languages manage memory: circuits are treated as distinct objects and a circuit is;configured onto a configurable computing machine (CCM) by invoking its constructor effectively "constructing" an instance of the circuit onto the reconfigurable platform just as object instances are allocated in memory with conventional object-oriented languages. This approach of using object constructors/destructors to control the circuit lifetime on a CCM is a powerful technique that naturally leads to a dual simulation/execution environment where a designer can easily switch between either software simulation or hardware execution on a CCM with a single application description. Moreover JHDL supports dual hardware/software execution;parts of the application described using JHDL circuit constructs can be executed on the CCM while the remainder of the application -the GUI for example- can run on the CCM host. Based on an existing programming language (Java), JHDL requires no language extensions and can be used with any standard Java 1.1 distribution.
T++ is a C++ language extension that aids in systematic testing of C++ code. For each type t used in the code, T++ maintains the set of "typical" values of t, denoted by T(t) (typicals of t). We propose an o...
详细信息
ISBN:
(纸本)081868383X
T++ is a C++ language extension that aids in systematic testing of C++ code. For each type t used in the code, T++ maintains the set of "typical" values of t, denoted by T(t) (typicals of t). We propose an object-oriented testing scheme in which each class t has a test method implemented as a static member function that runs a test script on each of the values in T(t). T++ supports this scheme by automatically generating a default T(t) based on the declaration of t and on the typicals of each of the types used in this declaration. This default can be easily tuned by the class implementor and users to reflect the particularities of the class. T++ also provides an easy-to-use mechanism for iterating over the typicals of a type. Thus, T++ gives a supporting environment for the design and implementation of test scripts with the familiar Techniques of equivalence testing, boundary value analysis,or functional testing approaches. Most language extensions are realized by either a dedicated pre-processor or by a modification to the compiler. Both techniques suffer from serious drawbacks related to the complexity of C++ and the accessibility of the compiler code. In contrast, the implementation of T++ sidesteps these difficulties by relying on a novel technique that creates a knowledge base of the source code from the debugging information. Manipulation of the software source code is done via a nontrivial exploitation of the C pre-processor while applying the C++ compiler twice: In the first application, whose sole purpose it do generate the debugging information section in the object code file all uses of the language extension features are cancelled. The debugging information, which also includes essential clues of these uses, is then extracted by a dedicated tool, and used for realizing the language extension. A suitable macro definition is synthesized for each of the uses of these features. In the second application of the compiler, each such use is expanded into an appr
object-orientation has rapidly become, accepted as the preferred paradigm for large scale system design. There is considerable literature, describing approaches to object-oriented design and implementation. However di...
详细信息
ISBN:
(纸本)0769500536
object-orientation has rapidly become, accepted as the preferred paradigm for large scale system design. There is considerable literature, describing approaches to object-oriented design and implementation. However discussion of testing in an object-oriented environment has been conspicuous by its absence. Ar first sight it appears that decomposition of a system into a potentially large number of information-hiding classes greatly increases the cost of testing. However, in this paper we show that by taking an object-oriented approach to testing, and the inclusion of appropriate tools in the development environment, testing time can be greatly reduced and special purpose test code can be virtually eliminated.
暂无评论