首页 > 编程语言 >面向对象分析与设计Python版 面向对象思维

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

时间:2025-01-06 19:03:18浏览次数:3  
标签:Python Object 面向对象 对象 设计 方法 面向对象分析 属性

文章目录


一、面向对象思想的起源

软件人才

  • 软件人才从低到高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版》专栏!关注不迷路~

标签:Python,Object,面向对象,对象,设计,方法,面向对象分析,属性
From: https://blog.csdn.net/zljgzw/article/details/144918015

相关文章

  • [读书日志]从零开始学习Chisel 第五篇:Scala面向对象编程——类继承(敏捷硬件开发语言Ch
    3.3类继承3.3.1Scala中的类继承为了节省代码量和反映实际各种类之间的联系,通常采取两种策略,包含和继承。包含是说明一个类中包含另一个类的对象,但两者之间没有必然联系。继承是从一个宽泛的类派生出更具体的类的过程,被继承的类称为“超类”或“父类”,而派生出来的类称为......
  • [读书日志]从零开始学习Chisel 第四篇:Scala面向对象编程——操作符即方法(敏捷硬件开发
    3.2操作符即方法3.2.1操作符在Scala中的解释在其它语言中,定义了一些基本的类型,但这些类型并不是我们在面向对象中所说的类。比如说1,这是一个int类型常量,但不能说它是int类型的对象。针对这些数据类型,存在一些基本操作符,比如算数操作符“+”。Scala所追求的是极致的面向对......
  • [读书日志]从零开始学习Chisel 第三篇:Scala面向对象编程——类和对象(敏捷硬件开发语言
    3.Scala面向对象编程3.1类和对象3.1.1类类是用class开头的代码定义,定义完成后可以用new+类名的方式构造一个对象,对象的类型是这个类。类中定义的var和val类型变量称为字段,用def定义的函数称为方法。字段也称为实例变量,因为每个被构造出来的对象都有自己的字段,但所有的对象公......
  • python中的链表
    在Python中,链表不是内置的数据结构,但可以通过类的方式实现自定义链表。以下是链表在刷算法题中常用的语法和操作方法。1.定义链表节点链表节点是一个包含值和指向下一个节点的指针的结构:classListNode:def__init__(self,val=0,next=None):self.val=val......
  • python中的队列
    在Python中,队列(Queue)是一种常见的数据结构,特别是在刷算法题时经常被用到。以下是队列相关的基础语法及其在算法题中的应用总结。1.队列的基本定义队列遵循FIFO(先进先出)原则,可以通过以下方式实现:1)collections.dequedeque是双端队列,支持快速的两端插入和删除操作。fro......
  • (2024最新毕设合集)基于Django的电影资讯共享平台-10223|可做计算机毕业设计JAVA、PHP、
    目录摘要Abstract1绪论1.1研究背景1.2研究意义1.3论文结构与章节安排2电影资讯共享平台系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3 社会可行性2.1.4法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.......
  • DL00564-图卷积神经网络GCN心电图信号ECG心律失常检测python完整代码
    图卷积神经网络(GraphConvolutionalNetwork,GCN)作为一种图神经网络(GraphNeuralNetwork,GNN)的代表,近年来在各类数据结构上表现出了优异的性能,尤其是在处理具有图结构数据时。心电图(ECG,Electrocardiogram)信号分析,特别是心律失常的检测,是医学信号处理中一个重要且挑战性的任务......
  • Python开发环境部署教程
    本教程将详细介绍如何在Windows系统上配置Python开发环境,包括安装Python、配置虚拟环境以及使用VSCode进行开发,适合新手和需要精细配置的开发者。1.安装Python1.1下载Python访问Python官网.选择最新版本的Python进行下载(建议下载64-bit版本)。1.2判断选......
  • C#基于pythonnet调用Python的pyd文件,实现交互
    privatevoidTestPython(){try{//python环境路径stringpathToVirtualEnv=@"H:\ProgramData\anaconda3\envs\python39";Environment.SetEnvironmentVariable("PATH",pathToVirtualEnv,EnvironmentVari......
  • python毕设 高校快递代取系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于高校快递代取系统的研究,现有研究多侧重于快递代取服务的基本流程与效率提升方面。专门针对高校这一特殊环境下,综合考虑用户、快递......