Class20:初学面向对象、多线程

面向对象的设计和实现

一、定义和实现 对象 可以直接对应现实世界里面的事物

二、面向对象的设计(OOD)

1、分析要解决的现实世界的问题

2、定义出各种对象 代表现实世界的对象

3、通过设计 对象之间的关系和交互行为来设计系统

 

三、因为

1、现实世界 其实就是各种对象 和对象之间的关系、交互行为

2、现实世界:事物的时间

a、物:对象、对象之间的关系(儿子、父亲;老板、员工)

b、事:对象之间的交互(司机开车,厨师做饭)

3、这种设计方式 更容易被人所理解和接受

类和实例

1、首先,寻找要设计的对象

老虎、羊、房间

2、接下来,确定对象的定义

a、对象的定义:定义对象在这个系统里面的的属性和行为

b、比如老虎这类对象,在这个系统里面的共有属性,行为 属性

c、在面向对象的软件设计中把对象和它的属性和行为的定义叫 类 的定义

d、类表示了这类对象所共有的属性和行为

e、类是面向对象的设计中最基本的概念

f、定义了类,就定义了对象的类型(包括在系统里面的属性和行为)

#定义类:使用class,建议类名首字母大写,命名规则和变量基本一致。
#如果要操作实例属性则定义为实例方法,不操作实例属性则定义为静态方法
class Tiger():
   #静态属性:
   classname = '老虎' 

   #实例方法,初始化方法init就是实例方法
def __init__(self,weight=200):
       #实例属性,每个实例所独有的属性
       self.weight = weight
   #静态方法,静态方法可以调用静态属性
   def tiger_sleep(self):
       #静态属性,所共有的属性,指所有老虎
       print(Tiger.classname)

   
#类的实例化,t1,t2特指某个老虎
t1 = Tiger()                
t2 = Tiger()

#访问t1的静态属性
print(t1.classname)
#访问t1的实例属性
print(t1.weight)    
# 访问实例方法
print(t1.rorw())
# 访问静态方法
print(t1.tiger_sleep())

3、实例 是类的具体化存在

a、老虎这个类,描述了:

1、在这个系统里面共有的属性:体重、名称
2、行为有叫、吃食物

b、每个具体的老虎,是老虎这个类的实例
   房间中老虎
c、类的实例的关系,有点像模具和根据模具做的东西一样

面向对象的语言 vs 面向对象的设计

1、面向对象的设计:是一种设计思路

2、面向对象的语言:提供对面向对象设计的语言支持

3、非面向对象的语言也能实现面向对象的设计思路

 

静态属性和实例属性

1、静态属性(类属性)

该类的所有实例共享的属性

2、实例属性

体重(每个实例独有的)

定义在 初始化方法 __init__里

self的概念

静态方法和实例方法

1、对象的方法就是描述对象行为的

a、通过定义在类里面的函数

b、初始化方法init函数

2、类的方法包括

a、实例方法:每个具体实例相关的方法

b、静态方法:共有的方法,每个具体实例都是相同的

实例方法:

1、与每个具体实例相关的方法

如果代码中的实例方法不访问任何实例属性,一般建议实现为静态方法

2、初始化方法就是一个实例方法

3、一般实例方法都要访问self

静态方法

与每个具体实例无关

@staticmethod 修饰 (装饰器)

静态方法不能访问实例属性,但是可以访问静态属性

 

对象的组合

什么是对象的组合?

1、房间里可以包含老虎、羊

2、通过对象的属性表示这种组合关系的

在类定义的 初始化函数 里面表示对象的组合
class Room:
def __init__(self,num,animal):
  self.num = num
  self.animal = animal

 

对象的继承

#定义父类
class Tiger:
   classname = 'tiger'

   def __init__(self,weight=100):
       self.weight = weight

   def roar(self):
       print('wow!!!')
       self.weight -= 5
       return self.weight

   def feed(self,food):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值