Objects Thinking About Assignment 2 A2 : three color models id1 - - PowerPoint PPT Presentation

objects thinking about assignment 2
SMART_READER_LITE
LIVE PREVIEW

Objects Thinking About Assignment 2 A2 : three color models id1 - - PowerPoint PPT Presentation

Mini-Lecture 16 Objects Thinking About Assignment 2 A2 : three color models id1 rgb id1 list RGB : 3 ints 0 to 255 CMYK : 4 floats 0.0 to 100.0 0 128 HSV : 3 floats, mult. bounds 1 0 We could represent as lists 2 0


slide-1
SLIDE 1

Objects

Mini-Lecture 16

slide-2
SLIDE 2

Thinking About Assignment 2

  • A2: three color models

§ RGB: 3 ints 0 to 255 § CMYK: 4 floats 0.0 to 100.0 § HSV: 3 floats, mult. bounds § We could represent as lists

  • Can get really confusing

§ Easy to mix-up models § Easy to go out of bounds

  • We want custom types

§ One for each color model § Motivation for classes

id1 rgb

id1 128 1 2 list

id2 cmyk

id2 0.0 1 100.0 2 100.0 list 3 0.0

10/3/18 Objects 2

slide-3
SLIDE 3

Classes are Customized Types

  • Classes are any type not

already built-into Python

  • Values look like dicts

§ Represent as a folder § Variables are named

10/3/18 Objects 3

Classes

  • RGB
  • CMYK
  • HSV

Types

  • int
  • float
  • bool
  • str
  • list
  • dict

id2 red 255 green 128 blue

RGB

class name

slide-4
SLIDE 4

Classes are Customized Types

  • Classes are any type not

already built-into Python

  • Values look like dicts

§ Represent as a folder § Variables are named

10/3/18 Objects 4

Classes

  • RGB
  • CMYK
  • HSV

Types

  • int
  • float
  • bool
  • str
  • list
  • dict

id2 red 255 green 128 blue

RGB

class name

Class values are called objects

slide-5
SLIDE 5

Why Are They Better Than dicts?

  • Can add new variables
  • Does not check bounds
  • f the content variables
  • Variables fixed (sort-of)
  • Possibly checks bounds
  • f the content variables

10/3/18 Objects 5

id2 'red' 255 'green' 128 'blue'

dict

id2 red 255 green 128 blue

RGB

slide-6
SLIDE 6

Why Are They Better Than dicts?

  • Can add new variables
  • Does not check bounds
  • f the content variables
  • Variables fixed (sort-of)
  • Possibly checks bounds
  • f the content variables

10/3/18 Objects 6

id2 'red' 255 'green' 128 'blue'

dict

id2 red 255 green 128 blue

RGB

Designed for the purpose of safety

slide-7
SLIDE 7

Using Classes in Python

  • Modules provide classes

§ Import to use the class § Will show contents later

  • Example: introcs

§ Color classes for A2: RGB, CMYK, HSV § Geometry classes: Point2, Point3

  • Will make our own later

10/3/18 Objects 7

id1 x 2.0 y 3.0 z 5.0

Point3

class name

slide-8
SLIDE 8

Constructor: Function to make Objects

  • How do we create objects?

§ Other types have literals § Example: 1, 'abc', true § No such thing for objects

  • Constructor Function:

§ Same name as the class § Example: Point3(0,0,0) § Makes an object (manila folder) § Returns folder ID as value

  • Example: p = Point3(0, 0, 0)

§ Creates a Point object § Stores object’s ID in p

10/3/18 Objects 8

id2 p Variable stores ID not object instantiated

  • bject

id2 x 0.0 y 0.0 z 0.0

Point3

slide-9
SLIDE 9

Constructors and Modules

>>> import introcs >>> p = introcs.Point3(0,0,0) >>> id(p)

10/3/18 Objects 9

id2 p id2 x 0.0 y 0.0 z 0.0

Point3

Need to import module that has Point class. Constructor is function. Prefix w/ module name. Shows the ID of p.

Actually a big number

slide-10
SLIDE 10

Object Variables

  • Variable stores object name

§ Reference to the object § Reason for folder analogy

  • Assignment uses object name

§ Example: q = p § Takes name from p § Puts the name in q § Does not make new folder!

  • Like we saw with lists

§ Reason for using folders

10/3/18 Objects 10

id2 p id2 x 0.0 y 0.0 z 0.0

Point3

id2 q

slide-11
SLIDE 11

Objects and Attributes

  • Attributes are variables

that live inside of objects

§ Can use in expressions § Can assign values to them

  • Access: <variable>.<attr>

§ Example: p.x § Look like module variables

  • Putting it all together

§ p = introcs.Point3(1,2,3) § p.x = p.y + p.z

10/3/18 Objects 11

id3 x 1.0 y 2.0 z 3.0 id3 p

Point3

slide-12
SLIDE 12

Objects and Attributes

  • Attributes are variables

that live inside of objects

§ Can use in expressions § Can assign values to them

  • Access: <variable>.<attr>

§ Example: p.x § Look like module variables

  • Putting it all together

§ p = introcs.Point3(1,2,3) § p.x = p.y + p.z

10/3/18 Objects 12

id3 x 1.0 y 2.0 z 3.0 id3 p

Point3

5.0

x

slide-13
SLIDE 13

Exercise: Attribute Assignment

  • Recall, q gets name in p

>>> p = cornell.Point3(0,0,0) >>> q = p

  • Execute the assignments:

>>> p.x = 5.6 >>> q.x = 7.4

  • What is value of p.x?

10/3/18 Objects 13

id4 p id4 q A: 5.6 B: 7.4 C: id4 D: I don’t know id4 x 0.0 y 0.0 z 0.0

Point3

slide-14
SLIDE 14

Exercise: Attribute Assignment

  • Recall, q gets name in p

>>> p = geom.Point3(0,0,0) >>> q = p

  • Execute the assignments:

>>> p.x = 5.6 >>> q.x = 7.4

  • What is value of p.x?

10/3/18 Objects 14

id4 p id4 q A: 5.6 B: 7.4 C: id4 D: I don’t know id4 x 0.0 y 0.0 z 0.0

Point3

5.6 CORRECT

x

slide-15
SLIDE 15

Exercise: Attribute Assignment

  • Recall, q gets name in p

>>> p = geom.Point3(0,0,0) >>> q = p

  • Execute the assignments:

>>> p.x = 5.6 >>> q.x = 7.4

  • What is value of p.x?

10/3/18 Objects 15

id4 p id4 q A: 5.6 B: 7.4 C: id4 D: I don’t know id4 x 0.0 y 0.0 z 0.0

Point3

5.6 7.4 CORRECT

x x

slide-16
SLIDE 16

Methods: Functions Tied to Objects

  • Method: function tied to object

§ Method call looks like a function call preceded by a variable name: ⟨variable⟩.⟨method⟩(⟨arguments⟩) § Example: p.distance(q) § Example: p.abs() # makes x,y,z ≥ 0

  • Object acts like an argument

§ Distance p to q: p.distance(q) § Distance x to y: x.distance(y) § Different objects, different values id3 x 5.0 y 2.0 z 3.0 id3 p

Point3

10/3/18 Objects 16

slide-17
SLIDE 17

Strings Have Methods Too

>>> from introcs import index_str, count >>> s = 'Hello' >>> index_str(s,'e') 2 >>> s.index('e') 2 >>> count_str(s,'l') 2 >>> s.count('l') 2

10/3/18 Objects 17

slide-18
SLIDE 18

Strings Have Methods Too

>>> from introcs import index_str, count >>> s = 'Hello' >>> index_str(s,'e') 2 >>> s.index('e') 2 >>> count_str(s,'l') 2 >>> s.count('l') 2

10/3/18 Objects 18

slide-19
SLIDE 19

Strings Have Methods Too

>>> from introcs import index_str, count >>> s = 'Hello' >>> index_str(s,'e') 2 >>> s.index('e') 2 >>> count_str(s,'l') 2 >>> s.count('l') 2

10/3/18 Objects 19

Are Strings

  • bjects?
slide-20
SLIDE 20

Surprise: All Values are in Objects!

  • Including basic values

§ int, float, bool, str

  • Example:

>>> x = 2.5 >>> id(x)

  • But they are immutable

§ Contents cannot change § Distinction between value and identity is immaterial § So we can ignore the folder 2.5 x 2.5 id5 id5 x

float

10/3/18 Objects 20