面向对象数据库

面向对象范式的核心本质是?---不是继承 不是封装也不是多态

独自空忆成欢 提交于 2019-12-22 11:30:47
核心本质 你可能会说 其核心本质 是类似万物皆为对象 的一种设计思想,又或者说是 封装继承多态的运用,又或者是其他的什么. 我觉得,这些说法也对,不过今天要说的是另一个概念: 依赖反转. 用了个标题党的标题,答案就开门见山一些。 其核心本质,乃是通过安全便且捷的多态实现的 依赖反转;及 由此带来的依赖关系的灵活性,以及 系统架构的灵活性。 什么是依赖反转 用一张图说明下,如下: 图中,class1 要调用 class2 的函数, 依赖反转 是通过接口实现多态,进而实现依赖反转。 如果interf2没有这个接口,即图中 蓝色线条的情况。那么classe1 直接调用 class2,那么依赖方向 和控制流方向 是一致 的,都是由 class1 到 class2. 如果有 interface2 这个接口, class2 实现了 interface2, class1调用interface2; 此时的依赖方向 就是 变成了 class2,依赖 interface2. 而这个 依赖方向和控制流的方向是相反的, 这个相反就叫做依赖反转 为什么不是 封装 继承 多态 至于为什么面向对象的核心特质 不是面向对象的三大特质,原因也很简单, 在面向对象语言出现之前,封装、继承、多态这样概念和 做法已经出现了。甚至有些地方比面向对象语言的设计更为严格。 关于封装,如果用C语言去实现封装

java8--面向对象 上(疯狂java讲义3) 复习笔记

限于喜欢 提交于 2019-12-18 09:53:45
1、初始化块总在构造器执行之前被调用 2、静态初始化块用于初始化类,在类初始化阶段被执行 3、如果继承树里的某个类要被初始化时,系统将会同时初始化该类的所有父类 4、一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器(比如默认的构造器将失效) 5、修饰类或者方法的修饰符,final和abstract 只能选择其一,final不可改变,abstract只能由后代实现 6、一个字节长度为8位,char类型为2个字节,char类型使用单引号括起来,如果把一个0~65535范围内的int整数赋给char类型,系统会自动把这个int类型 当成char类型来对待。 char t1=97;//可以赋予0到65535之间,输出相应字符,如果赋予65536,则报错。 System.out.println(t1);//输出 a char t2= 'a'; System.out.println(t2);//a System.out.println((int)t2);//97 char t3='你'; System.out.println(t3);//你 System.out.println((int)t3);//20320 7、构造器不能声明返回值类型(包括void),如果声明了,那么编译不会报错,但是 Java 会把这个构造器当成一个方法来处理–它就不再是一个构造器。 8

面向对象与领域建模

独自空忆成欢 提交于 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)对象的状态和行为。 对象具有状态,一个对象用数据值来描述它的状态。

web架构师经验之谈

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

JavaScript高级

醉酒当歌 提交于 2019-12-16 18:37:58
JavaScript 高级 JavaScript 是什么 解析执行:轻量级解释型的 语言特点:动态,头等函数 (First-class Function) 又称函数是 JavaScript 中的一等公民 执行环境:在宿主环境(host environment)下运行,浏览器是最常见的 JavaScript 宿主环境 但是在很多非浏览器环境中也使用 JavaScript ,例如 node.js MDN-JavaScript JavaScript 的组成 ECMAScript- 语法规范 变量、数据类型、类型转换、操作符 流程控制语句:判断、循环语句 数组、函数、作用域、预解析 对象、属性、方法、简单类型和复杂类型的区别 内置对象:Math、Date、Array,基本包装类型String、Number、Boolean Web APIs BOM onload页面加载事件,window顶级对象 定时器 location、history DOM 获取页面元素,注册事件 属性操作,样式操作 节点属性,节点层级 动态创建元素 事件:注册事件的方式、事件的三个阶段、事件对象 JavaScript 可以做什么 阿特伍德定律: Any application that can be written in JavaScript, will eventually be written in

JavaScript 面向对象编程

不打扰是莪最后的温柔 提交于 2019-12-12 19:54:05
JavaScript 面向对象编程 面向对象介绍 什么是对象 (1) 对象是单个事物的抽象。 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。 (2) 对象是一个容器,封装了属性(property)和方法(method)。 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。 在实际开发中,对象是一个抽象的概念,可以将其简单理解为: 数据集或功能集 。 ECMAScript-262 把对象定义为: 无序属性的集合,其属性可以包含基本值、对象或者函数 。 严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都 映射到一个值。 提示:每个对象都是基于一个引用类型创建的,这些类型可以是系统内置的原生类型,也可以是开发人员自定义的类型。 什么是面向对象 面向对象不是新的东西,它只是过程式代码的一种高度封装,目的在于提高代码的开发效率和可维护性。 面向对象编程 —— Object Oriented Programming,简称 OOP ,是一种编程开发思想。

全面深入理解 Python 面向对象

萝らか妹 提交于 2019-12-12 03:30:33
本篇将详细介绍Python 类的成员、成员修饰符、类的特殊成员。 类的成员 类的成员可以分为三大类:字段、方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段。而其他的成员,则都是保存在类中,即:无论对象的多少,在内存中只创建一份。 一、字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 class Province : # 静态字段 country = '中国' def __init__ ( self , name ) : # 普通字段 self . name = name # 直接访问普通字段 obj = Province ( '河北省' ) print obj . name # 直接访问静态字段 Province . country 由上述代码可以看出【普通字段需要通过对象来访问】【静态字段通过类访问】,在使用上可以看出普通字段和静态字段的归属是不同的。其在内容的存储方式类似如下图: 由上图可是: 静态字段在内存中只保存一份 普通字段在每个对象中都要保存一份 应用场景:通过类创建对象时,如果每个对象都具有相同的字段,那么就使用静态字段 二、方法 方法包括:普通方法、静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同。

面向对象 (13)数据库访问

陌路散爱 提交于 2019-12-11 12:31:31
题目1: 编写一个应用程序,输入用户名和密码,访问test数据库中t_login表(字段包括id、username、password),验证登录是否成功。 一、源程序 /**访问数据库 进行查询 * 1个类1个方法 */ package cn.edu.ccut.w1210; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.print("请输入用户名和密码\n"); String username= reader.nextLine(); String password= reader.nextLine(); try { Class.forName("com.mysql.jdbc.Driver");/

Python【day 17-2】面向对象-成员

对着背影说爱祢 提交于 2019-12-11 07:13:39
'''''' ''' 1、简述面向对象三大特性并用示例解释说明?【背写】 1、封装 狭义的封装:把一组属性封装到一个对象,创建对象的时候 广义的封装:代码块,函数、对象、类、模块-py文件都是封装 把封装后的对象看成一个黑盒子,只需要关注输入和输出,不必关注黑盒子内部的实现 2、继承 1、避免代码的重复 2、可扩展 共有的写在父类,扩展的时候用子类 3、多态 2. 面向中的变量分为哪几种?并用示例说明区别?【背写】 1、成员变量 写在构造方法中的,前面是self. 局部的意思 2、类变量(静态变量) 写在类中方法(成员方法)之外的变量,全局的意思 多个对象共享的 3. 面向对象中方法有哪几种?并用示例说明区别?【背写】 1、成员方法 1、包括构造方法和普通方法 2、第一个参数是self 3、通过对象来直接调用 2、静态方法 1、参数不需要self 2、写法是方法名字上面加上一行@staticmethod 3、通过类名来调用 4、把它理解成类中的函数即可 3、类方法 1、参数只有一个cls,表示可以说传入类名 2、写法是方法名字上面加上一行@classmethos 3、通过类名来调用 4、可以在类方法中创建对象,设计模式 4. 面向对象中的属性有什么?并用示例说明? 定义:用方法来表示一个属性(成员变量) 写法:方法名字上面加一行@property 只有一个参数self 必须有返回值