面向对象技术
前言:
今天在学习UML的时候再一次学习到了面向对象技术这个概念,所谓存在即为合理,而反复存在一定是经验性总结性经验性的东西,我们可以对他反复赋用。又一次学习了面向对象的概念,从VB开始接触,然后到软件工程,再到UML,不断的反复强调,反复学习。
学习过程:
是什么:
面向对象(Object Oriented,OO)是软件开发方法,面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面,应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶断的产物
对比
1.审视问题的视角:
面向过程:将依附于客体之上的行为抽取出来,以功能为目标来设计构造应用系统。它将描述客体的属性和行为分开,使得应用程序的日后维护和扩展相当困难,甚至一个微笑的变动,都会波及到整个系统。
面向对象:对客体进行操作,这些操作依附在客体之上并能用来设置、改变和获取客体的状态,让这些客体之间相互驱动、相互作用,最终实现每个客体按照设计者的意愿改变其属性状态。
2.抽象级别
|
方法 |
抽象级别 |
抽象内容 |
面向过程 |
过程抽象 |
低 |
问题域中具有明确功能定义的操作 |
面向对象 |
数据抽象 |
高 |
客体的属性和行为 |
3.封装体
面向过程:封装了各个功能模块,这些功能模块可以随意地对没有保护能力客体属性实施操作,并且因为属性与行为割裂,所以一旦属性变化,那么可能整个系统就会变化。
面向对象:将客体的属性与行为绑定在一起封装到逻辑单元内,外界对客体属性的访问只能通过接口进行实现。只要用户接口不变,那么封装体内的任何改变都不会对系统的其他部分造成改变。
基本概念
(1)对象
对象是我们要研究的任何事物,无论是简单的事物还是复杂的事物都可以看做是一个对象,他不仅能表示具体的事物,还能表示抽象的规划、计划或事件
对象具有状态(数据值)和行为(改变状态的操作)
对象之间的通信结构叫做消息。在消息操作中至少要包括接受消息的对象名,发送给对象的消息名(对象名,方法名)
例如:我们在发快递的时候要写上接收者的姓名(对象名)同时还要选择快递的方式以及什么快递(消息名)
(2)类
类是具有相同状态(数据值)和行为(功能)的对象的抽象。
类具有属性(状态的抽象)和操作(行为的抽象)
类分为“或”关系和“与”关系
类的操作实现过程叫做方法。
(3)对象和类的关系
特点:
(1)唯一性
每个对象都有自身唯一的标识,在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
例如我们的身份证号,我们在上户口的时候每个人的身份证号码都是唯一的,我们的姓名可能会重复,但是身份证号是唯一标识我们的东西。
(2)抽象性
抽象是指将将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是一种抽象,它反应了有关的重要性质,而忽略了次要性质,从对象中抽出最本质的东西。
例如我们将所有能够被我们食用的东西抽象成食物,包括具体的苹果、梨、黄瓜、西红柿等具体事物,它从这些具体的事物中抽象出了最本质的特征—食用,每个苹果、梨就是一个对象,而食物就是一个类
(3)继承性
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。
比如我们的遗传就是对继承性的一个最好的阐释,我们在出生的时候由于基因的遗传所以我们会带有一些父母的特征,同时我们也会在这些特征上不断发展,如果我们只是遗传了一方的特点,那么就是单重继承,如果我们继承了父亲和母亲不同的特点,那么我们就是多重继承。
(4)多态性(多形性)
多态性是指相同的操作或函数,过程可作用于多种类型的对象上并获得不同的效果。
比如上课时老师讲的内容是一样的,但是每个人对于老师讲课的理解程度是不同的,对于同一消息产生了不同的结果。