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.talkElse' 如果未成功获取,则在调试窗口输出未找到该角色的信息Debug.Print "输入: role = " & roleName & "  " & vbCrLf & "输出:未找到该角色!"End IfNext 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/微信:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LCD屏幕mmap显示

目录 前言 一.LCD显示 二.LCD颜色显示 2.1 直接显示 2.2 mmap映射显示 前言 mmap是一种内存映射文件的方法,它允许将文件或其它对象映射到进程的地址空间。 使用mmap映射函数进行映射显示,与屏幕普通直接显示相比有很大的优势 一.LCD显示基础 像素、分辨…

二叉树进阶——手撕二叉搜索树

troop主页:troop 手撕二叉搜索树 1.二叉搜索树的定义2.实现(非递归)补充结构2.1查找2.2插入2.3删除(重要)情况1(无孩子&&一个孩子) 3.二叉搜索树的应用3.1K模型3.2KV模型3.2.1KV模型的实现 总结二叉…

Github 2024-04-05Java开源项目日报Top9

根据Github Trendings的统计,今日(2024-04-05统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9TypeScript项目1OpenAPI 生成器:基于规范自动生成API工具 创建周期:2155 天开发语言:Java协议类型:Apache License 2.0Star数量:1…

linux操作系统安装及命令初识,上岸蚂蚁金服

310 包) desktop 1800个包左右 内容必须大于 768M 系统设置 分区设置 挂载点 /boot / swap 交换分区–占用磁盘容量 网络配置 网卡配置 设置为ON 主机名配置 Begin installation 设置 root 用户密码 命令初识 命令 选项 参数: 命令选项参数…

独角数卡对接码支付收款教程

1、到码支付后台找到支付配置。2、将上面的复制依次填入,具体看下图,随后点立即添加 商户ID商户PID 商户KEY异步不能为空 商户密钥商户密钥

【Python使用】嘿马头条完整开发md笔记第4篇:数据库,1 方案选择【附代码文档】

嘿马头条项目从到完整开发笔记总结完整教程(附代码资料)主要内容讲述:课程简介,ToutiaoWeb虚拟机使用说明1 产品介绍,2 原型图与UI图,3 技术架构,4 开发,1 需求,2 注意事项。数据库,理解ORM1 简介,2 安装,3 数据库连接…

六、从零实战企业级K8S本地部署ThingsBoard专业版集群

1、从 docker hub 拉取 ThingsBoard PE 映像(所有节点) 1.1、查看k8s信息(主节点) kubectl cluster-info #查看k8s集群信息 kubectl get node #查看节点信息 kubectl get pod -A #查看内部组件1.2、从 docker hub 拉取 ThingsBoard PE 映像(所有…

《QT实用小工具·十六》IP地址输入框控件

1、概述 源码放在文章末尾 该项目为IP地址输入框控件,主要包含如下功能: 可设置IP地址,自动填入框。 可清空IP地址。 支持按下小圆点自动切换。 支持退格键自动切换。 支持IP地址过滤。 可设置背景色、边框颜色、边框圆角角度。 下面…

【35分钟掌握金融风控策略5】风控策略开发1

目录 风控策略开发 策略类型划分 单维度策略开发 风控策略开发 在风控过程中,风控策略最终是要直接参与风控决策的,风控策略的好坏会对风控结果产生直接影响,因此,开发有效的风控策略至关重要。 策略类型划分 在实际生产中&…

Redis Desktop Manager可视化工具

可视化工具 Redis https://www.alipan.com/s/uHSbg14XmsL 提取码: 38cl 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 官网下载(不推荐):http…

selenium 遮罩层

之前写智联自动投简历 和boss自动投简历的时候 发现操作到上限之后就有个遮罩层,会在当前页面有个顶层得div 没办法获取下面的内容 # 假设遮罩层元素有一个特定的ID或者其他属性 没有id xpath 或者class 都可以mask_element WebDriverWait(driver, 10).until(EC.…

网络网络层之(3)IPv6地址

网络网络层之(3)IPv6协议 Author: Once Day Date: 2024年4月2日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文档可参考专栏:通信网络技术_Once-Day的…

C语言-------内存函数

前面向大家介绍了C语言中的字符函数和字符串函数,今天再向大家介绍一下类似的函数———— C语言中的内存函数。 1. memcpy函数的使用和模拟实现 memcoy函数是一种通过内存来复制内容的一种函数,以字节为基本单位进行,斌并且是一个可以复制…

git可视化工具

Gitkraken GitKraken 是一款专门用于管理和协作Git仓库的图形化界面工具。它拥有友好直观的界面,使得Git的操作变得更加简单易用,尤其适合那些不熟悉Git命令行的开发者。GitKraken提供了丰富的功能,如代码审查、分支管理、仓库克隆、提交、推…

如何使用CSS构建一个瀑布流布局

如何使用CSS构建一个瀑布流布局 瀑布流布局是一种常见的网页布局方式,其中元素以不同的大小排列,且行与列之间没有不均匀的间隙。在瀑布流布局中,即使某一行或列中的元素较短,下一个元素也会占据空间。 如何实现瀑布流布局 实现…

java框架学习——反射概述及简易版框架搭建

前言: 整理下学习笔记,打好基础,daydayup!!! 反射 反射(Reflection):加载类,并允许以编程的方式解剖类中的各种成分(成员变量,方法,构造器等) 1&…

C++之类和对象(上)

目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1访问限定符 4.2 类的两种定义方式 第一种: 第二种: 4.3封装 5.类的实例化 6.类对象模型 1.面向过程和面向对象初步认识 C语言是面向过程的,…

出门一笑, “栈” 落江横 (Java篇)

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

03-自媒体文章发布

自媒体文章发布 1)自媒体前后端搭建 1.1)后台搭建 ①:资料中找到heima-leadnews-wemedia.zip解压 拷贝到heima-leadnews-service工程下,并指定子模块 执行leadnews-wemedia.sql脚本 添加对应的nacos配置 spring:datasource:driver-class-name: com…

23年蓝桥杯省赛 动态规划DP

动态规划 就是:给定一个问题,我们把它拆成一个个子问题,直到子问可以直接解决。然后把子问题的答案保存起来,以减少重量计算,再根据子问题答察反推,得出问解的一种方法。 题目: 这天,一只蜗牛…