Lecture 5/4: C++ Classes


May 4, 2020

đź“‚Associated files

C++ Classes

CS 106B: Programming Abstractions

Spring 2020, Stanford University Computer Science Department

Lecturers: Chris Gregg and Julie Zelenski

An image with a pile of boxes, which are modeling objects that we will demonstrate in the use of classes


Slide 2

Announcements


Slide 3

Today's Goals:


Slide 4

Bouncing Balls Demo

The Qt Creator Logo


Slide 5

Introduction to C++ Classes

An image of a 'Lunchable' which contains lunch food, including meat, crackers, cheese, dessert, etc.


Slide 6

The need for new types


Slide 7

Classes: Encapsulation


Slide 8

Classes: Encapsulation


Slide 9

Elements of a Class


Slide 10

The Class Interface Divide


Slide 11

Structure of a header file

// classname.h
#pragma once

class ClassName {
    // class definition
};

Slide 12

Constructors and (eventually) Destructors

// in MyClass.h
class MyClass {
public:
    MyClass(); // default constructor
    MyClass(parameters); // constructor
  ...
};

Slide 13

The Implicit Parameter


Slide 14

The this pointer


Slide 15

Let's work on an example: the Fraction class

An image showing 3/4


Slide 16

Questions we must answer about the Fraction class

An image showing 3/8 + 6/4


Slide 17

Fraction Class Outline

class Fraction {
public:
 // Things we want the class clients to see go here

private:
 // Things we want to encapsulate from the clients go here

};

Slide 18

The Fraction class constructors


Slide 19

Private functions


Slide 20

Last but not least…


Slide 21

The Fraction Class – implementation


Slide 22

The overloaded constructor


Slide 23

Fraction multiplication


Slide 24

reduce() and gcd()


Slide 25

Fraction decimal value


Slide 26

Overloading the << operator