面向对象和基于对象

基于对象:所以基于对象,就是一种对数据类型的抽象,封装一个结构包含了数据和函数,然后以对象为目标进行操作.构建的基础是对象,但是操作对象并不体现出面向对象的继承性,也就是基于对象局限了通过对象模式板产生对象的福利.基于对象,不具有继承特性,也就更无所谓多态,但是对象本身的封装性仍然作为很多技术的基础,例如可以设置属性,调用方法,基于对象的语言特征就是将属性或者方法,包含在以对象为结构的组织中.然而,并不能通过"继承"访问父类对象的属性,方法.这是二者本质的区别所在.

从运行时的角度来看,基于对象的操作可以在编译时确定,不需要虚分派机制的额外消耗,但是必然少了多态带来的类型决断在运行时的灵活性.

二者差别
c#就是面向对象语言.JS就是基于对象语言.关键点看是否能现实多态,能否实现继承

总而言之,面向对象与基于对象,二者的概念主要体现在:
⑴继承是区别面向对象与基于对象的核心所在,对于少了继承性的基于对象来说,自然少了多态性的支持.
⑵封装是面向对象与基于对象的共同特征

也谈.Net闭包

(使用lamda表达式就是一种代表)
闭包,广泛存在于函数式编程语言的概念中,很多高级语言例如:Smalltalk,JavaScript,Ruby还有Python对闭包都有或多或少的支持.因此,在.NET平台中,对闭包的支持也不能例外,本文就以此为话题,探讨相关的内容.
本质上,闭包源自数据概念.在编程语言领域,闭包的概念主要是指由函数以及函数相关的上下文环境组合而成的实体.通过闭包,函数与其上下文变量(又被称为自由变量,表示局部变量之外的变量)之间建立起关联关系,上下文变量的状态可以在函数的多次调用过程中持久保持.从作用域的角度而言,私有变量的生存期被延长,函数调用所生成的值在下次调用时扔被保持.从安全性的角度而言,闭包有利于信息的隐蔽,私有变量只在该函数内可见.

闭包,是函数式编程的精灵,在.NET平台中,这个精灵同样带来诸多方面的应用,典型的表现主要体现在以下几方面
㈠定义控制结构,实现模块化应用.闭包实现了以最简单的方式开发粒度最小的模块应用.实现一定程度的算放复用.
㈡多个函数共享相同的上下文环境,进而实现通过上下文变量达到数据交流作用.
利用好闭包,可以达到函数式编程的作用.形成闭包有一些值得总结的非必要条件:
⑴嵌套定义的函数
⑵匿名函数
⑶将函数作为参数或者返回值

谈谈闭包与函数:
像对象一样的操作函数,是闭包发挥的最大作用,从而实现了模块化的编程方式.不过,闭包与函数还是有区别的:
1,闭包是函数与其引用环境组合而成的实体.不同的引用环境和相同的函数可以组合产生不同的闭包实例
2,函数是一段可执行的代码体,在运行时不会由于上下文环境发生变化.

闭包福利:
代码简化,数据共享与延迟,安全性
闭包缺陷:
不可避免使逻辑变的复杂,闭包的延迟性也带来一定的逻辑问题.

OO之美3的更多相关文章

  1. 《你必须知道的.NET》读书笔记三:体验OO之美

    此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.依赖也是哲学 (1)本质诠释:“不要调用我们,我们会调用你” (2)依赖和耦合: ①无依赖,无耦合 ...

  2. OO之美4(好代码与坏代码)

    前言:写代码不仅仅要做到能与机器交流,更要做到能和人交流 编码规范:编码规范就是最佳实践,是前辈在编码这件事上的积累和总结,是智慧的延续和工业的实践,如下: ⑴命名规范 ⑵避免行数过多的方法 ⑶代码缩 ...

  3. OO之美2

    面向对象并没有想象中那么神秘,以生活的现实眼光来看更是如此.把面向对象深度浓缩起来,可以概括为: ⑴目标:重用,扩展,兼容 ⑵核心:低耦合,高内聚 ⑶手段:封装变化 ⑷思想:面向接口编程,面向抽象编程 ...

  4. OO之美

    ㈠ 设计的分寸 对于设计,还有很多看似"惯常"的法则与经验广泛存在于软件系统中,例如除了经典的23种设计设计模式.还有很多模式之外的模式,按照粒度的大小,系统的特点,规模的大小,而 ...

  5. 《必须知道.NET》3.OO之美

    3.2 依赖的哲学 3.2.1 本质诠释 "不要调用我们,我们会调用你" 3.2.2 什么是依赖,什么是抽象 "耦合是不可避免的" (1)什么是依赖和耦合 依赖 ...

  6. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  7. 设计模式之美:Type Object(类型对象)

    索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Type Object 的经典介绍. 实现方式(二):Type Object 在游戏设计中的使用. 意图 允许在运行时动态灵活的 ...

  8. 结对编程-地铁续(有种上个学期OO的既视感)

    我们组比较特殊..三人结对 github:https://github.com/qingchanghan/WPFUI_Metro po一张照片: 石浩然,韩青长.陈彦吉 (台式机真的很高端,分屏贼帅) ...

  9. 菜鸡谈OO 第二单元总结

    “欢迎来到(玄学)多线程的新世界” Homework1 单部傻瓜电梯调度 Part1 多线程设计策略 第一次学到了线程这个概念,与之前的编程体验大有不同.最大的区别在于从原本的线性发生程序变成了多个行 ...

随机推荐

  1. AppCache 离线存储 应用程序缓存 API 及注意事项

    使用ApplicationCache接口实现离线缓存 原文:http://www.mb5u.com/HTML5/html5_96464.html 推荐:html5 application cache遇 ...

  2. Leetcode 第一遍刷完

    2014/10/15 Leetcode第一刷总算结束,时间拖太长了,希望第二遍能快一点,争取一个月能刷完第二遍??哈哈哈哈

  3. BZOJ 1856 字符串(组合)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1856 题意:有n个1和m个0组成的串,使得任意前k个中1的个数不少于0的个数.有多少种这 ...

  4. 【wikioi】1116 四色问题

    题目链接 算法:DFS 刚开始卡了一下,但后面想了想,于是 放上代码: #include <iostream> using namespace std; bool map[9][9]; i ...

  5. 转 sql 时间转换格式 convert(varchar(10),字段名,转换格式)

    convert(varchar(10),字段名,转换格式) CONVERT(nvarchar(10),count_time,121)CONVERT为日期转换函数,一般就是在时间类型(datetime, ...

  6. Struts2+Spring3+Mybatis3开发环境搭建

    本文主要介绍Struts2+Spring3+Mybatis3开发环境搭建 Struts和Spring不过多介绍. MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBa ...

  7. CreateFeatureClass COM异常

    private static IFeatureClass CreatStnShp(string shp) { //打开工作空间 IWorkspaceFactory wsfactory = new Sh ...

  8. android之打开网页

    首先改写strings.xml文件 代码如下: <resources> <string name="app_name">Intent应用</strin ...

  9. IM客户端Socks 5代理协议应用

    之前编写的一个基于openfire服务器的即时通讯软件,因为部署环境需要,需要增加代理登录通信的实现.整理了一下相关代理的知识分享一下. 一个基于TCP协议的客户端希望与一个只能通过特定网络节点才可以 ...

  10. T-SQL DBMS

    dbo 默认架构schema 从一个数据库操作另个数据库的表的时候,要select * from 数据库.dbo.biao           表名前面的dbo是一个默认架构schema,一个架构还有 ...