巩固Java中的类与对象/作业调度

类与对象

相关知识点

类是Java中最重要的数据类型,类的目的是抽象出一类事物的共有属性和行为,即抽终出数据以及在数据工所进行的操作。类的类体由两部分组成变量的声明方法的定义,其中的构造方法(方法名与类名相同,无类型)用于创建对象,其他的方法供该类创建的对象调用。

抽象(abstract)的目的是产生类,而类的目的是创建具有属性和行为的对象。使用new运算符和类的构造方法为声明的对象分配变量,即创建对象。对象不仅可以操作自己的变量改变状态,而且能调用类中的方法产生一定的行为。通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。

Java程序以类为“基本单位”,即一个Java程序就是由若干个类所构成。一个Java程序可以将它使用的各个类分别存放在不同的源文件中,也可以将它使用的类存放在一个源文件中。

因此,要学习Java编程就必须学会怎样去写类,即怎样用Java的语法去描述一类事物共有的属性和行为。

创建一个类的例子

class Tank { //一个坦克类
    double speed;   //坦克的速度
    int bullet; //炮弹的数量

    Tank() { //默认的构造方法

    }

    public double getSpeed() {	//带返回类型的方法
        return speed;
    }

    public void setSpeed(double speed) {	//带参数的方法
        this.speed = speed;
    }

    public int getBullet() {
        return bullet;
    }

    public void setBullet(int bullet) {
        this.bullet = bullet;
    }
}

相关知识点2

类的成员变量可以是某个类的对象,如果用这样的类创建对象,那么该对象中就会有其他对象,也就是说该类的对象将其他对象作为自己的组成部分,这就是人们常说的Has-A。一个对象a通过组合对象b来复用对象b的方法,即对象a委托对象b调用其方法。当前对象随时可以更换所组合对象,使得当前对象与所组合的对象是弱耦合关系

class CD{
    String name;    //CD的名称
    int size;   //CD的大小

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }
}
class Computer{	//computer类
    CD cd;  //组合cd对象
    Computer(){ //构造方法
        cd = new CD();
    }
}
public class Example_2 {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.cd.setName("假CD"); //通过cd对象来调用方法
    }
}

对于这种通过组合对象来复用方法称为"黑盒"复用,因为当前对象只能委托所包含的对象调用其方法,这样一来,当前对象对所包含的对象的方法的细节是一无所知的

相关知识点3

类有两种基本的成员:变量和方法。变量用来刻画对象的属性;方法用来体现对象的行为(功能),即方法使用某种算法操作变量来实现一个具体的行为(功能)。成员变量用来刻画类创建的对象的属性,其中一部分成员变量称为实例变量,另一部分
成员变量称为静态变量(static)类变量(static)

类变量是与类相关联的变量,而实例变量是仅仅和对象相关联的变量。不同对象的实例变量将被分配不同的内存空间,如果类中有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量。

也就是说,对象共享类变量。方法是类体的重要成员之一。其中的构造方法是具有特殊地位的方法,供类创建对象
时使用,用来给出类所创建的对象的初始状态;另一部分方法可分为实例方法和类方法(static),类所创建的对象可以调用这些方法形成一定的算法,体现对象具有某种行为。一个类的类方法也可以用该类的类名调用。

类中的方法可以操作成员变量,当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量,方法中出现的类变量也是该对象的变量,只不过这个变量和所有的其他对象共享而已。

class Family {
    static String surname;  //静态变量,类可以直接调用
    String name;    //实例变量

    public static void setSurname(String surname) { //静态方法
        Family.surname = surname;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSurname() {
        return surname;
    }

    public String getName() {
        return name;
    }
}

public class Example_3 {
    public static void main(String[] args) {
        Family.setSurname("欧"); //类直接调用静态方法
        Family father = new Family();
        father.getSurname();    //对象调用方法
    }
}

这里主要说明静态变量就是使用static修饰的变量,同理静态方法也是使用static修饰的方法,静态方法以及静态变量可以被类直接调用,但要注意一点静态方法可以操作静态变量,但是不能操作实例变量

作业调度

作业调度主要是从后备状态的作业中挑选一个作业投入运行.根据不同的调度目标,有不同的调度算法

调度算法的选择

调度算法的选择主要有以下五点原则:响应时间快;周转时间或加权周转时间短;均衡的资源利用率;吞吐量大;系统反应时间短

调度算法

调度算法有许多种,常见的有如下几种

先来先服务(FCFS):按作业到达的先后次序调度,它不利于短作业

短作业优先(SJF):按作业的估计运行时间调度,估计运行时间短的作业优先调度,它不利于长作业,可能会使一个估计运行时间长的作业迟迟得不到服务。

项应比高者优先(HRN):综合上述两者,既考虑作业估计运行时间,又考虑作业等待时间,响应比是:
HRN=(估计运行时间+等待时间)/估计运行时间

优先级调度算法:根据作业的优先级别,优先级高者先调度、

均衡调度算法:根据系统运行情况和作业本身进行分类,调度程序从这些分类中轮流挑选作业执行。

就平均周转时间和平均周转系数来说,短作业优先算法最小,先来先服务算法最大,响应比高者优先算法居中

CET4P209

  • progressive
  • residence
  • whichever
  • rob
  • resemble
  • economical
  • explosion
  • perception
  • whereas
  • annoy
  • recommend
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值