面向对象分析与设计

聚焦JavaScript面向对象的思想

馋奶兔 提交于 2019-12-22 21:04:38
面向对象是一种软件开发方法,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。随着时代的发展,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程,今天我们就来学习一下JavaScript面向对象的思想。 面向过程和面向对象编程概述 面向过程编程就是分析出解决问题的步骤,然后使用函数把这些步骤一步步实现,重心放在完成的每个过程上。 面向对象则是以封装的思想,将问题分析得到的数据封装成一个个的对象,然后通过对对象的操作来完成相应的功能。 举个栗子:厨师炒菜 以面向过程的思想来分析应该分为下面几个步骤: ​ 1.检查食材是否齐全 2.如果不不够,去菜市场买菜 3.洗菜 4.开火 5.按炒菜(按顺序放入相应的食材,调料等) 6.出锅装盘 以面向对象的思想分析则是这样的: ​ 1.厨师,检查食材,炒菜 2.采购员,去菜市场买菜 3.墩子,洗菜,切菜,备菜 ​ 通过调用上面对象中的行为方法即可完成炒菜的整个过程 从上面的例子可以看出,面向对象和面向过程最大的不同在于,面向对象关心的是由哪些对象,每个对象应该有哪些功能,而面向过程关心的是实现过程中的每个步骤。 那么这两种思想到底孰优孰劣呢?从表面上看,貌似面向对象更好,为什么呢

聚焦JavaScript面向对象的思想

China☆狼群 提交于 2019-12-20 10:52:42
面向对象是一种软件开发方法,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。随着时代的发展,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程,今天我们就来学习一下JavaScript面向对象的思想。 面向过程和面向对象编程概述 面向过程编程就是分析出解决问题的步骤,然后使用函数把这些步骤一步步实现,重心放在完成的每个过程上。 面向对象则是以封装的思想,将问题分析得到的数据封装成一个个的对象,然后通过对对象的操作来完成相应的功能。 举个栗子:厨师炒菜 以面向过程的思想来分析应该分为下面几个步骤: ​ 1.检查食材是否齐全 2.如果不不够,去菜市场买菜 3.洗菜 4.开火 5.按炒菜(按顺序放入相应的食材,调料等) 6.出锅装盘 以面向对象的思想分析则是这样的: ​ 1.厨师,检查食材,炒菜 2.采购员,去菜市场买菜 3.墩子,洗菜,切菜,备菜 ​ 通过调用上面对象中的行为方法即可完成炒菜的整个过程 从上面的例子可以看出,面向对象和面向过程最大的不同在于,面向对象关心的是由哪些对象,每个对象应该有哪些功能,而面向过程关心的是实现过程中的每个步骤。 那么这两种思想到底孰优孰劣呢?从表面上看,貌似面向对象更好,为什么呢

这是博客

情到浓时终转凉″ 提交于 2019-12-19 02:18:54
s是 早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。 [2] 起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。 [2] 面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。 [2] 面向对象的分析根据抽象关键的问题域来分解系统。面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成

面向对象与领域建模

独自空忆成欢 提交于 2019-12-17 21:32:03
面向对象与领域建模 板桥里人 http://www.jdon.com 2006/12/6(转载请保留) 多变且复杂的需求   如果没有多变的需求,也许就没有今天的面向对象软件,我们曾经试图通过需求管理、需求跟踪等等管理方式约束和减少需求频繁更新带给软件的冲击,可是这样下去的结果只有一个:使得软件更加僵化;或者程序员更加 劳累。   需求不但多变,而且经常是不可能第一次就能掌握,需求反映了某个领域的专业知识,例如数学、管理、财务或 电子商务等等,每个特定案例需求又有其特别复杂之处,几乎没有人能够第一次接触就可以深入掌握这些专业领域的 需求本质,就是专门的建模专家也不例外。   既然需求是多变而且复杂的,所以,就不能使用“堵”式方法对其进行控制和管理,只能顺势而为,通过灵活多变的 以及迭代反复的方式逐步抓住需求,并且作为需求的实现软件系统必须能够迅速应对需求变化,需求变化有多快,软件 变化就有多快。   因此,对于多变的需求,我们的解决之道是:引入灵活多变的架构,面向对象OO架构正是应对多变需求而生,强调软件的可维护性 和拓展性,OO可能不是最好方式,但是目前是最合适的;对于复杂的需求,我们的解决之道是:委派专门的建模专家跟踪理解需求, 在需求和需求实现之间搭建桥梁,项目方法上采取多次迭代的敏捷软件开发方式,逐步了解学习掌握需求。   在这里稍微说明一下,很多人总是将软件和数学、管理

什么是面向对象?

我的梦境 提交于 2019-12-17 10:50:42
面向对象(Object Oriented,简称OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术 、人工智能等领域。 表面来看,面向对象这个术语的意思是,把软件组织成一系列离散的,合并了数据结构和行为的对象。这与以前软件开发方法中数据结构和行为只是松散关联是不同的。关于OO方法确切需要哪些特征学术界是有争议的,但大致上它们都包含四个方面:标识(identity),分类(classification) ,继承(inheritance),多态(polymorphism)。 标识:数据被量化成称为对象的离散的,可辨别的实体。每个对象都有它自己的内部标识。换言之,即使所有的属性都相同,两个对象也是有差别的。 分类:拥有相同数据结构(属性)和行为(操作)的对象被分组成为一个类。 继承:多个类基于一种分层关系,共享类间的属性和操作(合称为特征)。 多态:对于不同的类来说相同的操作会有不同的动作。 面向对象的基本概念: (1)对象。 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。 (2)对象的状态和行为。 对象具有状态,一个对象用数据值来描述它的状态。

面向对象三大特征

心不动则不痛 提交于 2019-12-17 05:16:43
1.继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,基类是ParentClass1,派生类是SubClass pass class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类 pass   提示:如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法(如__str__)的实现。 >>> ParentClass1.__bases__ (<class 'object'>,) >>> ParentClass2.__bases__ (<class 'object'>,)    继承与抽象(先抽象再继承) 抽象即抽取类似或者说比较像的部分。 抽象分成两个层次: 1.将奥巴马和梅西这俩对象比较像的部分抽取成类; 2.将人,猪,狗这三个类比较像的部分抽取成父类。 抽象最主要的作用是划分类别(可以隔离关注点,降低复杂度)

UML简单介绍-如何看懂UML(一)

冷暖自知 提交于 2019-12-17 00:25:59
在计算复杂的数学题时,我们必然会打草稿计算 在绘画课中,我们可以素描出来看到的事物 那么在程序设计中呢? 如何描绘传达你脑海中的关于这个程序 ,设计的蓝图草稿 ? OOP的程序设计中,最多的自然是类、接口层次接口的设计 简单的设计,可能在脑海中想象下就过了,比如A继承B 但是复杂的呢? 对于OOP程序设计中,类的层次、关系设计如何描绘? 用文字么? A继承B A实现C,A中有一个D的引用 显然,图形化的方式更加直观,简洁 那么到底如何表示OOP中的事物与关系?每个人有每个人的书写方式,如何进行交流? 你画了一个三角形说这是一个接口,我花了一个圆形,跟你讲这个是接口?这其中的问题不言而喻。 UML起源 1997年, OMG 组织(Object Management Group对象管理组织)发布了 统一建模语言(Unified Modeling Language,UML) UML 是一种为面向对象开发系统的产品进行说明、可视化、和编制文档的标准语言 UML 作为一种模型语言,它使开发人员专注于建立产品的模型和结构 UML 是不同于其他常见的编程语言,如Java等,它是一种绘画语言,用来做软件蓝图 UML 提出了一套 统一的,标准的建模符号 首先它提供了一套建模符号,用于类的层次结构设计 另外,统一的也就意味着只要按照标准构图,就可以无障碍的通过UML图进行沟通 计算机软件的世界里面

web架构师经验之谈

别说谁变了你拦得住时间么 提交于 2019-12-16 19:53:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本人也是coding很多年,虽然很失败,但也总算有点失败的心得,不过我在中国,大多数程序员都是像我一样,在一直走着弯路,如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的程序员们,你们有没有下面几种感觉? 一、我的工作就是按时完成领导交给我的任务,至于代码写的怎样,知道有改进空间,但没时间去改进,关键是领导也不给时间啊。 二、我发现我的水平总是跟不上技术的进步,有太多想学的东西要学,Jquery用的人最近比较多啊,听说最近MVC比较火,还有LINQ,听说微软又有Silverlight了…… 三、我发现虽然我工作几年了,除了不停的coding,Ctrl+c和Ctrl+V更熟练了,但编码水平并没有提高,还是一个普通程序员,但有人已经做到架构师了。 四、工作好几年了,想跳槽换个工作,结果面试的考官都问了一些什么数据结构,什么垃圾回收,什么设计模式之类的东西,虽然看过,但是平时用不着,看了也忘记了,回答不上来,结果考官说我基础太差。。。 有没有,如果没有,接下来就不用看了,你一定是大拿了,或者已经明白其中之道了,呵呵。 如果有,恭喜你,你进入学习误区了,如果想在技术上前进的话,就不能一直的coding,为了完成需求而工作,必须在coding的同时,让我们的思维,水平也在不停的提高。

JAVA

你离开我真会死。 提交于 2019-12-16 07:19:15
方法:对某一种功能的封装 ooa面向对象分析 ood面向对象设计 oop面向对象编程 面向对象:1,声明形式和c语言不一样 2,方法的重载,方法名一样(别的都不一样) 3,一切事物皆对象 4,一个对象可以通过使用数据值来描述自身所具有的形态 5,对象还具有行为 类是对象的抽象,它用于描述一组对象的共同特征和行为,把共同特征作为类的属性,也叫做成员变量,把共同行为作为类的方法,也叫成员方法。 用变量描述属性 一个类可以有多个对象 类和类之间有‘或’的关系和‘与’的关系 类的关系:消息能够是对象之间进行通信 方法是类的实现 封装性:对外看做是一个整体(自己对象的行为隐藏) 类具有:唯一性,对象是唯一的标识是不变的 分类性:相同属性的东西 继承性:子类会继承父类的方法(包含关系) 多态性:相同的操作过程可作用于多种类型的对象上并获得不同的结果 封装性: 来源: CSDN 作者: weixin_45806035 链接: https://blog.csdn.net/weixin_45806035/article/details/103497691

面向对象六大设计原则

丶灬走出姿态 提交于 2019-12-16 01:45:20
设计原则和设计模式的关系 面向对象的分析设计,需要遵循六大设计原则,这些设计原则大都会从思想上指导面向对象分析设计的正确方向,掌握这些原则能帮助我们更好的理解面向对象的概念,也能更好的理解设计模式。因为在实际开发中,也需要综合考虑业务需求、功能、实现难度、系统性能、时间与空间等很多方面的问题,所以很少做到完全遵守,总是在有意无意的违反一些或者是部分设计原则,这时便需要综合权衡其利弊。 设计模式是针对某个场景下某些问题的某个具体的解决方案。也就是说设计模式就是这些设计原则的一些具体的体现,因此设计模式也是应该遵守这些原则的。所以,学习设计模式,首先要学习的就是设计原则。 六大设计原则 单一职责原则——SRP 开闭原则——OCP 里式替换原则——LSP 依赖倒置原则——DIP 接口隔离原则——ISP 迪米特原则——LOD 六大设计原则关系图 1. 1.单一职责原则 (Single Responsibility Principle) 单一职责原则,简称SRP,定义是应该有且仅有一个类引起类的变更,即:一个类只负责一个职责。 优点: 类的复杂性降低,实现什么职责都有明确的定义; 逻辑变得简单,类的可读性提高了,而且,因为逻辑简单,代码的可维护性也提高了; 变更的风险降低,因为只会在单一的类中的修改。 2.里氏替换原则 (Liskov Substitution Principle)