《python程序设计(AI赋能版)》课件-项目六 面向对象构建图书管理系统_第1页
《python程序设计(AI赋能版)》课件-项目六 面向对象构建图书管理系统_第2页
《python程序设计(AI赋能版)》课件-项目六 面向对象构建图书管理系统_第3页
《python程序设计(AI赋能版)》课件-项目六 面向对象构建图书管理系统_第4页
《python程序设计(AI赋能版)》课件-项目六 面向对象构建图书管理系统_第5页
已阅读5页,还剩46页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目六利用python面向对象构建图书管理系统面向对象概述6.1

先定一个小目标!了解面向对象,能够简述面向对象概念、区分面向对象和面向过程6.1面向对象概述在此之前,其实我们已经接触过一种编程思想了,它就是面向过程编程。何为面向过程编程呢?当我们在解决某个问题时,通常会把所需要做的步骤列出来,然后按照罗列的步骤将代码实现,这种过程化的拆解问题思维,就是面向过程编程。6.1面向对象概述举个例子,小王是个厨师,他每天的工作内容就是炒菜。如果用面向过程的思维模式来完成炒菜这件事情。步骤应该是洗菜→切菜→开火→炒菜→装盘,我们更关注解决问题的过程是如何拆解、实现的。6.1面向对象概述而面向对象的思想,它只需要关注对象即可。比如小王炒菜这个例子,我们需要关注小王、菜、盘子三个对象,对于小王,我们只关注他能够完成洗、切、炒;对于菜,只关注它是什么菜;对于盘子,只关注它能够洗盘子、装菜。因此,我们可以看到,与面向过程相比,面向对象需要把每个对象及行为从过程中抽象出来。6.1面向对象概述项目六利用python面向对象构建图书管理系统类的定义和实例化6.2

先定一个小目标!6.2.1类的定义掌握类的定义,能够根据需求定义类Python中使用关键字class定义类,定义类的语法格式如下:6.2.1类的定义class类名:["""文档字符串"""]

代码块

标记类定义的开始类的唯一标识说明类的字符串类的属性、方法的具体代码定义类的语法格式在定义类时,类名的命名规范建议为:首字母大写。例如,定义一个用于表示厨师的类,具体代码如下:classCheif:

#属性的定义name='小王’

#方法的定义defcook(self,DishName):print(+'做出了一道菜:'+DishName)6.2.1类的定义在定义类的方法时,需要注意:(1)方法的第一个参数必须为self

(2)方法中调用属性时必须加self.前缀。示例代码如下:6.2.1类的定义classCheif:

#属性的定义name='小王’

#方法的定义defcook(self,DishName):print(+'做出了一道菜:'+DishName)

先定一个小目标!6.2.2类的实例化掌握类的实例化,能够根据需求实例化一个类6.2.2类的实例化类在定义完成后,需要在程序中调用才能实现类的实例化。实例名=类()语法格式Person=Chief()项目六利用python面向对象构建图书管理系统类的属性访问和方法调用6.3

先定一个小目标!6.3类的属性访问与方法调用掌握类的属性访问与方法调用,能够通过正确的方法访问类的属性、调用方法classCheif:

#属性的定义

name='小王'

#方法的定义

defcook(self,DishName):print(+'做出了一道菜:'+DishName)6.3类的属性访问与方法调用定义一个类并实例化后,可通过引用的方式直接访问实例化对象的属性、方法。示例代码如下:Person=Chief()#通过引用直接访问实例化对象的属性、方法print('厨师的名字叫'+P)Person.cook('宫保鸡丁')思考:

通过直接引用的方式去访问类的属性,这样合适吗?安全吗?请你思考一下,稍后我们带着问题去6.4节寻找答案。6.3类的属性访问与方法调用项目六利用python面向对象构建图书管理系统类的属性访问控制6.4

先定一个小目标!6.4类的属性访问控制熟悉类的属性访问控制,能够在定义类时设置属性的访问权限

回想我们在6.3节提出的思考题,我们可以很自然的想到:如果在实际使用中,将实例化对象内部的属性随意暴露给外部的话,是非常危险的!6.4类的属性访问控制在定义类的属性时,可以在属性名的前面加2个下划线_,就代表这个属性为类的私有属性,外部不能访问。示例代码如下:6.4类的属性访问控制classCheif:

#属性的定义

name='小王'

#将age属性设置为私有属性__age=20

#方法的定义

defcook(self,DishName):print(+'做出了一道菜:'+DishName)项目六利用python面向对象构建图书管理系统类的属性修改6.5

先定一个小目标!6.5类的属性修改掌握类的属性修改方法,能够在程序中使用正确的方法修改属性类的属性修改的2个办法:6.5类的属性修改(1)直接访问属性并修改,适用于公共属性(2)创建方法,间接访问属性并修改,适用于私有属性classCheif:

#属性的定义

name='小王'

#将age属性设置为私有属性__age=20classCheif:

#属性的定义

name='小王'

#将age属性设置为私有属性__age=20

#方法的定义

defupdate_age(self,age):self.__age=agePerson=Chief()C=小李

Person=Chief()Chief.update_age(18)

项目六利用python面向对象构建图书管理系统类的方法6.6

先定一个小目标!6.6.1类的构造方法掌握类的构造方法,能够实现实例化对象的初始化构造方法能够在实例化对象时就给对象赋值。构造方法的语法形式为:6.6.1类的构造方法def__init__(self,参数1,参数2,…): self.参数1=参数1 self.参数2=参数2语法格式classCheif:def__init__(self,name,age):=nameself.age=agePerson=Chief('小李',20)在创建构造方法时,如果不想给实例对象赋值的话,也可以使用默认值,使用语法格式为:6.6.1类的构造方法def__init__(self,参数1=默认参数1,参数2=默认参数2,…): self.参数1=参数1 self.参数2=参数2语法格式classCheif:def__init__(self,name='小李',age=18):=nameself.age=age

先定一个小目标!6.6.2私有方法掌握私有方法的构建,能够正确在程序中创建私有方法某些场景下,我们不希望使用者得知代码的具体实现方式,只想给使用者提供一个接口。这时候可以在方法名前加2个下划线_,示例代码如下:6.6.2私有方法classCal:def__init__(self):self.x=0self.y=0#__sumxy的具体实现私有化def__sumxy(self,x,y):print(x+y)#仅对外部开放sum_xy函数接口defsum_xy(self,x,y):self.__sumxy(x,y)项目六利用python面向对象构建图书管理系统类的继承6.7

先定一个小目标!掌握继承的概念与基本使用方法,能够正确地使用继承6.7.1继承的概念与基本使用方法6.7.1继承的概念与基本使用方法现在有一个类A,里面有一些方法我们在类B中也需要用到,我们不想重复编写代码,这时候就可以在类B中将类A的属性和方法继承过来。此时我们将类B称为子类,类A称为父类。继承有以下好处:1.代码复用:子类继承父类的属性和方法,无需重复编写相同代码2.逻辑层次清晰:通过继承关系表达对象间的从属关系,使代码更具结构性3.增强扩展性:子类可以在继承父类的基础上扩展新的属性或方法,支持功能扩展4.多态性:子类可以重写父类的方法,实现不同的行为假设现在有一个类A,让类B继承类A。其继承的语法格式为:6.7.1继承的概念与基本使用方法classB(A):…….语法格式classPeople:def__init__(self,name='小李',age=18):=nameself.age=agedefprint_info(self):print(f”我叫{},今年{self.age}岁”)classChief(People):defcook(self,DishName):print(f”炒了一盘{DishName}”)

先定一个小目标!掌握子类的构造方法,能够熟练创建子类的构造方法6.7.2子类的构造方法当我们在实例化子类时,有时会遇到一种情况:父类的属性只有a、b两种,但是子类除了具有a、b两种父类属性之外,还有它自己本身的属性c,这时候可以使用super()语法来构建子类的初始化方法,示例代码如下:6.7.2子类的构造方法classPeople:def__init__(self,name='小李',age=18):=nameself.age=ageclassChief(People):def__init__(self,name,age,restaurant):self.restaurant=restaurantsuper().__init__(name,age)defprint_info(self):print(f"我叫{},今年{self.age}岁,在{self.restaurant}工作")

先定一个小目标!掌握方法的重写,能够根据实际需求重写父类方法6.7.3方法的重写有时候可能对父类中的方法不能满足需求,需要重新设计,以满足子类的需求。这时,我们可以在子类中,定义一个与要重写的方法同名的方法,即方法的重写。示例代码如下:6.7.3方法的重写classPeople:def__init__(self,name='小李',age=18):=nameself.age=agedefprint_info(self):print(f”我叫{},今年{self.age}岁”)classChief(People):def__init__(self,name,age,restaurant):self.restaurant=restaurantsuper().__init__(name,age)defprint_info(self):print(f”我叫{},今年{self.age}岁,在{self.restaurant}饭店工作”)重写print_info方法项目六利用python面向对象构建图书管理系统阶段案例—图书管理系统6.8

先定一个小目标!6.8阶段案例—图书管理系统根据任务描述实现案例:阶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论