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

news2024/11/20 2:27:40

角色定位(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/微信:

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

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

相关文章

CSS设置字体样式

目录 前言: 1.font-family: 2.font-style: 3.font-weight: 4.font-size: 5.font-variant: 6.font: 前言: 在网页中字体是重要的组成部分,使用好字体可以让网页更…

手动实现Tomcat底层机制+自己设计Servlet

文章目录 1.Tomcat整体架构分析自己理解 2.第一阶段1.实现功能2.代码1.TomcatV1.java 3.调试阶段1.阻塞在readLine导致无法返回结果 4.结果演示 3.第二阶段1.实现功能2.代码1.RequestHander.java2.TomcatV2.java 3.调试阶段1.发现每次按回车会接受到两次请求 4.结果演示 4.第三…

基于Spring Boot的简历系统设计与开发

基于Spring Boot的简历系统设计与开发 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 部分系统展示 前台首页界面 简历模板管理界面 用户管理界面 管理员登录界…

C++设计模式:策略模式(二)

1、定义与动机 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化),该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化) 在软…

pinia 的介绍和使用

pinia是vue2,vue2 尤其是vue3官方推荐的状态管理器,和vuex类似,但使用起来更为简单, 概念: state:定义响应式共享变量 getter:相当于计算属性 actions:相当于方法 npm安装 npm install pinia创建pinia ,注…

【Python】常见容器

Python容器 列表元组字符串集合字典 列表 定义方法:[元素1, 元素2, …] 列表一次可以存储多个不同数据类型的数据,支持嵌套。 例如: list1 ["张三", 33, True] print(list1) print(type(list1))list2 [list, "李四", …

企业数据资产评估的财报显性化及数据资产入表的主要应用场景

一、背景 近年来,企业“数据资产”的概念不断受政府/企业重视和建设.根据《数据资产评估指导意见》规定,数据资产评估是指资产评估机构及其资产评估专业人员遵守法律、行政法规和资产评估准则,根据委托对评估基准日特定目的下的数据资产价值…

Halcon的HWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)

Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI) 文章目录 Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)一、 引入hSmartWindowControl控件二、 编写打开图像功能三、 编写绘制RO…

【热门话题】Stable Diffusion:本地部署教程

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 Stable Diffusion:本地部署教程一、引言二、环境准备1. 硬件配置2. …

Java多态练习2

设计金融产品类Financial,属性包括产品名称、产品介绍、起投金额、产品期限(int)、年化收益(百分数);方法包括发布、截止、投资。 设计金融产品类子类: 基金产品Fund,继承金融产品类…

【JAVASE】带你了解面向对象三大特性之一(继承)

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 1.继承 1.1 为什么需要继承 Java 中使用类对现实世界中实体来…

牛客网BC-125 序列中整数去重复(难题讲解)

题目如下 --------------------------------------------------------------------------------------------------------------------------------- 题目讲解(思路) -------------------------------------------------------------------------------…

爱上数据结构:二叉树的基本概念

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:数据结构 ​ 一、树的基本概念 1.概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起…

机器学习 - multi-class 数据集训练 (含代码)

直接上代码 # Multi-class datasetimport numpy as np RANDOM_SEED 42 np.random.seed(RANDOM_SEED) N 100 # number of points per class D 2 # dimensionality K 3 # number of classes X np.zeros((N*K, D)) y np.zeros(N*K, dtypeuint8) for j in range(K):ix rang…

cJSON(API的详细使用教程)

我们今天来学习一般嵌入式的必备库,JSON库 1,json和cJSON 那什么是JSON什么是cJSON,他们之间有什么样的关联呢,让我们一起来探究一下吧。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式&…

tomcat 结构目录

bin 启动,关闭和其他脚本。这些 .sh文件(对于Unix系统)是这些.bat文件的功能副本(对于Windows系统)。由于Win32命令行缺少某些功能,因此此处包含一些其他文件。比如说:windows下启动tomcat用的是…

物理层习题及其相关知识(谁看谁不迷糊呢)

1. 对于带宽为50k Hz的信道,若有4种不同的物理状态来表示数据,信噪比为20dB 。(1) 按奈奎斯特定理,信道的最大传输数据速率是多少?(2) 按香农定理,信道的最大传输数据速度…

JAVAEE之Spring Boot日志

1. 日志概述 1.1 学习日志的原因 ⽇志对我们来说并不陌生, 从JavaSE部分, 我们就在使用 System.out.print 来打印日志了. 通过打印日志来发现和定位问题, 或者根据日志来分析程序的运行过程. 在Spring的学习中, 也经常根据控制台的日志来分析和定位问题. 随着项⽬的复杂…

记录Linux系统中vim同时开多个窗口编辑文件

在使用Linux进行文本编辑的时候,通常使用vim编辑器编辑文件,当然啦,vim也可以创建文件,如果只是一个一个创建,只需要vim创建即可,但是如何一次性打开多个窗口编辑呢? 目录 1、目标:…

微信小程序uniapp+vue.js旅游攻略系统9krxx

实现了一个完整的旅游攻略小程序系统,其中主要有用户模块、用户表模块、token表模块、收藏表模块、视频信息模块、视频类型模块、景点资讯模块、门票购买模块、旅游攻略模块、景点信息模块、论坛表模块、视频信息评论表模块、旅游攻略评论表模块、景点信息评论表模块…