COMP 3670 - Understanding Objects

Alex Bunardzic, British Columbia Institute Of Technology (BCIT)

Course Description and Goals

Teaches the basics of object-oriented software development. Fundamental notions of information, redundancy, communication, and other concepts necessary for grasping software objects are introduced. Emphasis on the process of abstraction. Object discovery and iterative development.Explaining the concepts of encapsulation (implementatation hiding), inheritance (code reuse) and polymorphism (behavior reuse).Introduces the idea of protocols and interfaces. Design patterns (reusing best practices in software development).Methodologies of object-oriented software development.

The course prepares students for entering the study of object-oriented implementation (in particular, the course will focus on introducing basic concepts related to Java and object-oriented analysis and design).

Course Learning Outcomes

At the end of this course, the student will be able to:

Click on the links to download the PowerPoint presentations

Course outline (MS Word Document)

Week 1            - Why Objects?

Week 2a          - What Are Objects?

Week 2b         - Communication

Week 3           - Three Pillars Of OO

Week 4a         - Classification

Week 4b         - Classes and Objects

Week 4c         - Intention and Implementation

Week 5a         - OO and Software Engineering

Week 5b         - Interface

Week 5c         - Inheritance

Week 5d        - Code examples

Week 6a        - Polymorphism

Week 6b        - Vehicle Rental System

Week 6c       - Code examples

Week 8         - Big Ball Of Mud

Week 9a       - Action Framework

Week 9b       - Code examples

Week 10a     - OO And The Fear Of Committment

Week 10b    - Finite State Machine

Week 10c    - VRS Revisited

Week 10d    - VRS code

Week 11a    - Patterns And OO

Week 11b    - Command Pattern

Week 11c    - Source code for House Automation System (zipped)