面向对象建模与UML:类与系统分析

需积分: 34 1 下载量 33 浏览量 更新于2024-07-11 收藏 1.53MB PPT 举报
"面向对象建模与UML的详细介绍,包括类的概念、建模的重要性、UML的起源与发展、以及UML中的核心元素" 在系统分析与设计领域,类(Class)是一个重要的概念,它代表了一组具有相同属性、操作、关系和语义的对象的抽象描述。一个类可以实现一个或多个接口,这使得类能够扮演不同的角色并提供多种功能。在面向对象编程中,类是构建软件的基本单元,它们定义了对象的状态(属性)和行为(方法)。 面向对象的建模语言如UML(Unified Modeling Language)在20世纪70年代中期到80年代后期逐渐发展起来,旨在解决众多面向对象方法学存在的不一致性问题。例如,OOSE和OMT等方法各有优点,但也存在局限性。UML的出现,特别是在1994年由Rational公司推动,旨在统一这些不同的建模方法,其首个稳定版本1.0于1997年发布。 建模的重要性在于它能够对复杂的系统进行简化和抽象,帮助分析者和设计者更清晰地理解系统的需求和结构。模型不仅是沟通工具,也是分析和设计的基础,能够精确描述系统的各个组成部分。通过模型,可以有效地管理和调整项目的需求变化,增强系统的可维护性和扩展性。 UML是一种标准化的建模语言,包含了事务、关系和九种不同的图。UML中的事务指的是对象的行为,可以表示为状态机或活动图。关系包括关联、泛化、依赖和组成等,它们描述了类之间的连接和相互作用。UML的九种图分别是用例图、类图、对象图、包图、组件图、部署图、序列图、通信图和状态图,这些图分别用于描绘不同层面的系统结构和行为。 用例图展示了用户与系统之间的交互,类图则详细描述了类的结构和关系。对象图是类图的实例化,而包图和组件图则关注系统的模块化和分层。部署图描述了硬件和软件组件的物理布局,序列图和通信图专注于表示对象间的交互顺序,状态图则展现了单个对象在其生命周期中的行为。 在实际软件开发过程中,UML被广泛应用于需求分析、系统设计、编码、测试和维护等多个阶段,帮助团队成员之间共享理解,提高开发效率,减少误解和错误。理解和掌握UML的使用,对于进行系统分析与设计工作至关重要,因为它提供了一套强大的可视化工具,能够全面、准确地表达系统的复杂性。

以hive的角度检查语法: with cur_dim_comb as (SELECT DISTINCT t.dim_comb ,t.var_sub_class ,t.acc_value FROM gerp.cux_cst_data_alloc_his t WHERE t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id )) select tp.bd_code --事业部编码 ,tp.bd_name --事业部名称 ,hp.ou_code --OU名称 ,hp.ou_name --OU编码 ,op.main_class_desc --差异大类 ,op.acc_value --科目代码 ,op.acc_desc --科目名称 ,op.dim_comb --区分维度 ,op.begin_amount --期初余额 ,op.accrual_amount --本期发生 ,op.balance_diff_alloc_amount --期末差异结存 ,op.var_sub_class ,op.main_class_value ,op.org_id ,op.period_name ,op.job_ver_id from (select up.* ,q1.* from (SELECT DISTINCT maincl.* ,t.* FROM t inner join (SELECT fv.flex_value ,fv.description FROM fv inner join fs on fv.flex_value_set_id = fs.flex_value_set_id AND fs.flex_value_set_name = 'CUX_CST_VARIANCE_TYPE' AND fv.enabled_flag = 'Y' AND fv.hierarchy_level = '2' AND fv.flex_value LIKE '10%' ) maincl on t.var_main_class = maincl.flex_value inner join cur_dim_comb on cur_dim_comb.var_sub_class = t.var_sub_class and cur_dim_comb.acc_value = t.acc_value WHERE 1 = 1 AND t.top_var_type = '10' AND t.job_ver_id in (SELECT ver.job_ver_id AS p_job_ver_id FROM gerp.cux_cst_dist_jobs_all job INNER JOIN gerp.cux_cst_dist_jobs_vers_all ver ON job.job_id = ver.job_id) ORDER BY maincl.description ,t.acc_value ,cur_dim_comb.dim_comb ) up inner join (SELECT t1.* ,SUM(t1.begin_amount) begin_amount ,SUM(t1.accrual_amount) accrual_amount ,SUM(t1.balance_diff_alloc_amount) balance_diff_alloc_amount FROM gerp.cux_cst_data_alloc_his t1 LEFT JOIN gerp.cux_cst_data_alloc_his t ON t1.top_var_type = '10' AND t1.var_sub_class = t.var_sub_class --p_var_sub_class AND t1.org_id = t.org_id --p_org_id AND t1.period_name = t.period_name --p_period_name AND t1.job_ver_id = t.job_ver_id --p_job_ver_id AND t1.acc_value = t.acc_value --p_acc_value WHERE t1.dim_comb in (select distinct dim_comb from cur_dim_comb) group by t1.org_id,t1.period_name,t1.job_ver_id,t1.var_sub_class,t1.acc_value ) q1 on q1.org_id = up.org_id --p_org_id AND q1.period_name = up.period_name --p_period_name AND q1.job_ver_id = up.job_ver_id --p_job_ver_id AND q1.var_sub_class = up.var_sub_class --p_var_sub_class AND q1.acc_value = up.acc_value --p_acc_value ) op

2023-05-26 上传