2、软件设计师考试笔记-(7)

2.1、面向对象基本概念

面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

2.2、对象

对象的含义是指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象所指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果。

2.3、方法

方法是指对象能够进行的操作,方法同时还有另外一个名称,叫做函数。方法是类中的定义函数,其具体的作用就是对对象进行描述操作。

2.4、继承

继承简单地说就是一种层次模型,这种层次模型能够被重用。层次结构的上层具有通用性,但是下层结构则具有特殊性。在继承的过程中类则可以从最顶层的部分继承一些方法和变量。类除了可以继承以外同时还能够进行修改或者添加。通过这样的方式能够有效提高工作效率。在这里举一个例子,当类X继承了类Y后,此时的类X则是一个派生类,而类Y属于一个基类。继承是从一般演绎到特殊的过程,可以减少知识表示的冗余内容,知识库的维护和修正都非常方便。更有利于衍生复杂的系统。

2.5、类

类是具有相同特性(数据元素)和行为(功能)的对象的抽象。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。类映射的每一个对象都具有这些数据和操作方法,类的继承具有层次性和结构性,高层次对象封装复杂行为,具体细节对该层次知识保持透明,可以减小问题求解的复杂度。

2.6、封装

封装是将数据和代码捆绑到一起,对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。防止了程序相互依赖性而带来的变动影响,面向对象的封装比传统语言的封装更为清晰、更为有力。有效实现了两个目标:对数据和行为的包装和信息隐藏。

2.7、多态

多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。一个接口,多种方式。

2.8、动态绑定

动态绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。

2.9、消息传递

对象之间需要相互沟通,沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。


面向对象的方法就是利用抽象、封装等机制,借助于对象、类、继承、消息传递等概念进行软件系统构造的软件开发方法。

2.10、面向对象的特征

(1)对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)抽象性。
抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。
多重继承,JAVA、VB、NET、Objective-C均仅支持单继承,注意在C++多重继承时,需小心二义性。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重用性。
采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。
(4)多态性(多形性)
多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。


多态性允许每个对象以适合自身的方式去响应共同的消息。
多态性增强了软件的灵活性和重用性。


2.11、基于对象

面向对象的三大特点:封装、继承、多态,而基于对象只实现了继承和多态的特点,没有封装。所以它只是使用一些封装好的对象,调用对象的方法,设置对象的属性。但是无法让程序员派生新对象类型。他们只能使用现有对象的方法和属性。

软件设计师考试笔记-(7)相关推荐

  1. 软件设计师考试笔记-(10)

    软件设计师考试笔记-(10) 1.操作系统基本原理 1.1.进程管理 1.1.1.进程状态 1.1.2.前趋图 为了描述一个程序的各部分间的依赖关系,或者是一个大的计算的各个子任务间的因果关系的图示. ...

  2. 软件设计师考试笔记-(6)

    1.软件设计师考试笔记-(6) 1.6 Pert图:工程网络图 1.6.1 概述 工程网络图主要用于工程项目计划管理,它首先将施工项目整个建造过程分解成若干项工作,以规定的网络符号表达各项工作之间的相 ...

  3. 软件设计师考试笔记:UML统一建模语言

    统一建模语言UML是用一组视图反应系统的各个方面,以完整地描述系统,每个视图代表系统描述中的一个抽象,显示系统中一个特定的方面. UML中有四种关系:依赖.关联.泛化和实现: 依赖(dependenc ...

  4. 软件设计师考试-法律法规与多媒体部分的笔记

    文章目录 法律法规 1. 知识产权 2. 保护期限 3. 知识产权人确定 4. 侵权判定 5. 标准的分类与编号 多媒体基础 1. 基本概念 1.1 音频 1.2 图像 1.3 媒体的种类 2. 多媒 ...

  5. 软件设计师考试(2018下半年)

    本人的情况:非计算机相关专业,相关的基础课只学过C语言和数据结构,自学的java. 因为想往互联网方向发展,就在18年9月份报名了软考中级"软件设计师"科目,11月10考结束,感觉 ...

  6. (2012.12.25)我的中级软件设计师考试

    我的中级软件设计师考试 ―― 2012.12.25(By: Neicole) 一.开篇 中级软件设计师,合格分是45/75(上午题)+ 45/75(下午题),然后,这次低分险过52+51.本文仅想简单 ...

  7. 软件设计师考试-软件工程

    1. 软件开发模型 瀑布模型 瀑布模型把软件开发分为三大阶段:定义阶段.开发阶段.维护阶段. 瀑布模型的最大缺点在于不能灵活应对变化的需求,瀑布模型适用于需求明确的情况. 软件测试完成后的工作产品,例 ...

  8. 如何一周通过软件设计师考试?

    什么是软考? 软考全称"计算机技术与软件专业技术资格(水平)考试",由国家人力资源和社会保障部.工业和信息化部领 导下的国家级考试,设置了27个资格包括初级.中级.高级三个级别.官 ...

  9. 软件设计师考试-程序设计语言与语言处理程序基础

    1. 编译过程 1.1 词法分析 词法分析器的任务是把源文件的字符流转换成记号流. 词法错误包括:非法字符,关键字或标识符拼写错误. 词法分析阶段会对构成源程序的字符集进行扫描和分解,分析构成程序的字 ...

最新文章

  1. Delphi Access violations 问题的解决之道
  2. 程序员每天应该思考的5个问题,你有思考过吗?
  3. 使用Minikube部署本地Kubernetes集群(二十九)
  4. SpringBoot @Resource注入的坑
  5. Python 深浅copy 和文件操作
  6. 创造型模式——工厂模式
  7. C#图片处理之:在图片上画直线
  8. UVa673 - Parentheses Balance
  9. shell介绍,date命令,shell变量
  10. 7-10 365次方 (10 分)
  11. 用python求正方形面积是多少_长方形正方形面积的计算
  12. 3DGPS数据图和3D圆轨道图
  13. 【题解】「THUPC 2017」体育成绩统计 / Score
  14. startActivityForResult用法
  15. No provider available from registry 192.168.126.129:2181 for service com.jt.service.DubboUserServic
  16. 浅析缓冲区溢出漏洞的利用与Shellcode编写
  17. win10电脑底下一排图标没了怎么办
  18. 电脑网络被别的计算机控制,电脑被别人远程控制了,怎么办?
  19. 大厂iOS APP都用了哪些第三方库?
  20. 谁带火了化妆品小样经济?

热门文章

  1. 爱立信CEO卫翰思否认将被思科收购
  2. Java解析rdf和xml文件以及处理excel
  3. 区块链技术与法律不是敌对双方,而是并肩战友
  4. 媒体邀约中如何准备采访问题?
  5. 什么样的产品才是真正的智能硬件?
  6. caffe2安装记录
  7. 【Mitmproxy】Mac + Python + mitmproxy透明代理配置,拦截所有网络请求
  8. Unity技术手册 - 初识粒子系统及预览效果【Particle Effect】面板介绍
  9. Win11微软账户无法正常登录怎么回事?
  10. 计算机对教育的影响雅思听力,雅思听力机经:各大网站听力考试的预测汇总