什么是面向对象编程?
面向对象编程简称OOP(Object Oriented Programming),是一种编程方式,需要使用‘对象’来实现。
什么是对象,它有哪些特征?
-
世界万物皆对象,某个具体的领域也是由对象组成的
例如:
在学校领域,对象包括学生、教师、课程、教室和成绩单等;
在银行领域,对象包括银行账户、出纳员、支票、现金和验钞机等
因此,问题领域中的概念和实体都可以被抽象为对象。
-
每个对象都是唯一的
对象的唯一性来自于真实世界中事务的唯一性。
世界上不存在两片一模一样的叶子,因此在软件系统中的对象也具有唯一性。
例如:学习领域的学生小张、学生小王、小张的成绩单和小王的成绩单,都是唯一的。
-
对象具有属性和行为
例如:小王,性别男,年龄18,身高1.8米,体重70kg,能够学习、唱歌和打乒乓球。
再例如:一部手机,品牌有苹果,价格是6000元,黑色 ,能够拍照、打电话和收发短袖。这部手机的属性包括品牌、价格和颜色,行为包括拍照、打电话和手法短信。
-
对象具有状态
状态是指某个瞬间对象的各个属性的取值。
对象的某些行为往往会改变对象自身的状态,即属性的取值。
例如:小王的体重本来为80kg,经过减肥后,体重变为70KG
-
对象分为类对象和实例对象两大类
类对象是具有相同属性和行为的实例对象的抽象
类对象就是实例对象的模板,实例对象是由类对象创建出来的
此外,同一个类对象的实例对象,如果拥有相同的属性,表面他们的属性的含义是相同,但是他们的状态不一定相同,也就是说属性的取值不一定相同。例如:学生小张,小王和小李,都有姓名、性别、年龄、身高和体重这些属性,但是他们的属性的取值是不同的。
面向对象编程的大体步骤
-
抽象出类对象
class Dog(object): pass
-
抽象出类对象的属性
class Dog(object): def __init__(self, breed, name, age, health): self.breed = breed # 品种 self.name = name # 昵称 self.age = age # 年龄 self.health = health # 健康状况
-
抽象出类对象的行为(方法)
class Dog(object): def __init__(self, breed, name, age, health): self.breed = breed # 品种 self.name = name # 昵称 self.age = age # 年龄 self.health = health # 健康状况 # 跑 def run(self): print("Dog is running") # 吠 def bark(self): print("Dog is barking") # 咬 def bite(self): print("Dog is biting")
-
根据类对象创建实例对象
class Dog(object): def __init__(self, breed, name, age, health): self.breed = breed # 品种 self.name = name # 昵称 self.age = age # 年龄 self.health = health # 健康状况 # 跑 def run(self): print("Dog is running") # 吠 def bark(self): print("Dog is barking") # 咬 def bite(self): print("Dog is biting") dog = Dog("拉布拉多","旺财", 3, "很好")
-
通过实例对象访问属性和方法
class Dog(object): def __init__(self, breed, name, age, health): self.breed = breed # 品种 self.name = name # 昵称 self.age = age # 年龄 self.health = health # 健康状况 # 跑 def run(self): print("Dog is running") # 吠 def bark(self): print("Dog is barking") # 咬 def bite(self): print("Dog is biting") dog = Dog("拉布拉多","旺财", 3, "很好") print(dog.breed) print(dog.name) print(dog.age) print(dog.health) dog.run() dog.bark() dog.bite()