24
CS 225 Data Structures January 24 – Classes and Reference Variables G Carl Evans

cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

CS 225Data Structures

January 24 – Classes and Reference VariablesG Carl Evans

Page 2: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#pragma once

class Cube {public:double getVolume();

private:

};

Cube.h1234567891011121314151617181920

#include "Cube.h"

double Cube::getVolume() {

}

Cube.cpp1234567891011121314151617181920

Page 3: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

Namespaces

Page 4: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

Namespacescs225

Cube

PNG

HSLAPixel

std

cout

vector

queue

...

Page 5: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#pragma once

namespace cs225 {class Cube {public:double getVolume();double getSurfaceArea();

private:double length_;

};}

Cube.h1234567891011121314151617181920

#include "Cube.h"

namespace cs225 {double Cube::getVolume() {return length_ * length_ *

length_;}

doubleCube::getSurfaceArea() {return 6 * length_ *

length_;}

}

Cube.cpp12345

678

9

1011121314151617

Page 6: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#pragma once

namespace cs225 {class Cube {public:double getVolume();double getSurfaceArea();

private:double length_;

};}

Cube.h1234567891011121314151617181920

#include "Cube.h"

namespace cs225 {double Cube::getVolume() {return length_ * length_ *

length_;}

doubleCube::getSurfaceArea() {return 6 * length_ *

length_;}

}

Cube.cpp12345

678

9

1011121314151617

12345678

#include "Cube.h"#include <iostream>

int main() {cs225::Cube c;std::cout << "Volume: " << c.getVolume() << std::endl;return 0;

}

Page 7: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#include "Cube.h"#include <iostream>

int main() {cs225::Cube c;std::cout << "Volume: " << c.getVolume() << std::endl;return 0;

}

main.cpp12345678

Page 8: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#include "Cube.h"#include <iostream>

int main() {cs225::Cube c;std::cout << "Volume: " << c.getVolume() << std::endl;return 0;

}

main.cpp12345678

Page 9: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#include "Cube.h"#include <iostream>

int main() {cs225::Cube c;std::cout << "Volume: " << c.getVolume() << std::endl;return 0;

}

main.cpp12345678

Page 10: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

CS 225 – Office HoursLab Sections – Meet with your TA and CAs every week!

Open Office Hours – Held in the basement of Siebel Center by TAs and CAs, ramping up over the next week. First open office hours start soon. (Great place for both conceptual and programming questions!)

Faculty Office Hours –Starting next week.

Carl’s Office Hours: Thursday, 1pm-2pm, 3209 Siebel

Jing’s Office Hours: Monday 3-4pm, ECEB 2013

Page 11: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

CS 225 – Quiz 0First exam is coming up next week!

“Quiz 0”• Low-stress introduction to the CBTF exam environment.• On foundational knowledge you have from your

prerequisite classes.

Full Details:https://courses.engr.illinois.edu/cs225/fa2019/exams/

Page 12: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

CBTF-based ExamsAll CS 225 exams are held in the Computer Based Testing Facility (CBTF):- You can choose which day to take your exam within

the exam window for a given exam.

- Sign up for your exam here:https://cbtf.engr.illinois.edu/

Page 13: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

Constructor

Page 14: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#pragma once

namespace cs225 {class Cube {public:Cube();double getVolume();double getSurfaceArea();

private:double length_;

};}

Cube.h1234567891011121314151617181920

#include "Cube.h"namespace cs225 {Cube::Cube() {

}

double Cube::getVolume() {return length_ * length_ *

length_;}

doubleCube::getSurfaceArea() {return 6 * length_ *

length_;}

}

Cube.cpp1234567891011121314151617181920

Page 15: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#pragma once

namespace cs225 {class Cube {public:Cube(double length);double getVolume();double getSurfaceArea();

private:double length_;

};}

Cube.h1234567891011121314151617181920

#include "Cube.h"namespace cs225 {Cube::Cube(double length) {

}

double Cube::getVolume() {return length_ * length_ *

length_;}

doubleCube::getSurfaceArea() {return 6 * length_ *

length_;}

}

Cube.cpp1234567891011121314151617181920

Page 16: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#pragma once

namespace cs225 {class Cube {public:Cube(double length);double getVolume();double getSurfaceArea();

private:double length_;

};}

Cube.h1234567891011121314151617181920

#include "Cube.h"namespace cs225 {Cube::Cube(double length) {length_ = length;

}

double Cube::getVolume() {return length_ * length_ *

length_;}

doubleCube::getSurfaceArea() {return 6 * length_ *

length_;}

}

Cube.cpp1234567891011121314151617181920

1234567891011

#include "Cube.h"using cs225::Cube;#include <iostream>using std::cout;using std::endl;

int main() {Cube c;cout << "Volume: " << c.getVolume() << endl;return 0;

}

puzzle.cpp

Page 17: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

Hate Typing cout:: and cs225::?Useful Shortcut:using std::cout; // Imports cout into global scopeusing std::endl; // Imports endl into global scopeusing cs225::Cube; // Imports Cube into global scope

Strongly Discouraged Shortcutusing namespace std; // Imports all of std:: into

// global scope!// ...THOUSANDS of things!

Page 18: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#pragma once

namespace cs225 {class Cube {public:

Cube(double length);double getVolume();double getSurfaceArea();

private:double length_;

};}

Cube.h1234567891011121314151617181920

#include "Cube.h"namespace cs225 {

Cube::Cube(double length) {length_ = length;

}

double Cube::getVolume() {return length_ * length_ *

length_;}

doubleCube::getSurfaceArea() {return 6 * length_ *

length_;}}

Cube.cpp1234567891011121314151617181920

7891011

int main() {Cube c;cout << "Volume: " << c.getVolume() << endl;return 0;

}

puzzle.cpp

Page 19: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

#pragma once

namespace cs225 {class Cube {public:

Cube(double length);double getVolume();double getSurfaceArea();

private:double length_;

};}

Cube.h1234567891011121314151617181920

#include "Cube.h"namespace cs225 {

Cube::Cube(double length) {length_ = length;

}

double Cube::getVolume() {return length_ * length_ *

length_;}

doubleCube::getSurfaceArea() {return 6 * length_ *

length_;}}

Cube.cpp1234567891011121314151617181920

7891011

int main() {Cube c;cout << "Volume: " << c.getVolume() << endl;return 0;

}

puzzle.cpp

Page 20: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

Pointers and References

Page 21: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

Pointers and ReferencesA variable containing an instance of an object:

A reference variable of a Cube object:

A variable containing a pointer to a Cube object:

1 Cube s1;

1 Cube * s1;

1 Cube & s1;

Page 22: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

Reference VariableA reference variable is an alias to an existing variable.

Key Idea: Modifying the reference variable modifies the variable being aliased.

Page 23: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

Reference VariableA reference variable is an alias to an existing variable.

12345678910111213

#include <iostream>

int main() {int i = 7;int & j = i; // j is an alias of i

j = 4;std::cout << i << " " << j << std::endl;

i = 2;std::cout << i << " " << j << std::endl;return 0;

}

Page 24: cs225sp20-02-classes-slidescourses.physics.illinois.edu/cs225/sp2020/assets/lectures/slides/cs225sp20-02...cs225sp20-02-classes-slides Author: G Carl Evans Created Date: 1/24/2020

CS 225 – Things To Be DoingQuiz 0 starts on Friday, Jan. 31st

Ensure you sign up for your CBTF timeslot for Quiz 0!

lab_intro is due this Wednesday (Feb. 5th)Make sure to attend your lab section every week – they’re worth points and EC!

MP1 is outDue: Wedneday, Feb. 5th

Ensure you are on our PiazzaDetails on the course website: https://courses.engr.illinois.edu/cs225/

See you Monday!