【Day6】类与对象—翁恺老师慕课—Java—面向对象程序设计

2022/1/23 12:04:22

本文主要是介绍【Day6】类与对象—翁恺老师慕课—Java—面向对象程序设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、用类制造对象

对象是实体,需要被创建,可以为我们做事情

类是规范,根据类的定义来创建对象

对象=属性+服务

封装:把数据和对数据的操作放在一起

二、定义类

创建对象:new VendingMachine;或    VendingMachine vm = new VendingMachine;

对象变量是对象的管理者

让对象做事:“.”运算符

三、成员变量和成员函数

类定义了对象中所有的变量,成为成员变量

每个对象都有自己的变量,和同一个类的其他对象是分开的

函数是通过对象调用的

this是成员函数的一个特殊的固有的本地变量,它表达了这一次调用这个函数的那个对象

调用函数:通过“."运算符调用某个对象的函数,也可在成员函数内部直接调用自己(this)的其他函数

成员变量的生存期是对象的生存期,作用域是类内部的成员函数

四、对象初始化

成员变量会自动初始化,也可以赋值

构造函数:如果一个成员变量的名字和类的名字完全相同,则在创建这个类的每一个对象时都会自动调用这个函数,这个函数不能有返回类型

函数重载:一个类可以有多个构造函数,只要他们的参数表不同。创造对象的时候给出不同的参数值,就会自动调用不同的构造函数。通过this()还可以调用其他构造函数。一个类里的同名但参数表不同的函数构成了重载关系

五、分数实例

题目内容:

设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。

这个类的构造函数是:

 

Fraction(int a, int b)

    构造一个a/b的分数。

 

这个类要提供以下的功能:

 

double toDouble();

    将分数转换为double

Fraction plus(Fraction r);

    将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。

Fraction multiply(Fraction r);

    将自己的分数和r的分数相乘,产生一个新的Fraction的对象。

void print();

    将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。

 

注意,在创建和做完运算后应该化简分数为最简形式。如2/4应该被化简为1/2。

 

你写的类要和以下的代码放在一起,并请勿修改这个代码:

 

import java.util.Scanner;

 

public class Main {

 

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

Fraction a = new Fraction(in.nextInt(), in.nextInt());

Fraction b = new Fraction(in.nextInt(),in.nextInt());

a.print();

b.print();

a.plus(b).print();

a.multiply(b).plus(new Fraction(5,6)).print();

a.print();

b.print();

in.close();

}

 

}

 

注意,你的类的定义应该这样开始:

 

class Fraction {

 

也就是说,在你的类的class前面不要有public。

 

输入格式:

程序运行时会得到四个数字,分别构成两个分数,依次是分子和分母。

 

输出格式:

输出一些算式。这些输入和输出都是由Main类的代码完成的,你的代码不要做输入和输出。

 

输入样例:

2 4 1 3

 

输出样例:

1/2

1/3

5/6

1

1/2

1/3

package lianxi;

import java.util.Scanner;

public class fenshu {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        Fraction a = new Fraction(in.nextInt(), in.nextInt());

        Fraction b = new Fraction(in.nextInt(),in.nextInt());

        a.print();

        b.print();

        a.plus(b).print();

        a.multiply(b).plus(new Fraction(5,6)).print();

        a.print();

        b.print();

        in.close();

    }

}
class Fraction{
    int fenzi;
    int fenmu;
    Fraction(int a,int b){
        this.fenzi = a;
        this.fenmu = b;
    }
    double toDouble() {
        return (double)fenzi/fenmu;
    }
    Fraction plus(Fraction r) {
        Fraction temp = new Fraction(0,0);
        temp.fenzi = fenzi*r.fenmu+fenmu*r.fenzi;
        temp.fenmu = fenmu*r.fenmu;
        return temp;
    }
    Fraction multiply(Fraction r) {
        Fraction temp = new Fraction(0,0);
        temp.fenzi = fenzi*r.fenzi;
        temp.fenmu = fenmu*r.fenmu;
        return temp;
    }
    void print() {
        int n;
        int m=0;
        if(fenzi==fenmu) {
            System.out.println(1);
        }
        else {
            
            if(fenzi>fenmu) {
                n=fenmu;
            }
            else {
                n=fenzi;
            }
            for(int i=1;i<=n;i++) {
                if(fenzi%i==0&&fenmu%i==0) {
                    m=i;
                }
            }
            fenzi=fenzi/m;
            fenmu=fenmu/m;
            System.out.println(fenzi+"/"+fenmu);
        }
    }
}

 



这篇关于【Day6】类与对象—翁恺老师慕课—Java—面向对象程序设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程