小学课后服务 Python少儿编程 进阶篇:8-面向对象编程 课件 (21张PPT)

资源下载
  1. 二一教育资源

小学课后服务 Python少儿编程 进阶篇:8-面向对象编程 课件 (21张PPT)

资源简介

(共21张PPT)
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
少儿编程课
面向对象编程
程序设计的发展过程
先来了解下程序设计(编程语言)的发展过程
非结构化程序设计
结构化程序设计
面向对象程序设计
类和对象的基本概念
想要理解面向对象,首先需要了解面向对象中最基本的两个概念:类与对象
这是一个人吗?
这是程序员吗?
想要理解面向对象,首先需要了解面向对象中最基本的两个概念:类与对象
这是一辆车吗?
这是一只鸟吗?
那么什么是类和对象呢?
类:你心中对某一些“东西”的定义和分类:比如人(类)、车、鸟(类)、程序员
对象:这些东西中的某个个体,比如乔布斯、楼下那辆车、窗体上那只鸟等,就称为对象
思考一下:先有类还是先有对象呢?
先来看现实世界中,是先有类的概念还是先有对象的概念
也就是说,人不是从出生就知道总类的概念的,这是一个学习的过程
判断
从具体的鸟,到脑海中有清晰的鸟的形象的过程,就称为抽象
对象

抽象
抽象
抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。
于是我们可以得出结论:在现实世界中,先有对象,对象的共同特点被抽象成类的概念:
而对于计算机中的面向对象的编程语言(如python)来说,则刚好相反
需要先定义类,也即定义某一类东西的全部特征,然后使用这个类去创建一个个的个体(对象)
Python中的面向对象
接下来我们就来看看,Python中面向对象编程如何实现
1
首先定义一个类,Python中类的定义使用class关键字,后面跟类名
class Person():
2
接着,思考一下,类里面写什么内容呢?
以人类为例,类既然起到模板的作用,那么就应该包含全人类的共同特征,具体来说包含两点:
静态特征:属性
动态行为:函数/方法

类的名称可以任意,采用驼峰命名法,也即每个单词的首字母大写,如Book、Person、WildAnimal等
下面我们把类中属性的定义补充完整并定义一个对象出来:
1
在类中,加入__init__方法
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
这里的__init__方法是一个特殊的方法(init是单词初始化initialization的省略形式)
在使用类创建对象之后被执行,用于给新创建的对象初始化属性用。
下面我们把类中属性的定义补充完整并定义一个对象出来:
2
初始化属性的语句就是self.name = name这种了,这一句不太好理解,我们把它改编一下就好理解了:
def __init__(self, n, a):
self.name = n
self.age = a
首先这是一个方法,方法的形参有self,n和a三个。
这个self,表示对象本身,谁调用,就表示谁(这句话不好理解,先记住,我们后面分析)。
语法上,类中的方法的第一个参数都是self,这是和普通方法区别的地方。
这里self.name = n和self.age = a表示将外部传来的n和a,赋值给了self对象的name和age属性。
这里的n和a,其实叫什么都可以,但是会有个问题:一般我们调用方法的时候,想自动提示一下或者查看文档看一下这个方法的参数要求,如果形参名都是n、a、m、i这些,会让人摸不着头脑,不知道到底该传入什么样的实参。因为这里我们传入实参是为了给属性赋值,为了能见名知意,将形参的名字定义的跟属性一致,调用者就知道该怎么传参了。
所以才有了上面的写法。
下面我们把类中属性的定义补充完整并定义一个对象出来:
3
接着就可以创造一个对象出来了:
这句话就创建出来了一个具体的人,并且给这个人起了个名字叫小明,指定了小明的年龄为20,并且将小明这个对象赋值给了变量p,此时p就表示小明这个人(对象)
p = Person('小明', 20)
既然我们是编程世界的神,当然想造什么样的人都可以
1
比如造一个200岁的叫杰拉考的人:
p = Person(‘杰拉考', 200)
这句话后面的Person('杰拉考', 200)用于创建出了一个对象(人),并且调用了__init__(self,name,age)方法完成了该人的属性的初始化,杰拉考赋值给了name,200赋值给了age属性。
那self呢?self不需要传参,上面我们说过,self,表示对象本身,谁调用,就表示谁,此时的self就表示你Person('杰拉考', 200)创造出来的那个对象,也即是p。
也即,我们创造出了p,然后给p的属性赋了值,此时p就表示拥有属性值之后的那个人。
2
可以使用点.来调用对象的属性,比如输出p的名字和年龄
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person('杰拉考', 200)
print(p.name)
print(p.age)
接着我们再来说说类中的动态行为,也即方法/函数
1
在Person类中定义一个方法,用于自我介绍
2
完整代码如下:
def desc(self):
print("我叫%s,今年%d岁" %
(self.name, self.age))
在类的内部,访问自己的属性和方法,都需要通过self,self就是外部对象在类内部的表示,此时可以使用p调用该方法
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def desc(self):
print("我叫%s,今年%d岁" % (self.name, self.age))
p = Person('杰拉考', 200)
# 调用自我介绍方法 desc方法中的self就是外部的这个p
p.desc()
当前desc方法中的self,就是外部的那个对象p,如果我再定义了一个对象p2,那么p2调用desc时,desc中的self就表示p2这个对象。正所谓:谁调用,就表示谁
总结
Summary
面向对象中类和对象概念的理解

Python中类的定义和对象的创建

__init__()函数和self关键字的理解

Thanks!

展开更多......

收起↑

资源预览