2022年第03周。 这一周Python语言学习,记录如下。
谁来做
思考需求分析和代码设计与开发。OOP全称是(Object Oriented Programming),面向对象编程,一种编程思维和方式。 面对需求分析时,OPP会思考怎么做这个需求,而OOP会思考谁来做这个需求,并且进一步思考这个谁需要具备什么特征和行为,即这个谁的属性和方法。通过OOP,可以把这个谁的属性和方法封装在一起,做成一个类。类是一种抽象,类似建房子的图纸;对象是类的具体化或者实例化,类似按着图纸建成一栋栋房子。这个房子有什么特征和能够做什么,就取决于房子的图纸(类)的先前的设计。你会发现,面向对象编程,更接近我们的生活,更能够灵活性地表达我们的生活。
通过OOP的概念,我们发现,学习OOP时,我们需要学习这些内容:
谁来做
开始的,并且要想清楚这个谁要有什么职能。类和对象是OOP的两个核心概念。
类是抽象,不能直接使用,它是对一群具有相同特征或者行为的事物的一个统称。
对象是具体的,可以直接使用,它是类的具体存在,具有类所设计的属性和方法。
举例说明: 类相当于建房图纸,对象相当于按着建房图纸建造的一栋栋楼房。
在程序开发中,应该先有类,再有对象;应该先设计要使用的类,再设计其它类;设计类的时候遵循奥卡姆剃刀原则,即类设计的时候,不要增加没有的或者不必要的属性和方法。
使用关键词class
来设计类。
简单示例。
需求分析,需求如下
18岁的小明喜欢跑步和读书。
20岁的小红也喜欢跑步和读书。
根据需求,我们创建一个Person类,具有姓名和年龄属性,跑步和读书方法。
参考代码如下:
# 设计Person类
class Person:
# 创建实例属性
def __init__(self, name, age):
self.name = name
self.age = age
# 创建实例方法
def run(self):
print("%d岁的%s喜欢跑步" % (self.age, self.name))
def read(self):
print("%d岁的%s喜欢跑步" % (self.age, self.name))
# 生成小明对象
xiao_ming = Person("小明", 18)
xiao_ming.run()
xiao_ming.read()
# 生成小红对象
xiao_hong = Person("小红", 20)
xiao_hong.run()
xiao_hong.read()
结果如下。
封装是面向对象编程的一大特性。 OOP的第一步,把属性和方法封装到一个抽象类中。 外界使用类创建对象,然后用对象调用方法。 对象方法的细节被封装在类的内部。 前面的Person类就采用了封装技术。
OOP有三大特性,分别是封装、继承和多态。
继承的知识点,罗列如下:
super().父类方法
)object
。多态是指不同的子类对象调用相同的父类方法,会产生不同的执行结果。 多态的知识点:
继承和多态的一个简单实例。 需求分析: HR需要招聘程序员和设计师,基于OOP采用继承和多态编写代码。 参考代码:
class Person(object):
def __init__(self, name):
self.name = name
def work(self):
print("%s喜欢工作" % self.name)
class Programmer(Person):
def work(self):
print("%s编写代码" % self.name)
class Designer(Person):
def work(self):
print("%s设计UI" % self.name)
class HumanResources(object):
def __init__(self, name):
self.name = name
def hr_with_person(self, person):
print("%s招聘%s" % (self.name, person.name))
# 人才的工作职责
person.work()
# 创建一个程序员对象
xiao_ming = Programmer("小明")
# 创建一个设计是对象
xiao_hong = Designer("小红")
# 创建一个HR对象
xiao_fang = HumanResources("小芳")
# 招聘程序员
xiao_fang.hr_with_person(xiao_ming)
# 招聘设计师
xiao_fang.hr_with_person(xiao_hong)
结果如下:
OOP是一种编程方式和思维框架,掌握和熟悉OOP,可以响应更加复杂的需求和开发更加复杂的系统。 OOP的两大核心概念是类和对象,三大特性是封装、集成和多态。