面向对象分析与设计

阶段性总结(从软件工程到分层架构)

怎甘沉沦 提交于 2019-12-06 13:16:15
阶段性总结(从软件工程到分层架构) 阶段性总结(从软件工程到分层架构) 写在前面 软件工程 什么是软件工程 我对软件工程的理解 软件工程流程 UML 定义 为什么会出现UML UML模型 UML建模过程 UML如何描述一个系统 UML总结 设计模式 三层架构 总结 写在前面 这篇文字将会将2011年下半年的学习内容做个总结,不求细节只为从宏观上理解它们之间的联系以及学习它们的目的。 内容包括软件工程、UML、设计模式、三层架构还有两门语言,C#和VB.NET 软件工程 什么是软件工程 软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。(这是维基百科的定义) 其实软件工程的目的就是以健全的工程化的原则,在给定的成本和进度前提下有可修改性、有效性、可靠性、可理解性、可维护性、可重用 软件工程性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。 我对软件工程的理解 软件工程是伴随着软件的整个生命周期了存在的,它科学的指导着软件的计划、需求分析、设计编码、测试、运行维护整个生命周期的每一个阶段。 软件工程的兴起源于软件危机,人们不得不思考如何保证软件的可靠性,如何保证软件的开发进度等等问题。于是软件工程出现了

面向对象建模与数据库建模两种分析设计方法的比较

左心房为你撑大大i 提交于 2019-12-06 10:42:28
本人从Oracle Form进入开发领域,接受过严酷的pl/sql编程洗礼,对sql进行了为期一个月的死刑般的练习,可以说深受影响了。但是在开发过程中始终觉得力不从心,因为我在大学时代学过了java,接受了另外一种思想:面向对象编程。所以在写pl/sql的时候,总会用面向对象的思想去写,比如写包、触发器、存储过程的时候,总会去想到抽象和重用,但是事务性的sql语句,总让我感觉很累,最后不得不跳出oracle服务公司,转到如今的公司,参与到该公司的软件创业道路上来,接受了强烈的面向对象建模思想,并且完全抛弃了原有的数据库思想,可以说是洗心革面了自己的编程思想。发现领域建模+领域事件的结合是软件编写最完美的结合。下面就DDD跟RDBMS建模谈谈自己的看法。 我们知道:一个软件从无到有需要经过如下几个阶段:分析、设计、编程、调试、部署和运行。目前,将需求从客观现实世界映射到计算机软件世界主要有两种方式: 1、传统数据库分析设计 2、面向对象建模( object-oriented class model) 当前软件主要潮流无疑是面向对象占据主流,虽然它可能不是唯一最好最简单的解决方案,但是它是最普通,也是最恰当的。   也就是说:在分析设计阶段,采取围绕什么为核心(是对象还是数据表为核心)的分析方法决定了后面编码阶段的编程特点,如果以数据表为核心进行分析设计,

设计模式之美学习(二):到底什么是面向对象?

二次信任 提交于 2019-12-06 03:26:41
提到面向对象,相信很多人都不陌生,随口都可以说出面向对象的四大特性:封装、抽象、继承、多态。实际上,面向对象这个概念包含的内容还不止这些。 什么是面向对象编程和面向对象编程语言? 面向对象编程的英文缩写是 OOP ,全称是 Object Oriented Programming 。对应地,面向对象编程语言的英文缩写是 OOPL ,全称是 Object Oriented Programming Language 。 面向对象编程中有两个非常重要、非常基础的概念,那就是类( class )和对象( object )。这两个概念最早出现在 1960 年,在 Simula 这种编程语言中第一次使用。而面向对象编程这个概念第一次被使用是在 Smalltalk 这种编程语言中。 Smalltalk 被认为是第一个真正意义上的面向对象编程语言。 什么语言才算是面向对象编程语言呢?如果非得给出一个定义的话,可以用下面两句话来概括。 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石。 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。 一般来讲,面向对象编程都是通过使用面向对象编程语言来进行的,但是,不用面向对象编程语言

设计模式之美学习(一):设计模式对编程工作者是很重要的,它的作用不言而喻。

删除回忆录丶 提交于 2019-12-06 03:26:01
继数据结构与算法之美后,王争老师的专栏又开始更新了,这次是《设计模式之美》,希望学习之后会对自己有所提升。在此记录下自己的学习笔记,希望对自己或者看到的读者都有所裨益。 为什么每个程序员都要尽早地学习并掌握设计模式相关知识? 1. 应对面试中的设计模式相关问题 学习设计模式和算法一样,最功利、最直接的目的,可能就是应对面试了。 不管你是前端工程师、后端工程师,还是全栈工程师,在求职面试中,设计模式问题是被问得频率比较高的一类问题。特别是一些像 BAT 、 TMD 这样的大公司,比较重视候选人的基本功,经常会拿算法、设计模式之类的问题来考察候选人。 2. 告别写被人吐槽的烂代码 我们经常说, Talk is cheap,show me the code 。实际上,代码能力是一个程序员最基础的能力,是基本功,是展示一个程序员基础素养的最直接的衡量标准。你写的代码,实际上就是你名片。 3. 提高复杂代码的设计和开发能力 大部分工程师比较熟悉的都是编程语言、工具、框架这些东西,因为每天的工作就是在框架里根据业务需求,填充代码。实际上,这样的工作并不需要你具备很强的代码设计能力,只要单纯地能理解业务,翻译成代码就可以了。 但是,有一天, leader 让开发一个跟业务无关的比较通用的功能模块,面对这样稍微复杂的代码设计和开发,就发现会有点力不从心,不知从何下手了。因为只是完成功能、代码能用

UML概念模型

孤人 提交于 2019-12-05 22:21:48
UML概念模型 UML(Unified Modeling Language):统一建模语言,为面向对象开发系统的产品进行说明、可视化、和编制文档的标准语言 面向对象程序设计 面向对象基本概念 :对象、类、抽象化、封装、集成、多态 面向对象程序设计过程: 分析->设计->采用面向对象语言编程实现 UML概览 UML核心是图表,可以分为结构图和行为图。 结构图: 由静态图组成,如类图、对象图等 行为图: 如序列图、协作图等 UML 类图 :描述一个系统中的对象和他们的关系 UML 对象图 :是类图的一个实例,用于建立系统的原型 UML 组件图 :描述系统的静态实现图。组件包括物理组件,如库、档案、文件夹等,用于可视化的实现。 UML 部署图: 描述一个系统的静态部署视图。 UML 用例图 :描述角色以及角色与用例之间的连接关系。 UML 交互图 :包括序列图和协作图。序列图强调对象之间的消息发送顺序,显示对象之间的交互;写作图描述对象间的写作关系。 UML 序列图: 显示参与者如何以一系列顺序的步骤与系统的对象交互的模型。 UML 协作图: 协作图和序列图相似,是另一种形式的交互图;如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图。 UML 状态图 :描述描述类的对象所有可能的状态,以及事件发生时状态的转移条件。 UML 活动图

创建虚拟环境,以方便管理

ぃ、小莉子 提交于 2019-12-05 17:43:21
人生苦短,我用Python(目录) 目录 一、计算机基础 二、Python基础 三、函数 四、常用模块 五、模块和包 六、面向对象 七、网络编程socket 八、数据库 九、前端 十、Python Web框架 十一、版本控制--GIT 十二、爬虫 十三、前端框架之VUE 十四、量化投资与Python 十五、算法 十六、设计模式 十七、restful framework 十八、linux基础 十九、权限管理 一、计算机基础 计算机基础知识 计算机的发展史及多道技术 计算机网路知识的简单介绍 二、Python基础 Python学习【第0篇】:window环境下安装Python2和Python3   Python学习【第1篇】:Python简介以及入门 Python学习【第2篇】:Python之数据类型 Python学习【补充篇】:Python之字符串切片 Python学习【第3篇】:Python之运算符 Python学习【第4篇】:Python之可变数据类型与不可变数据类型 Python学习【第5篇】:Python之字符编码问题 Python学习【第6篇】:Python之文件操作 Python学习【补充篇】:map函数和reduce函数的区别 三、Python之函数 Python学习【第7篇】:Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) Python学习【第7篇

面向对象介绍

萝らか妹 提交于 2019-12-05 14:54:25
面向对象 一、什么是面向对象 1.1 面向过程编程思想 1.2 面向对象编程思想 二、如何产生对象 2.1 什么是类 2.2 如何定义类 2.2.1 函数的名称空间和类的名称空间的区别 三、什么是对象 2.3 类的操作 四、类和对象的操作:增、删、查、改 4.1 查看类和对象的名称空间 4.2 类和对象的属性(类中的变量)操作 4.2.1 查找类和对象的属性 4.2.2 增加类和对象中的属性 4.2.3 修改类和对象中的属性 4.2.4 删除类和对象中的属性 五、类中的数据属性(类中的变量) 六、类中的方法(类中的函数) 七、对象属性的查找顺序 八、对象绑定方法的特殊之处 九、一切皆对象 TOC 面向对象 一、什么是面向对象 注意:编程思想仅仅是一门思想,与任何技术无关。 面向对象是一门编程思想 1.1 面向过程编程思想 核心是 过程 二字,过程指的是解决问题的步骤,即先干什么再干什么 基于该编程思想编写程序,就好比在设计一条工厂流水线,一种机械式的思维方式。 优点 将复杂的问题流程化,进而简单化 缺点 牵一发而动全身,程序的可扩展性差 1.2 面向对象编程思想 核心是 对象 二字,对象指的是 特征与技能 的结合体。 基于该编程思想编写程序,就好比在创造世界,一种 上帝式 的思维方式。 优点 可扩展性高 缺点 编写程序的复杂程度比面向过程高 二、如何产生对象

设计模式------什么是面向对象

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 08:58:30
1.什么是面向对象编程 面向对象编程是一种编程范式或者编程风格。它以类或者对象作为组织代码的基础单元,并将封装、基础、多态、抽象4个特性,作为代码设计和实现的基石。 2.什么是面向对象编程的语音 支持类的对象的语法机制,并有现成的语法机制,能方便的实现面向对象的4大特性的编程语音 3.如何判断一个语言是否是面向对象编程的语言 严格来说需要有现成的语法支持类、对象、4大特性的语言机制的编程语言,放宽来说只要支持类和对象的语法机制就可以 4. ⾯向对象编程和⾯向对象编程语⾔之间有何关系 面向对象编程一般是用面向对象的编程语言来实现的,但是不使用面向对象编程语言一样可以实现面向对象编程。使用面向对象编程语言也一定是面向对象编程,可能是面向过程编程。 5.什么是⾯向对象分析和⾯向对象设计? 简单点讲,⾯向对象分析就是要搞清楚做什么,⾯向对象设计就是要搞清楚怎么做。两个阶段最终的产出是 类的设计,包括程序被拆解为哪些类,每个类有哪些属性⽅法、类与类之间如何交互等等。 来源: https://www.cnblogs.com/wakakCode/p/11917660.html

《信息安全专业导论》第八周学习总结

六眼飞鱼酱① 提交于 2019-12-05 08:44:19
教材内容总结 理解了功能设计与面向对象设计的区别 面向对象设计模式描述的是软件设计,因此它是独立于编程语言的,但是面向对象设计模式的最终实现仍然要使用面向对象编程语言来表达,如Visual Basic、.NET、C++/CLI等。 面向对象设计模式不像算法技巧,可以照搬照用,它是建立在对"面向对象"纯熟、深入的理解的基础上的经验性认识。掌握面向对象设计模式的前提是首先掌握"面向对象"! 功能设计是按照产品定位的初步要求,在对用户需求及现有产品进行功能调查分析的基础上,对所定位产品应具备的目标功能系统进行概念性构建的创造活动。 理解了编译器和解释器具体工作原则 知道了一些泛型的内容,命令式,声明式。 了解了一些语言的共性和差异。 教材学习中的问题及解决过程 问题:什么叫做保留字 上网查找:保留字(reserved word),指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。 保留字包括关键字和未使用的保留字。关键字则指在语言中有特定含义,成为语法中一部分的那些字。在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别。一般出现这种情况可能是由于考虑扩展性。例如,Javascript有一些未来保留字,如abstract、double、goto等等。 代码调试中的问题和解决过程 完成四则运算时出现了许多问题,通过自己查找和询问同学解决

面向对象和面向过程详解

扶醉桌前 提交于 2019-12-05 06:14:02
1.前言 其实一直对面向过程和面向对象的概念和区别没有很深入的理解,在自己不断想完善自己的知识体系中,今天借这个时间,写一篇博客。来深入的了解面向过程与面向对象!好记性不如烂笔头!! 2.面向对象与面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 举一个下五子棋通俗例子吧 哈哈哈 我感觉这儿例子很容易让人理解 面向过程 的设计思路就是首先分析问题的步骤: 1、开始游戏, 2、黑子先走, 3、绘制画面, 4、判断输赢, 5、轮到白子, 6、绘制画面, 7、判断输赢, 8、返回步骤2, 9、输出最后结果。 把上面每个步骤用分别的函数来实现,问题就解决了。 而 面向对象 的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的, 2、棋盘系统,负责绘制画面, 3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化, 棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 可以明显地看出, 面向对象是以功能来划分问题 ,而不是步骤