Object Oriented Programming for Scientific Computing
Object Oriented Programming for Scientific Computing
Object Oriented Programming for Scientific Computing
This note explains
the following topics: Short recapitulation of basics of object-oriented
programming in C++, Memory management , Constant values and objects, Error
handling, Inheritance, Dynamic polymorphism, Static polymorphism, The Standard
Template Library, Traits, Policies, Template metaprogramming, Expression
templates, C++11 threads.
Carl Erickson's
note on Object-Oriented Programming introduces the OOP paradigm in detail. It
first gives an explanation of Motivation for Object-Oriented Programming and The
Object-Oriented Paradigm, including insights as to why OOP is effective. The
note discusses essential concepts of OOP: Abstraction, Identity, Encapsulation,
and Modularity, object-oriented messaging, and object-oriented hierarchy. It
also discussed naming conventions, object-oriented typing, and concurrency and
persistence. Other heads-up are on practical aspects of OOP: the Object-Oriented
Development Process and ObjectOriented Analysis Techniques. It also provides
tools for effective design through the use of UML notation, CRC cards, and
object-oriented class relationships. In simple terms, this can be a useful
resource to understand the theoretical and practical aspects of OOP regarding
its pitfalls and best practices.
Following
is an exploration of object-oriented program design with an emphasis on how to
make the transition from Scheme to Java. Covers: Java mechanics and data types;
static fields and the Singleton pattern; simple graph algorithms, object
oriented data structures-all in a very hands-on way. Discusses GUI programming,
graphical user interfaces, including design. This resource, therefore, presents
theoretical findings appropriately supported with practical examples that are
very crucial in the understanding of object-oriented design principles and their
application in Java; thus, it is suitable for learners seeking to upgrade their
programming skills and knowledge in design.