Concepts of Object-Oriented Programming
o Defining object-oriented programming
o Pitfalls of traditional (procedural) programming
o Major features of object-oriented programming
Principles of Object-Oriented Programming
o Abstraction
o Encapsulation
o Inheritance
o Polymorphism
Making the Paradigm Shift
o Defining the object
o Certain problems in action-oriented approach
o Object-oriented thinking
What is Abstraction?
o Defining abstraction
o The importance of good abstraction
o Implementing data abstraction
What is Encapsulation?
o Defining encapsulation
o The importance of encapsulation
o Implementing encapsulation
Classes and Objects
o Defining the class
o Class vs. object
o Building a class
Relations among Classes
o The need for class relations
o Finding class relations
o Building class relations
What is Inheritance?
o Defining inheritance
o The importance of inheritance
o Abstract class, concrete class, and interface
o Method overloading
Applying Inheritance
o Finding "is a" relationship
o A review of abstraction
o Building class hierarchy
What is Polymorphism?
o Defining polymorphism
o Method overriding
o Abstract methods
Applying Polymorphism
o Preliminary design, design & redesign
o Go after polymorphism
o Overloading vs. overriding
Aggregation
o Big objects are composed of smaller objects
o Making use of aggregation
Friend Classes
o Defining "friendship"
o Making use of the friendship
Nested Classes
o Defining nested classes
o Making use of nested classes
Some of the Most Famous OOP Languages
The Need for Software Engineering
o Examples of software errors and failures
o Economy
o Maintenance
o Clear Planning
Scope of Software Engineering
o Relationship between software engineering and computer science
o Team formation
o Project planning
o Development process
Software Creation Process
o Requirements phase
o Specification phase
o Implementation phase
o Maintenance phase
Software Life-Cycle Models
o Waterfall model
o Object-oriented models
Common Steps to Build an Object-Oriented Software System
o Forming the work team
o Selecting a methodology
o Gathering requirements
o Planning classes
o Writing code
o Documenting the project
o Deployment
Object-Oriented Analysis and Design
o Definition of analysis & design
o The need for analysis & design
o Object-oriented analysis & design techniques
Design Patterns
o Definition of design patterns
o A few examples of design patterns
Software Frameworks
o Definition of software frameworks
o The need for software frameworks
o Examples of software frameworks
Component Programming
o Definition of component programming
o The need for component programming
Web Services
o Definition of Web services
o The need for Web services