Effective OOAD Principles with Java

Ravishankar Narayanan Nair
Senior Software Engineer,
Crimson Logic Pte Ltd,
31, The Crimson,
Science Park 2, Singapore
117 611
Email: rshankarn@acm.org

How can we create reusable software with the help of abstraction and inheritance in the JavaTM programming language? This session provides insight for programmers using Java technology and explains the great open close principle (Bertrand Meyer) and Liskov Substitution principle with sample code, as well as illustrates the ideas clearly within the presentation. Well-designed code can be extended without modification, and we can avoid the problems of metamorphosis and combination explosions in inheritance by writing code in the correct way. The presentation provides good examples for future Java programmers, who want to leverage on powerful principles to get most of the benefits like scalability, modularity, efficiency and reusability.

Writing a Java class using the online API is not a great deal, but delivering a complex solution with more than say 1000 such classes in such a way that most of the classes are reusable, the system is extensible and is backward compatible - that is not so easy. This session is built in such a way as to provide those fundamental knowledge in refactoring, designing reusable components, programming to interfaces, design patterns and some tips and tricks so that you can immediately go back and apply to your systems if you have not done so yet. The session would be suiting to those future Java programmers to get equipped with the latest trends and principles in designing and architecting efficient Object Oriented Systems.

Tutorial Structure

Objects from first principles
- The first class objects
- Collaboration is OO System - Illustration
- Metaclasses and MOP

- Interface Inheritance
- Implementation Inheritance
- Inheritance is Delegation - Illustration

- Bertrand Mayer's Open Close Principle - Illustartion
- Liskov's Substitution Principle - Illustration
- Dynamic Binding - The great benefit
- Mayer's Assertion Re-declaration Rule
- When to Introduce States in OO Systems?

Principles for good design
- Metamorphosis : Static-Dynamic Segregation
- Combination Explosion
- Dependency Inversion Principles

Reusable ideas - patterns
- Introduction
- A Drawing Tool - How we use patterns - Illustration

Evolving Technologies
- Design By Contract
- Aspect Oriented Programming

Practical - Coding Time!
- Creating a menu based calculator program illustrating some of the things you learned above - we will
n,do it now

Background Knowledge

The participants are expected to know at least one object oriented language, say C++ or Java. The session is aimed at intermediate to advanced Java programmers who would like to write code effectively by concentrating on high level principles of the object oriented system. Theoretically oriented researchers can get benefit from the lecture in order to put in practice the above principles in their design/architecture.

Information About the Speaker


Ravi Shankar. N,
Senior Software Engineer,
Crimson Logic Pte Ltd,
31, The Crimson,
Science Park 2, Singapore
117 611
Telephone: (65) 98630563
Email: rshankarn@acm.org

Bio Data

Ravi Shankar is a Senior Software Engineer at CrimsonLogic Pte Ltd, specializing in designing and architecting advanced Java applications in the broad areas of J2SE, J2EE and J2ME, in particular in enterprise mission critical applications. From his last 11 years of excellent track record as a Software Engineer, Trainer, Senior Consultant and Senior Software Engineer in Hyderabad (first seven years) and Singapore (later four years), Ravi has a vast expertise to bring in implementing and delivering high quality systems. In addition, he had taught numerous students, who range from undergraduates to project leads and has established himself as a highly-regarded trainer and developer famed for his caliber and efficiency.

Ravi is a frequent speaker for both local and national seminars and conferences where his presentations have benefits many IT professionals. In particular, he participated and presented a paper on "Blending Mathematics and Computer Science" at ISTAM-99 (Indian Society for Theoretical and Mechanical Sciences) as well as other topics on "Implementation of Visual Media in Teaching" and "Expert Systems and Artificial Intelligence". He has also authored several tutorials on C, C++, Oracle and Java and has been a regular columnist in their local newspapers. Ravi was a selected speaker in International Java ONE conference in Japan in September 2002, where he had presented two papers on "Thoughts on Inheritance" and "Exploring Extreme Programming".

As software design and implementation goes beyond just classroom knowledge and books, Ravi's industrial experiences and know-how will undoubtedly be the key differentiator as a preferred architect. As an early adopter of Java and J2EE since their inception and with his skillful delivery and interpersonal skills the valued customer can expect to have feature rich reusable and maintainable solutions which will be equipped for the latest trends and challenges in software development.

Ravi is an ACM ( Association of Computing Machinery) Professional Member and he is technical committee member for OASIS's Framework for Web Services Implementation.

Home Top