UML:Unified Modeling Language,即统一建模语言,简单地说就是一种有特殊用处的语言。本文是我初步学习UML的学习笔记,对于我们菜鸟码农来说,让我们做设计的可能性不大,但至少能看懂是必要的。
如先前所提到的,类图的目的是显示建模系统的类型。在大多数的 UML 模型中这些类型包括:
继承 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;
继承、实现、依赖、关联、聚合、组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者
UML(Unified Modeling Language)是一种统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。下面将对UML的九种图+包图的基本概念进行介绍以及各个图的使用场景。
这几天的小猫心情还不错,修完了"幂等事件的bug",填完了"缓存击穿的坑",前两天组长交代给他的“整理一份系统现状报告”任务也算是有了思路,阴霾终于散去。好像一切都朝着好的方向发展了。是的,也该过去了,毕竟这些事情折磨小猫都快个把月了。
在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,然后才能更改、更准确地用某一数据库管理系统实现这些需求。 概念模型的主要特点: 1. 能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是现实世界的一个真是模型。 2. 易于理解,可以用它和不熟悉计算机的用户交换意见。用户的积极参与是数据库设计成功的关键。 3. 易于更改,当应用环境和应用要求改变时容易对概念模型修改和扩充。 4. 易于向关系、网状、层次等各种数据模型转换。 概念模型是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。描述概念模型的有力工具是E-R模型。
继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。继承关系为is-a的关系,是类与类或者接口与接口之间最常见的关系之一,在Java中此类关系通过关键字extends来表示。
父类private修饰的内容,子类实际上也继承,只是因为封装的特性阻碍了直接调用,但是提供了间接调用的方式,可以间接调用。
UML类图(Class Diagrams)是一种面向对象分析和设计中,描述被分析系统中各个组成部分之间相互关系的图形。
上篇文章中遗留了一个问题,就是为了要关联类属性与注释,注释与字典的地方使用了两个 map 来逐个添加了相关的信息,如下所示:
指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;
year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算。
继承 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间 最常见的关系;在Java中此类关系通过关键字exten
When I let go of what I am, I become what I might be.
UML中类与类,已经类与接口,接口与接口的关系有:泛化(generalization),关联(association),依赖(dependency),实现(realization)这几种。
UML类图是学习设计模式之前必会必学的知识点,学习设计模式会涉及到大量的类结构,写这篇文章的同时也是在记录自己在学习设计模式的过程中遇到的一些问题,大家来一起参考一下吧。
类的属性介绍 Swift中属性有多种 存储属性:存储实例的常量和变量 计算属性:通过某种方式计算出来的属性 类属性:与整个类自身相关的属性 存储属性 存储属性是最简单的属性,它作为类实例的一部分,用于存储常量和变量 可以给存储属性提供一个默认值,也可以在初始化方法中对其进行初始化 下面是存储属性的写法 age和name都是存储属性,用来记录该学生的年龄和姓名 chineseScore和mathScore也是存储属性,用来记录该学生的语文分数和数学分数 class Student : NSObject {
类有很多种提炼角度,需要根据系统地目标、业务的场景,选取合适的角度对事物进行归纳。
Eric Evans的《领域驱动设计》一书,主要讨论的是如何做好OOD(Object-Oriented Design, 面向对象设计),但在面向对象的软件开发过程中,OOD需要基于之前的OOA(Object-Oriented Analysis, 面向对象分析)所产生的分析模型进行设计,而OOA又需要基于之前的需求工作流所产生的用例模型进行分析。这些内容Evans在书中没有讲。所以如果仅读《领域驱动设计》,而没有掌握OOAD整套的方法,是无法将DDD落地的,也无法运用好OOP(Object-Oriented Programming, 面向对象编程)。当需要从一个单体系统中剥离一块业务设计微服务时,不会对这块业务进行软件建模,又何谈运用好DDD呢?从我最近10年接触到的企业内部应用系统的开发人员来看,绝大部分开发人员都缺乏OOADP的实践技能。他们基本上是基于数据库来开发,写出的代码是脚本式的,缺乏面向对象的封装和多态,导致代码难以阅读、扩展和维护。
级联分为一对多,多对一单向,多对多双向关联。一般情况下,我们只会用到前两种情况,多对多用的较少。我这里使用省市区三级联查来实现级联的操作。简单来说,一对多就是一个省下面有多个市,一个市下面有多个县。多对一是刚好反过来的。
DetachedCriteria类和Criteria接口功能很类似,可以使用上述提到的方式(Criterion与Projection)设置查询条件,但两者的创建方式不同:Criteria必须由Session对象创建,而DetachedCriteria创建时不需要Session对象。因此DetachedCriteria可以在Session作用域之外构建,并添加一系列复杂条件,然后传递到具有Session环境的Dao方法中执行。DetachedCriteria的出现实现了“条件构建”和“查询执行”的分离。
名称:应该是一个名词,分为简单名称和路径名称,每个单词首字母大写 属性:描述了类在软件系统中代表的事物(即对象)所具备的特性,类可以有任意数目的属性,也可以没有属性
前言 主要是针对静态方法、类方法、实例方法、类属性、实例属性的混合实战 需求 设计一个 Game 类 属性 定义一个类属性 top_score 记录游戏的历史最高分,这个属性很明显只跟游戏有关,跟实例对象无关,所以定义为类属性 定义一个实例属性 player_name 记录当前游戏的玩家姓名 方法 静态方法:showHelp,显示游戏帮助信息,这个方法不需要访问类属性,也不需要访问实例属性,所以可以定义为静态方法 类方法:showTopScore,显示历史最高分,只需要访问类属性,所以定义为类方法 实例方法
数据库需求与ER建模 前言 在数据库建设过程中,哪一步最重要?绝大多数资料会告诉你,是需求分析阶段。这一步的好坏甚至直接决定数据库项目的成败。 需求分析阶段,也被称为ER建模(entity-relationship modeling)阶段,也常被称为需求可视化,概念建模等。这一阶段数据库系统开发人员将协同需求方以ER图的方式对业务需求进行可视化展现。 本文将详细介绍(陈氏)ER符号体系,并在其中穿插一些具体实例讲解。 基本概念 1. 实体(entity) 实体表示客观世界中的众多概念,比如:人,地点,事件等
laravel妥妥的到处都是面向对象了,以前流程处理的PHP代码,很少见到踪影了, 为什么?大型应用实在是难以维护,所有代码设计必须有规有矩了。今天我们说一说, 如何在代码中定义常量。
Java注解本质是一个类,使用时也需要import引入,这里只记录了注解作用以及使用,无特殊情况概不记录包位置
以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith. 3) 空查询
UML 从来源中使用相当多的概念。我们将之定义于统一建模语言术语汇表。下面仅列代表性的概念。
需求开发阶段的主要任务就是分析问题,研究问题所发生的现实世界(即问题域),寻找实现软件系统与现实世界有效互动的办法,并严格描述该互动办法。而软件需求开发是一个连接现实世界与计算机世界的活动,是软件工程的起始阶段,设计、实现等后续阶段的正确性都以它的正确性为前提。如果需求开发过程中有错误未能解决,则其后的所有阶段都会受到影响,因此与需求有关的错误修复代价较高,需求问题对软件成败的影响较大。而我们之所以认识不到需求开发阶段的重要性主要是因为学校时间项目的特殊性,具体来说学校的课程设计或实训:
python的类看起来和C++的类没什么区别,实际上不是。python的class语句定义了类,不像C++只是声明类。python的class语句是赋值语句,将类对象赋值给类名,并且直到class赋值语句被执行之前,类都是不存在的。
📷 前言 本篇来了解一下类和类之间关系的表示,我们经常在看一些设计模式的文章、书籍或者是一些大佬的项目会涉及到一些类之间关系的表示,通常就用到类UML类图来做说明。本篇我们就来做一下基础扫盲,避免下次看到时候直接跳过,最后还没看明白的尴尬😅。 表示一个类 📷 格式说明: 第一行:类名称 第二行:类属性(字段) 第三行:类方法(函数) 符号说明: +: public -:private #:protected 其他说明: 类名斜体代表是抽象类 表示一个接口 📷 格式说明:
类属性指的是定义在class内部的,而实例属性是则与某个特定的实例(对象)有关。定义过于抽象了,看看例子。
知道类的几种关系也是编程的基础知识,通常我们在软件设计、架构设计、开发中都需要使用的,
文章介绍了面向对象的基础知识,对象,类,抽象,接口等基本概念,面向对象的三大特征以及UML类图的基础知识,作为后续文章的基础。
维度模型的概念出自于数据仓库领域,是数据仓库建设中的一种数据建模方法。维度模型主要由事实表和维度表这两个基本要素构成。
统一建模语言(UML)在软件开发中发挥着重要作用,在许多行业的非软件系统中也发挥着重要作用,因为它是一种直观地显示系统或流程的行为和结构的方式。UML 有助于展示应用程序结构、系统行为和其他业务流程中的潜在错误。
害,说得像是我有对象一样。 此对象非彼对象,面向对象(Object Oriented)是一种编程的思想,而不是一种编程语言,而Python也是支持面向对象的语言。
发现个好东西思维导图, 最近开始用MindManager整理博客 一. 静态图概述
我们使用ADExplorer连接活动目录数据库就可以看到不同的目录分区,如图所示,用红色框住的分别是域目录分区、配置目录分区和架构目录分区,而后面两个则是应用程序目录分区。
在这个示例中,x 属性是私有的,但可以通过 getX() 和 setX() 方法来访问和修改。
JavaScript是一种面向对象的编程设计语言。闭包作用域对数据域分配内存的限制。JavaScript中的function关键字是函数单元的关键字。JavaScript编程语言的数据类型和函数返回值类型都是使用通用的关键字。动态绑定机制是JavaScript编程设计语言的典型特点。JavaScript的基础数据类型有Number,String,Boolean,Null,Undefined。数据数据类型是对象object。JavaScript中的对象Object和函数Function都是对复杂数据的一种描述。Function函数是处理数据的逻辑代码块,实际在计算机的动态的运行内存中是不会暂用内存分配空间。对象object会有内存区块的消耗。复杂数据是有简单数据组层。JavaScript中没有类class的概念关键字,使用function关键字代替。ES6的欧洲标准在JS中增加类class的概念。
我的数据库已经用MySQL Workbench设计好了,也插入了一些测试数据,现在开始在Django中设计models模型。本以为顺风顺水,没想到也遇到一些bug,现在记录一下踩坑填坑过程。
EA跟Rational Rose一样都仅仅是一个UML建模软件,随着对EA的熟悉发现EA的功能太强大了。EA跟Rational Rose大不一样,Rational Rose只是实现对软件的建模即构建系统的UML模型,而EA却不仅仅是实现这些功能。对于一个软件设计者来说,从需求分析到概要设计、详细设计、数据库设计到测试、发布、部署等一系列软件设计必须的操作都可以在EA中完成。可以说只需要一个EA就可以完成一个软件的设计。
类图:性质与操作 [属性attribute、关联association、双向关联、多重性mulitiplicity、操作operation、属性与方法性质property-string]
数据几乎总是用于两种目的:操作型记录的保存和分析型决策的制定。简单来说,操作型系统保存数据,分型型系统使用数据。前者一般仅反映数据的最新状态,按单条记录事务性来处理;其优化的核心是更快地处理事务。后者往往是反映数据一段时间的状态变化,按大批量方式处理数据;其核心是高性能、多维度处理数据。通常我们将操作型系统简称为OLTP(On-Line Transaction Processing)— 联机事务处理,将分析型系统简称为OLAP(On-Line Analytical Processing)— 联机分析处理。
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性(attribute)和方法(method)。对象是类的实例(instance)。 类属性:类属性在整个实例化的对象中是公用的。类属性定义在类中且在函数体之外。类属性通常不作为实例使用。 局部变量:定义在方法中的变量,只作用于当前实例的类。 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
领取专属 10元无门槛券
手把手带您无忧上云