Week 1 - Class Overview and Introduction to Object Oriented Programming (OOP)

Learning objectives

  • Design classes to represent data types in C++
  • Construct and read UML class diagrams
  • Write basic object oriented programs using common design principles

Schedule

Day 1

  • Review Syllabus and Course Tips
  • OOP Intro
  • Setup VSCode at home. Update Project Templates and plugins.
  • Take the background survey in Canvas

Day 2

Day 3

Day 4

If needed, review:

Setup

Review the Syllabus in Canvas. Then take the Background survey in Canvas.

You need to get VSCode set up using these instructions.

If you already had VSCode and a compiler set up from CS161, you should grab new copies of the VSCode project templates. We periodically make minor updates and improvements to them: VSCode Project Templates

Because we just switched to using VSCode, here are some quick tips on using it to work with projects and files:

If you took CS161 in Java (or did AP CS A), you need to learn the basics of C++. Check out this C++ Crash Course for AP CS students.

Some of the videos in this course were made using a different IDE (QTCreator). It functions basically the same as VSCode. If you can't figure out how to do something you see in VSCode, please raise the issue in the discussion forum.

For any video, you can click in the lower right corner to watch on YouTube. You can then use the settings icon there (Gear symbol at bottom of video) to watch at higher quality. Doing so can make a big difference when trying to read code examples.

OOP Basics

The history of modern programming is a quest for abstractions and structure that can be added to assembly code to make programmers more productive and less error-prone. At some point, our code gets boiled down to machine instructions we could have written directly in assembly… but higher-level languages allow us to more succinctly express ourselves and provide structure and limitations that prevent us from writing unintelligible and unmaintainable code.

Object Oriented Programming is a methodology for structuring programs that aims to make parts of a system accessible to each other through high-level abstractions—so you don't have to know the ugly details of how a window paints itself to the screen, just that you can ask it to repaint itself by saying window.repaint(). It is the methodology of choice for most large projects involving large teams of developers all working on different parts of a system. There is nothing we can write using OOP we could not write without it, but it does make some jobs much easier.

Read Ch 9.1-9.5 and watch these videos:

Do the Objects Basics - Use assignment in CPP Lab . If you have not used it before or need a refresher, start with the CPP Lab guide.

Headers and Information Hiding

Read Ch 9.6-9.7 and watch these videos:

Do the Objects Basics - Creation CPP Lab .

Documentation and UML

Read 9.10-9.11 and watch these videos:

This first video shows QTCreator, but VSCode does the same trick. Type /** on the line above a function and hit enter.

Unit Testing - Review

If you did not take CS161 here, begin by reviewing these three videos about unit testing. Otherwise, feel free to skip them.

Unit Testing - CS162

In CS162 there are some small differences in how we will do unit testing. This video talks about them:

The UnitTesting Guide has step-by-step instructions for setting up unit testing projects refer to it any time you need to set up a project.

Working on the Command Line - Review

In CS161 we learned how to use the command line. If you don't remember how to navigate on the command line and how to build your code by hand and run it, you should review this topic.

This Command Line Guide provides detailed instructions for how to open a command prompt, set up the path, navigate, and use g++. Using a QtCreator project, try building and running the code from the command prompt as shown in the video.

Assignment

Before you tackle this week's assignment, check out this video that reviews two other sample classes. The SimpleString shows a class that manages an array which is something you need to do in your first assignment.

Extra Info

OOP Introduction

New to object-oriented programming? Having trouble seperating the details from the big picture? Try reading Don't fear the OOP.

Unit Testing & Test Driven Development