Python(面向对象)

一、UML

面向对象主要用于软件开发的分析和设计阶段,通常使用UML(统一建模语言)进行建模

统一建模语言并不是软件开发的方法,而是一种描述软件开发过程的图形化标记,UML使用若干种模型来描述软件中开发中的每个重要步骤。

(1)类图(ClassDiagram)。展现了一组对象、接口、协作和它们之间的关系。类图描述的是一种静态关系,在系统的整个生命周期都是有效的,是面向对象系统的建模中最常见的图。

(2)对象图(ObjectDiagram)。展现了一组对象以及它们之间的关系。对象图是类图的实例,几乎使用与类图完全相同的标示。

(3)用例图(UseCaseDiagram)。展现了一组用例、参与者(actor)以及它们之间的关系。用例图从用户角度描述系统的静态使用情况,用于建立需求模型。

(4)交互图。用于描述对象间的交互关系,由一组对象和它们之间的关系组成,包含它们之间可能传递的消息。交互图又分为序列图和协作图,其中序列图描述了以时间顺序组织的对象之间的交互活动;协作图强调收发消息的对象的结构组织。

(5)状态图(StateDiagram)。由状态、转换、事件和活动组成,描述类的对象所有可能的状态以及事件发生时的转移条件。通常状态图是对类图的补充,仅需为那些有多个状态的、行为随外界环境而改变的类画状态图。

(6)活动图(ActiveDiagram)。一种特殊的状态图,展现了系统内一个活动到另一个活动的流程。活动图有利于识别并行活动。

(7)组件图(ComponentDiagram)。展现了一组组件的物理结构和组件之间的依赖关系。部件图有助于分析和理解组件之间的相互影响程度。

(8)部署图(DeploymentDiagram)。展现了运行处理节点以及其中的组件的配置。部署图给出了系统的体系结构和静态实施视图。它与组件图相关,通常一个节点包含一个或多个构建。

二、类和对象

类是一些对象的抽象,隐藏了对象内部复杂的结构和实现。类由变量和函数两部分构成,类中的变量称为成员变量,类中的函数称为成员函数。

类是对客观世界中事物的抽象,而对象是类实例化后的实体。

2.1类的定义

Python使用class关键字定义一个类,类名的首字符一般要大写。类需要把使用的变量和方法组合在一起,这种方法称为封装。

class Fruit:
    def __init__(self,name,color):
        self.name = name
        self.color = color

    def grow(self):
        print('Friut grow......')
        return 0

注意:类的方法必须有1个self参数,但是在方法调用时,可以不传递这个参数。

2.2对象的创建

创建对象的过程称为实例化,当一个对象被创建后,包含3个方面的特性:对象的句柄、属性和方法,对象的句柄用于区分不同的对象,对象的属性和方法与类的成员变量和成员函数相对应。

if __name__ == "__main__":
    friut = Fruit('apple','red')
    print(friut.name)
    print(friut.color)
    print(friut.grow())

Python使用约定属性名称来达到这样数据封装的目的,如果属性的名字以两个下划线开始,就表示私有属性,反之,就表示公有属性。类的方法也这样约定。

Python中静态变量称为类变量,类变量可以在该类的所有实例中被共享,当创建新的实例化对象后,静态变量并不会获得新的内存空间,而是使用类创建的内存空间。

练习(实例变量和类变量的区别):

class Fruit:
    price = 0

    def __init__(self):
        self.color = 'red'
        zone = 'China'

if __name__ == "__main__":
    print(Fruit.price)
    apple = Fruit()
    print(apple.color)
    Fruit.price = Fruit.price+10
    print("apple.price:",str(apple.price))
    banana = Fruit()
    print("banana.price:",str(banana.price))
class Friut:
    def __init__(self):
        self.__color = 'red'

if __name__ == "__main__":
    apple = Friut()  #实例化类
    print(apple._Friut__color)  #通过这样的方式访问类的私有变量

类的内置属性:

class Friut:
    def __init__(self):
        self.__color = 'red'

class Apple(Friut):
    '''this is some of instrction of class'''
    pass

if __name__ == "__main__":
    fruit = Friut()
    apple = Apple()
    print('apple.doc',apple.__doc__)
    print('apple.dict',apple.__dict__)
    print('apple.module',apple.__module__)
    print('apple.base',Apple.__bases__)      #Apple类的父类

2.3类的方法

Python使用函数staticmethod()或@staticmethod修饰器把普通函数转换为静态方法,要调用静态方法只需要使用类名作为前缀即可。

class Friut:
    price = 0  #类变量
    def __init__(self):
        self.color = 'red'

    def getColor(self):
        print(self.color)

    # @staticmethod
    # def getPrice():
    #     print('BEFORE Friut price:',Friut.price)

    @staticmethod
    def getPrice(cls):
        print('BEFORE Friut price:', cls.price)

    # def __getPrice(self):
    #     Friut.price = Friut.price + 10
    #     print('AFTER Friut price:',Friut.price)

    def __getPrice(cls):
        cls.price = cls.price + 10
        print('AFTER Friut price:', cls.price)

    count = staticmethod(__getPrice)

if __name__ == "__main__":
    apple = Friut()
    apple.getColor()

    Friut.count(apple)
    banana = Friut()
    Friut.count(banana)
    Friut.getPrice(Friut)

2.4内部类的使用


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值