• 【2015】对面向对象的理解


    1、什么是面向对象语言

    面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。

    面向对象语言很多,如一直高居世界编程语言排行榜的Java、C#、C++、Object-C、PHP等等。

    2、面向对象的理解

    相信很多程序猿,特别是新手,都对面向对象都没有去理解过,但都用过而且可能用的还很熟。

    最近面试一位刚入行不久的新手,也有半年多的工作经验了,也做过项目,其实也算不上新手,问其面向对象语言的三个基本特征之一,其回答竟然是“开源”,真是让我大吃一惊。

    或许懒、或许感觉这些抽象的文字难以学习理解、或许认为工作中用不到,但我想这些最基本知识的还是要知道的,不要工作3年,积累下的经验可能3天都不到。

    以下是个人对面向对象的理解:

    什么是对象? 引用我的一位大学老师的说:一切都是类、一切都是对象

    现在大部分的面向对象语言是基于类的。

    他的算是启蒙老师吧,很风趣的一位老师,在学校代课教我们时,最经常挂在嘴边的就是这句话(只要他的课这句话最少要听到10次以上)。以至于现在想到他,脑海里第一反应就是这句话。

    除了红字以上是我的废话,可以忽略。

    2.1、对象

    一切都是对象

    举例:

    将一栋房子 比作一个对象 【房子:对象】。 从图上也可以看到这是一种别的房子【房子:类-Class】  如图

    这尼玛就是对象,那对象应该包含什么呢,相信只要学过,面向对象的肯定都知道面向对象的三项基本特征:封装、继承、多态。

    2.2、对象的基本特征一:封装

    封装  将各个独立功能设计成一个个独立的单元,形成一个有规划设计的整体,减小耦合,提高内聚,避免牵一发而动全身,方便对程序的修改。

    还是用房子来解释,上面已经有房子的基本类型了,大概样子就是那个熊样。

    举例:

    房子空间很大,但是如果男男女女有十几人住,而且就一间屋子的话,很不方便,如果吃喝拉撒一个屋,那就成难民营,更何况晚上灯一黑,立刻就乱套了,你懂得。

    这样,就要想法解决:

    工人们出动了,把房子折腾折腾给分成楼上楼下两层,并说明了,一楼吃喝玩乐、二楼休息; 楼上楼下工人们又分别给隔离出几个房间,就把房子这样改造好了,然后男男女女们过来了,大家就可以各自的房间,做爱做的事,而且不会影响到其他了。

    这样一个简单的封装就完成 【房子:类-class】是对 【房子两层:部分类-partialclass】的封装  ;【房子两层:部分类-partialclass是对【房间:函数/方法-function】的封装。

    2.3、对象的基本特征二:继承

    继承 发生在两个对象之间,继承对象可以肆意的使用被继承对象的一些属性、方法&函数等;使代码重用,减少编码量,间接减少维护成本。
    仍然是房子。
    工人们已经给分好楼、做好房间了。这时有个人觉得房子应该有个紧急避难所。好吗,尼玛房子都折腾的差不多了,尼玛告诉工人要紧急避难所,工人说这不好搞哇。可以这人有钱,任性,
    发话了,要搞必须搞,不好搞也要搞,而且狠狠的搞。工人们就为难了,难道再去给盖一栋有避难所的房子?大家集思广益最终,房子其他都还用着,再给挖个地下室。于是新房子诞生了。
    一个简单的继承就出现了 【房子:基类-baseclass】被【新房子:扩展类-ExtensionClass】继承。

    2.4、对象的基本特征三:多态
    多态 不同的场合做出不同相应,有着不同的特点,可以说是封装的一个实现。
    房子已经成型,要对房间进行装修了,工人想法很简单都按照一种样式来,简单方便快捷。但是住房的男男女女们有意见,这就是尼玛客户,各种千奇百怪的想法,有要在承重墙
    上开扇窗户的,有要在卫生间装摄像头的、要在厨房里装空调。工人们对能实现就开始开工了,对房子的窗户、地板、墙、楼梯等进行装修。这样装修完房子内部就丰富起来了。
    如图
    “一种多态的展现”就出来了:
    【房子:类-class】 通过 【窗户、地板、墙、楼梯等:属性-Property】体现多态



    2.5、面向对象

    最后的总结,前面其实是对象的说明。现在来说一下面向对象,像开篇提到的一切都是对象。那面向对象有是怎么回事呢难道说是面向一切,真这么理解也不为过。

    面向对象是一种对现实世界理解和抽象的方法,对做程序来说,就是让程序人员,用一种思维更好的看待万物,在编程中的本质。 OO

    自由、人生、意义、执着、残缺美 一个人认真的学习者 --------2015年3月19日
  • 相关阅读:
    golang 实现生产者消费者模式(转)
    ssh设置免密登录后登录仍需密码可能的原因,以及 ssh 出问题或的调试方法
    http 请求 Cros 跨域问题记录(转)
    问题解决——SSH时出现WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!(转)
    Git撤销本地commit(转)
    golang project 不显示文件夹 或者某个包明明能 import 但就是 import 不进来,提示Unresolved reference
    Qt6.2.4 qml 实现登录注册及显示详情demo
    Qt6.2.4 qml 实现文件选择与内容读取
    【转载】Qt6.2.4 qml ChartView 实现饼状图与问题解决
    【转载】AntvX6 流程图 demo 基于原生 js 支持导入与导出数据
  • 原文地址:https://www.cnblogs.com/littlemo/p/4350848.html
Copyright © 2020-2023  润新知