0% found this document useful (0 votes)
6 views37 pages

684198

This document covers the concepts of structures and classes in C++, detailing their definitions, member functions, and differences. It explains how to declare and initialize structures, access their members, and the principles of object-oriented programming, including encapsulation and data abstraction. The document emphasizes the importance of public and private members in classes and the distinction between structures and classes.

Uploaded by

okuwobi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views37 pages

684198

This document covers the concepts of structures and classes in C++, detailing their definitions, member functions, and differences. It explains how to declare and initialize structures, access their members, and the principles of object-oriented programming, including encapsulation and data abstraction. The document emphasizes the importance of public and private members in classes and the distinction between structures and classes.

Uploaded by

okuwobi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 37

Copyright © 2002 Pearson Education, Inc.

Slide 1
Chapter 6

Structures and Classes

Created by Frederick H. Colclough, Colorado Technical University

Copyright © 2002 Pearson Education, Inc. Slide 2


Learning Objectives
 Structures
 Structure types
 Structures as function arguments
 Initializing structures
 Classes
 Defining, member functions
 Public and private members
 Accessor and mutator functions
 Structures vs. classes
Copyright © 2002 Pearson Education, Inc. Slide 3
Structures
 2nd aggregate data type: struct
 Recall: aggregate meaning ‘grouping’
 Recall array: collection of values of same
type
 Structure: collection of values of different
types
 Treated as a single item, like arrays
 Major difference: Must first ‘define’ struct
 Prior to declaring any variables
Copyright © 2002 Pearson Education, Inc. Slide 4
Structure Types
 Define struct globally (typically)
 No memory is allocated
 Just a ‘placeholder’ for what our struct
will ‘look like’
 Definition:
struct CDAccountV1 Name of new struct
‘type’
{
double balance;  member names
double interestRate;
int term;
};
Copyright © 2002 Pearson Education, Inc. Slide 5
Declare Structure Variable
 With structure type defined, now declare
variables of this new type:
CDAccountV1 account;
 Just like declaring simple types
 Variable account now of type CDAccountV1
 It contains ‘member values’

Each of the struct ‘parts’

Copyright © 2002 Pearson Education, Inc. Slide 6


Accessing Structure Members
 Dot Operator to access members
 account.balance
 account.interestRate
 account.term
 Called ‘member variables’
 The ‘parts’ of the structure variable
 Different structs can have same name
member variables

No conflicts

Copyright © 2002 Pearson Education, Inc. Slide 7


Structure Example
Display 6.1,
page 225

Copyright © 2002 Pearson Education, Inc. Slide 8


Structure Example Cont’d
Display 6.1, page 225

Copyright © 2002 Pearson Education, Inc. Slide 9


Structure Pitfall
 Semicolon after structure definition
 ; MUST exist:
struct WeatherData
{
double temperature;
double windVelocity;
};  REQUIRED semicolon!
 Required since you ‘can’ declare structure
variables in this location

Copyright © 2002 Pearson Education, Inc. Slide 10


Structure Assignments
 Given structure named CropYield
 Declare two structure variables:
CropYield apples, oranges;
 Both are variables of ‘struct type CropYield’
 Simple assignments are legal:
apples = oranges;

Simply copies each member variable from apples
into member variables from oranges

Copyright © 2002 Pearson Education, Inc. Slide 11


Structures as Function Arguments
 Passed like any simple data type
 Pass-by-value
 Pass-by-reference
 Or combination
 Can also be returned by function
 Return-type is structure type
 Return statement in function definition
sends structure variable back to caller

Copyright © 2002 Pearson Education, Inc. Slide 12


Initializing Structures
 Can initialize at declaration
 Example:
struct Date
{
int month;
int day;
int year;
};
Date dueDate = {12, 31, 2003};
 Declaration provides initial data to all three member
variables

Copyright © 2002 Pearson Education, Inc. Slide 13


Classes
 Similar to structures
 Adds member FUNCTIONS
 Not just member data
 Integral to object-oriented programming
 Focus on objects

Object: Contains data and operations

In C++, variables of class type are objects

Copyright © 2002 Pearson Education, Inc. Slide 14


Class Definitions
 Defined similar to structures
 Example:
class DayOfYear  name of new class type
{
public:
void output();  member function!
int month;
int day;
};
 Notice only member function’s prototype
 Function’s implementation is elsewhere
Copyright © 2002 Pearson Education, Inc. Slide 15
Declaring Objects
 Declared same as all variables
 Predefined types, structure types
 Example:
DayOfYear today, birthday;

Declares two objects of class type DayOfYear
 Objects include:
 Data

Members month, day
 Operations (member functions)

output()
Copyright © 2002 Pearson Education, Inc. Slide 16
Class Member Access
 Members accessed same as structures
 Example:
today.month
today.day
 And to access member function:
today.output();  Invokes member function

Copyright © 2002 Pearson Education, Inc. Slide 17


Class Member Functions
 Must define or ‘implement’ class member
functions
 Like other function definitions
 Can be after main() definition
 Must specify class:
void DayOfYear::output()
{…}

:: is scope resolution operator

Instructs compiler ‘what class’ member is from

Item before :: called type qualifier
Copyright © 2002 Pearson Education, Inc. Slide 18
Class Member Functions Definition
 Notice output() member function’s
definition (in next example)
 Refers to member data of class
 No qualifiers
 Function used for all objects of the class
 Will refer to ‘that object’s’ data when invoked
 Example:
today.output();

Displays ‘today’ object’s data

Copyright © 2002 Pearson Education, Inc. Slide 19


Complete Class Example
Display 6.3,
page 237

Copyright © 2002 Pearson Education, Inc. Slide 20


Complete Class Example Cont’d
Display 6.3, page 237

Copyright © 2002 Pearson Education, Inc. Slide 21


Dot and Scope Resolution Operator
 Used to specify ‘of what thing’ they are
members
 Dot operator:
 Specifies member of particular object
 Scope resolution operator:
 Specifies what class the function
definition comes from

Copyright © 2002 Pearson Education, Inc. Slide 22


A Class’s Place
 Class is full-fledged type!
 Just like data types int, double, etc.
 Can have variables of a class type
 We simply call them ‘objects’
 Can have parameters of a class type
 Pass-by-value
 Pass-by-reference
 Can use class type like any other type!

Copyright © 2002 Pearson Education, Inc. Slide 23


Encapsulation
 Any data type includes
 Data (range of data)
 Operations (that can be performed on data)
 Example:
int data type has:
Data: +-32,767
Operations: +,-,*,/,%,logical,etc.
 Same with classes
 But WE specify data, and the operations to
be allowed on our data!
Copyright © 2002 Pearson Education, Inc. Slide 24
Abstract Data Types
 ‘Abstract’
 Programmers don’t know details
 Abbreviated ‘ADT’
 Collection of data values together with set
of basic operations defined for the values
 ADT’s often ‘language-independent’
 We implement ADT’s in C++ with classes

C++ class ‘defines’ the ADT
 Other languages implement ADT’s as well
Copyright © 2002 Pearson Education, Inc. Slide 25
More Encapsulation
 Encapsulation
 Means ‘bringing together as one’
 Declare a class  get an object
 Object is ‘encapsulation’ of
 Data values
 Operations on the data (member functions)

Copyright © 2002 Pearson Education, Inc. Slide 26


Principles of OOP
 Information Hiding
 Details of how operations work not known
to ‘user’ of class
 Data Abstraction
 Details of how data is manipulated within
ADT/class not known to user
 Encapsulation
 Bring together data and operations, but
keep ‘details’ hidden

Copyright © 2002 Pearson Education, Inc. Slide 27


Public and Private Members
 Data in class almost always designated
private in definition!
 Upholds principles of OOP
 Hide data from user
 Allow manipulation only via operations

Which are member functions
 Public items (usually member functions)
are ‘user-accessible’

Copyright © 2002 Pearson Education, Inc. Slide 28


Public and Private Example
 Modify previous example:
class DayOfYear
{
public:
void input();
void output();
private:
int month;
int day;
};
 Data now private
 Objects have no direct access
Copyright © 2002 Pearson Education, Inc. Slide 29
Public and Private Example 2
 Given previous example
 Declare object:
DayOfYear today;
 Object today can ONLY access
public members
 cin >> today.month; // NOT ALLOWED!
 cout << today.day; // NOT ALLOWED!
 Must instead call public operations:

today.input();

today.output();
Copyright © 2002 Pearson Education, Inc. Slide 30
Public and Private Style
 Can mix & match public & private
 More typically place public first
 Allows easy viewing of portions that can be
USED by programmers using the class
 Private data is ‘hidden’, so irrelevant to
users
 Outside of class definition, cannot
change
(or even access) private data
Copyright © 2002 Pearson Education, Inc. Slide 31
Accessor and Mutator Functions
 Object needs to ‘do something’ with it’s
data
 Call accessor member functions
 Allow object to read data
 Also called ‘get member functions’
 Simple retrieval of member data
 Mutator member functions
 Allow object to change data
 Manipulated based on application
Copyright © 2002 Pearson Education, Inc. Slide 32
Separate Interface and
Implementation
 User of class need not see details of how
class is implemented
 Principle of OOP  encapsulation
 User only needs ‘rules’
 Called ‘interface’ for the class

In C++  public member functions and
associated comments
 Implementation of class hidden
 Member function definitions elsewhere
 User need not see them
Copyright © 2002 Pearson Education, Inc. Slide 33
Structures versus Classes
 Structures
 Typically all members public
 No member functions
 Classes
 Typically all data members private
 Interface member functions public
 Technically, same
 Perceptionally, very different mechanisms

Copyright © 2002 Pearson Education, Inc. Slide 34


Thinking Objects
 Focus for programming changes
 Before  algorithms center stage
 OOP  data is focus
 Algorithms still exist
 They simply focus on their data
 Are ‘made’ to ‘fit’ the data
 Designing software solution
 Define variety of objects and how they
interact
Copyright © 2002 Pearson Education, Inc. Slide 35
Summary 1
 Structure is collection of different types
 Class used to combine data and functions
into single unit -> object
 Member variables and member functions
 Can be public  accessed outside class
 Can be private  accessed only in a member
function’s definition
 Class and structure types can be formal
parameters to functions
Copyright © 2002 Pearson Education, Inc. Slide 36
Summary 2
 C++ class definition
 Should separate two key parts

Interface: what user needs

Implementation: details of how class works

Copyright © 2002 Pearson Education, Inc. Slide 37

You might also like