This lecture
note covers the following topics: Types and objects, Very simple Java programs,
Fancier Java features, Recursion, Parsing, Exception handlers, Lists, Trees,
Graphical User Interfaces: Static, Generic Types and Java Collections, Software
Design Principles, Threads and Concurrency, The Java Query Language, Using Java
to Query databases and other persistent object repositories JPQL, Distributed
Computing and Quantum Computing.
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.