面向对象

简介: <h1>面向对象VS面向过程</h1> <p><span style="font-family:KaiTi_GB2312; font-size:24px">  <span style="font-size:18px"> 在面向对象编程出现之前,几乎所有的程序都是以面向过程为中心的,程序的运行从某个地方开始运行达到一定的目的就结束了。而且程序的代码修改和重复使用率比较低。</span>

面向对象VS面向过程

  在面向对象编程出现之前,几乎所有的程序都是以面向过程为中心的,程序的运行从某个地方开始运行达到一定的目的就结束了。而且程序的代码修改和重复使用率比较低。面向对象把是整个世界看成一系列实体的集合,所有的个体都是对象,而对象就是具有一定属性和行为的实体的集合。

      下面的表格大概的说明了面向过程(OPP)和面向对象(OOP)的区别:

OPP

   

OOP

  



 面向对象编程中的类和对象

  是一个抽象概念,比如说我们我们从各式各样的汽车中抽象出汽车的概念、由不同品种的猫抽象出猫的概念、从颜色和形状不同的花中抽象出花的概念;而类与类之间的区分是通过类的状态和行为来区分的。对象是类的一个实例化,刚开始学,很容易把类和对象混淆,举几个例子便于理解,比如说:首都是一个类,北京、华盛顿、伦敦都是对象;动物猫是一个类,Kitty、加菲猫(Grafield)、叮当猫(Doraemon)都是对象。

  

   是抽象的概念,对象是一个实体,我们可以说Garfield有橙色的毛,而不能说猫类有橙色的毛;我们可以说北京在中国,而不能说首都类在中国。一般情况下状态是描述具体对象而非类的,行为是有具体对象发出而不是类。

面向对象的三大特征

 封装

  制作电脑什么人最牛?当然不是会组装的、也不是会拧螺丝的,而是设计电脑的工程师,因为他知道电脑的运行原理,当我们使用电脑的时候,需要知道电脑的运行原理吗?显然不需要;电脑的运行原理已经被工程师封装在电脑的内部,提供给用户只是一个显示屏、键盘、触摸板和一些接口,用户通过这些就可以很容易的操作电脑。

  面向对象技术把事物的状态和行为的实现细节封装在类中,形成一个可以重复使用的“零件”,被成千上万的对其内部原理毫不知情的程序员使用。类的设计者相当于电脑的工程师,类的使用者相当于用户。

 继承 

 在之前学习UML的时候就已经了解到了继承,在面向对象中的继承分为继承(泛化)、和组合(聚合)。

   多态

  举个例子:我们出去的时候在路口都会看到红绿灯,红灯的时候是停车,这个时候自行车,公交车、小轿车等都会停下,需要提出的是它们的停车方式不同,因为他们也属于不同的类,但是最终的结果是它们都停下来了,是因为有一个共同点的前提,他们都是车,是车类的子类,红绿灯针对的是车类,天上飞鸟、海里游的鱼看见红灯的话就不会停下。

   所以说:多态的对象应该有共同的父类

          就如上例,红灯亮了,不同的对象会根据自身的特点实施不同的动作,最终的结果是都停下来。













相关文章
|
数据库
ACN规则深度解密-全网最细的剖析
ACN规则深度解密-全网最细的剖析
|
人工智能 计算机视觉
AI计算机视觉笔记十五:编写检测的yolov5测试代码
该文为原创文章,如需转载,请注明出处。本文作者在成功运行 `detect.py` 后,因代码难以理解而编写了一个简易测试程序,用于加载YOLOv5模型并检测图像中的对象,特别是“人”类目标。代码实现了从摄像头或图片读取帧、进行颜色转换,并利用YOLOv5进行推理,最后将检测框和置信度绘制在输出图像上,并保存为 `result.jpg`。如果缺少某些模块,可使用 `pip install` 安装。如涉及版权问题或需获取完整代码,请联系作者。
|
SQL
Parameter ‘id‘ not found. Available parameters are [collection, list]
Parameter ‘id‘ not found. Available parameters are [collection, list]
443 0
|
机器学习/深度学习 人工智能 算法
人工智能伦理:当机器拥有道德判断力
随着人工智能技术的快速发展,AI已经从简单的任务执行者逐渐转变为具有决策能力的智能体。本文将探讨AI在伦理道德方面的挑战与机遇,分析AI如何通过算法模拟人类道德判断,以及这一进步可能给社会带来的深远影响。我们将深入讨论AI伦理决策的实现路径、面临的技术难题和未来发展趋势,同时评估其对法律、社会结构和个人隐私的潜在影响。文章旨在为读者提供一个关于AI伦理决策的全面视角,并引发对于科技发展与人类价值观之间关系的深思。
404 0
|
监控 JavaScript 前端开发
Vue 项目性能优化指南:提升应用速度与效率
Vue 项目性能优化指南:提升应用速度与效率
|
C语言
C语言素数判断以及打印素数表
C语言素数判断以及打印素数表
478 0
|
自然语言处理 数据挖掘 知识图谱
【提示学习】Knowledgeable Prompt-tuning: Incorporating Knowledge into Prompt Verbalizer for Text Classific
目前流行的第四大范式Prompt的主流思路是PVP,即Pattern-Verbalizer-Pair,主打的就是Pattern(模板)与Verbalizer(标签映射器)。   本文是在Verbalizer(标签映射器)方面做出的创新。   文章思路是数据增强+去噪,不过数据增强在于verbalizer对于label space至expanding word space的映射,引入外部的扩展标签词集,辅助分类,去噪并不新颖,就是在细化两个场景,zeroshot滤掉扩展标签词集的低频词,并上下文校验。fewshot则是引入可学习权值,减小噪声影响。
371 0
|
Shell 程序员
shell中的信号捕获trap(shell 进阶)
shell中的信号捕获trap(shell 进阶)
356 0
shell中的信号捕获trap(shell 进阶)
|
vr&ar 图形学 数据安全/隐私保护
2023年13个面向初学者最佳免费3D建模软件
现在有数百种不同的免费 3D 建模软件工具供希望创建自己的 3D 模型的用户使用——因此知道从哪里开始可能会很棘手。 3D 软件建模工具的范围从即使是最新的初学者也易于使用到可能需要数年才能学习的专业级软件——因此选择与您的技能水平相匹配的工具非常重要。
2421 0
|
存储 NoSQL Redis
Python Redis数据库新玩法:从零到高手掌握操作技巧
Python Redis数据库新玩法:从零到高手掌握操作技巧
325 0