C#编程语言与面向对象——核心
面向对象的核心
(1).封装
封装的类=数据+对此数据所进行的操作(即算法)
封装起外界不必需要知道的东西,指向外界展现可供展示的东西。
小到一个简单的数据结构,大到一个完整的软件子系统。静态的如某软件系统要收集数据信息项,动态的如某个工作处理流程,都可以封装到一个类中。
具备这种意识,是掌握面向对象分析与设计技巧的关键。
(2).抽象
在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事务所属的类型,分析它们拥有哪些性质与功能,再将他们抽象为在计算机虚拟世界中才有意义的实体——类。在程序运行时,由类才创建出对象,用对象之间的相互合作关系来模拟真实世界中事务的相互关联。
在从真实世界到计算机虚拟世界的转换过程中,抽象起了关键的作用。
(3).继承
真实世界中,食物之间有着一种派生关系,比如“食物”这一大类包括“水果”这一子类,而“苹果”又包含在“水果”这一子类中

在计算机世界中,以面向对象的观点不仅将上述食物抽象为类,而且将事物之间的派生关系也一并模拟出来,这种关系成为"继承"
在面向对象软件软件系统中,继承除了模拟现实世界中事物关系这一作用,还有一个“重用已有代码而又不破坏已有代码”的方法。
举例说明:
现在要开发一个 B 项目,架构设计师发现以前完成的 A 项目中有部分类完全可以在 B项目中重用,但需要增强这些类的功能以便适用于 B 项目。如果从 A 项目中直接抽取这些类的源代码并加以修改,虽然可以满足 B 项目的需要,但现在却需要维护两套功能类似的类代码,加大了管理的成本。在这种情况下,选择从 A 项目的类中用继承的方法派生出新类用在 B 项目中是一个可选的方案,既满足了新项目的需要,又避免了大量的重复代码与双倍的代码维护成本。
(4).多态
用一个比较抽象的事物来取代具体的表达方式,再面向对象软件中用“多态”这一特性来模拟。
再编程时应用多态的方法,可以用一句话表示:
用抽象的类编程:我们将“接口”也看成一种特殊的抽象类,抽象类中可以有非抽象方法,而接口中所有方法都是抽象方法。
即在代码中本应使用某一具体子类的地方使用较为抽象的基类对象,这种方法所带来的好处是多态的代码具有"变色龙"的特性,即在不同的条件下,同样代码可以完成不同的功能。
适当地在开发中应用多态特性,可以开发出可扩充性很强的系统。
面向对象的四大特性不是彼此独立的,“抽象”和“封装”更多地体现为一种思维方式,主要体现在面向对象系统的总体分析和设计中,“继承”和“多态”则多应用与具体子系统和软件模块的设计与编码过程中,而且“继承”是“多态”的基础。
C#编程语言与面向对象——核心的更多相关文章
- C#编程语言与面向对象——抽象基类与接口
在一个类前加“abstract”关键字,此类就成为抽象类. 对应的,在一个方法前加“abstract”关键字,此方法就成为抽象方法. abstract class Fruit //抽象类 { publ ...
- C#编程语言与面向对象——继承
现实生活中的事物都归属于一定的类别,比如,狮子是一种(IS_A)动物,为了在计算机中模拟这种关系,面向对象的语言引入了继承(inherit)特性. 构成继承关系的两个类中,Animal称为父类(par ...
- C#编程语言与面向对象——类与对象
由于ASP.NET技术是全面向对象的,因此,要掌握这一技术,必须具备有扎实的面向对象理论基础 使用C#编程,所有的程序代码几乎都放在类中,不存在独立于类中之外的函数,因此,类是面向对象编程的基本单元 ...
- 全新通用编程语言 Def 招募核心贡献者、文档作者、布道师 deflang.org
先给出官网地址:deflang.org 一句话简介:可扩展编程语言 Def 的目标是将 C++ 的高效抽象和 Lisp 的强大表现力融为一体. 你可以通过阅读 入门教程 .源码 或 测试用例 来简要或 ...
- Java面向对象核心技能
1.封装 封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而通过该类提供的方法来实现对隐藏信息的操作和访问. 封装的好处:隐藏类的实现细节:让使用者只能通过程序规 ...
- C#编程语言与面向对象——委托
委托(delegate)也可以看成是一种数据类型,可以用于定义变量,但它是一种特殊的数据类型,所定义的变量能接收的数值只能是个函数,更确切地说,委托类型的变量可以接收一个函数的地址. 简单地说 委托变 ...
- C#编程语言与面向对象—— 多态
多态编程的基本原理是: 使用基类或接口变量编程. 在多态编程中,基类一般都是抽象类,其中拥有一个或多个抽象方法,各个子类可以根据需要重写这些方法.或者使用接口,每个接口都规定了一个或多个抽象方法,实现 ...
- C#面向对象设计模式纵横谈——1.面向对象设计模式与原则
一:设计模式简介 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心. ---- Christopher Alexander 软件设计领域设计模式: 设计模式描述了软件设计过 ...
- Java面向对象编程 第一章 面向对象开发方法概述
一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...
随机推荐
- IOS详解TableView——内置刷新,EGO,以及搜索显示控制器
内置刷新 内置刷新是苹果IOS6以后才推出的一个API,主要是针对TableViewController增加了一个属性,refreshControl,所以如果想用这个内置下拉刷新的话,最好给你的Tab ...
- 里面的div怎么撑开外面的div让高度自适应
参考网址:http://www.jb51.net/css/140685.html 随着微软新操作系统的上市,ie6现在用的人越来越少了,但是XP系统看来是太过经典,仍然有相当多的用户在使用,且这部分人 ...
- 《BI那点儿事》Cube的存储
关系 OLAP (ROLAP)ROLAP的基本数据和聚合数据均存放在关系数据库中:ROLAP 存储模式使得分区的聚合存储在关系数据库的表(在分区数据源中指定)中.但是,可为分区数据使用 ROLAP 存 ...
- Scrum Meeting 9-20151211
任务安排 姓名 今日任务 明日任务 困难 董元财 请假(参加编译测试) 无 胡亚坤 首页界面优化 无 刘猛 请假(参加编译测试) 无 马汉虎 请假(参加编译测试) 无 赖彦俞 请假(参加编译测试) 无 ...
- 【转载】CSS position属性和实例应用
目前几乎所有主流的浏览器都支持position属性("inherit"除外,"inherit"不支持所有包括IE8和之前版本IE浏览器,IE9.IE10还没测试 ...
- RecyleView 简析
LayoutManager.Adapter是必须设置的(不设置将无法显示数据---不执行onCreateViewHolder()等方法) ItemDecoration\ItemAnimator是可选的 ...
- 利用react来制作评论框
学习地址:https://my.oschina.net/leogao0816/blog/379488
- mysqld_safe启动报错 mysqld_safe The file /usr/local/mysql/bin/mysqld does not exist or is not executable
报错(如下),但是使用mysqld直接启动没有问题. 150718 00:03:38 mysqld_safe Logging to '/var/log/mysqld.log'. 150718 00:0 ...
- Linux 磁盘管理
Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...
- windows 下配置 Nginx 常见问题(转)
windows 下配置 Nginx 常见问题 因为最近的项目需要用到负载均衡,不用考虑,当然用大名鼎鼎的Nginx啦.至于Nginx的介绍,这里就不多说了,直接进入主题如何在Windows下配置. 我 ...