Python-VBA编程500例-033(入门级)

角色定位(Role Positioning)在编程中的实际应用场景主要体现在以下几个方面:

1、权限管理:在开发企业级应用或复杂的系统时,角色定位用于定义和管理用户的权限。例如,一个系统可能有管理员、普通用户、访客等不同角色,每个角色有不同的访问和操作权限。通过角色定位,可以方便地为用户分配相应的角色,从而控制其对系统资源的访问和操作。

2、工作流程设计:在业务流程自动化或工作流系统中,角色定位用于定义参与流程的各个实体(如员工、部门、系统服务等)的职责和权限。通过为每个角色分配特定的任务和责任,可以确保业务流程的顺畅进行,并减少人为错误。

3、游戏开发:在游戏开发中,角色定位是核心要素之一。每个角色(如玩家角色、NPC、怪物等)都有独特的属性和行为。通过角色定位,可以定义角色的技能、属性、行为模式等,从而构建丰富的游戏世界和玩法。

4、模拟系统:在模拟系统中,如经济模拟、社会模拟等,角色定位用于模拟不同实体(如消费者、生产者、政府等)的行为和互动。通过为角色设置不同的属性、规则和行为模式,可以模拟出真实世界的复杂性和多样性。

5、多用户协作系统:在多人协作的系统中,如项目管理工具、在线协作平台等,角色定位用于明确每个用户的职责和权限。通过为不同角色分配不同的任务和功能,可以促进团队成员之间的协作和沟通,提高工作效率。

6、安全审计和日志记录:通过角色定位,可以追踪和记录系统中每个角色的操作和行为。这对于安全审计和故障排查非常有帮助,可以及时发现潜在的安全隐患或问题,并采取相应的措施。

7、软件架构和模块化:在软件设计和开发中,角色定位也可以用于划分模块和组件的职责。通过将不同的功能或服务分配给不同的角色,可以实现代码的解耦和复用,提高软件的可维护性和可扩展性。

综上所述,角色定位在编程中具有广泛的应用场景,它可以帮助我们更好地管理和控制系统的复杂性,提高系统的安全性、稳定性和可维护性。

1、角色定位:
1-1、Python:
# 1.问题描述:
# 家庭模式是一种常见的设计模式,实现一个家庭Family,不同人物的角色定位.
# 2.问题描述:
# 输入:
# Family fy = Family();
# Role role = fy.getRole("Father");
# role.talk();
# 输出:I am a powerful father.
# 输入:
# Family fy = Family();
# Role role = fy.getRole("Mother");
# role.talk();
# 输出:I am a kind and benevolent mother.
# 3.代码实现:
class Role:
    def talk(self):
        raise NotImplementedError("子类需要实现这个方法!")
class Father(Role):
    def talk(self):
        print("I am a powerful father.")
class Mother(Role):
    def talk(self):
        print("I am a kind and benevolent mother.")
class Brother(Role):
    def talk(self):
        print("I am a sunny and handsome brother.")
class Sister(Role):
    def talk(self):
        print("I am a tender and considerate sister.")
class Grandfather(Role):
    def talk(self):
        print("I am a kind and affable grandfather. ")
class Grandmother(Role):
    def talk(self):
        print("I am a kind and gentle grandmother. ")
class FamilyRoles:
    def getRole(self, role):
        Roles = {
            'Father': Father,
            'Mother': Mother,
            'Brother': Brother,
            'Sister': Sister,
            'Grandfather': Grandfather,
            'Grandmother': Grandmother
        }
        return Roles.get(role)() if role in Roles else None
# 主函数
if __name__ == '__main__':
    fy = FamilyRoles()
    role1 = 'Father'
    role2 = 'Mother'
    role3 = 'Brother'
    role4 = 'Sister'
    role5 = 'Grandfather'
    role6 = 'Grandmother'
    for role_name in [role1, role2, role3, role4, role5, role6]:
        role = fy.getRole(role_name)
        if role:
            print(f"输入:role= {role_name},\n输出:")
            role.talk()
        else:
            print(f"输入:role= {role_name},\n输出:未找到该角色!")
# 4.运行结果:
# 输入:role= Father,
# 输出:
# I am a powerful father.
# 输入:role= Mother,
# 输出:
# I am a kind and benevolent mother.
# 输入:role= Brother,
# 输出:
# I am a sunny and handsome brother.
# 输入:role= Sister,
# 输出:
# I am a tender and considerate sister.
# 输入:role= Grandfather,
# 输出:
# I am a kind and affable grandfather.
# 输入:role= Grandmother,
# 输出:
# I am a kind and gentle grandmother.
1-2、VBA:
' 以下为6个类模块,在EXCEL中,按选Alt + F11进入VBE编辑器界面,点击菜单栏“插入”类模块并命名即可.
' Class Module: Father
Option Explicit ' 声明此VBA模块中所有变量都必须明确声明
Public Sub talk()
    ' 使用Debug.Print方法输出字符串到VBA的立即窗口中
    Debug.Print "I am a powerful father."
End Sub
' Class Module: Mother
Option Explicit ' 声明此VBA模块中所有变量都必须明确声明
Public Sub talk()
    ' 使用Debug.Print方法输出字符串到VBA的立即窗口中
    Debug.Print "I am a kind and benevolent mother."
End Sub
' Class Module: Brother
Option Explicit  ' 声明此VBA模块中所有变量都必须明确声明
' 定义一个公共子程序talk
Public Sub talk()
    ' 使用Debug.Print方法输出字符串到VBA的立即窗口中
    Debug.Print "I am a sunny and handsome brother."  ' 输出:"I am a sunny and handsome brother."
End Sub
' Class Module: Sister
Option Explicit ' 声明此VBA模块中所有变量都必须明确声明
Public Sub talk()
    ' 使用Debug.Print方法输出字符串到VBA的立即窗口中
    Debug.Print "I am a tender and considerate sister."
End Sub
' Class Module: Grandfather
Option Explicit ' 声明此VBA模块中所有变量都必须明确声明
Public Sub talk()
    ' 使用Debug.Print方法输出字符串到VBA的立即窗口中
    Debug.Print "I am a kind and affable grandfather."
End Sub
' Class Module: Grandmother
Option Explicit ' 声明此VBA模块中所有变量都必须明确声明
Public Sub talk()
    ' 使用Debug.Print方法输出字符串到VBA的立即窗口中
    Debug.Print "I am a kind and gentle grandmother."
End Sub

' 以下为标准模块部分,在EXCEL中,按选Alt + F11进入VBE编辑器界面,点击菜单栏“插入”标准模块并命名即可.
Rem 执行程序,功能:通过调用类模块FamilyRoles,实现家庭角色的各自定位,在立即窗口中输出结果.
Sub TestRun()
    ' 创建一个FamilyRoles类的新实例,赋值给fy变量
    Dim fy As New FamilyRoles
    ' 声明一个Variant类型的数组,用于存储角色名称
    Dim roleNames As Variant
    ' 声明一个Variant变量,用于循环中临时存储每个角色名称
    Dim roleName As Variant
    ' 声明一个Object类型的变量,用于存储从FamilyRoles类中获取的角色对象
    Dim role As Object
      
    ' 初始化roleNames数组,包含多个角色名称
    roleNames = Array("Father", "Mother", "Brother", "Sister", "Grandfather", "Grandmother")
    ' 遍历roleNames数组中的每个角色名称
    For Each roleName In roleNames
        ' 通过调用FamilyRoles类的getRole方法,获取对应角色名称的角色对象,并赋值给role变量
        Set role = fy.getRole(roleName)
        ' 检查是否成功获取到了角色对象
        If Not role Is Nothing Then
            ' 如果成功获取,则在立即窗口中输出角色名称,并调用该角色的talk方法
            Debug.Print "输入: role = " & roleName & "  " & vbCrLf & "输出:"
            role.talk
        Else
            ' 如果未成功获取,则在调试窗口输出未找到该角色的信息
            Debug.Print "输入: role = " & roleName & "  " & vbCrLf & "输出:未找到该角色!"
        End If
    Next roleName
End Sub
'结果输出:
'输入: role = Father
'输出:
'I am a powerful father.
'输入: role = Mother
'输出:
'I am a kind and benevolent mother.
'输入: role = Brother
'输出:
'I am a sunny and handsome brother.
'输入: role = Sister
'输出:
'I am a tender and considerate sister.
'输入: role = Grandfather
'输出:
'I am a kind and affable grandfather.
'输入: role = Grandmother
'输出:
'I am a kind and gentle grandmother.

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。

2、相关文章:

2-1、Python-VBA编程500例-031(入门级) 

2-2、Python-VBA编程500例-032(入门级) 

Myelsa的Python算法之旅(高铁直达):Myelsa的Python算法之旅(高铁直达)-CSDN博客
欢迎访问个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

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

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

相关文章

Linux网络管理类命令

ping -c:指定次数 -i n:指定发送频率 n 秒 -t:指定 TTL 值 -s:指定发送包的大小 ifconfig iproute netstat -anltp ss ssh 主机名 SCP wget nmap -A: 全面扫描 -p :端口 80 22-80 80,25,443 -sP &#xf…

利用native的方式实现跨线程调用

简介 在OpenHarmony应用开发实践中,经常会遇到一些耗时的任务,如I/O操作、域名解析以及复杂计算等。这些任务如果直接在主线程中执行,将会严重阻塞主线程,影响后续任务的正常流程,进而导致用户界面响应延迟甚至卡顿。…

【学习笔记】Elsevier的Latex模板文件(附网址)

注:这是一篇没有技术含量的水文,主要是看有人下载下来,居然当成资源需要积分才能下载。我觉得不行,故提供原始下载地址供查阅使用。 链接: 上述图片所示网址:链接直达

Redis(性能管理、主从复制、哨兵模式)概述及部署

目录 一、性能管理 1、查看Redis内存使用 2、内存碎片率 3、跟踪内存碎片率 4、内存使用率 5、内回收key 二、Redis集群有三种模式 三、Redis主从复制 1、主从复制的概念 2、主从复制的作用 3、主从复制的流程 4、搭建Redis主从复制 1.环境准备 2.安装Redis&#…

在团队管理过程中,怎样能够让员工更容易接受和执行反馈呢?

让员工更容易接受和执行反馈,关键在于建立一种开放、积极且互相尊重的沟通氛围。 确保反馈的针对性和具体性是关键。 员工需要清楚了解他们的表现如何,以及他们需要改进的地方在哪里。因此,反馈内容应具体明确,避免模糊或笼统的表…

Python零基础到精通

Python入门指南 欢迎进入 Python 领域。作为程序员,我们总是在寻找能提高效率、编写优雅的代码的工具,而 Python 正是其中之一。你即将探索一种强大而灵活的编程语言,它被广泛应用于各种领域,从网站开发到数据科学,再到…

基础总结篇:Activity生命周期

private int param 1; //Activity创建时被调用 Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, “onCreate called.”); setContentView(R.layout.lifecycle); Button btn (Button) findViewById(R.id.…

【开源语音项目OpenVoice](一)——实操演示

目录 一、前菜 1、Python选择 2、pip源切换 3、ffmpeg配置问题 4、VSCode添加Jupyter扩展 二、配置虚拟环境 1、下载源码 方法一 直接下载源码压缩包 方法二 使用git 1)git加入鼠标右键 2)git clone源码 2、VSCode出场 1)创建pyth…

VC++ 错误 Compiler Error C2018 unknown character ‘hexnumber‘

如下图,不能识别的字符0xa1, 这是代码中出现了全角空格,如下图标识的一行,等号前面出现了全角空格;改为半角空格; 如果是未知字符0xa3,则是程序中有中文符号,如程序中的引号&#xf…

【C++算法竞赛 · 图论】图论基础

前言 图论基础 图的相关概念 图的定义 图的分类 按数量分类: 按边的类型分类: 边权 简单图 度 路径 连通 无向图 有向图 图的存储 方法概述 代码 复杂度 前言 图论(Graph theory),是 OI 中的一样很大…

小米造车,特斯拉销量不满人意,马斯克坐不住了:将于8月8日推出自动驾驶出租车

在Elon Musk声称路透社关于“放弃2.5万美元低成本电动汽车计划,而将所有精力集中于Robotaxi(自动驾驶出租车)”上的报道“撒谎”仅几小时后,特斯拉首席执行官在X社交平台上宣布,他将在8月8日的活动中揭示这款所谓的Rob…

Android APP加固利器:深入了解混淆算法与混淆配置

Android APP 加固是优化 APK 安全性的一种方法,常见的加固方式有混淆代码、加壳、数据加密、动态加载等。下面介绍一下 Android APP 加固的具体实现方式。 混淆代码 使用 ipaguard工具可以对代码进行混淆,使得反编译出来的代码很难阅读和理解&#xff…

相对论中关于光速不变理解的补充

近几个月在物理直播间聊爱因斯坦相对论,发现好多人在理解爱因斯坦相对论关于基本假设,普遍认为光速是不变的,质能方程 中光速的光速不变的,在这里我对这个假设需要做一个补充,他是基于质能方程将光速C 在真是光速变化曲…

JavaEE 初阶篇-生产者与消费者模型(线程通信)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 生产者与消费者模型概述 2.0 在生产者与消费者模型中涉及的关键概念 2.1 缓冲区 2.2 生产者 2.3 消费者 2.4 同步机制 2.5 线程间通信 3.0 实现生产者与消费者模…

【Python】 小顶堆:困难 Leetcode 23. 合并 K 个升序链表 -- Python中heapq对于自定义数据类型的比较

描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 代码 代码1 由于可能存在相同…

构造函数和析构函数

目录 一:类的六个默认函数 二:构造函数 2.1概念 2.2特性 三:析构函数 3.1概念: 3.2特性 一:类的六个默认函数 如果一个类中什都没有,称为空类 空类中真的什么都没有吗?并不是,任何类在…

MySQL客户端安装并配置免密登录

最近在写脚本时需要向MySQL数据库中存储数据,且脚本运行的服务器与MySQL服务器不是同一台服务器,而且需要保证MySQL密码的安全性,不能在脚本中暴露,所以就需要在服务器上安装MySQL客户端,并配置免密登录。 一、虚拟机…

C++ List 到 Python List 的转换

当我们编写 C 库的封装器通常涉及使用一种跨语言的接口技术,比如使用C接口或者使用特定的跨语言库,比如SWIG(Simplified Wrapper and Interface Generator)或者Pybind11。这里我将简要介绍如何使用Pybind11来封装一个C库&#xff…

jenkins+docker实现可持续自动化部署springboot项目

目录 一、前言 二、微服务带来的挑战 2.1 微服务有哪些问题 2.2 微服务给运维带来的挑战 三、可持续集成与交付概述 3.1 可持续集成与交付概念 3.1.1 持续集成 3.1.2 持续交付 3.1.3 可持续集成与交付核心理念 3.2 可持续集成优点 3.3 微服务为什么需要可持续集成 四…

金三银四面试题(十五):Java基础问题(6)

这部分面试题多用于面试的热身运动,对很多找实习和准备毕业找工作的小伙伴至关重要。 HashMap与ConcurrentHashMap 都是key-value 形式的存储数据; HashMap 是线程不安全的,ConcurrentHashMap 是JUC 下的线程安全的; HashMap 底层…