1、面对对象编程:是一种程序设计范型,同时也是一种程序开发的方法,实现OOP的程序希望能够在程序中包含各种独立而又相互调用的对象,每一个对象又都应该能够接受数据、数据处理并将数据传达给其他对象,因此每一个对象都可以被看成一个小型的机器,而整个程序块系统就是由这些小的机器相互协助、组合构建起来的。
2、面向对象分析:即根据抽象关键的问题域来分解系统。
3、面向对象设计:是一种提供符号设计系统的面向对象的实现过程,它用非常接近时机领域属于的方法把系统构造成现实世界的对象。
类(class)告诉python创建新类型的东西
对象(object):两个意思,即最基本的东西,或者某样东西的实例
对象(object):是数据和操作数据方法的结合。对象之间的通信:对象之间进行通信的结构叫做消息,当一个消息发送给某个对象时,应该包含以下几种信息:
1)接收消息的对象名(目的对象名);2)接受消息去执行某种操作的信息(调用方法名);3)发送给该对象参数,参数可以使改对象有的变量名,或者是谁有对象都知道搜的全局变量名;4)发送给该对象的消息名(源消息名)
类(class):对象的抽象是类,类的具体个性化就是对象。
类的结构关系:1)一般/具体结构称为分类结构,也可以说是is-a关系。用来描述在继承中子类与父类的关系,即一个派生类的实例化对象是其父类的一个例子,所以是is-a关系;2)整体与部分结构称为组装结构,他们之间的关系是has a关系。组合是实现继承的方式之一,在组合继承中,一个子类可以有多个父类,即一个子类has a 一个父类。
面向对象的三要素:
1、封装:概念:描述了对数据信息进行隐藏的观念,它对数据属性提供接口(接口函数)和访问方法。在类的设计时,微数据提供此相应的接口,一面向客户程序通过不规范的操作来存取封装的属性。
我们一般用语法“def”定义封装内部的函数,之前认知是“程序 = 数据结构 + 算法”,加上简单的封装后,可以理解为“程序 = 对象 + 消息”。
2、继承:概念:继承令不同类之间拥有了一定的结构与关系。
类之间的关系:1)通过继承创建的新类称为“子类”或“派生类”;2)被继承的类称为“基类”、“父类”或“超类”。
特有名词概念:1)泛化:表示所有子类与其父类及祖先类有着一样的特点;
2)特化:描述所有的子类的自定义,也就是说,什么属性让它与其父类一同;
3)实现继承的方式:可以通过继承和组合来实现,其中继承又有实现继承和可视继承,组合又有接口继承和纯虚类;
4)实现继承:子类的属性和方法完全继承与父类;
5)可视继承:子类继承父类的外观方法;
6)接口继承:子类的属性名和方法名继承于父类,但是具体的属性值和方法实现由子类重写;
7)多重继承:即组合继承,在java和c++中使用接口概念来实现多重继承的效果,而python中定义类的时候,可以直接继承多个父类来实现多重继承。在实现多重继承时,如果继承的多个父类中均有名称相同的方法时,需要注意继承的顺序。
3、多态:概念:指出了不同对象如何通过他们共同的属性动作来操作以及访问,而不需要考虑他们的具体的类,多态表明了动态绑定(运行时)的存在,允许重载及运行时类型确定的验证。
多态的作用:实现接口的重用,保证了在类发生继承或派生时,我们仍然能正确调用这些相关类的实例化对象的属性和方法。
一、设计一个三维向量类,并实现向量的加法、减法以及向量与标量的乘法和除法:
class vector3: def __init__(self, x_ = 0, y_ = 0, z_ = 0): self.x = x_ self.y = y_ self.z = z_ def __add__(self, obj): return vector3(self.x+obj.x, self.y+obj.y, self.z+obj.z) def __sub__(self, obj): return vector3(self.x-obj.x, self.y-obj.y, self.z-obj.z) def __mul__(self, obj): return vector3(self.x*obj.x, self.y*obj.y, self.z*obj.z) def __pow__(self, obj): return vector3(self.y*obj.z-obj.y*self.z, self.z*obj.x-self.x*obj.z, self.x*obj.y-obj.x*self.y) def __str__(self): return str(self.x)+','+str(self.y)+','+str(self.z) v1 = vector3(1, 2, 3) v2 = vector3(0, 1, 2) print (v1 + v2) print (v1 - v2) print (v1 * v2) print (v1 ** v2)
二、编写一个程序(类),用户输入一段英文,然后输出这段英文中所有长度为3个字母的单词,并且如果单词有连续重复了2次,只输出一个:
import re a=[] words=input("Input the words:") l=re.split('[. ]+',words) i=0 for i in l: if len(i)==3: if i not in a: a.append(i) else: continue for k in range(0,len(a)): print(a[k],end=' ')