面向对象技术(第一周)

简介: 面向对象技术(第一周)



前言

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

面向对象思想

起源

面向对象思想起源于人类生活中解决问题的传统思维方式。也就是说面向对象思想的本质就是让编程解决问题变得和人类在现实世界中解决问题的方式变得非常相近。

总之,

面向对象思想就是人类现实中解决问题的本质思想

现实

从图中我们可以总结出一下几个点:

一、我们会去寻找代理人帮助我们解决生活中的问题。图中Chris想要在cityA中买花,于是他找到了代理人Fred花店,Fred将为他提供花。

二、代理人可以寻找其他代理人。Fred花店的花也不是从头到尾由店主自己种植的,他需要下属、花卉批发商、快递员帮他把花送到Fred花店中。

编程联系

此处总结的思想和现实中一一对应:

一、面向对象编程中,我们想要解决一个问题也不再是直接写一个函数或者写一段代码单纯为了这个功能。而是写一个对象,让这个对象能够调用一个函数,而这个函数能够帮助我们解决这个问题。Fred花店就是一个对象,其卖花功能就是一个函数,这个函数能够解决我们的一个需求。

二、面向对象编程中,我们调用一个对象的一个函数时,这个函数的功能实现也可能调用了其他对象的函数功能。例如Fred花店对象的卖花功能就需要先调用花卉批发商的卖花函数、下属摆花售卖函数以及快递员送花到店里的函数,然后Fred花店卖花的功能才能够实现。

面向对象思想总结

面向对象开发方法

开发方法就是指一种编程开发模型:该模型按照人们通常的思维方式建立问题领域的模型,设计出尽可能自然的表示求解方法的软件。

开发中的名词:

一、类

二、对象

三、属性

四、操作

名词间的关系

一、类与对象的关系

类是一种抽象的概念,在现实世界中是找不到具体实体的;对象是类的具体实例 ,是由类具体化从所产生的,在现实世界中是存在的,其核心的属性是有生成对象对应的类所决定的。

举个例子:山东大学学生是一个类,由山东大学学生这个类生成的张三就是一个具体的对象,而这个对象所有的核心属性是由山东大学学生这个类所决定的。

二、属性、操作与对象的关系

特别补充:对象的属性和操作是由对象去具体拥有且操作的,但是其根本来源生成该对象的类

名词具体阐释
一、对象

对象性质:

1、封装性:信息隐藏

2、自治性:主动数据(每个对象都有总结的数据且能独立进行操作)

3、通信性:并发(不同对象之间能够相互调用,合作完成一个功能)

4、暂存性:作用域

5、永久性:文档串行化(数据库的一种替代方案,文档对象的串行化是指对象的持续性,即对象可以将其当前状态,由其成员变量的值表示,写入到永久性存储体(通常是指磁盘)中。下次则可以从永久性存储体中读取对象的状态,从而重建对象。这种对象的保存和恢复的过程称为串行化

基本思想:

要点一在上文中已经得到阐释,这里不再赘述。

要点二的本质就是上文所说的对象是由类生成的具体实例,其核心属性由类所决定。

要点三引出了新的一个名词的“消息”其本质就是上面提到的操作的接受对象。

二、消息和方法:

一个操作的完成依赖于消息以及消息的接收器——对象。只有对象存在且接受到了正确的消息,一个操作才能正确完成。

例如上面提到的买花人只有到达Fred花店并正确地告诉店主需要购买什么花后,店主才能够把他所需要地花交到它地手中。店主有卖花这个方法,同时接受到了买花人提供给店主买什么花的信息,所以最终这个操作才得以完成。

相关文章
|
6月前
|
机器学习/深度学习 数据采集 并行计算
基于WOA鲸鱼优化的TCN时间卷积神经网络时间序列预测算法matlab仿真
本内容介绍了一种基于TCN(Temporal Convolutional Network)与WOA(Whale Optimization Algorithm)的时间序列预测算法。TCN通过扩张卷积捕捉时间序列长距离依赖关系,结合批归一化和激活函数提取特征;WOA用于优化TCN网络参数,提高预测精度。算法流程包括数据归一化、种群初始化、适应度计算及参数更新等步骤。程序基于Matlab2022a/2024b开发,完整版含详细中文注释与操作视频,运行效果无水印展示。适用于函数优化、机器学习调参及工程设计等领域复杂任务。
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
639 1
|
前端开发 测试技术 持续交付
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试
【4月更文挑战第30天】本文探讨了 Flutter 应用中UI测试和自动化测试的重要性,包括保障质量、提高效率和增强开发信心。Flutter提供`flutter_test`库进行Widget测试,以及`flutter_driver`进行集成测试。UI测试涵盖界面布局、交互和状态变化的验证,最佳实践建议尽早引入测试、保持用例简洁,并结合手动测试。未来,随着Flutter技术发展,UI测试和自动化测试将更加完善,助力开发高质量应用。
548 0
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试
|
安全 网络安全 数据安全/隐私保护
深入理解HTTP协议:工作原理与安全性
【6月更文挑战第28天】HTTP是互联网基础协议,用于浏览器与服务器通信。基于请求-响应模型,无状态且可扩展。但其明文传输、缺乏身份验证和数据完整性校验导致安全问题。HTTPS 加入SSL/TLS,提供加密、身份验证和完整性校验,保障网络安全。了解HTTP原理和安全至关重要。
|
JavaScript 前端开发 中间件
Express 框架介绍
Express 框架介绍
|
设计模式 敏捷开发 监控
深入理解与应用软件自动化测试框架
在快速迭代的软件开发过程中,自动化测试已成为确保产品质量和加快交付速度的关键因素。本文将详细探讨自动化测试框架的核心原理、设计模式及其在实际项目中的应用。我们将分析几种流行的自动化测试工具,如Selenium、Appium和JUnit,并讨论它们如何集成以形成强大的测试解决方案。文章还将展示通过自定义框架来满足特定测试需求的实例,以及如何通过持续集成和持续部署(CI/CD)流程优化测试实践。
面向对象技术(第二周)
面向对象技术(第二周)
|
Web App开发 JavaScript 前端开发
ECMAScript6入门简介篇
ECMAScript6入门简介篇
159 5
|
监控 数据可视化 计算机视觉
Baumer工业相机堡盟相机如何使用CameraExplorer查看相机图像Buffer以及图像数据传输流统计信息
Baumer工业相机堡盟相机如何使用CameraExplorer查看相机图像Buffer以及图像数据传输流统计信息
313 0
Baumer工业相机堡盟相机如何使用CameraExplorer查看相机图像Buffer以及图像数据传输流统计信息
go map字典操作
go map字典操作
111 0

热门文章

最新文章