浅谈面向对象方法学

简介: 浅谈面向对象方法学

一、面向对象的基本概念

对象、类、实例、消息、方法

对象:对象能够表示现实或抽象的事物,具有良好定义的责任和良好定义的行为,以及良好 定义的接口。


对象具有封装性、自治性、通信性、被动性、暂存性、持久性


类:类的定义是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。


实例:每个对象都属于一个类,属于某个类的对象称为该类的一个实例,类和对象间具有 instance-of 关系。


类是静态概念,对象是动态概念。类是 对象之上的抽象,有了类之后,对象则是类的具体化,是类的实例。


消息:消息就是向对象发出的服务请求,它应含有提供服务的对象标识、服务标识、输入信息和回答信息。


消息用来请求对象处理或回答某些信息的要求,消息统一了数据流和控制流。程序的执行是靠在对象间传递消息来完成的。


方法:方法(method)也称作行为(behavior),指定义于某一特定类上的操作与法则。


面向对象的设计方法放弃了传统语言中控制结构的概念,以往的一切控制结构的功能都可以通过对象及其相互间传递消息来实现


二、面向对象的基本特征

封装、继承、多态

封装:封装是面向对象方法的一个重要原则,它有两个含义:第一个含义是,把对象的全部 属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象);第二个含义也称作信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。


继承:继承是一种使用户得以在一个类的基础上建立新的类的技术。新的类自动继承旧类的属性和行为特征,并可具备某些附加的特征或某些限制。


继承是面向对象语言中功能最强大、最有代表性的特性。首先,继承使新的类变得简洁明了;其次,通过继承可以重复使用和扩展那些经过测试的已有的类,实现重用。最后,是利用继承可以增强处理的一致性。


多态:在收到消息时对象要予以响应,不同的对象收到同一消息可以产生完全不同的结果, 这一现象叫做多态。


三、面向对象的建模

       所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书 面描述。通常,模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述 问题域中的术语和概念。更进一步讲,模型是一种思考工具,利用这种工具可以把知识规范地表示出来。


      面向对象的建模不仅仅是新的编程语言的汇总,而是一种新的思维方式,一种关于计 算和信息结构化的新思维。面向对象的建模,把系统看做是相互协作的对象,这些对象是结构和行为的封装,都属于某个类,那些类具有某种层次化的结构。系统的所有功能通过 对象之间相互发送消息来获得。面向对象的建模可以视作一个包含以下元素的概念框架: 抽象、封装、模块化、层次、分类、并行、稳定、可重用和可扩展性。


对象模型、动态模型、功能模型

对象模型:对象模型表示静态的、结构化的系统的“数据性质”。


面向对象方法强调围绕对象而 不是围绕功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。


动态模型:动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列通常,用状态图来描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)。


功能模型:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。 通常,功能模型由一组数据流图组成。


三者之间的关系:它使用数据结构(对象模型),执行操作(动态模型),并且完成效据值的变化 (功能模型)。


四、面向对象设计

准则:模块化、抽象化、信息隐藏和封装、对象的高内聚和弱耦合、可扩充性、可重用性。


面向对象设计的内容

image.png



五、面向对象的实现

设计风格

提高可重用性

提高方法的内聚、降低耦合

减小方法的规模

保持方法的一致性

尽量做到全面覆盖  

分开策略方法和实现方法

利用继承机制

提高可扩充性

封装实现策略

慎用公有方法

控制方法的规模

测试策略



六、面向对象方法学的优点与缺点

优点

1.与人类习惯的思维方法一致


2.稳定性好


3.可重用性好


4.可拓展性


5.可维护性


缺点

1.面向对象需要更关注需求、分析和设计


2.面向对象需要完全改变每一个人的思想


3面向对象需要改变软件开发文化


4.面向对象的许多优点是长期的


5.面向对象要求先在培训、教育和工具上投资


6.面向对象要求更多的测试工作


7.面向对象技术不能保证能构造出正确的系统

相关文章
|
缓存 算法 NoSQL
【分布式详解】一致性算法、全局唯一ID、分布式锁、分布式事务、 分布式缓存、分布式任务、分布式会话
分布式系统通过副本控制协议,使得从系统外部读取系统内部各个副本的数据在一定的约束条件下相同,称之为副本一致性(consistency)。副本一致性是针对分布式系统而言的,不是针对某一个副本而言。强一致性(strong consistency):任何时刻任何用户或节点都可以读到最近一次成功更新的副本数据。强一致性是程度最高的一致性要求,也是实践中最难以实现的一致性。单调一致性(monotonic consistency):任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值。
1412 0
领域驱动设计(DDD)中的实体,值对象,和聚合
领域驱动设计(DDD)中的实体,值对象,和聚合
|
12月前
|
存储 关系型数据库 MySQL
MySQL主键谁与争锋:MySQL为何钟爱自增主键ID+UUID?
本文深入探讨了在MySQL中使用自增类型主键的优势与局限性。自增主键通过保证数据的有序性和减少索引维护成本,提升了查询和插入性能,简化了数据库管理和维护,并提高了数据一致性。然而,在某些业务场景下,如跨表唯一性需求或分布式系统中,自增主键可能无法满足要求,且存在主键值易预测的安全风险。因此,选择主键类型时需综合考虑业务需求和应用场景。
416 2
|
Java 关系型数据库 MySQL
【Java课程设计】基于Java Swing 的图书管理系统
本次课程设计基于教材《Java基础案例教程(第二版)》中的第十三章,对课程源码的整理和分享。整个课程设计,我整理了mysql数据库的两个版本:5.7和8.0,方便各位码友们的学习!
|
算法 测试技术
模块化设计具体应该怎么做呢
【10月更文挑战第22天】模块化设计具体应该怎么做呢
|
数据安全/隐私保护 Python
Python中的MD5加密“解密”
Python中的MD5加密“解密”
412 0
|
算法 安全 量子技术
【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码
本文介绍了2023年第十三届MathorCup高校数学建模挑战赛B题的研究成果,提供了城市轨道交通列车时刻表优化问题的详细建模方案、C++代码实现以及42页的完整论文,旨在通过贪心算法、二分搜索法和多目标规划等方法最小化企业运营成本并最大化服务水平。
305 0
【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码
构建直接序列扩频系统模型(Matlab代码实现)
构建直接序列扩频系统模型(Matlab代码实现)
786 0
|
Ubuntu Linux C语言
【操作系统原理】—— 信号量与PV操作实现
【操作系统原理】—— 信号量与PV操作实现
1031 0
|
SQL Oracle 关系型数据库
Hive中的DECIMAL类型
Hive中的DECIMAL类型
742 1