Article

Is Object-Oriented Programming Structured Programming?

Authors:
To read the full-text of this research, you can request a copy directly from the author.

Abstract

Object-oriented programming is one of today's buzzwords. On the one hand it is a programming paradigm of its own right. On the other hand it is a set of software engineering tools to build more reliable and reusable systems. One other kind of programming style, which has already shown its power on this field is structured programming. In this paper we look at the relationship between structured programming and object-oriente d programming. We give a definition of structured programming and check the object-oriented features encapsulation, inheritance and messages for compatibility. Two problems arise. The first addresse s interfaces and inheritance, the second polymorphism and dynamic binding. We do not end with an answer like yes or no, but try to give a basis for further discussions. This may help to classify object-oriented programming into a wide range of tools for compute r programming and computer science. It may also help to abandon the hypothesis that object-oriente d programming is the solution to all the problems.

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the author.

Article
Zusammenfassung: Jede Wissenschaft muß sich von Zeit zu Zeit fragen, welche begrifflichen und methodischen Grundlagen sie nutzt, um zu Erkenntnissen zu gelan-gen, und was ihre unverwechselbaren Denkweisen sind. Diese Aufgabe ist von der Informatik noch kaum registriert worden. Wir werden in diesem Aufsatz in einem ersten Schritt versuchen, die Methodologie der Informatik zu klären. Die Methodologie sei dabei charakterisiert durch gewisse langlebige Konzepte, sog. fundamentale Ideen, auf die sich große Bereiche der Informatik abstützen, die den informatischen Forschungsbestrebungen eine Richtung geben und die sich ferner an natürlichen kognitiven Prozessen orientieren und in der historischen Entwicklung der Informatik erkennbar sind.
Article
Full-text available
It is widely accepted that object-oriented design improves code reusability, facilitates code maintainability and enables higher levels of abstraction. Although the software engineering community has embraced object-oriented programming for these benefits, it has not been clear what performance overheads are associated with this programming paradigm. In this paper, we present some quantitative results based on the performance of a few programs in C and C++. Several programs were profiled and the statistics of several program executions at various compiler optimization levels were generated on two architectures, the MIPS and SPARC. One observation was that in spite of a static code increase in C++, the dynamic instruction counts were either comparable or smaller in C++. However the cache miss ratios and traffic ratios were significantly worse for C++ (often twice). It was also seen that some of the C++ features such as function overloading and free unions did not incur any run time over...
Conference Paper
Full-text available
This paper shows that inheritance and subtyping can be introduced advantageously into a parallel object-oriented language, POOL-I. These concepts are clearly distinguished, because they deal with different aspects of programming. In this way several problems traditionally adhering to inheritance can be solved. The language POOL-I is a parallel object-oriented language with a strong typing scheme which includes genericity and dynamic binding. A novel and particularly powerful mechanism offers the possibility to manipulate and analyse types dynamically.
Conference Paper
Full-text available
In typed object-oriented languages the subtype relation is typically based on the inheritance hierarchy. This ap- proach, however, leads either to insecure type-systems or to restrictions on inheritance that make it less flexible than untyped Smalltalk inheritance. We present a new typed model of inheritance that allows more of the flex- ibility of Smalltalk inheritance within a statically-typed system. Significant features of our analysis are the intro duction of polymorphism into the typing of inheritance and the uniform application of inheritance to objects, classes and types. The resulting notion of type inher- itance allows us to show that the type of an inherited object is an inherited type but not always a subtype.
Article
Full-text available
This paper discusses modularization as a mechanism for improving the flexibility and comprehensibility of a system while allowing the shortening of its development time. The effectiveness of a "modularization" is dependent upon the criteria used in dividing the system into modules. A system design problem is presented and both a conventional and unconventional decomposition are described. It is shown that the unconventional decompositions have distinct advantages for the goals outlined. The criteria used in arriving at the decompositions are discussed. The unconventional decomposition, if implemented with the conventional assumption that a module consists of one or more subroutines, will be less efficient in most cases. An alternative approach to implementation which does not have this effect is sketched.
Article
The term “object oriented” is used to describe much of the work and many of the systems being done in Computer Science today. Applied in diverse areas, this trendy phrase has come to mean different things to different people. To add to the confusion, there are often differing interpretations even within a given area. An example? Object oriented programming.
Article
An abstract is not available.
Article
Recent shifts in emphasis have occurred in the field of software development. The primary requirement to be met in software development has always been to perform the function specified for the software. But, where at one time secondary emphasis was placed only on software efficiency, that is, core and time required, today three other factors are recognized as requiring special emphasis. These factors are reliability, maintainability, and extensibility. The emphasis on these factors has increased because their economic importance has been recognized. Software maintenance and modification account for a substantial portion-of total software expenditures and, as the volume of existing software grows, so does the expense of maintenance and modification. This trend can be counteracted by designing and implementing software in a way that minimizes errors and maximizes the ease with which errors are corrected and modifications are made; hence, reliability, maintainability, and extensibility. While much work is needed to determine how best to design and implement software with these characteristics, there are already some techniques known that contribute materially to these aims.
Article
This paper discusses the considerations that have played a role in the design of the language POOL2. This language integrates the structuring techniques of object-oriented programming with mechanisms for expressing parallelism. We introduce the basic principles of object-oriented programming and its significance for program development methodologies. Several approaches for integrating objects and parallelism are compared and arguments for the choices made in POOL2 are presented. We also explain why inheritance is not yet included in POOL2. A brief overview of the research in formal aspects of POOL is given. Finally we indicate some directions for future developments.
Article
For a number of years I have been familiar with the observation that the quality of programmers is a decreasing function of the density of go to statements in the programs they produce. More recently I discovered why the use of the go to statement has such disastrous effects, and I became convinced that the go to statement should be abolished from all “higher level” programming languages (i.e. everything except, perhaps, plain machine code). At that time I did not attach too much importance to this discovery; I now submit my considerations for publication because in very recent discussions in which the subject turned up, I have been urged to do so.
Article
The creative activity of programming—to be distinguished from coding—is usually taught by examples serving to exhibit certain techniques. It is here considered as a sequence of design decisions concerning the decomposition of tasks into subtasks and of data into data structures. The process of successive refinement of specifications is illustrated by a short but nontrivial example, from which a number of conclusions are drawn regarding the art and the instruction of programming.
Article
This article evaluates current research on object-oriented analysis and design (OOAD). Analysis involves problem definition and design focuses on solution specification. It is difficult to determine when analysis ends and design begins. Critical components in OOAD include: the problem domain analysis process, the solution domain design process, OOAD representations, and OOAD complexity management. There are three general approaches to OOAD, characterized by the manner and degree to which they incorporate other paradigms. These include the combinative, adaptive, and 'pure' object-oriented approaches. An overall problem with the current OOAD research is that there is no comprehensive methodology that integrates and balances different views of a system from macro to micro levels.
Article
The state of object-oriented is evolving rapidly. This survey describes what are currently thought to be the key ideas. Although it is necessarily incomplete, it contains both academic and industrial efforts and describes work in both the United States and Europe. It ignores well-known ideas, like that of Coad and Meyer [34], in favor of less widely known projects. Research in object-oriented design can be divided many ways. Some research is focused on describing a design process. Some is focused on finding rules for good designs. A third approach is to build tools to support design. Most of the research described in this article does all three. We first present work from Alan Snyder at Hewlett-Packard on developing a common framework for object-oriented terminology. The goal of this effort is to develop and communicate a corporate-wide common language for specifying and communicating about objects. We next look into the research activity at Hewlett-Packard, led by Dennis de Champeaux. De Champeaux is developing a model for object-based analysis. His current research focuses on the use of a trigger-based model for inter-object communications and development of a top-down approach to analysis using ensembles. We then survey two research activities that prescribe the design process. Rebecca Wirfs-Brock from Tektronix has been developing an object-oriented design method that focuses on object responsibilities and collaborations. The method includes graphical tools for improving encapsulation and understanding patterns of object communication. Trygve Reenskaug at the Center for Industriforskning in Oslo, Norway has been developing an object-oriented design method that focuses on roles, synthesis, and structuring. The method, called Object-Oriented Role Analysis, Syntheses and Structuring, is based on first modeling small sub-problems, and then combining small models into larger ones in a controlled manner using both inheritance (synthesis) and run-time binding (structuring). We then present investigations by Ralph Johnson at the University of Illinois at Urbana-Champaign into object-oriented frameworks and the reuse of large-scale designs. A framework is a high-level design or application architecture and consists of a suite of classes that are specifically designed to be refined and used as a group. Past work has focused on describing frameworks and how they are developed. Current work includes the design of tools to make it easier to design frameworks. Finally, we present some results from the research group in object-oriented software engineering at Northeastern University, led by Karl Lieberherr. They have been working on object-oriented Computer Assisted Software Engineering (CASE) technology, called the Demeterm system, which generates language-specific class definitions from language-independent class dictionaries. The Demeter system include tools for checking design rules and for implementing a design.
Article
We address the following questions for object-oriented programming:What is it?What are its goals?What are its origins?What are its paradigms?What are its design alternatives?What are its models of concurrency?What are its formal computational models?What comes after object-oriented programming?Starting from software engineering goals, we examine the origins and paradigms of object-oriented programming, explore its language design alternatives, consider its models of concurrency, and review its mathematical models to make them accessible to nonmathematical readers. Finally, we briefly speculate on what may come after object-oriented programming and conclude that it is a robust component-based modeling paradigm that is both effective and fundamental. This paper expands on the OOPSLA 89 keynote talk.
Article
Object-Oriented Software Construction, second edition is the comprehensive reference on all aspects of object technology, from design principles to O-O techniques, Design by Contract, O-O analysis, concurrency, persistence, abstract data types and many more. Written by a pioneer in the field, contains an in-depth analysis of both methodological and technical issues.
Article
Object oriented programming departs from conventional programming by emphasizing the relationship between consumers and suppliers of codes rather then the relationship between a programmer and his code. The author describes the development of an object-oriented C language compiler, and how it can be put to work
Inheritance Is Not Subtyping Object Oriented Programming - An Evolutionary Approach
  • R William
  • Cook
  • L Walter
  • Hill
  • S Peter
  • Canning
William R. Cook, Walter L . Hill, and Peter S. Canning. Inheritance Is Not Subtyping . In Proc 7th. Symposium on Principles of Programming Languages. ACM Press, January 1990. Brad J . Cox. Object Oriented Programming - An Evolutionary Approach . Addison-Wesley, 1986
An Introduction to Object-Oriented Programming Luca Cardelli and Peter Wegner . On Understanding Types, Data Abstraction, and Polymorphism
  • Timothy Budd
Timothy Budd . An Introduction to Object-Oriented Programming . Addison-Wesley, 1991. Luca Cardelli and Peter Wegner . On Understanding Types, Data Abstraction, and Polymorphism . ACM Computing Surveys, 17(4) :471-522, December 1985
A Parallel Object-Oriented Language : Design and Semantic Foundations
  • Pierre America
  • Jan Rutten
Pierre America and Jan Rutten. A Parallel Object-Oriented Language : Design and Semantic Foundations. PhD Thesis, University of Amsterdam, 1989.
The C++ Programming Language Second Edition. Addison-Wesley Reading 1991. [25] Bjarne Stroustrup. The C++ Programming Language Second Edition
  • Bjarne Stroustrup
Systematic Programming. Prentice-Hall 1973. [30] Niklaus Wirth. Systematic Programming
  • Niklaus Wirth