zoukankan      html  css  js  c++  java
  • 初识面向对象

    主要内容:

    • 1. 面向对象和面向过程
    • 2. 面向对象如何编写
    • 3. 面向对象三大特征

    1. 面向对象和面向过程

        (1) 面向过程:核心是"过程",事情的发展即"过程",或者解决问题的执行步骤即过程,该编程思想就是论事,就问题即问题,是机械式的不可倒退机制

        (2) 面向对象: 核心是"对象",具有相同属性和动作的结合体即对象.面向对象思维即是以对象为中心,自己来操控对象而解决问题,此时操纵的是一个事物的个体,具体的某一个事物.

    2. 面向对象如何编写

        对象是具有相同属性和动作的结合体,所以我们用类来描述一个对象用"对象.特征"给对象设置属性.

    class Movie:          #创建类
        print("电影出版")
        pass
    a = Movie()           #创建一个电影
    a.genre = "剧情"
    a.language="国语"
    a.name="少林足球"
    a.time="2H"
    print(a.genre )
    print(a.language )
    print(a.name)
    print(a.time)

    把电影的信息如果写在类里, 而且电影每部都具有上面特征,所以可以写在类里,在python中我们可以是用__init__(self) 函数给对象进行初始化操作, 这个函数(方法)被称为构造函数(方法). 

    class Movie:                                        #创建类
        def __init__(self,genre,language,name,time):    # self表示当前类的对象,当前你创建的是谁,谁来访问的这个方法.那这个self就是谁. 
            self.genre=genre 
            self.language=language
            self.name=name
            self.time=time
    a = Movie("剧情","国语","少林足球","2H")
    print(a.genre)
    print(a.language)
    print(a.name)
    print(a.time)

          属性设置完了,此时还需要对这个个体特有的动作进行编写,用函数来实现,在面向对象编程中,函数被称做方法,只不过这个方法写起来比正常的方法多⼀个参数self.

    class Movie:
        def __init__(self,genre,language,name,time):
            # print("电影出版")
            self.genre=genre
            self.language=language
            self.name=name
            self.time=time
        def play(self):
            print("%s在美国上映" % self.name)
    a = Movie("剧情","国语","少林足球","2H")
    a.play()

    总结: 类与对象的关系:  类是对事物的总结. 抽象的概念, 类用来描述对象, 对象是类的实例化的结果,对象能执行哪些方法,都由类来决定. 类中定义了什么,对象就拥有什么

     3.面向对象的三大特征

     面向对象三大特征: 封装, 继承, 多态. 只要是面向对象编程语言. 都有这三个特征. 

    (1)封装:把很多数据封装到⼀个对象中,把固定功能的代码封装到⼀个代码块, 函数, 对象,打包成模块,这都属于封装的思想. 具体的情况具体分析

    (2)继承: 子类可以自动拥有父类中除了私有属性外的其他所有内容.

    class Pet:
        def __init__(self, name):
            self.name = name
        def eat(self):
            print("吃,.....")
        def sleep(self):
            print("")
    class Cat(Pet):
        def catchMouse(self):
            print("%s喜欢抓老鼠" %  self.name)
    class Dog(Pet):
        def chaijia(self):
             print("狗会拆家")                     # x是一种y的时候. x继承y

    在python中, 一个类可以同时继承多个父类.

    class Foo:
        def play(self):
            print("Foo中的play")
        def func(self):
            print("我是爹")
    class Foo2:
        def money(self):
            print("干爹给钱")
        def play(self):
            print("Foo2中的play")
    class Bar(Foo, Foo2): # 继承   子类,  MRO算法. C3算法
        pass
    obj = Bar()
    obj.money()
    obj.func()
    obj.play()

    (3)多态:同一个个体可以有多种形态.

    class Animals:
        def eat(self):
            print("动物就知道吃")
    class pig(Animals):
        def eat(self):
            print("猪在吃")
    class tiger(Animals):
        def eat(self):
            print("大虫在吃")
    class lion(Animals):
        def eat(self):
            print("西几在吃")
    class feeder:
        def feed(self,Ani):
            Ani.eat()
    pig = pig()
    tiger=tiger()
    lion=lion()
    alex = feeder()
    alex.feed(pig)
    alex.feed(tiger)
    alex.feed(lion)

    多态的好处:  程序具有超高的可扩展性,面向对象思想的核心与灵魂,python自带多态. 

    Homework

    1.实现用户注册和登录

    class Account:
        def __init__(self):
            self.user_list = [] # 数据源
        def login(self):
            print("欢迎来到登录环节")
            username = input("请输入用户名: ")
            password = input("请输入密码:")
            for u in self.user_list:
                if u.name == username and u.pwd == password:
                    print("登录成功")
                    return
            else:
                print("登录失败")
        def register(self):
            print("欢迎来到注册环节")
            uname = input("请输入用户名")
            pwd = input("请输入密码")
            u = User(uname, pwd)
            self.user_list.append(u)
        def run(self):
            while 1:
                print("1. 注册")
                print("2. 登录")
                num = input("请输入你要执行的操作(Q退出):")
                if num == "1":
                    self.register()
                elif num == "2":
                    self.login()
                elif num.upper() == "Q":
                    print("退出")
                    break
                else:
                    print("你是不是傻")
    obj = Account()
    obj.run()

    2.1.     补充代码实现:

    user_list = []
    while True:
            user = input(“
    请输入用户名:”)
            pwd = input(“请输入密码:”)
            email = input(“请输入邮箱:”)

    while循环提示用户输入:用户名、密码、邮箱

    为每个用户创建一个对象,并添加到列表中。

    当列表中添加3个对象后,跳出循环并以此循环打印所有用户的姓名和邮箱

    class User:
        def __init__(self, username, password, email):
            self.username = username
            self.password = password
            self.email = email
    user_list = []
    for i in range(3):
        user = input("请输入用户名:")
        pwd = input("请输入密码:")
        email = input("请输入邮箱:")
        u = User(user, pwd, email)
        user_list.append(u)
    else:
        for u in user_list:
            print("我叫%s, 邮箱是:%s" % (u.username, u.email))
  • 相关阅读:
    GridView, ListView 区别
    ActivityGroup和TabActiviy的差异性?
    Java加密解压
    Android代码中实现WAP方式联网
    SVN创建资源库和远程连接配置
    高仿优酷Android客户端图片左右滑动(自动切换)
    andoid 多线程断点下载
    Android中用Java代码实现zip文件解压缩
    JAVA两种实现二分查找方式
    三种JAVA编程方法实现斐波那契数列
  • 原文地址:https://www.cnblogs.com/wcx666/p/9700237.html
Copyright © 2011-2022 走看看