Introduction

What is the course about?

The course will focus on object-oriented software development

Course will emphasize agile software development

Object-Oriented Programming (OOP)

The course will focus on object-oriented software construction using an object-oriented language.

"Object-oriented" means that the software is a collection of objects that interact with each other.

An object is an instance of a class.

A class is a user-defined data type: like a struct in C.

A class defines

fields (member variables): a collection of variables that each object that is an instance of the class will possess

methods (member functions): define the behavior of the objects that are instances of the class

The key to developing good object-oriented software is figuring out what objects/classes you need, and what the behavior of those objects/classes should be!

In other words, the important thing is WHAT objects do, not HOW they do it

This is the distinction between design and implementation:

Design is figuring out WHAT the objects should do — their behavior

Implementation is taking the desired behavior and figuring out HOW the behavior should be accomplished

This course focuses mainly on the design (the WHAT), although the implementation (the HOW) will also be very important since you are required to build a system!