面向对象的基础概念

面向过程与面向对象的区别
    面向过程编程思想:是一种机械化的思维,就像一条流水线,指定流水线只能生产指定产品

       缺点:牵一发而动全身 扩展性非常低,可维护性差

        优点:将复杂的事情,简单化,并流程化  应用场景:对扩展要求较低的程序

             eg:系统内核,shell脚本,计算器啥的

    面向对象是一种编程思
        对象是什么
        面向对象关注点是对象,把你的思维角度从具体操作这 变成了一个指挥者
        例如把大象装进冰箱
            1.打开冰箱
            2.塞入大象
            3.关闭冰箱
         以上就是典型面向过程思想
         换成面向对象
         找一个具备装大象这个技能的对象 然后命令它装大象

         注意:对象不是凭空产生的 需要我们自己先设计对象  然后在使用它们

        优点:
            不需要在关注具体的实现细节 可以更好的关注业务逻辑
            扩展性提高了,维护性高,复用性高
        缺点:
            对比面向过程而言.程序需要先设计,结构更复杂,编程复杂度提高了
            无法准确预知执行结果
        应用场景:
            对于扩展性要求较高的应用程序
            qq,微信,王者荣耀


        面向对象是一种编程思想,让你不需要关心具体实现细节,而是关注对象


        什么是对象?
        万事万物都是对象
        对象:具备某种特征与行为的集合体并且是具体存在的就称之为对象
            如来佛祖,owen
        类: 某些具备相同特征和相同行为的集合体 ,是一种抽象概念    类型==类
            人,动物,狗,老男孩的老师

        特征==属性
        行为==技能


        对象和类的关系
        在生活中 先有对象 再有类
        在代码中 必须现有类 才能产生对象   (因为你需要提前告诉计算机这个对象是什么样的有什么技能)

        编程思想不是某一个具体语言或技术 ,
        面向对象的语言:
        python,Java,C++,C#
        面向过程:
        C,ruby
使用class关键字来定义一个类

类名称为大驼峰命名法
所有单词首字母大写
小驼峰 第一个单词首字母小写
"""
# class ClassName:
#     pass

class Student:
    # 描述特征使用变量 (属性)
    school = "olbBoy"

    # 描述技能使用函数 (方法)
    def say_hi():
        print("hello i am tiger")

    # class中的代码仅在第一次加载时执行
    print("test...")
    pass

#
print(Student.say_hi)
Student.say_hi()
print(Student.school)

# Student.say_hi()


# 调用类来获得一个对象
# stu1 = Student()
# stu1.say_hi()


class Person:
country = "china"

def eat(self):
print("正在吃面...")


p1 = Person()
# print(p1)
# print(Person)

# print(p1.country)
# p1.eat()

# 为对象增加了属性
p1.name = "张三"
print(p1.name)


# 给p1对象单独添加了country
p1.country = "USA"
# 在访问时优先访问自己名称空间的内容 如果找不到 会自动找类中的属性
print(p1.country)
print(Person.country)

# 每个对象都会存储自己所在类的地址 可以使用__class__来访问
print(p1.__class__)
print(type(p1))

# 查看名称空间中的内容
print(p1.__dict__)
print(Person.__dict__)




原文地址:https://www.cnblogs.com/wyf20190411-/p/10872071.html