面向对象技术(第二周)

目录

前言

⚽回顾 

🏐类的层次

定义

层次关系的实现 

🏀继承

🥎编程方法

非面向对象编程

根本思想

特点

例子(设计一个画板系统Panel)

第一步:整体设计

 第二步:模块具体设计

缺点分析

面向对象编程

特点

实例解释面向对象思想

优点 

​编辑

🎱总结


前言

本文所有知识点和内容均来自山东大学潘丽老师及山东大学软件学院教研组PPT。

回顾 

1、消息:是由一个对象发出给另一个对象的,消息内容的完成是由消息接收器(对象)自己来实现。消息能够发出是由于对象自己的声明,消息能够完成是由于对象内部的方法

2、封装:作为发送者的对象只需要知道作为接收器的对象的名字,不需要、不能且没必要知道具体执行的动作

3、责任:接收器A声明了自己的方法就代表它需要对它声明的方法的功能负责。发送器B对行为的要求仅仅表达它所期望的结果。A接受B的消息后就需要对B的要求负责。

4、类:根据抽象原则对客观事物进行归纳分割出抽象的属性。类是对象相关行为的存储库。

5、实例:实例就是类的对象。实例就是消息的接收器。

类的层次

定义

在每一层次上,都可以了解与该层次适配的特定的信息。并且这些信息适用于所有较低的层次抽象程度越高的的类所在层次越高。

本图中越外层的类的层次越高,越中心的类的层次越低 (花商例子)

层次关系的实现 

层次关系的实现依赖于:继承

层次关系上下层的另一种表达方式:一般/特殊、泛化/特化

总结:越上层的类越一般,泛化层度越高;越下层的类越特殊,特化层度越高

上面这张图更直观的体现了上下层以及继承的关系 

继承

特点

一、类可以组织成一个有层次的继承结构

二、一个子类继承层次树中更高一层的父类的属性、方法(继承性

三、抽象父类是指没有具体实例的类(不能产生具体实例,这与抽象类中的抽象方法有关),他只是用来产生子类

四、子类可以重写父类的同名方法,并在调用时对父类同名方法进行隐藏(多态性

编程方法

编程方法分为:面向对象编程与非面向对象编程

非面向对象编程

其中唯一有使用价值的方法为:面向数据流的结构化开发方法

根本思想

一、面向数据流。仅仅关注每个功能下数据的输入与输出。从数据的输入输出来考虑具体要实现迭的函数的功能。一个个子功能实现再带进整体系统的完成。

二、自顶向下设计。在设计阶段把一个系统的总问题,逐一分解为多个子问题。把每个模块看成一个结构,通过实现一个个子结构完成大结构的创建

特点

一、程序的主体是一个个方法

二、方法是最小的功能模块

三、一组相关的方法组合成一个大的功能模块(功能子结构)

四、程序面向过程或面向数据

例子(设计一个画板系统Panel)

包含4个功能:选择形状、画长方形、画圆、画直线

第一步:整体设计

思想1、按照结构化编程就将这个系统分为上面四个功能模块,同时四个模块也可以再细化为几个方法(体现自顶向下思想)

思想2、按照数据流走向去思考整个程序运行的流程,思考不同模块的组合方式(体现面向数据流思想)

 第二步:模块具体设计

这一步按照每个模块具体的功能去具体设计方法,再把方法组合在一起完成模块的具体功能即可。

如果子模块的功能仍然复杂,可以将子模块继续细分处理

缺点分析

一、自顶向下分析系统的功能,但是系统的功能并不是一成不变的。在层次结构的功能中,其中一个功能的改变可能会导致其他的功能的变化。(功能之间是彼此相互联系的)

二、软件系统中最小的子系统是方法,方法和一部分与之相关的数据分离。这导致处理不同方法间的数据相当糅合、麻烦,会造成极大不便利。系统独立性太弱。

面向对象编程

程序编程的主体是对象,解决问题的主体也是对象

特点

一、所有操作的主体、所有编程完成的主体都是对象

二、对象封装了其所属类这一概念所有的行为和信息。独立性非常强

三、系统实现功能依靠对象间的通信

四、类定义对象拥有的数据类型和行为,但是各自数据的责任由具体对象承担

实例解释面向对象思想

编写程序中:

1、我们的角色就是企业主(公司老大)

2、主程序所写的程序就是我们作为企业主把所需要干的各个事情分配给手下的员工去完成

3、我们写类的过程也就是企业主招收、培养员工的过程。

优点 

总结

面向对象编程的特点和优点如下:

封装性---->数据好管理、代码可读性高、便于系统修改升级 

多态性---->增加灵活性、符合自然界进化多样性的特性

继承性---->抽象归纳降低软件设计的复杂性、符合自然界层层进化的特性

如果觉得写的还不错,可以点个赞收藏一下呀~~

祝大家学业、事业、爱情顺利!

天天开心,没有Bug每一天

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/463536.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 常用命令100+

Linux 运维/开发/测试 常用命令100(v1.1) 帮助命令(2个) 命令功能说明示例man 命令查看普通命令帮助,命令的词典,更复杂的还有info,但不常用。rootbrLinux ~]#man lshelp 命令查看Linux内置命令的帮助,比如cd命令。[rootbrLinux…

Apache zookeeper kafka 开启SASL安全认证

背景:我之前安装的kafka没有开启安全鉴权,在没有任何凭证的情况下都可以访问kafka。搜了一圈资料,发现有关于sasl、acl相关的,准备试试。 简介 Kafka是一个高吞吐量、分布式的发布-订阅消息系统。Kafka核心模块使用Scala语言开发…

拼多多商品详情接口数据采集

拼多多商品详情接口数据采集是一个相对专业的任务,通常涉及到使用API接口或第三方采集工具等技术手段。以下是一些基本步骤和注意事项,供您参考: 请求示例,API接口接入Anzexi58 申请开发者账号:如果您打算使用API接口…

基于java+springboot+vue实现的停车场车位预约系统(文末源码+Lw+ppt)23-442

摘 要 本系统为用户而设计制作合庆镇停车场车位预约系统,旨在实现合庆镇停车场车位预约智能化、现代化管理。本合庆镇停车场车位预约管理自动化系统的开发和研制的最终目的是将合庆镇停车场车位预约的运作模式从手工记录数据转变为网络信息查询管理,…

高光谱数据应用于植被监测与分析与数据获

1. 常用高光谱数据 (1) 航空成像光谱仪系统 国内系统:MAIS、OMIS-1、OMIS-2、PHI、WHI、LASIS 国外系统:AIS、AVIRIS、TRWIS、GERIS、HYDICEAISA、DAIS、CASI、HYMAP (2) 航天成像光谱仪 Hyperion/EO-1 环境与减灾小卫星星座(HJ-1B&…

ChatGPT GPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术

原文链接:ChatGPT GPT4科研应用、数据分析与机器学习、论文高效写作、AI绘图技术https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247596849&idx3&sn111d68286f9752008bca95a5ec575bb3&chksmfa823ad6cdf5b3c0c446eceb5cf29cccc3161d746bdd9f2…

IPy,一个超级有用的Python库

更多内容在 Python 的 IPy 库是一个专门用于处理 IP 地址和网络相关操作的第三方库。它提供了丰富的功能,可以帮助用户轻松地进行 IP 地址的解析、格式化、比较和范围计算等操作。以下是 IPy 库的一些主要特性和功能: IP 地址解析与表示:IPy …

展开说说:Android之SharedPreferences

SharedPreferences 是一种轻量级的数据持久化存储机制。以key/value键值对形式存储在xml文件,用于保存一些应用程序数据。保存在 /data/data/PACKAGE_NAME/shared_prefs/xxx.Xml文件。 SharedPreferences 只能存储string,int,float&#xff…

实战!wsl 与主机网络通信,在 wsl 中搭建服务器。学了计算机网络,但只能刷刷面试题?那也太无聊了!这篇文章可以让你检测你的计网知识!

前言(碎碎念):每次发布文章时,我都是一个纠结的过程。因为我给自己写笔记时,只需要记录自己不清晰或者易忘的知识点就可以了,但一旦想要作为文章发布,那么我就得考虑到很多人是纯新手&#xff0…

【Git】本地仓库关联远程仓库

Git 本地项目关联远程仓库 本地 本地已有项目 ● 项目 07.GitLocalTest 包含有一个js ○ test.js 远程仓库 ● 远程仓库地址 ○ https://github.com/Sonnenlicht77/gitTest.git ○ 仓库只有一个 readme.md 关联 1.本地 1.1 本地仓库 ● git init ● git add . ● gi…

[Node.js] Node.js 版本控制工具 nvm/n/fnm

文章目录 Node.jsNode.js 版本控制工具介绍nvm (Node Version Manager)nfnm (Fast Node Manager) Node.js Node.js 是一个开源与跨平台的 JavaScript 运行环境,它允许 JavaScript 运行, Node.js 使用事件驱动、非阻塞的 I/O 模型,使其轻量且…

HSE化工应急安全生产管理平台:衢州某巨大型化工企业的成功应用

在化工行业中,安全生产一直是至关重要的议题。为了提高生产安全性、降低成本并提升企业形象,衢州某巨大型化工企业引入了HSE化工应急安全生产管理平台,取得了显著的改善和获益。 该平台的核心功能包括风险管理和应急预案制定。通过对化工生产…

JVM学习-垃圾回收专题

目录 1.如何判断对象可以回收 1.1引用计数法 1.2可达性分析算法 1.3五种引用 1.4拓展:直接内存 2.垃圾回收算法 2.1标记清除算法 2.2标记整理算法 2.3复制 3.分代垃圾回收 3.垃圾回收器 3.1串行垃圾回收器 3.2吞吐量优先垃圾回收器 3.3响应时间优先垃圾回收器…

51单片机-AT24C02(I2C总线)

目录 一,介绍及元件工作原理 7.时序结构(重要) 8.i2C总线数据帧(重要) 二,应用 一,介绍及元件工作原理 1.元件介绍 2.存储器 3.地址总线和数据总线 地址总线只能一次选中一行 4.引脚及应用…

python之自动化(django)

1、安装 我用的是pip install Django 在命令行中安装 然后django-admin startproject autotext(在命令行中) 这句话是创建一个django 项目 然后切换到你所创建项目的目录下 输入: python manage.py runserver 当你出现以下错误时 You…

[沉淀之华] 自研基于SpringBoot Mybaits 构建低代码数据治理脚手架分享:涵盖数据同步、数据比对、数据归档、数据恢复为一体

文章目录 成果演示背景整体能力功能描述相关细节安装使用 成果演示 Github地址:数据治理脚手架 wiki:kg-ctl-core使用文档 背景 为什么要做这个? 一个老生常谈且不得不谈问题:随着业务日益发展,如果不做数据迁移&…

【大模型系列】问答理解定位(Qwen-VL/Llama2/GPT)

文章目录 1 Qwen-VL(2023, Alibaba)1.1 网络结构1.2 模型训练 2 Llama2(2023, Meta)2.1 网络结构2.1.1 MHA/GQA/MQA2.1.2 RoPE(Rotary Position Embedding, 旋转式位置编码)2.1.3 RMSNorm 2.2 推理2.2.1 集束搜索(beam search)2.2.2 RoPE外推 3 GPT系列(OpenAI) 1 Qwen-VL(2023…

深度强化学习(六)(改进价值学习)

深度强化学习(六)(改进价值学习) 一.经验回放 把智能体与环境交互的记录(即经验)储存到 一个数组里,事后反复利用这些经验训练智能体。这个数组被称为经验回放数组(replay buffer)。 具体来说, 把智能体的轨迹划分成 ( s t , a t , r t ,…

软件架构设计 C/S与B/S架构的区别

一、什么是C/S架构? C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle或SQLServer。 C/S架构软件有一个特点,就是如果用户要使用的话,需要下载一个客户端&#x…

【Linux系列】计算机系统中的架构与发行版:理解与区分

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…
最新文章