前言
在刚接触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)
简而言之,就是使用多个小的专门的接口,而不要使用一个大的总接口。例如将一个房子再分割成卧室,厨房,厕所等等,而不是将所有功能放在一起
面向对象编程的用途
使用封装(信息隐藏)可以对外部隐藏数据
使用继承可以重用代码
使用多态可以重载操作符/方法/函数,即相同的函数名或操作符名称可用于多种任务
数据抽象可以用抽象实现
项目易于迁移(可以从小项目转换成大项目)
同一项目分工
软件复杂性可控
面向对象编程的应用领域
人工智能与专家系统
企业级应用
神经网络与并行编程
办公自动化系统
评论 (0)