Description:
Mainstream software development nowadays uses object oriented programming (or OOP for short) languages and techniques. OOP is a programming paradigm and is supported by many modern programming languages.
While understanding the fundamental concepts behind OOP is a key requirement to be effective in OOP, one also needs to understand how these concepts are applied in real software projects. Expert object oriented designs also adhere to best practices and principles to improve the qualities of object oriented systems like component reusability, extensibility, maintainability and robustness.
This training covers the essential concepts, principles and best practices of OOP that the participants will be able to apply in any object oriented programming language. Participants will be guided through the thinking process behind object oriented systems designing. Sample source code and other examples used come from real world software systems to make sure the training is practical oriented (We don't teach you in terms of ineffective "car" classes or "employee" classes!).
Training Objectives:
At the end of the training, participants will be able to
- Explain with clarity the OOP fundamental concepts
- Apply OOP fundamental concepts in real world software systems (rather than in trivial and exemplary software)
- Explain best practices and principles behind OOP
- Apply OOP best practices and principles in real world software systems (rather than in trivial and exemplary software)
Target Groups:
- Beginners to computer programming
- Those who are familiar with procedural programming languages but want to switch to object oriented programming.
- Those who are somewhat familiar with object oriented programming, but find difficulties to fully comprehend and/or apply the technique.
Prerequisites:
- This is ideal for beginners and also for seniors who want to switch to OOP. Hence, no special programming skills are expected from participants. Minimum, you need to be familiar with using computers.
Communication Language:
English
Duration:
1 day (~8 hours)
Facilitator:
Kamal Wickramanayake (Profile)
Notes:
- This training is delivered in a programming language independent manner. Sample source code will be provided in Java and PHP programming languages.
Training Content:
-
Introduction
- What is involved in programming in general?
- Thinking in terms of objects (messages, collaboration, responsibility)
- Proceedural Vs object oriented programming
- Benefits of object oriented programming
-
Classes And Objects
- What is a class?
- What is an object?
- Members of a class (fields, methods)
- Instance fields and methods
- Class (static) fields and methods
- Constructors, destructors and object life cycle
- Method overloading
-
Object Oriented Fundamentals
- Abstraction
- Encapsulation (includes access controlling)
- Inheritance (includes method overriding)
- Polymorphism
-
Features Of Object Oriented Programming Languages
- Interfaces
- Abstract classes
- Nested classes
- Working with references to objects (Includes pass-by-value, pass-by-reference)
- Coercion and down casting
- Meaning of "this" and "super"
- Copying objects (deep and shallow)
- Immutability
-
Good Object Oriented Design Principles
- Open close principle
- Liskov's substitution principle
- Separation of concerns
- High cohesion
- Low coupling
- Writing to interface
- Maintaining a consistent level of abstraction in a class