zoukankan      html  css  js  c++  java
  • 类和正则表达(自动更正、代数运算)

    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=' ')
    

  • 相关阅读:
    WPF RichTextbox
    XLT格式化XML那点事(C#代码中的问题解决)(二)
    XML通过XSL格式化的那点事(XML到自定义节点折叠显示)
    C# XML技术总结之XDocument 和XmlDocument
    VS2013问题与解决方法
    Win10 通过升级安装完成后出现了中文字体忽大忽小的问题解决。
    工作这些年对技术学习过程的一些 总结 与 感悟
    C#性能优化考虑的几个方向
    Sql server2012 常见异常处理
    WPF -Enum的三种绑定方法
  • 原文地址:https://www.cnblogs.com/cnn-ljc/p/13040576.html
Copyright © 2011-2022 走看看