`

第二章 面向对象的几个基本原则

 
阅读更多

2.1 抽象类和接口


 抽象类是可以继承一个抽象类



 抽象类

public abstract class Animal {
	public abstract void sleeping();
	public abstract void run();
}

 

具体类:

 

public class Bird extends Animal {
	@Override
	public void run() {
		System.out.println("鸟用翅膀飞");
	}
	@Override
	public void sleeping() {
		System.out.println("鸟在树枝上睡觉");
	}
	public static void main(String[] args) {
		Animal bird = new Bird();
		bird.run();
		bird.sleeping();
	}
}

 

public class Dog extends Animal {
	@Override
	public void run() {
		System.out.println("狗用脚跑");
	}
	@Override
	public void sleeping() {
		System.out.println("狗白天睡觉");
	}
	public static void main(String[] args) {
		Animal dog = new Dog();
		dog.run();
		dog.sleeping();
	}
}

抽象类的总结
 

  • 抽象类应该拥有尽可能多的共同代码
  • 抽象类应该拥有尽可能少的数据

什么时候用抽象

  • 区分is-a(继承)和has-a
  • 永远不会出现将子类转换为另一个类的子类
  • 子类具有扩展超类得责任,而不是置换或注释超类的责任
  • 只有在分类学角度上有意义时才继承,而不是继承工具类

什么是接口

一个Java接口是一些方法特征的集合,只有方法的特征,没有方法的实现,因此这些方法在不同的地方被实现时代表不同的行为。Java接口不涉及对象,只描述共有特征的行为,且没有方法的实现。

为什么使用接口

  • 完成不同对象之间相互关系的体现,作为连接不同对象之间完成业务的纽带
  • 接口保证了可插入性,关联的插入性和调用的可插入性
  • 类型的转换

2.2 面向抽象

  • 问题描述:求不同柱体的体积
  • 不同柱体:圆柱体,矩形柱体,三角形柱体
  • 公式:底面积*高
  • 问题分析
    柱体
    圆柱体、矩形柱体、三角形柱体
  • 体积
    底面积
    圆、矩形、三角形

设计



 
2.3 开闭原则

  • 开闭原则:Open-Closed-Principle
    对扩展开放:轻松的加自己的扩展
    对修改关闭:加扩展不需要修改原来的代码结构
    在不被修改的前提下进行扩展
    易扩展、易维护
    要做到开闭原则就必须进行合理的抽象,将可变的需求尽量都关闭在抽象部分类里,将可扩展的部分放在子类中来体现

2.4 多用组合少用继承原则

  • 继承的缺点
    子类继承父类的方法在编译期间就被确定了,所以在运行期间无法改变从父类继承的方法行为
    子类与父类属于强耦合关系,一旦父类的方法改变,所有子类的方法都得改变
    白盒复用,因为子类对父类的所有方法是可见的
  • 组合复用的优点
    黑盒复用,当前对象只拥有委托对象实例,具体实现细节都在委托对象类中
    对象与所包含的对象属于弱耦合关系
    可以再运行期间动态指定所包含的对象

2.5 高内聚低耦合原则

  • 高内聚
    类中的方法都是一组相关的行为,是所有子类的共有行为
  • 低耦合
    不要让一个类包含太多对其他类的应用,避免修改其他对象时以影响到了太多的关联对象
  • 大小: 57.2 KB
  • 大小: 30.7 KB
  • 大小: 51.3 KB
2
0
分享到:
评论
3 楼 crawler 2013-05-08  
lvwenwen 写道
求问楼主自己学习的总结还是有什么相关的材料

这是我以耿祥义《Java设计模式》和阎宏《Java和模式》以及自己的理解分析总结的
2 楼 lvwenwen 2013-05-07  
求问楼主自己学习的总结还是有什么相关的材料
1 楼 sunman5277 2013-05-06  
求问楼主自己学习的总结还是有什么相关的材料,有的话可以发出来分享下

相关推荐

    李爱华、程磊_面向对象程序设计第二章案例源程序

    本资源集合是"李爱华"和"程磊"编写的《面向对象程序设计》一书第二章的C++语言基础案例源程序,涵盖了C++的基本要素,旨在帮助学习者通过实践理解C++的基础知识。 在第二章中,主要讨论了C++语言的基础,包括以下几...

    设计模式:可复用面向对象软件的基础 书和源码

    《设计模式:可复用面向对象软件的基础》是引导读者...第二章 实例研究:设计一个文档编辑器 第三章 创建型模式 第四章 结构型模式 第五章 行为模式 第六章 结论 附录A 词汇表 附录B 图示符号指南 附录C 基本类 参考文献

    面向对象的分析与设计_第二章_需求概述

    ### 面向对象的分析与设计_第二章_需求概述 #### 知识点概览 本章节主要探讨了面向对象分析与设计中的“需求概述”部分,它旨在为软件项目的开发提供清晰的需求框架。内容包括:简要介绍、核心概念、用例模型、...

    面向对象程序设计第二章课后答案.pdf

    函数重载是指在同一个作用域内可以声明几个功能类似的同名函数,但这些函数的参数类型、个数或顺序至少有一个不同。 ### 文件操作 C++通过`<fstream>`库提供的`ifstream`和`ofstream`类来进行文件的读取和写入操作...

    C面向对象程序设计第二章.ppt

    第二章主要讨论了以下几个关键知识点: 1. **类(Class)**: 类是面向对象编程的核心,它是创建对象的蓝图或模板。在C++ 中,类用于定义一组数据(属性或成员变量)和操作这些数据的方法(成员函数)。例如,一个汽车...

    第四章:面向对象编程基础

    本章节通过几个典型的Java示例来帮助初学者理解面向对象的基本概念。 #### EX1: 输出成员变量的值 在第一个示例中,我们创建了一个`Student`类,它包含了三个成员变量:`sNumber`(学号),`sName`(姓名),以及`...

    C++程序设计基础教程 苏大C++程序设计教程(第二版) 第11章 面向对象编程(共21页).pptx

    本教程的第11章主要讲解了以下几个方面: 1. **抽象编程**:抽象编程分为行为抽象和数据抽象。行为抽象是将一系列行为归结为单一行为的过程,比如将吃饭的动作抽象为一个行为。数据抽象则是将具有共同属性的事物...

    深入.NET第二章的上机

    在深入.NET的学习过程中,第二章通常会涵盖.NET框架的基础知识,包括但不限于类库、托管代码、垃圾回收机制、类型系统以及面向对象编程的基本概念。上机实践是学习这些概念的关键,因为它能帮助我们理解理论知识如何...

    C++程序设计(04737)第二章的例子的代码

    在第二章,我们通常会接触到以下几个关键知识点: 1. **基本语法**:包括变量声明、数据类型(如int、float、char等)、常量定义、运算符(如算术、比较、逻辑运算符)以及流程控制语句(如if条件语句、switch语句...

    《面向对象分析与设计》教学大纲.doc

    第一部分主要介绍面向对象分析与设计的基本概念和方法,涵盖以下几个方面: 1. **绪论**:这部分将介绍面向对象编程的基本思想,包括类、对象、继承、封装和多态等核心概念。 2. **面向对象的需求建模**:讲解如何...

    vc++经典课程word版第二章 vc++经典课程word版第二章 vc++经典课word版第二章

    类的定义包含以下几个关键部分: 1. 数据成员(成员变量):存储对象的状态信息。 2. 成员函数(方法):定义对象可以执行的操作。 3. 访问修饰符:控制类成员对外的可见性和访问权限。C++中主要有`private`(私有...

    5-第五章:面向对象的数据模型和对象关系数据模型.pdf

    首先,本章介绍了高级数据库应用的几个领域,包括计算机辅助设计(CAD)、计算机辅助软件工程(CASE)、多媒体系统、地理信息系统(GIS)以及交互式和动态的Web站点。这些应用往往需要处理复杂的数据类型,如二进制...

    电子书《面向对象程序设计与Java语言》(第0.1版)

    - **基本数据类型**:第二章讲解了程序设计中最常见的几种数据类型,如整型、浮点型等。 - **控制结构**:第三章探讨了程序中的基本流程控制结构,如条件判断、循环等。 - **子程序(方法)**:第四章解释了如何...

    ACCP5.0 S1java第二章作业答案

    【ACCP5.0 S1 Java第二章作业答案】是一个针对学习ACCP5.0(Accelerated Certified Computer Professional 5.0)课程第一学期(S1)Java编程的学生的资源集合,主要涵盖了Java语言的基础知识及其应用。这个压缩包...

    C++_钱能——第二章的答案

    在深入探讨C++_钱能的第二章内容之前,首先要明白C++是一种强大的、通用的编程语言,它以其面向对象的特性、高效性能以及广泛的应用范围而闻名。"钱能"可能是对学习资源或者教程的一种独特命名方式,暗示着通过学习...

    UML面向对象设计与分析基础教程课件第二章

    《UML面向对象设计与分析基础教程课件第二章》对用例图进行了深入的讲解,帮助读者掌握这一关键工具的理论知识和实际应用。 用例图是基于UML的一种图表,它主要从用户角度出发,描述了系统的功能以及用户如何与这些...

    深入PHP面向对象、模式与实践 (第2版)》 part2

    第二部分 对象  第2章 PHP与对象   第3章 对象基础   第4章 高级特性   第5章 对象工具   第6章 对象与设计  第三部分 模式  第7章 什么是设计模式?为何使用它们   第8章 模式原则   第 9...

    北大青鸟S1课程的C#第二章所有的代码

    在C#的学习过程中,第二章通常会涉及以下几个关键知识点: 1. **基础语法**:这是C#学习的起点,包括变量的声明与赋值、数据类型(如整型、浮点型、字符型、布尔型等)、运算符(算术、比较、逻辑、赋值等)以及...

Global site tag (gtag.js) - Google Analytics