面向对象开发方法概述

一个优良的软件系统应该具备:可重用性,可扩展性,可维护性。 软件中的子系统应该具备:结构稳定性,可扩展性,内聚性,可组合性,松耦合。 两种开发方法:结构化开发

一个优良的软件系统应该具备:可重用性,可扩展性,可维护性。

软件中的子系统应该具备:结构稳定性,可扩展性,内聚性,可组合性,松耦合。

两种开发方法:结构化开发和面向对象开发

1.1结构化软件开发简介(SASD)

      它首先用结构化分析对软件进行需求分析,然后用结构化设计方法进行总体设计,最后进行结构化变成。这种开发方法使得开发步骤明确,SA、SD和SP相辅相成,一气呵成。

      结构化设计是属于自顶向下的设计,无法灵活的适应用户不变变化的需求。

例:根据客户输入信息来打印图形,若客户需求改变,需要增加一个画某一种图形的功能,那么需要增加一个常量、增加一个方法、增加一个case分支。

      可见,结构化开发制约了软件的可维护性和可扩展性,模块间的松耦合性不高。

1.2面向对象的软件开发简介

      面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。具有以下几个优点:

      ①把软件系统看成是各种对象的集合

      ②软件需求的变动往往是功能的变动,二功能的执行者——对象一般不会有大的变化。这使得按照对象设计出来的系统结构比较稳定

      ③对象包括属性(数据)和行为(方法),对象把数据及方法的具体实现方式一起封装起来,这使得方法和与之相关的数据不再分离,提高了每个子系统的相对独立性,从而提高了软件的可维护性。

      ④支持封装、抽象、继承和多态,提高了软件的可重用性、可维护性和可扩展性。

1.2.1对象模型

      在面向对象的分析和设计阶段,致力于建立模拟问题领域的对象模型。建立对象模型既包括自底向上的抽象过程,也包括自顶向下的分解过程。

      1.自底向上的抽象

      在自底向上的抽象过程中,为使自雷能更合理地继承父类的属性和行为,可能需要自顶向下的修改,从而使整个类体系更加合理。由于这种类体系的构造是从具体到抽象,再从抽象到具体,符合人类的思维规律,因此能更快、更方便的完成任务。

      2.自顶向下的分解

       既能有效的控制系统的复杂性,又能同时避免结构化开发方法中功能分解的困难和不确定性。

1.2.2UML:可视化建模语言

       UML:是一种定义良好、易与表达、功能强大且普遍适用的可视化建模语言。它吸取了诸多流派的优点,而且又进一步的发展,最终成为大众所共同接受的标准建模语言。

1.2.3Rational Rose:可视化建模工具

1.3面向对象开发中的核心思想和概念

问题领域、对象、属性、状态、行为、方法、实现

对象是对问题领域中事物的抽象。对象特征:

1.万物皆为对象

2.每个对象都是唯一的

3.对象具有属性和行为

4.对象具有状态

5.对象都属于某个类

1.3.2类、类型

类是一组具有相同属性和行为的对象的抽象。类及类的关系构成了对象模型的主要内容

1.3.3消息、服务

每个对象都具有特定的功能,相对于其他对象而言,它的功能就是为其他对象提供的服务。例如电视机具有的功能包括:开机、关机、选择频道、调节音量和播放VCD等。遥控器为了获得电视机的服务,需要向电视机提出获得特定服务的请求,提出请求的过程被称为发送消息

1.3.4接口

在现实世界中,接口也是实体,比如电源插口、洗衣机上的按钮和电灯的开关。而在面向对象范畴中,接口是一个抽象的概念,是指系统对外提供的所有服务。

在Java语言中,接口有两种意思:

1、指系统对外提供的所有服务,在对象中表现为public类型的方法的声明

2、指用interface关键字定义的实实在在的接口,也称为接口类型。用于描述系统对外提供的所有服务,更加清晰地把系统的实现细节与接口分离

1.3.5

封装是指隐藏对象的属性和实现细节。

两个原则:

1、把尽可能多的东西藏起来,对外提供简捷的接口

2、把所有的属性藏起来

1.3.6抽象

抽象是一种由具体到抽象、由复杂到简洁的思维方式。在面向对象的开发过程中,抽象体现在以下方面

1、从问题领域的事物到软件模型中对象的抽象

2、从对象到类的抽象

3、从子类到父类的抽象

1.3.7继承、扩展、覆盖

在父类和子类之间同时存在着继承和扩展关系。子类继承了父类的属性和方法,同时,子类中还可以扩展出新的属性和方法,并且还可以覆盖父类中方法的实现方式。覆盖也是专业术语,是指在子类中重新实现父类中的方法。

注:

子类只能继承父类的部分属性和方法,父类中用private修饰的属性和方法对子类是透明的。

目前在Java领域比较流行的架构软件包括:

① J2EE

② Struts

③ JSF

④ Spring

1.3.8组合

组合是一种用多个简单子系统来组装出复杂系统的有效手段。个人计算机系统就是一个典型的组合系统。它由主机、键盘、鼠标、显示器、和外围设备打印机等组成。而主机由处理器、内存、一个或多个硬盘、显卡、网卡和声卡等组成。

1.3.9多态、动态绑定

1.4UML语言简介

1.5类之间的关系

     关联:类A与类B的实例之间存在特定的对应关系

     依赖:类A访问类B提供的服务

     聚集:类A为整体类,类B为局部类,类A的对象由类B的对象组合而成

     泛化:类A继承类B

     实现:类A实现了B接口

 

您可能有感兴趣的文章
如何理解面向对象

如何理解面向对象

结构化方法与面向对象方法

软件工程之结构化方法与面向对象方法

理解结构化和面向对象的区别