面向对象的几个原则
所谓面向抽象编程,是指设计一个类时,不让该类面向具体的类,而是面向抽象类或接口
,即所设计类中的重要变量是抽象类或接口声明的变量,而不是具体类声明的变量。
public abstract class Window { //抽象类
abstract void getMaterial();
}
public class Building {
Window window; //抽象类
Building(){
}
public void setWindow(Window window) {
this.window = window;
}
public void showWindow() {
window.getMaterial();
}
public static void main(String[] args) {
Building building = new Building();
building.setWindow(new WoodWindow());
building.showWindow();
building.setWindow(new AluminiumWindow());
building.showWindow();
}
}
“开-闭”原则(open-closed principle)就是让设计的系统应当对扩展开放
,对修改关闭,“开-闭”原则的本质是指当系统中增加新的模块时,不需要修改现有的模块。在设计系统时,应当首先考虑到用户需求的变化,将应对用户变化的部分设计为对扩展开放,而设计的核心部分是经过精心考虑之后确定下来的基本结构,这部分应当是对修改关闭的,即不能因为用户的需求变化而再发生变化,因为这部分不是用来应对需求变化的。
如果系统设计遵守了“开-闭”原则
,那么这个系统一定是易维护的
。设计某些系统时,要面向抽象来考虑系统的总体设计,这样就容易设计出满足“开-闭”原则的系统,在程序设计好后,首先对abstract类的修改关闭,否则,一旦修改abstract类,将可能导致它的所有子类都需要做出修改;应当对增加abstract类的子类开放
,即再增加新子类时,不需要修改其他面向抽象类而设计的重要类。
public class WoodWindow extends Window { //增加子类
@Override
void getMaterial() {
System.out.println("木质材料");
}
}
public class AluminiumWindow extends Window { //增加子类
@Override
void getMaterial() {
System.out.println("铝材料");
}
}
相关知识点2
如果一个对象a组合了对象b
,那么对象a就可以委托对象b调用其方法,即对象a以组合的方式复用对象b的方法。通过组合对象来复用方法的优点是:通过组合对象来复用方法也称“黑盒”复用
,因为当前对象只能委托所包含的对象调用其方法,这样一来,当前对象所包含的对象的方法的细节对当前对象是不可见的。另外,对象与所包含的对象属于弱耦合关系
,因为如果修改当前对象所包含的对象的类的代码,不必修改当前对象的类的代码
public class Judge {//一个裁判
public double getArea(double a, double b) {
return (a + b) / 2;
}
}
public class Compete {
double scoreA;
double scoreB;
Judge judge; //
Compete(double A,double B){
scoreA = A;
scoreB = B;
judge= new Judge();
}
public double getScore(){
return judge.getArea(scoreA,scoreB);//委托对象调用方法
}
public static void main(String[] args) {
Compete compete = new Compete(12.2,13.4);
double score = compete.getScore();
System.out.println("最终的得分: "+ score);
}
}
指导
一个类的成员变量可以是Java允许的任何数据类型,因此,一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该类中就会有其他对象,也就是说该对象将其他对象作为自己的组成部分(也就是人们所说的has-A),或者说该对象是由几个对象组合而成的
语言设计的分类和特点
程序设计语言是用来编写计算机程序的语言,是对计算任务的处理对象和处理规则的描述,可以分为
机器语言
、汇编语言
和高级语言
三类。根据程序设计的方法大致把程序语言分为命令式程序设计语言
、面向对象程序设计语言
、函数式程序设计语言
和逻辑型程序设计语言
等。命令式程序设计语言有Fortran、Pascal和C语言;面向对象程序设计语青有C++、Javg和Smaltalk等;函数式语言有Lisp;逻辑型程序设计语言有Prolog
CET4P212
- pollute
- persist
- principle
- reputation
- notify
- spill
- wealth
- overall
- ending
- character