zoukankan      html  css  js  c++  java
  • 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、根据业务逻辑,让不同的对象执行不同的行为(方法)

  • 相关阅读:
    Java Web(三) 会话机制,Cookie和Session详解(转载)
    如何转载别人的文章
    C#操作Word的+ CKEditor 輸出成Word文件(包含圖案上傳)
    vs2013 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”。是否缺少程序集引用?
    CKEditor与CKFinder学习--自定义界面及按钮事件捕获
    JS获取CkEditor在线编辑的内容
    <%#Eval() %>的常用方法
    ASP.NET 中 ContentType 类型
    富文本编辑器 CKeditor 配置使用+上传图片
    VS2013 蛋疼的“AJAX Control Toolkit”安装过程
  • 原文地址:https://www.cnblogs.com/shixiaoxun/p/14443436.html
Copyright © 2011-2022 走看看