+ All Categories
Home > Documents > C++ Classes

C++ Classes

Date post: 04-Jan-2016
Category:
Upload: hien
View: 27 times
Download: 0 times
Share this document with a friend
Description:
C++ Classes. List of circles. Represent a list of circles: vector xlist; // x-coordinates of centers vector ylist; // y-coordinates of centers vector rlist; // circle radii. inputCircles.cpp. ... int main() { - PowerPoint PPT Presentation
39
CSE1222: Lecture 19 The Ohio State University 1
Transcript
Page 1: C++ Classes

CSE1222: Lecture 19 The Ohio State University 1

Page 2: C++ Classes

List of circles

Represent a list of circles:

vector<double> xlist; // x-coordinates of centers

vector<double> ylist; // y-coordinates of centers

vector<double> rlist; // circle radii

CSE1222: Lecture 19 The Ohio State University 2

Page 3: C++ Classes

inputCircles.cpp...int main(){ vector<double> xlist; // x-coordinates of circle centers vector<double> ylist; // y-coordinates of circle centers vector<double> rlist; // circle radii double x, y, radius; int n(0);

cout << "Enter number of circles: "; cin >> n;

for (int i = 0; i < n; i++) { cout << "Enter circle " << i << " (x, y, radius): "; cin >> x; xlist.push_back(x); cin >> y; ylist.push_back(y); cin >> radius; rlist.push_back(radius); } ...

CSE1222: Lecture 19 The Ohio State University 3

Page 4: C++ Classes

Class Circle Create an “object” (C++ class) representing a circle:

class Circle

{

public:

double x;

double y;

double radius;

};

CSE1222: Lecture 19 The Ohio State University 4

Page 5: C++ Classes

Class Attributes C++ class representing a circle:

class Circle

{

public:

double x;

double y;

double radius;

};

x, y, radius are called the “class attributes” or “data members” of class Circle

CSE1222: Lecture 19 The Ohio State University 5

Page 6: C++ Classes

Class Attributesclass Circle {

public: double x; double y; double radius; };

To declare a Circle object:Circle c;

To access the Circle attributes:c.xc.yc.radius

CSE1222: Lecture 19 The Ohio State University 6

Page 7: C++ Classes

Example class Circle

{

public:

double x;

double y;

double radius;

};

... Circle c;

cin >> c.x; cin >> c.y; cin >> c.radius;

cout << "Radius = " << c.radius << endl;

CSE1222: Lecture 19 The Ohio State University 7

Page 8: C++ Classes

List of circles C++ class representing a circle:

class Circle {

public: double x;

double y;double radius;

};

Declare a vector of class Circle:

vector<Circle> list;

CSE1222: Lecture 19 The Ohio State University 8

Page 9: C++ Classes

circleClass.cpp...class Circle{public: double x; // x-coordinate of circle center double y; // y-coordinate of circle center double radius; // radius of circle};

int main(){ Circle c; vector<Circle> list; int n(0);...

CSE1222: Lecture 19 The Ohio State University 9

Page 10: C++ Classes

circleClass.cpp... cout << "Enter number of circles: "; cin >> n;

for (int i = 0; i < n; i++) { cout << "Enter circle " << i << " (x, y, radius): "; cin >> c.x; cin >> c.y; cin >> c.radius; list.push_back(c); }

cout << endl << "Circles:" << endl; for (int i = 0; i < list.size(); i++) { c = list[i]; cout << "Center: (" << c.x << "," << c.y << ")."; cout << " Radius: " << c.radius << endl; }...

CSE1222: Lecture 19 The Ohio State University 10

Page 11: C++ Classes

circleClass2.cpp...class Circle{public: double x; double y; int radius; // Note: radius is type int, not double};

int main(){ Circle c; vector<Circle> list; int n(0);...

CSE1222: Lecture 19 The Ohio State University 11

Page 12: C++ Classes

What’s the error?...class Circle{public: double x; // x-coordinate of circle center double y; // y-coordinate of circle center double radius; // radius of circle}

int main(){ Circle c; vector<Circle> list; int n(0);...

CSE1222: Lecture 19 The Ohio State University 12

Page 13: C++ Classes

circleIntersect.cpp...class Circle{public: double x; double y; double radius;};

// protoypesvoid read_circle(const char * prompt, Circle & c);bool intersects(const Circle & c1, const Circle & c2);

int main(){ Circle c1, c2;...

CSE1222: Lecture 19 The Ohio State University 13

Page 14: C++ Classes

circleIntersect.cpp...// protoypesvoid read_circle(const char * prompt, Circle & c);bool intersects(const Circle & c1, const Circle & c2);

int main(){ Circle c1, c2;

read_circle("Enter first circle (x,y,radius): ", c1); read_circle("Enter second circle (x,y,radius): ", c2);

if (intersects(c1, c2)) { cout << "Circles intersect." << endl; } else { cout << "Circles do not intersect." << endl; };...

CSE1222: Lecture 19 The Ohio State University 14

Page 15: C++ Classes

read_circle()void read_circle(const char * prompt, Circle & c){ cout << prompt; cin >> c.x; cin >> c.y; cin >> c.radius;}

CSE1222: Lecture 19 The Ohio State University 15

Page 16: C++ Classes

intersects()bool intersects(const Circle & c1, const Circle & c2){ double diffx = c1.x - c2.x; double diffy = c1.y - c2.y; double dist = sqrt(diffx*diffx + diffy*diffy);

if (dist <= c1.radius + c2.radius) { return(true); } else { return(false); }}

CSE1222: Lecture 19 The Ohio State University 16

Page 17: C++ Classes

What’s the error?...// protoypesvoid read_circle(const char * prompt, Circle & c);bool intersects(const Circle & c1, const Circle & c2);

class Circle{public: double x; double y; double radius;};

int main(){ Circle c1, c2;...

CSE1222: Lecture 19 The Ohio State University 17

Page 18: C++ Classes

C++ Classes

Class definition should always be followed by a semicolon:

class Circle{

...

}; // <-Note: semicolon

CSE1222: Lecture 19 The Ohio State University 18

Page 19: C++ Classes

C++ Classes C++ classes should usually be passed by

reference. (Why?)

Use const if the C++ class is not changed inside the function

Declare C++ classes before function prototypes

CSE1222: Lecture 19 The Ohio State University 19

Page 20: C++ Classes

Class Circle

class Circle{public: double x; // x-coordinate of circle center double y; // y-coordinate of circle center double radius; // radius of circle};

CSE1222: Lecture 19 The Ohio State University 20

Page 21: C++ Classes

New Class Circle

class Point{public: double x; // x-coordinate double y; // y-coordinate};

class Circle{public: Point center; // circle center double radius; // circle radius};

CSE1222: Lecture 19 The Ohio State University 21

Page 22: C++ Classes

circleContains.cpp...int main(){ Circle c; Point p;

cout << "Enter point (x,y): "; cin >> p.x; cin >> p.y;

cout << "Enter circle (x,y,radius): "; cin >> c.center.x; cin >> c.center.y; cin >> c.radius;...

CSE1222: Lecture 19 The Ohio State University 22

Page 23: C++ Classes

Classes Containing Classes Access the attributes x and y of class center as:

c.center.x c.center.y

For instance:

cout << "Enter circle (x,y,radius): "; cin >> c.center.x; cin >> c.center.y; cin >> c.radius;

CSE1222: Lecture 19 The Ohio State University 23

Page 24: C++ Classes

circleContains.cpp... double diffx = p.x - c.center.x; double diffy = p.y - c.center.y; double dist = sqrt(diffx*diffx + diffy*diffy);

if (dist <= c.radius) { cout << "Point is inside circle." << endl; } else { cout << "Point is not inside circle." << endl; }

return 0;}

CSE1222: Lecture 19 The Ohio State University 24

Page 25: C++ Classes

circleContains2.cpp...class Point{public: double x; double y;};

class Circle{public: Point center; double radius;};

void read_point(const char * prompt, Point & p);void read_circle(const char * prompt, Circle & c);double compute_distance(const Point & p1, const Point & p2);...

CSE1222: Lecture 19 The Ohio State University 25

Page 26: C++ Classes

circleContains2.cpp...int main(){ Circle c; Point p;

read_point("Enter point (x,y): ", p); read_circle("Enter circle (x,y,radius): ", c);

double dist = compute_distance(p, c.center); if (dist <= c.radius) { cout << "Point is inside circle." << endl;} else { cout << "Point is not inside circle." << endl; }

return 0;}...

CSE1222: Lecture 19 The Ohio State University 26

Page 27: C++ Classes

read_circle() and read_point()void read_circle(const char * prompt, Circle & c){ cout << prompt; cin >> c.center.x; cin >> c.center.y; cin >> c.radius;}

void read_point(const char * prompt, Point & p){ cout << prompt; cin >> p.x; cin >> p.y;}

CSE1222: Lecture 19 The Ohio State University 27

Page 28: C++ Classes

compute_distance()

double compute_distance(const Point & p1, const Point & p2)

{ double diffx = p1.x - p2.x; double diffy = p1.y - p2.y; double dist = sqrt(diffx*diffx + diffy*diffy);

return(dist);}

CSE1222: Lecture 19 The Ohio State University 28

Page 29: C++ Classes

compute_distance() Note: Function compute_distance() has no idea that p2

is the center of a circle

...int main(){... double dist = compute_distance(p, c.center);...}

double compute_distance(const Point & p1, const Point & p2){ double diffx = p1.x - p2.x; double diffy = p1.y - p2.y; double dist = sqrt(diffx*diffx + diffy*diffy);

return(dist);}

CSE1222: Lecture 19 The Ohio State University 29

Page 30: C++ Classes

Comparing Line Segments Write a program to read in two line

segments and report which one is longer

Each line segment has two endpoints Each endpoint has two coordinates

CSE1222: Lecture 19 The Ohio State University 30

Page 31: C++ Classes

Class LineSegment

class Point{public: double x; double y;};

class LineSegment{public: Point endpoint1; Point endpoint2;};

CSE1222: Lecture 19 The Ohio State University 31

Page 32: C++ Classes

lineSegment.cpp...void read_point(const char * prompt, Point & p);void read_line_segment (const char * header, LineSegment & seg);double compute_distance (const Point & p1, const Point & p2);

int main(){ LineSegment segA; LineSegment segB;

read_line_segment("Enter first line segment: ", segA); read_line_segment("Enter second line segment: ", segB);...

CSE1222: Lecture 19 The Ohio State University 32

Page 33: C++ Classes

lineSegment.cpp... double length1 = compute_distance(segA.endpoint1, segA.endpoint2); double length2 = compute_distance(segB.endpoint1, segB.endpoint2);

if (length1 > length2) { cout << "First line segment is longer." << endl; } else if (length2 > length1) { cout << "Second line segment is longer." << endl; } else { cout << "Line segments have equal length." <<

endl; }

return 0;}...

CSE1222: Lecture 19 The Ohio State University 33

Page 34: C++ Classes

read_point() and read_line_segment()void read_point(const char * prompt, Point & p){ cout << prompt; cin >> p.x; cin >> p.y;}

void read_line_segment (const char * heading, LineSegment & seg){ cout << heading << endl; read_point ("Enter first endpoint (x,y): ", seg.endpoint1); read_point ("Enter second endpoint (x,y): ", seg.endpoint2);}

CSE1222: Lecture 19 The Ohio State University 34

Page 35: C++ Classes

compute_distance() Note: Function compute_distance() has no idea that

p2 and p2 are line segment endpoints

... double length1 = compute_distance(segA.endpoint1, segA.endpoint2); double length2 = compute_distance(segB.endpoint1, segB.endpoint2);...

double compute_distance(const Point & p1, const Point & p2){ double diffx = p1.x - p2.x; double diffy = p1.y - p2.y; double dist = sqrt(diffx*diffx + diffy*diffy);

return(dist);}

CSE1222: Lecture 19 The Ohio State University 35

Page 36: C++ Classes

lineSegment2.cpp

class Point{public: double x; double y;};

class LineSegment{public: Point endpoint[2]; // Declare endpoints as an array};

CSE1222: Lecture 19 The Ohio State University 36

Page 37: C++ Classes

lineSegment2.cpp... double length1 = compute_distance(segA.endpoint[0], segA.endpoint[1]); double length2 = compute_distance(segB.endpoint[0], segB.endpoint[1]);

if (length1 > length2) { cout << "First line segment is longer." << endl; } else if (length2 > length1) { cout << "Second line segment is longer." << endl; } else { cout << "Line segments have equal length." <<

endl; }

return 0;}...

CSE1222: Lecture 19 The Ohio State University 37

Page 38: C++ Classes

lineSegment2.cpp

void read_point(const char * prompt, Point & p){ cout << prompt; cin >> p.x; cin >> p.y;}

void read_line_segment (const char * heading, LineSegment & seg){ cout << heading << endl; read_point ("Enter first endpoint (x,y): ", seg.endpoint[0]); read_point ("Enter second endpoint (x,y): ", seg.endpoint[1]);}

CSE1222: Lecture 19 The Ohio State University 38

Page 39: C++ Classes

Class Person

class Person {

public:

int age;

double height;

double weight;

bool gender;

string first_name;

string last_name;

};

CSE1222: Lecture 19 The Ohio State University 39


Recommended