面向对象分析与设计Python版 面向对象思维

server/2025/1/6 5:26:59/

文章目录


一、面向对象思想的起源

软件人才

  • 软件人才从低到高4个成长层次:软件蓝领,软件工程师,卓越软件人才,领军人物
  • 卓越软件人才要求
    • 系统分析和设计理论基础,掌握大系统需求分析、建模与仿真技术
    • 应用系统设计能力,能够从事新兴产业软件的研发
    • 国际前沿技术学习能力和交流能力
    • 项目管理能力及自主业务提升能力

思维方式

  • 面向对象 Object-oriented 是一种思维方式。学习面向对象的思维方式,利用面向对象的思维方式去思考实际问题,分析、设计、解决方案
  • 对创建对象系统来说,了解UML工具、面向对象编程语言是必要的。但是,了解对象思想才是最重要!
  • 学习建议:多练习、多实践、多思考

面向对象思想的起源

  • 艾伦. C.凯创造性地提出面向对象编程思想,认为艺术和科学不分家。勤于思考、知识点融合、类比,产生新的思想。艾伦. C.凯创提出:

    • 所有对事物的认识都始自于我们不愿盲目地接受这个世界。

    • 我的灵感就是把这些(指对象)看做生物学上的细胞。

    • 预测未来的最好办法,就是把它创造出来。

    • 愿景重于目标。

  • 数据和处理数据的过程捆绑到一起,,可以直接使用过程,而不用去了解数据文件的格式。

在这里插入图片描述

艾伦·凯(Alan Kay)的思考

  • 提倡应该关注消息机制和模块间的松耦合和交互,而不是模块内部的对象组成
  • 做出非凡和可成长的系统的重中之重是设计好模块之间如何通讯,而不是模块应具有什么样的内部属性和行为方法
  • “我把对象想象成生物细胞或者和网络上的单个计算机,它们之间只能通过消息进行通讯”-- 作为微生物学家背景
  • 每个对象可以有多个代数与之关联,这些代数关系可以构成家族,而这些概念会非常有用 --作为数学家背景

二、面向对象的基本概念

类Class和对象Object

  • 类Class:共享相同属性、操作、方法、关系或者行为的一组对象的描述符。
  • 对象Object: 一个对象是根据一个类创建的一个实例。
  • 类定义了实例的行为和信息结构,对象的当前状态(实例属性的取值)取决于作用于该对象的操作。用对象来定义类,用类来产生对象。
  • 在设计软件系统的时候,对象是不存在的。在软件系统运行时,在内存中创建对象

同义词

  • 属性Attribute == 数据Data == 状态state == 信息information
  • 方法Method == 操作operation == 行为behaviour = = 职责responsibility

软件功能的实现

    • 定义了对象群体的逻辑结构,包括属性和操作
    • 系统运行时,类作为产生对象的模板,但类在物理层面是不存在的
  • 对象

    • 系统运行时必须为每一个需要的对象分配内存、保存数据
    • 对象存在于物理层面,每个对象都有自己的数据空间(内存)
    • 所有的对象共享同一块代码空间
  • 消息

    • 对象之间的一种交流手段,就像我们日常工作中的各种交流手段
  • 小结:软件系统是由多个对象组成,对象间通过消息相互交流、共同协作,以完成整个系统的功能

三、面向对象的思考方式

单一思维模式切换成多重思维模式

  • 观察到的一切都是对象,这就是面向对象思考方式
  • 软件系统是由多个对象组成,对象间通过消息相互交流、共同协作,以完成整个系统的功能
  • 在对世界(系统)进行观察(建模)的时候,把它们看成是由一系列相互交流、互为影响的对象集
    • 世界是由相互作用的对象组成的
    • 描述与构建由对象组成的系统

软件开发常规的两种思维方式

  • 面向对象(Object-Oriented Strategy)
    • 适合解决不确定的事件、创新性的事件
    • 致力于将数据和方法先做一个封装(分配一个对象做事,先考所需要的数据是否和它在一起)
  • 面向过程(Structured Strategy)
    • 处理已知的事实、组织规划几乎没有未知重要因素的场景
    • 侧重于考虑方法的编写(哪个方法做什么事,不考虑所涉及的数据在哪里)
    • 注意:把任意一段过程化的代码堆砌在一起形成一个类,这不是面向对象

示例:通信方式的比较

  • 过程化解决方法通过信道传递数据,服务器端需要有专门的工具对接受的数据进行处理
  • 面向对象解决方法通过信道传递对象(数据+对数据的处理方法)

在这里插入图片描述

OOAD面向对象分析与设计相关术语

  • **OOAD(Object-Oriented Analysis and Design,面向对象分析与设计)**是一种软件工程的方法论,它强调在软件开发过程中使用面向对象的概念来分析和设计系统。
    • 对象(Object):对象是面向对象的基础,它具有属性(数据)和方法(行为)。
    • 类(Class):类是对象的蓝图(模板),定义了一组具有相同属性和行为的对象。
    • 继承(Inheritance):继承允许子类继承父类的属性和行为,实现代码的复用。
    • 封装(Encapsulation):封装是指隐藏对象的内部细节,仅对外暴露必要的接口。
    • 多态(Polymorphism):多态允许不同类的对象对同一消息做出响应,实现方法的动态绑定。
    • 接口与实现(Interface/Implementation):接口定义了一个对象应该具有的方法和属性,但不提供具体的实现。实现是指一个类实现了接口中定义的所有方法。
    • 组合与聚合(Composition/Aggregation):组合是一种强依赖关系,表示部分和整体的生命周期是一致的,即部分不能脱离整体而单独存在。聚合是一种弱依赖关系,表示整体和部分的生命周期是独立的,部分可以不依赖于整体而存在。
  • UML(Unified Modeling Language,统一建模语言)是一种面向对象设计的标准化图形表示法。它提供了一系列的图形符号和语义来描述软件系统的结构和行为。是一种建模工具,表达设计思想的工具。
  • **设计模式(Design Patterns)**是在软件工程中经过验证的、用于解决常见问题的通用可重用解决方案。设计模式可以帮助程序员提高代码的可读性、可维护性和可扩展性。
  • **面向对象原则(Object-Oriented Principles)**是一组设计原则,它们指导开发者在面向对象编程(OOP)中创建结构良好、可维护和可扩展的软件。
  • 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它使用对象和类来组织代码。在面向对象编程中,对象是程序的基本构建块,每个对象都是类的一个实例,类则是定义了一组具有相同属性和方法的对象的模板。

您正在阅读的是《面向对象分析与设计Python版》专栏!关注不迷路~


http://www.ppmy.cn/server/155785.html

相关文章

SCAU软件体系结构期末复习-名词解释题

名词解释 软件设计模式: 是对软件设计经验的总结,是对软件设计中反复出现的设计问题的成功解决方案的描述。为了记录这些成功的设计经验并方便以后使用,软件设计模式通常包含4个基本要素:模式名称、问题、解决方案以及效果。它最…

使用Python实现实时视频处理与分析:解锁计算机视觉的无限可能

友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…

Spring Boot 3 文件上传、多文件上传、大文件分片上传、文件流处理以及批量操作

在 Spring Boot 3 中,可以通过内置的文件处理机制结合 Java 的 IO 流与多线程技术,实现文件上传、多文件上传、大文件分片上传、文件流处理以及批量操作的需求。以下是详细实现步骤: 1. 单文件上传 控制器代码 import org.springframework…

MYSQL在Windows平台上的限制

以下限制适用于在Windows平台上使用MySQL: 程序内存 在windows32位上,一个进程(包括MySQL)内默认使用超过2GB的内存是不可能的。这是因为windows 32位的物理地址限制是4GB,视窗内的默认设置是在内核(2GB&a…

如何利用Java获取SKU详细信息 API 数据

在电子商务领域,SKU(Stock Keeping Unit)信息对于库存管理、订单处理和客户服务至关重要。通过API获取SKU的详细信息可以帮助商家更有效地管理商品信息。本文将介绍如何利用Java语言获取SKU详细信息的API数据,并提供详细的代码示例…

51单片机——LED模块

LED模块中有8盏灯,从左到右为D1,D2,...,D8 8盏灯以二进制存储在单片机中,它们共同组成一个二进制 0 0 0 0 0 0 0 0 ---------------------------------------------- D8 D7 D6 D5 D…

python的urllib模块和http模块

1.python的urllib库用于操作网页,并对网页内容进行处理 urllib包有如下模块: urllib.request:打开和读取URL urllib.error: 包含urllib.request抛出的异常 urllib.parse: 解析URL urllib.robotparser&#xff1…

TT100K数据集, YOLO格式, COCO格式

TT100K交通标志数据集, 标签txt,图像已经分好了测试集,验证集,训练集 1️⃣可以直接导入YOLO进行训练,没有细分类,里面有的类, 闲鱼9.9 解君愁 ,明人不说暗话 https://m.tb.cn/h.T7Ossey?tk…