C#编程语言与面向对象——核心

面向对象的核心

(1).封装

  封装的类=数据+对此数据所进行的操作(即算法)

  封装起外界不必需要知道的东西,指向外界展现可供展示的东西。

  小到一个简单的数据结构,大到一个完整的软件子系统。静态的如某软件系统要收集数据信息项,动态的如某个工作处理流程,都可以封装到一个类中。

  具备这种意识,是掌握面向对象分析与设计技巧的关键。

(2).抽象

  在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事务所属的类型,分析它们拥有哪些性质与功能,再将他们抽象为在计算机虚拟世界中才有意义的实体——类。在程序运行时,由类才创建出对象,用对象之间的相互合作关系来模拟真实世界中事务的相互关联。

  在从真实世界到计算机虚拟世界的转换过程中,抽象起了关键的作用。

(3).继承

  真实世界中,食物之间有着一种派生关系,比如“食物”这一大类包括“水果”这一子类,而“苹果”又包含在“水果”这一子类中

        

  在计算机世界中,以面向对象的观点不仅将上述食物抽象为类,而且将事物之间的派生关系也一并模拟出来,这种关系成为"继承"

  在面向对象软件软件系统中,继承除了模拟现实世界中事物关系这一作用,还有一个“重用已有代码而又不破坏已有代码”的方法。

  举例说明:

  现在要开发一个 B 项目,架构设计师发现以前完成的 A 项目中有部分类完全可以在 B项目中重用,但需要增强这些类的功能以便适用于 B 项目。如果从 A 项目中直接抽取这些类的源代码并加以修改,虽然可以满足 B 项目的需要,但现在却需要维护两套功能类似的类代码,加大了管理的成本。在这种情况下,选择从 A 项目的类中用继承的方法派生出新类用在 B 项目中是一个可选的方案,既满足了新项目的需要,又避免了大量的重复代码与双倍的代码维护成本。

(4).多态

  用一个比较抽象的事物来取代具体的表达方式,再面向对象软件中用“多态”这一特性来模拟。

  再编程时应用多态的方法,可以用一句话表示:

  用抽象的类编程:我们将“接口”也看成一种特殊的抽象类,抽象类中可以有非抽象方法,而接口中所有方法都是抽象方法。

  即在代码中本应使用某一具体子类的地方使用较为抽象的基类对象,这种方法所带来的好处是多态的代码具有"变色龙"的特性,即在不同的条件下,同样代码可以完成不同的功能。

  适当地在开发中应用多态特性,可以开发出可扩充性很强的系统。

  面向对象的四大特性不是彼此独立的,“抽象”和“封装”更多地体现为一种思维方式,主要体现在面向对象系统的总体分析和设计中,“继承”和“多态”则多应用与具体子系统和软件模块的设计与编码过程中,而且“继承”是“多态”的基础。

C#编程语言与面向对象——核心,布布扣,bubuko.com

时间: 2024-10-11 01:35:00

C#编程语言与面向对象——核心的相关文章

C#编程语言与面向对象——委托

委托(delegate)也可以看成是一种数据类型,可以用于定义变量,但它是一种特殊的数据类型,所定义的变量能接收的数值只能是个函数,更确切地说,委托类型的变量可以接收一个函数的地址. 简单地说 委托变量可看成是一种类型安全的函数指针,他只能接收符合其要求的函数地址. 示例: public class MathOpt { public int Add(int argument1,int argment2) { return argument1+argment2; } } public delega

C#编程语言与面向对象—— 多态

多态编程的基本原理是: 使用基类或接口变量编程. 在多态编程中,基类一般都是抽象类,其中拥有一个或多个抽象方法,各个子类可以根据需要重写这些方法.或者使用接口,每个接口都规定了一个或多个抽象方法,实现接口的类根据需要实现这些方法. 因此,多态的实现分为两大基本类别:继承多态和接口多态. 继承多态 设想动物园饲养员每天需要给他所负责死样的狮子.猴子和鸽子喂食. 首先,建立三个类分别代表三个动物 饲养员用Feeder类表示.由于三种动物吃的动物一样,Feeder类必须拥有三个喂动物的公共方法: 过程

C#编程语言与面向对象——继承

现实生活中的事物都归属于一定的类别,比如,狮子是一种(IS_A)动物,为了在计算机中模拟这种关系,面向对象的语言引入了继承(inherit)特性. 构成继承关系的两个类中,Animal称为父类(parent class)或基类(base class),Lion称为子类(child class). 父类与子类之间拥有以下两个基本特性: 1.是一种(IS_A)关系:子类是父类的一种特例. 2.扩充(Extends)关系:子类拥有父类所没有的功能. class Animal { } class Lio

C#编程语言与面向对象——抽象基类与接口

在一个类前加“abstract”关键字,此类就成为抽象类. 对应的,在一个方法前加“abstract”关键字,此方法就成为抽象方法. abstract class Fruit //抽象类 { public abstract void GrowInArea();//抽象方法 } 注意抽象方法不能又实现代码,在方法名后直接跟一个分号. 抽象类专用于派生出子类,子类必须实现抽象类中所生命的方法.否子子类仍是抽象类. 抽象类一般用于表达一种比较抽象的事物,比如说“水果”,而抽象方法则说明此抽象类应该具有

C#编程语言与面向对象——类与对象

由于ASP.NET技术是全面向对象的,因此,要掌握这一技术,必须具备有扎实的面向对象理论基础 使用C#编程,所有的程序代码几乎都放在类中,不存在独立于类中之外的函数,因此,类是面向对象编程的基本单元 在绝大多数面向对象语言中,一个类都可以包含两种成员:字段和方法.字段与方法这两个概念是面向对象理论的术语,是通用与各种面向对象语言的.而在各种的具体面向对象语言(比如C#)中,可以简单地理解: 字段及变量,方法及函数. C#编程语言与面向对象--类与对象

重温面向对象核心 下 : 你一定能看懂的委托和事件

实例解读面向对象核心,所有例子基于 C#,涉及我们实务中最常关心的问题: 1.封装.继承.多态: 2.抽象类.接口: 3.委托.事件. 三.委托和事件 通俗的说,我们使用委托的目的是“实现将方法作为参数传递的效果”,直接结合例子说明. 我们还是用基于上次的示例往下更改. 场景设定:根据图形的不同,返回不同的面积算法. // 参数为图形形状, 返回该图形的面积计算公式 public string GetAreaAlg(string shapeName) { if (shapeName=="矩形&q

JavaScript面向对象核心知识归纳

面向对象 概念 面向对象就是使用对象.面向对象开发就是使用对象开发. 面向过程就是用过程的方式进行开发.面向对象是对面向过程的封装. 三大特性 抽象性所谓的抽象性就是:如果需要一个对象描述数据,需要抽取这个对象的核心数据 提出需要的核心属性和方法 不在特定的环境下无法明确对象的具体意义 封装性对象是将数据与功能组合到一起,即封装 JS对象就是键值对的集合,键值如果是数据(基本数据.符合数据.空数据)就称为属性,如果键值是函数那么就称为方法 对象就是将属性与方法封装起来 方法是将过程封装起来 继承

什么是JavaScript中的面向对象? 与其他编程语言的面向对象有什么区别? 什么是原型?

面向对象与原型模式 1.1. js的对象: 定义:是"无序属性的集合,其属性可以包含基本值,对象,和函数",没有类的概念(其他面向对象的语言都有类的概念) 面向对象思维:把解决问题的关注点放在解决问题的所需对象上. 1.2. 面向对象的三大特性: 1.2.1. 封装 就是讲一系列属性和方法,也就是功能 ,封装在对象里面,对象对外界暴露一些接口,外界在使用的时候,不需要关心对象内部的具体功能. 1.2.2. 继承 # 其他面向对象语言中的继承:有父子关系. # JS中的继承:自己没有的东

Java面向对象核心技能

1.封装 封装是面向对象的三大特性之一,就是将类的状态信息隐藏在类内部,不允许外部程序直接访问,而通过该类提供的方法来实现对隐藏信息的操作和访问. 封装的好处:隐藏类的实现细节:让使用者只能通过程序规定的方法来访问数据:可以方便的加入存取控制语句,限制不合理操作. 封装的步骤:修改属性的可见性来限制对属性的访问:为每个属性创建一对赋值方法和取值方法,在赋值方法中加入对属性的存取控制语句. 封装使用到的权限控制符:private(私有的).public(公开的).protected(对子类和同包的