子系统

系统结构是指由系统多个子系统组成,以及子系统由多个更小的子系统组成的结构。那么子系统又具备哪些特点呢?

特点:

1、结构的稳定性 :软件在设计阶段,在把一个系统划分成更小的子系统时,设计合理,使得系统的结构比较健壮,能够适用用户变化的需求

2、可扩展性 :当软件增加新的功能时,可在现有子系统的基础上创建出新的子系统,该子系统继承了原有原子系统的一些特性,并且的具有一些新的特性,从而提高了软件的可重用性和可扩展性。

3、内聚性:每个子系统只完成特定的功能,不同子系统之间不会有功能的重叠。为了避免子系统之间的重叠,每个子系统的粒度都要尽可能的小,按这种方式构成的系统 结构被称为精粒度系统结构。子系统的内聚性会提高软件的可重用性和可维护性。

4、可组合性:若干精粒度的子系统经过组合,就变成了大系统。子系统的可组合性会提高软件的可重用性和可维护性,并且能简化软件的开发过程。

5、松耦合性:子系统之间相互独立,修改了一个子系统,不会影响到其他子系统。当用户烦需求发生变化时,只需要修改特定子系统的实现方式,从而提高软件的可维护性。

软件开发拥有两大类{结构化开发和面向对象开发}

面向对象--对象具有以下特性:

1、万物皆对象

2、每个对象都是唯一的。   对象的唯一性来自于真实世界中事物的唯一性

3、对象具有属性和行为

4、对象具有状态   状态是指某个瞬间对象的各个属性的取值,对象的某些行为往往会改变对象自身的状态,即属性的取值

5、对象都属于某个类,每个对象都是某个类的实例

同一类的所有实例具有相同属性,表面他们属性的含义相同,但是他们的状态是不一定相同的,也就是属性取值不一定相同

同一个类的所有实例包括类本身的所有实例及其子类的所有实例,类的所有实例具有相同行为,以为着他们具有一些相同的功能。类本身的所有实例按同样方式实现相同功能,而子类于父类之间的,以及子类之间的实例则可能采用不同的方式来实现相同的功能。

接口

在JAVA中接口有两种意思:

1、指以上介绍的感念性的接口,即指系统对外提供的所有服务,在对象中变现为public 类型的方法的声明。

2、指用interface 关键字定义一个实实在在的接口,也称为接口类型,它用于明确的描述系统对外提供的所有服务,他能够更加详细地把系统的实现细节与接口分离

封装、透明

封装是指隐藏对象的属性和实现细节,仅仅对外公开接口。封装能为软件系统带来以下优点:

1、便于使用者正确,方便的理解和使用系统,防止使用者错误修改系统属性

2、有助于建立各个系统之间的松耦合关系,提高系统的独立性

3、提高软件的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用

4、降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的

在java 语言中提供了4种访问控制级别:

1).public :对外公开,访问级别最高

2).protected:只对同一个包中的类或者子类公开

3).private:不对外公开,只能在对象的内部访问,访问级别最低

4).默认:只对同一个包中的类公开

封装的两个原则(大致):

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

系统的封装程度越高,那么它的相对独立性就越高,而且使用起来也更方便

2、把所有属性藏起来

假如某种属性允许外界访问,那么提供访问该属性的公开方法

为什么不把volume 属性定义为public 类型,让使用者直接访问呢?

原因:

1、更符合真实世界中外因通过内因引起的客观规律,一个对象的属性发生变化应该是外因和内因共同作用的结果

2、能够灵活地控制属性的读音和修改的内部访问级别。对象的有些属性只允许使用者读,但不允许使用者修改,而只有对象内部进性更改

3、防止使用者错误地修改属性

4、有助于对象封装实现细节   有时候,如果对象的一个属性发生改变,在它的内部就会发生一系列的练过反应,但这些反应都是透明的。

JAVA 面向对象编程 --自我总结的更多相关文章

  1. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  2. java 面向对象编程。。。。

    经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...

  3. 《Java面向对象编程》

    <Java面向对象编程> 第11章 对象的生命周期 11.1  创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ...

  4. JAVA面向对象编程课程设计——网络版单机斗地主

    一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...

  5. JAVA面向对象编程课程设计——web版斗地主

    一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...

  6. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  7. Java面向对象编程(一)

    由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...

  8. JAVA学习(五):Java面向对象编程基础

    Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...

  9. (一)如何理解java面向对象编程

    哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...

随机推荐

  1. percona-toolkit主从同步整理(MySQL)

    前言:MYSQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的管理也就显得非常重要.而数据作为软件的核心部分,对于其有效的管理显得更为重要.随着时间的推移,软件 ...

  2. Spring-简介-IOC理论推导

    1.Spring 1.1.简介 Spring:春天----->给软件行业带来了春天! 2002,首次推出了Spring框架的雏形:interface21框架! Spring框架即以interfa ...

  3. UVALive 6859——凸包&&周长

    题目 链接 题意:在一个网格图上,给出$n$个点的坐标,用一个多边形包围这些点(不能接触,且多边形的边只能是对角线或直线),求多边形的最小周长. 分析 对于每个点,我们考虑与之相邻的4个点.一共由 $ ...

  4. 面试必会之ArrayList源码分析&手写ArrayList

    简介 ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高. 线程 ...

  5. springbooot+restful目录规则

    dao是访问数据层,dto是数据传出层,po实体类

  6. 【线性代数】2-2:消元(Eliminate)

    title: [线性代数]2-2:消元(Eliminate) toc: true categories: Mathematic Linear Algebra date: 2017-08-31 16:1 ...

  7. BDD行为驱动简介及Pytest-bdd基础使用

    目录 BDD介绍 需求描述/用户场景 场景解析/实现 场景测试 Pytest-bdd的参数化 运行环境: pip insall pytest pytest-bdd pytest-selenium BD ...

  8. 作为新手对于初次接触matlab的一些感受。

    使用matlab时的个人感受:1.建立一个matlab的M文件函数function xxx=aaa(b,c,d) 其中返回值为xxx,函数名为aaa,函数变量为b,c,d 要将其写在一个M文件之中,并 ...

  9. [CSP-S模拟测试]:A(单调栈维护凸包+二分答案)

    题目传送门(内部题150) 输入格式 第一行两个整数$N,Q$. 接下来的$N$行,每行两个整数$a_i,b_i$. 接下来的$Q$行,每行一个整数$x$. 输出格式 对于每个询问,输出一行一个整数表 ...

  10. volatile写读的内存语义

    1,当写一个volatile变量时,JMM(java内存模型)会把该线程本地内存中的所有共享变量刷新到主内存中去 2,当读取一个volatile变量时,该线程会将本地内存置为无效,线程将从主内存中读取 ...