top of page

Meals & nutrition

Public·31 members

Program Development In Java: Abstraction, Specification, And Object-Oriented Design Download Pdf



Written by a world-renowned expert onprogramming methodology, and the winner of the 2008 TuringAward, this book shows how to build production-qualityprograms--programs that are reliable, easy to maintain, and quickto modify. Its emphasis is on modular program construction: how toget the modules right and how to organize a program as a collectionof modules. The book presents a methodology effective for either anindividual programmer, who may be writing a small program or asingle module in a larger one; or a software engineer, who may bepart of a team developing a complex program comprised of manymodules. Both audiences will acquire a solid foundation forobject-oriented program design and component-based softwaredevelopment from this methodology.




Program Development In Java: Abstraction, Specification, And Object-Oriented Design Download Pdf



Because each module in a program correspondsto an abstraction, such as a collection of documents or a routineto search the collection for documents of interest, the book firstexplains the kinds of abstractions most useful to programmers:procedures; iteration abstractions; and, most critically, dataabstractions. Indeed, the author treats data abstraction as thecentral paradigm in object-oriented program design andimplementation. The author also shows, with numerous examples, howto develop informal specifications that define theseabstractions--specifications that describe what the modules do--andthen discusses how to implement the modules so that they do whatthey are supposed to do with acceptable performance.


In the 1970s, the first version of the Smalltalk programming language was developed at Xerox PARC by Alan Kay, Dan Ingalls and Adele Goldberg. Smalltalk-72 included a programming environment and was dynamically typed, and at first was interpreted, not compiled. Smalltalk became noted for its application of object orientation at the language-level and its graphical development environment. Smalltalk went through various versions and interest in the language grew.[10] While Smalltalk was influenced by the ideas introduced in Simula 67 it was designed to be a fully dynamic system in which classes could be created and modified dynamically.[11]


In the 1970s, Smalltalk influenced the Lisp community to incorporate object-based techniques that were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (such as LOOPS and Flavors introducing multiple inheritance and mixins) eventually led to the Common Lisp Object System, which integrates functional programming and object-oriented programming and allows extension via a Meta-object protocol. In the 1980s, there were a few attempts to design processor architectures that included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv.


In 1981, Goldberg edited the August issue of Byte Magazine, introducing Smalltalk and object-oriented programming to a wider audience. In 1986, the Association for Computing Machinery organised the first Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), which was unexpectedly attended by 1,000 people. In the mid-1980s Objective-C was developed by Brad Cox, who had used Smalltalk at ITT Inc., and Bjarne Stroustrup, who had used Simula for his PhD thesis, eventually went to create the object-oriented C++.[10] In 1985, Bertrand Meyer also produced the first design of the Eiffel language. Focused on software quality, Eiffel is a purely object-oriented programming language and a notation supporting the entire software lifecycle. Meyer described the Eiffel software development method, based on a small number of key ideas from software engineering and computer science, in Object-Oriented Software Construction. Essential to the quality focus of Eiffel is Meyer's reliability mechanism, Design by Contract, which is an integral part of both the method and language.


Challenges of object-oriented design are addressed by several approaches. Most common is known as the design patterns codified by Gamma et al.. More broadly, the term "design patterns" can be used to refer to any general, repeatable, solution pattern to a commonly occurring problem in software design. Some of these commonly occurring problems have implications and solutions particular to object-oriented development.


The SOLID principles are a set of golden rules that aim to improve the design and maintainability of software. These principles were first introduced in the early 2000s and have since become widely accepted as best practices for developers working with object-oriented programming languages.SOLID principles are particularly relevant for agile development, as they help create flexible, scalable, and easy to modify code.


The student who successfully completes the course will have the ability to design and verify advanced programming abstractions using the abstraction mechanism provided by object-oriented programming languages like Java. He or she will have a good understanding of the basic components of the run-time supports of high-level programming languages.


Possible readings to cover the various parts of the course include the following. Programming language paradigms: 1) M. Gabbrielli and S. Martini, Linguaggi di Programmazione: Principi e Paradigmi, McGraw-Hill, 2006 2) Michael L. Scott, Programming Language Pragmatics, Third Edition, Morgan-Kaufmann, 2009 3) Peter Sestoft Programming Language Concepts, Springer, 2012 Object-Oriented Programming: 4) B. Liskov (with J. Guttag), Program Development in Java: Abstraction, + Specification and Object-Oriented design, Addison-Wesley, 2000 Concurrent Programming Techniques: 5) The art of multiprocessor programming (Cap 1-2-9), Maurice Herlihy, Nir Shavit, 2012 Elsevier Other material will be available for downloading from the course web page.


Object-oriented programming is built around a number of concepts. These concepts are implemented using classes, objects and methods, but it is useful to review those concepts more generally. Four core concepts of object-oriented programming are abstraction, encapsulation, inheritance and polymorphism.


Polymorphism means to have one name but multiple forms. This means that the properties of an object can change with the context. For example, an object called person could be considered an owner when inside a car but an employee when at the office. These concepts have made object-oriented programming the most widely used approach in today's software development.


About

Welcome to the group! You can connect with other members, ge...

bottom of page