zoukankan      html  css  js  c++  java
  • 面向对象开发方法概述

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

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

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

    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接口

  • 相关阅读:
    【XSY3905】字符串题(lyndon串,构造)
    【XSY3904】直线(分块)
    收藏的数学网址
    Music!
    Codeforces Global Round 12
    Codeforces Round #698 (Div. 2)
    Codeforces Round #727 (Div. 2)
    Croatian Open Competition in Informatics (COCI) 2020/2021 — Round #2
    Tokio Marine & Nichido Fire Insurance Programming Contest 2021 (AtCoder Regular Contest 122)
    NowCoder IOI 周赛 26 [提高组]
  • 原文地址:https://www.cnblogs.com/hr1997/p/5519991.html
Copyright © 2011-2022 走看看