侧边栏壁纸
    • 累计撰写 296 篇文章
    • 累计收到 520 条评论
    面向对象在编程中的概念
    我的学记|刘航宇的博客

    面向对象在编程中的概念

    刘航宇
    2023-12-25 / 0 评论 / 68 阅读 / 正在检测是否收录...

    前言

    在刚接触java、C++、Python语言的时候,就知道这是一门面向对象的语言。学不好java的原因找到了,面向对象的语言,没有对象怎么学 表情

    那么究竟什么是面向对象呢?

    面向对象,Object Oriented Programming,简称为OOP。说到面向对象,不得不提一嘴面向过程。

    面向过程

    面向过程是一种自顶而下的编程模式。
    把问题分解成一个一个步骤,每个步骤用函数实现,依次调用即可。
    举个生活中的例子,假如你想吃红烧肉,你需要买肉,买调料,洗肉,切肉,烧肉,装盘。
    需要我们具体每一步去实现,每个步骤相互协调,最终盛出来的才是正宗好吃的红烧肉。

    面向对象

    面向对象就是将问题分解成一个一个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之间的调用,组合解决问题。
    还是你想吃红烧肉这个例子,不过这次不同的是你发现了一家餐馆里有红烧肉这道菜,你要做的只是去点菜,就可以吃到红烧肉。
    针不戳,针不戳,面向对象针不戳,你不用再去关心红烧肉繁琐的制作流程,就能吃到美味的红烧肉。
    我们接着往下看

    面向对象的三大特性

    封装

    封装就是把客观的事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的类进行信息的隐藏。简单的说就是:封装使对象的设计者与对象的使用者分开,使用者只要知道对象可以做什么就可以了,不需要知道具体是怎么实现的。封装可以有助于提高类和系统的安全性
    这里有点像FPGA的IP了,电子人懂!

    继承

    当多个类中存在相同属性和行为时,将这些内容就可以抽取到一个单独的类中,使得多个类无需再定义这些属性和行为,只需继承那个类即可。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”

    多态

    多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。
    菜鸟教程中的例子就很形象

    面向对象的五大基本原则

    单一职责原则(Single-Responsibility Principle)

    简而言之,就是一个类最好只有一个能引起变化的原因,只做一件事,单一职责原则可以看做是低耦合高内聚思想的延伸,提高高内聚来减少引起变化的原因。

    开放封闭原则(Open-Closed principle)

    简而言之,就是软件实体应该是可扩展的,但是不可修改。因为修改程序有可能会对原来的程序造成错误。即对扩展开放,对修改封闭

    里氏替换原则(Liskov-Substitution Principle)

    简而言之,就是子类一定可以替换父类,子类包含其基类(父类)的功能

    依赖倒置原则(Dependecy-Inversion Principle)

    高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。依赖于抽象即对接口编程,不要对实现编程

    接口隔离原则(Interface-Segregation Principle)


    简而言之,就是使用多个小的专门的接口,而不要使用一个大的总接口。例如将一个房子再分割成卧室,厨房,厕所等等,而不是将所有功能放在一起

    面向对象编程的用途

    使用封装(信息隐藏)可以对外部隐藏数据
    使用继承可以重用代码
    使用多态可以重载操作符/方法/函数,即相同的函数名或操作符名称可用于多种任务
    数据抽象可以用抽象实现
    项目易于迁移(可以从小项目转换成大项目)
    同一项目分工
    软件复杂性可控

    面向对象编程的应用领域

    人工智能与专家系统
    企业级应用
    神经网络与并行编程
    办公自动化系统

    1
    AI: 机器学习必须懂的几个术语:Label、Feature、Model...
    « 上一篇 2023-12-26
    【嵌软】STM32的4种开发方式介绍
    下一篇 » 2023-12-20

    评论 (0)

    取消