September+26th+2016+by+Michael+Qian

= Lesson Log on Class: =

REMEMBER THIS MY FELLOW CLASSMATES

DO NOT EVER WRITE ON WIKI

WITHOUT BACKUP STORAGE

ALRIGHT?

y'all bear this in mind OK?

Now let’s get started 😄

First of all let’s review three evolutionary thresholds of programming language:
Low-level programming:machine code

procedural paradigm

object oriented paradigm

(The programming mode we previously used in python was called procedural programming, )

__**However, in object oriented paradigm:**__
Object-oriented programming (OOP) is a [|programming paradigm] based on the concept of " [|objects] ", which may contain [|data], in the form of [|fields] , often known as attributes; and code, in the form of procedures, often known as [|methods]. A feature of objects is that an object's procedures can access and often modify the data fields of the object with which they are associated (objects have a notion of " [|this] " or "self"). In OOP, computer programs are designed by making them out of objects that interact with one another.[1][2] There is significant diversity of OOP languages, but the most popular ones are [|class-based], meaning that objects are [|instances] of [|classes] , which typically also determine their [|type] .(adapted from Wikipedia)

Let’s understand this by specific program:
**class** **Point** : //""" Point class represents and manipulates x,y coords. """//

**def** __init__ ( self ): //""" Create a new point at the origin """// self. x = 0 self. y = 0

👆 This is how we define a class There are few points:

You may find it pretty confusing that what does “self” mean ？

It will be representing the object which user provides, as in

p = Point

here for each self represents p

Then if we want to know x, y coordinates of the point what do we do?

p.x p.y

is the correct way to get them

x,y here is what we call attributes, it is one of the special characteristics of the class you defined

= The other special characteristic is the method, let’s see an example =

in the class point:

**def** distance_from_origin ( self ): //""" Compute my distance from the origin """// **return** (( self. x ** 2 ) + ( self. y** 2 )) ** 0.5 **


 * This is the function in which you can compute the distance from the point to the origin **


 * But can we add parameter to the function in class? **

def** halfway ( self, target):** return **Point(mx, my)**
 * the following function illustrate this **
 * //""" Return the halfway point between myself and the target """// **
 * mx = ( self . x + target . x) / 2 **
 * my = ( self . y + target . y) / 2 **


 * This is the function which we calculate the mid-point and we return a point value which includes two coordinates value after computation. It is worth noting that if we want our output to be Point(mx, my), we must alter our original definition in the class to be **

classPoint** : **
 * //""" Point class represents and manipulates x,y coords. """// **

def** __init__ ( self,x,y ): //""" Create a new point at the origin """// self. x = x   self. y = y

OK we know how to define a function in the class

How do we call it then

For these function which returns a point value things may get a little tricky

you have to write like

q = Point( 5, 12 ) p = Point( 3, 4 ) r = p. halfway(q)

should give you this result (4.0, 8.0)

Homework:

calculate 3D point using class point