python面向对象编程1

面向对象编程

       面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
 
       面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。
 
       而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
 
       在Python中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。
 
一、面向过程

       假设我们要处理学生的成绩表,为了表示一个学生的成绩,面向过程的程序可以用一个dict表示:

std1 = { 'name': 'Michael', 'score': 98 }
std2 = { 'name': 'Bob', 'score': 81 }

       而处理学生成绩可以通过函数实现,比如打印学生的成绩:

def print_score(std):
     print('%s: %s' % (std['name'], std['score']))

  

二、面向对象

       同样是处理学生的成绩表,如果采用面向对象的程序设计思想,我们首选思考的不是程序的执行流程,而是Student这种数据类型应该被视为一个对象,这个对象拥有name和score这两个属性(Property)。如果要打印一个学生的成绩,首先必须创建出这个学生对应的对象,然后,给对象发一个print_score消息,让对象自己把自己的数据打印出来。
class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score

    def print_score(self):  #打印成绩方法
        print('%s: %s' % (self.name, self.score))
       给对象发消息实际上就是调用对象对应的关联函数,我们称之为对象的方法(Method)。面向对象的程序写出来就像这样:

Jack1 = Student('Jack', 59)
Rose1 = Student('Rose', 87)
print(Jack.print_score())
print(Rose.print_score())

  

三、面向对象特点

       面向对象的设计思想是从自然界中来的,因为在自然界中,类(Class)和实例(Instance)的概念是很自然的。Class是一种抽象概念,比如我们定义的Class——Student,是指学生这个概念,而实例(Instance)则是一个个具体的Student,比如,Jack1和Rose1是两个具体的Student。
 
       所以,面向对象的设计思想是抽象出Class,根据Class创建Instance。
 
       面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法。

 

四、类和对象

        类和对象是面向对象编程的两个核心概念。

        1、类

         类是对一群具有相同特征或者行为的事物的一个统称,是抽象的。

                特征其实就是一个变量,在类里我们称之为属性。

                行为其实就是一个函数,在类里我们称之为方法。

                类其实就是由属性和方法组成的一个抽象概念。

 
       2、对象

       对象是由类创建出来的一个具体事物,可以直接使用。由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。在开发中,应该先有类,在类里定义好属性和行为,在根据类来创建对象。

 
       3、类和对象的关系

                类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。

                使用同一个类,能够创建出很多对象。

                类中定义了什么属性和方法,对象中就有什么属性和方法。

                不同对象对应的属性值也会不同。

 

        例如:定义了一个狗类,这个狗类有以下属性:

                品种

                颜色

                性别

                名字

五、类的设计

       在使用面向对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类。

       在程序开发中,要设计一个类,通常需要满足一下三个要素:

              a、类名 这类事物的名字,按照大驼峰命名法(每个单词首字母大写)起名。
              b、属性 这类事物具有什么样的特征。
              c、方法 这类事物具有什么样的行为。
 
       1、定义类名

           名词提炼法:分析整个业务流程,出现的名词,通常就是要找到的类。

       2、属性和方法的确定

             对象的特征描述,可以定义成属性。

 

             对象具有的行为(动词)可以定义成方法。

       3、类定义与调用举例

             Mike今年18岁,身高1.75,早上跑步,会去吃东西。
             John今年17岁,身高1.65,早上不跑步,喜欢吃东西。
 

       a、类定义

class Person(object):   
    def __init__(self,name,age,height):
        self.name=name
self.age=age self.height=height def run(self): print('正在跑步') def eat(self): print('正在吃东西')

       说明:

             1、类定义使用关键字class,后面跟类名(大驼峰命名法),(object)可以省略,(object)代表继承自object类,所有的类都继承自object类,后面跟冒号:(不可少)

             2、在__init__()方法里,以参数的形式定义特征,我们称之为属性

             3、自定义行为(方法),第一个参数必须是self

        b、创建对象

p1=Person('Mike',18,1.75)
p2=Person('John',17,1.65)
p1.run()
p1.eat()
p2.eat()

  说明:

              1、Person()会自动调用__init__方法,然后传参,注意,self参数不需要传参

              2、p1和p2都会有name、age、height属性,同时具有run、eat方法

              3、根据业务逻辑,让不同的对象执行不同的行为(方法)

 

posted @ 2021-02-24 19:45  wangshanglinju  阅读(71)  评论(0编辑  收藏  举报