首页 > 其他分享 >【中级软件设计师】上午题07-面向对象技术(通俗易懂版)

【中级软件设计师】上午题07-面向对象技术(通俗易懂版)

时间:2024-03-21 10:32:12浏览次数:13  
标签:07 对象 绑定 多态 通俗易懂 面向对象 方法 属性

上午题07-面向对象技术

1 类

实体、接口、控制

类是在对象之上的抽象,对象是类的具体化,是类的实例(Instance)。
类可以分为三种:实体类、接口类(边界类)和控制类。

(1)实体类的对象表示现实世界中真实的实体,如人、物等。
(2)接口类(边界类) 的对象为用户提供一种与系统合作交互的方式,分为人和系统两大类,其中人的接口可以是显示屏、窗口、Web 窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。
(3)控制类的对象用来控制活动流,充当协调者。

2 对象和消息

2.1 对象

对象、属性、方法

在面向对象的系统中,对象是基本的运行时的实体,它既包括数据(属性),也包括作用于数据的操作(行为)。所以,一个对象把属性和行为封装为一个整体。封装是一种信息隐蔽技术,它的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。从程序设计者来看,对象是一个程序模块;从用户来看,对象为他们提供了所希望的行为。在对象内的操作通常称为方法。一个对象通常可由对象名、属性和方法 3个部分组成。
每个对象都有它的属性和操作,如电视机有颜色、音量、亮度、灰度、频道等属性,可以有切换频道、增大/减低音量等操作。
电视机的属性值表示了电视机所处的状态,电视机是黑色、电视机的音量很大这些都是状态
电视机的各组成部分,如显像管、电路板和开关等都封装在电视机机箱中,人们不知道也不关心电视机是如何实现这些操作的。

对象的状态标识了该对象的所有属性,以及每个属性的当前值。
对象共享属性和行为。

2.2 消息

调用

对象之间进行通信的一种构造叫作消息。当一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息。接收到信息的对象经过解释,然后予以响应。这种通信机制称为消息传递。发送消息的对象不需要知道接收消息的对象如何对请求予以响应。

调用类的方法
ml.changeLevel(2)

3 方法重载

不同的参数去控制同一个方法。

方法同名但是方法参数个数不同,或方法参数类型不同,或方法参数类型顺序不同都是方法重载。指在同一个类中使用相同的方法名,但是参数列表不同,来实现不同的功能。

例如,有一辆车,我们为这辆车定义了一个 run 方法,可以根据不同的参数来控制车辆的运行方式,比如可以传入速度参数、方向参数等,来实现不同的运行效果。

4 封装

封装就像是将一个物品放入一个包裹或容器中,然后提供一个外部接口来与其交互,而不需要了解包裹内部的具体细节。

在编程中,封装是指将数据(属性)和操作(方法)封装在一个对象中,并且只通过对象的公共接口(方法)来访问数据,隐藏了对象内部实现的细节。

想象一辆汽车,我们只需知道如何使用汽车的接口(如方向盘、油门、刹车等),而无需了解汽车的内部引擎或机制。

5 继承

狗类可以继承动物类的属性和方法,如名称、种类、吃等,同时可以在这基础上添加自己特有的行为或属性,如“汪汪叫”和“看门”。

继承可以让一个类(子类)从另一个类(父类)那里继承属性和行为,子类可以重用父类的属性和行为,并且可以在此基础上添加新的属性和行为。

假设有一个动物类(父类),其中包含了共有的属性和行为(如名称、种类、吃、睡等),然后有一个狗类(子类)继承自动物类,狗类可以继承动物类的属性和方法,如名称、种类、吃等,同时可以在这基础上添加自己特有的行为或属性,如“汪汪叫”和“看门”。

6 多态

动物类中有一个叫声的方法 makeSound(),而狗类和猫类继承自动物类并重写了这个方法。狗类中的 makeSound() 方法会发出汪汪的声音,而猫类中的 makeSound() 方法会发出喵喵的声音。

多态指的是同一个方法可以以不同的形式(参数类型、个数)出现,实现不同的功能。

参数多态是应用比较广泛的多态,被称为最纯的多态。
包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另一个类型的子类型。
过载(Overloading)多态是同一个名字在不同的上下文中所代表的含义不同

7 静态、动态绑定

静态绑定在编译,动态绑定在运行。

绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。
动态绑定是和类的继承以及多态相联系的。在继承关系中,子类是父类的一个特例,所以父类对象可以出现的地方,子类对象也可以出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。

8 面向对象设计原则

(1)单一责任原则(Single Responsibility Principle,SRP)。就一个类而言,应该仅有一个引起它变化的原因。即,当需要修改某个类的时候原因有且只有一个,让一个类只做一种类型责任。
(2)开放-封闭原则(Open & Close Pinciple,OCP)。软件实体(类、模块、函数等)应该是可以扩展的,即开放的;但是不可修改的,即封闭的
(3)里氏替换原则(Liskov Substitution Principle,LSP)。子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有是一个(is-a)关系。
(4)依赖倒置原则(Dependence Inversion Principle, DIP)。抽象不应该依赖于细节,细节应该依赖于抽象。即,高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
依赖于抽象,而不依赖于细节。
(5)接口分离原则(Interface Segregation Principle,ISP)。不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。即:依赖于抽象,不要依赖于具体,同时在抽象级别不应该有对于细节的依赖。这样做的好处就在于可以最大限度地应对可能的变化。
依赖于抽象,而不依赖于具体。

上述(1)~(5)是面向对象方法中的五大原则。除了这五大原则之外,Robert C.Martin提出的面向对象设计原则还包括以下几个。

(7)共同封闭原则(Common Closure Principle,CCP)。包中的所有类对于同一类性质的变化应该是共同封闭的。**一个变化若对一个包产生影响,则将对该包中的所有类产生影响,**而对于其他的包不造成任何影响。
(8)共同重用原则(Common Reuse Principle,CRP)。一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。

9 面向对象分析与设计

9.1 面向对象分析

认定 组织 描述 确定 定义
面向对象分析包含5个活动:
(1)认定对象、
(2)组织对象、
(3)描述对象间的相互作用、
(4)确定对象的操作、
(5)定义对象的内部信息。

9.2 面向对象设计

3个识别 2个定义

其目标是定义系统构造蓝图。
(1)识别类及对象
(2)定义属性
(3)定义服务
(4)识别关系
(5)识别包

9.3 面向对象测试

(1)算法层
(2)类层
(3)模板层
(4)系统层

标签:07,对象,绑定,多态,通俗易懂,面向对象,方法,属性
From: https://blog.csdn.net/qq_50771882/article/details/136855318

相关文章

  • java学习系列(四):面向对象
    一、面向过程和面向对象1、程序设计的思路●面向对象(具体的步骤)是软件开发中的一类编程风格、开发范式。●除了面向对象,还有面向过程、指令式编程和函数式编程。在所有的编程范式中,我们接触最多的还是面向过程和面向对象两种。●早期先有面向过程思想,随着软件规模的......
  • lc3072 将元素分配到两个数组中2
    给定数组nums[n],定义f(arr,val)表示数组arr中大于val的元素个数,需要操作n次将nums分配到两个数组里,具体如下:第1次操作将nums[1]追加到arr1,第2次操作将nums[2]追加到arr2后续第i次操作:如果f(arr1,nums[i])>f(arr2,nums[i]),则将nums[i]追加到arr1。如果f(arr1,nums[i])<f(a......
  • Kali学习笔记07-部署vulhub靶机
    Kali学习笔记07-部署vulhub靶机KaliLinux网络安防一、下载vulhub从vulhub的github网站vulhub/vulhub上下载它的压缩包,得到一个叫做vulhub-master.zip的压缩包。二、解压缩unzipvulhub-master.zip三、进入到某一个漏洞目录中enterdescriptionhere四、自......
  • 2-07. 摄像机跟随
    安装cinemachine解决画面中的间隙问题解决办法,通过创建SpriteAtlas如何打图集呢?然后再点击PackPreview如果需要将更多的图片素材添加进去,比方说Buildings,那么就将它也拖动进ObjectsforPacking如果发现图片旁边有别的图片,那有可能是因为它们的间距不够大,可以......
  • Pytorch | Tutorial-07 保存和加载模型
    这是对Pytorch官网的Tutorial教程的中文翻译。在本节中,我们将了解如何通过保存、加载和运行模型预测来持久保存模型状态。importtorchimporttorchvision.modelsasmodels保存和加载模型权重PyTorch模型将学习到的参数存储在内部状态字典中,称为 state_dict 。这......
  • 前端学习-vue学习007-计算属性+Class 与 Style 绑定
    官方教程链接Class与Style绑定Vue专门为class和style的v-bind用法提供了特殊的功能增强<span:class="{done:item.done}">{{item.text}}</span>如果item.done是true,以上代码实际为<span:class="done">{{item.text}}</span>如果item.done是false,......
  • C++面向对象整理(1)之初识类和对象
    C++面向对象整理(1)之初识类和对象注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的类和对象C++面向对象整理(1)之初识类和对象一、类的定义1、类成员的访问权限2、类定义示例(1)类内定义(2)类外定义成员函数3、类对象(实例)的定义及......
  • 07 - Debian如何分区、格式化与挂载磁盘
    作者:网络傅老师特别提示:未经作者允许,不得转载任何内容。违者必究!Debian如何分区、格式化与挂载磁盘《傅老师Debian小知识库系列之07》——原创==前言==傅老师Debian小知识库特点:1、最小化拆解Debian实用技能;2、所有操作在VM虚拟机实测完成;3、致力于最终形成Debian小......
  • [HAOI2007][洛谷P2218]覆盖问题
    看到这道题,思考一下后发现要用二分答案。所以为什么要用二分?因为标签有二分还在二分专题里因为对于\(ans\)来说,如果\(ans\)不行,那么\(ans-1\)也一定不行;也就是说,答案满足单调性,所以可以二分;也是因为暴力明显过不了那么对于平面上的一些点来说,如果我们用一个最小的矩形......
  • 07图形化界面和命令行界面操作
    Linux安装后无界面解决办法https://zhuanlan.zhihu.com/p/544981294Linux命令行模式和图形化模式切换查看当前运行模式systemctlget-default如果显示graphical.target表示开机启动图形化界面如果显示multi-user.target表示开机启动命令行界面设置默认启动模式//设......