|
| Login | Sign up | My Wish List |
![]() | A Theory of Objects (Monographs in Computer Science) by Martin Abadi, Luca Cardelli ISBN-10: 9780387947754 ISBN-10: 0-387-94775-2 ISBN-13: 9780387947754 ISBN-13: 978-0-387-94775-4 Hardcover 1998-04-23 Springer Find Lowest Price | |
Editorials | ||
Product Description Procedural languages are generally well understood and their formal foundations cast in the forms of various lambda-calculi. For object- oriented languages however the situation is not as clear-cut. In this book the authors propose and develop a different approach by developing object calculi in which objects are treated as primitives. Using object calculi,the authors are able to explain both the semantics of objects and their typing rules and demonstrate how to develop all of the most important concepts of object-oriented programming languages: self, dynamic dispatch, classes, inheritance, protected and private methods, prototyping, subtyping, covariance and contravariance, and method specialization. Many researchers and graduate students will find this an important development of the underpinnings of object-oriented programming. | ||
Reviews | ||
The theory of object-oriented typing Abadi and Cardelli have written a very thorough, formal analysis of the basic theory of object oriented (OO) languages. The first parts of the book present the mathematical tools needed for the discussion. There, they extend formal logic so that it can make statements about classes and subclasses, the kind of statements that must be made in order to determine whether a program, even a whole programming language, make good sense. The authors introduce a notation I haven't seen elsewhere, having to do with the object instance bound to a method instance. This subtlety describes a number of language constructs, including Java's inner classes. They add further notation for describing languages where object structure can be highly dynamic. Although of theoretical interest, the dynamics do not apply directly to commercial OO languages such as Java, C++, or Ada. Dynamics may also complicate reasoning about the type systems. Other type analyses are simplified by acting on the static program representation. Dynamic analysis will have to invoke heavier mechanisms, like the ones used in traditional formal verification of programs. I have to admit that I haven't gone through the book's entire content because that discussion doesn't address my current needs. Right now, I'm working with very static systems; this book creates solutions for problems that I don't have. Still, I've gotten some value out of the basic discussion of covariance and contravariance in subclassing, so the book has helped me somewhat. This book is intended for researchers in computing theory, or possibly for practitioners who develop languages and language tools. It's way beyond the needs of most OO programmers, and is decidedly not for OO beginners. If you need deep, rigorous understanding of OO foundations, beyond what's needed for mainstream languages or applications, then this book may be very helpful. //wiredweird | ||
Fascinating book in theoretical computer science! This book attempts to give a "lambda calculus" for objects in OOP and does a fine job in that regard. For those interested in the foundations of programming languages, this book is a "must-have". I can even see applications in it: the DICOM object standards for medical images. Definitely worth reading and worth the price.-LC (Global Mathematics, Inc) | ||