热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#之面向对象的简单总结

什么是面向对象?面向对象(ObjectOriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式

什么是面向对象?

  面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

  面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。

面向对象的相关概念:

⑴对象。

  对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

⑵对象的状态和行为。

 对象具有状态,一个对象用数据值来描述它的状态。

 对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。

 对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中

⑶类。

  具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。

  类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。

  类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

⑷类的结构。

  在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。

  ①一般--具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。

  ②整体--部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。

⑸消息和方法。

  对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。

  类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。

面向对象的三大特征:

封装

  封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.

继承

  面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

a.通过继承创建的新类称为“子类”或“派生类”。

b.被继承的类称为“基类”、“父类”或“超类”。

c.继承的过程,就是从一般到特殊的过程。

d.要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

  在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 

继承概念的实现方式有三类:实现继承、接口继承和可视继承。

a.实现继承是指使用基类的属性和方法而无需额外编码的能力;

b.接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;

c.可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

  在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee是一个人,Manager 也是一个人,因此这两个类都可以继承Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。

  抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字Interface 而不是 Class。

OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成)→用类与实例进行设计和实现几个阶段。 

多态

  多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

  实现多态,有二种方式,覆盖,重载。

  覆盖,是指子类重新定义父类的虚函数的做法。

 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

面向对象编程的步骤:

  面向对象是一种思想,他让我们在分析和解决问题时,把思维和重点转向现实中的客体中来,然后通过UML工具理清这些客体之间的联系,最后用面向对象的语言实现这种客体以及客体之间的联系。它分为面向对象的分析(OOA),面向对象的设计(OOD),面向对象的编程实现(OOP)三个大的步骤。

  1、首先是分析需求,先不要思考怎么用程序实现它,先分析需求中稳定不变的客体都是些什么,这些客体之间的关系是什么。

  2、把第一步分析出来的需求,通过进一步扩充模型,变成可实现的、符合成本的、模块化的、低耦合高内聚的模型。

3、使用面向对象的实现模型

面向过程到面向对象思维如何转变?

 我们习惯了面向过程编程时,发现在程序过程中到处找不到需要面向对象的地方,最主要的原因,是思维没有转变。程序员通常在拿到一个需求的时候,第一个反应就是如何实现这个需求,这是典型的面向过程的思维过程,而且很快可能就实现了它。而面向对象,面对的却是客体,第一步不是考虑如何实现需求,而是进行需求分析,就是根据需求找到其中的客体,再找到这些客体之间的联系。因此面向过程和面向对象的思维转变的关键点,就是在第一步设计,拿到需求后,一定先不要考虑如何实现它,而是通过UML建模,然后按照UML模型去实现它。这种思路的转变,可能需要个过程。

“面向对象”和“面向过程”的区别

   面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为;面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

小结:关于面向对象,目前也就了解了这么多,相信在以后的学习中,会对面向对象更加熟悉和理解,到时候再来补充。



推荐阅读
author-avatar
吴柏盈4477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有