In teaching object-oriented programming, teaching inheritance is the most challenging and at the same time the most crucial aspect. the interplay of dynamic binding, late-bound self-reference, subtype polymorphism and...
详细信息
ISBN:
(纸本)3939352055
In teaching object-oriented programming, teaching inheritance is the most challenging and at the same time the most crucial aspect. the interplay of dynamic binding, late-bound self-reference, subtype polymorphism and method redefinition is so complex that it is difficult for instructors to design a gentle, step-by-step introduction. Should polymorphism be introduced first? Or is code reuse better suited as an introductory motivation? the javaprogramming Language adds a further aspect to this discussion: when should named interfaces be introduced? Most textbooks follow the historical development of the mechanism and cover interfaces after the discussion of abstract classes. In this paper a different approach is described: interfaces are introduced long before and in isolation from inheritance;and the discussion of inheritance is explicitly split into its two major constituents, namely subtype polymorphism and implementation inheritance. We applied this novel approach in the two introductory courses on software development (SD1 and SD2) in the newly created Bachelor of Science in Informatics curriculum at the University of Hamburg, Germany. this experience report reflects on the design rationale behind this new approach. Copyright 2006 ACM.
In this paper we present novel methodologies for enhancing the streaming capabilities of java RMI. Our streaming support for java RMI includes the pushing mechanism, which allows servers to push data in a streaming fa...
详细信息
ISBN:
(纸本)3939352055
In this paper we present novel methodologies for enhancing the streaming capabilities of java RMI. Our streaming support for java RMI includes the pushing mechanism, which allows servers to push data in a streaming fashion to the client site, and the aggregation mechanism, which allows the client site to make a single remote invocation to gather data from multiple servers that keep replicas of data streams and aggregate partial data into a complete data stream. In addition, our system also allows the client site to forward local data to other clients. Our framework is implemented by extending the java RMI stub to allow custom designs for streaming buffers and controls, and by providing a continuous buffer for raw data in the transport layer socket. this enhanced framework allows standard java RMI services to enjoy streaming capabilities. In addition, we propose aggregation algorithms as scheduling methods in such an environment. Preliminary experiments using our framework demonstrate its promising performance in the provision of streaming services in java RMI layers. Copyright 2006 ACM.
Development of high quality code is notably difficult. Tools that help maintaining the proper quality of code produced by programmers can be very useful: they may increase the quality of produced software and help man...
详细信息
ISBN:
(纸本)3939352055
Development of high quality code is notably difficult. Tools that help maintaining the proper quality of code produced by programmers can be very useful: they may increase the quality of produced software and help managers to ensure that the product is ready for the market. One of such tools is ESC/java2, a static checker of java Modeling Language annotations. these annotations can be used to ensure that a certain assertion is satisfied during the execution of the program, among the others - to ensure that a certain variable never has a null value. Unfortunately, using ESC/java2 can be very troublesome and time-consuming for programmers, as it lacks a friendly user interface and a function that propagates annotations. We present CANAPA, a tool that can highly reduce time and effort of eliminating null pointer exceptions in java code. this tool can automatically propagate JML non-null annotations and comes with a handy Eclipse plug-in. We believe that functionality of CANAPA will minimize the effort required to benefit from using the JML non-null checking. Copyright 2006 ACM.
Withthe introduction of java 5.0 [9] the type system has been extended by parameterized types, type variables, type terms, and wildcards. As a result very complex types can arise. the term Vector<Vector<Abstrac...
详细信息
ISBN:
(纸本)3939352055
Withthe introduction of java 5.0 [9] the type system has been extended by parameterized types, type variables, type terms, and wildcards. As a result very complex types can arise. the term Vectorjava 5.0. Considering all that, it is often rather difficult for a programmer to recognize whether such a complex type is the correct one for a given method or not. Furthermore there are methods whose principle types would be intersection types. But intersection types are not implemented in java 5.0. this means that java 5.0 methods often don't have the principle type which is contradictive to the OOP-Principle of writing re-usable code. this has caused us to develop a java 5.0 type inference system which assists the programmer by calculating types automatically. this type inference system allows us, to declare method parameters and local variables without type annotations. the type inference algorithm calculates the appropriate and principle types. We implement the algorithm in java using the observer design pattern. Copyright 2006 ACM.
A major risk for Internet software projects which have server and client components are decisions related to availability and features on client computers in the user community. Specifically, bioinformatics software d...
详细信息
ISBN:
(纸本)3939352055
A major risk for Internet software projects which have server and client components are decisions related to availability and features on client computers in the user community. Specifically, bioinformatics software developers intending to use java face critical decisions about which java version to implement, but few statistics are available about java presence on user machines. To obtain this information, we implemented a measurement system to detect the presence, functionality and version of java Virtual Machines on client computers of a large base of users from the biology community. We show that our system effectively collects the necessary information and provides decision-relevant statistics. Measurements performed on 1753 client computers showed that java presence is high and dominated by the most recent java versions. the proposed empirical approach can be used to reduce decision risks in any type of Internet software project with low level of control on client equipment and high demands on client interaction and performance. More details together with source code and measurement results can be obtained from the J-vestigator survey page (https://***/***?page= jvestigator) Copyright 2006 ACM.
Design by contract is a practical methodology for evolving code together with its specification. the contract has important methodological implications on. the design of the program. In addition, tools that instrument...
详细信息
ISBN:
(纸本)0769526780
Design by contract is a practical methodology for evolving code together with its specification. the contract has important methodological implications on. the design of the program. In addition, tools that instrument the code to check for contract violations help the development process by catching errors close to their sources. this is complicated by several factors, such as the need to collect preconditions from supertypes. there are two issues involved in the implementation of such a tool: the correct enforcement of the theoretical principles, and the instrumentation of the code. Most previous tools tackle both issues, but have subtle failures in one or the other. this paper describes Jose, a tool for design. by contract in java, which uses Aspect), an aspect-oriented extension of java, to instrument the program. this allows us to leverage the expertise of the Aspect) developers in instrumenting java programs, and concentrate on the correct implementation of the design-by-contract principles. this approach has the added benefit that it can be generalized to other object-oriented Languages that have aspect-oriented extensions. We describe the design decisions made in the implementation of Jose, and the features of Aspect) that helped or hindered this implementation.
暂无评论